/**
  * @name update($pReservation)
  * @param ReservationVO
  * @return integer
  * @desc Met à jour une réservation
  */
 private function update($pReservation)
 {
     $lTestDetailReservation = $pReservation->getDetailReservation();
     if (!empty($lTestDetailReservation)) {
         // Si il y a encore des produits dans la réservation
         $lReservationsActuelle = $this->get($pReservation->getId());
         $lOpeReservations = $this->selectOperationReservation($pReservation->getId());
         $lIdOperation = $lOpeReservations[0]->getId();
         /*$lOperation = $lOperations[0];
         		$lIdOperation = $lOperation->getId();*/
         $lOperationService = new OperationService();
         $lOperation = $lOperationService->getDetail($lIdOperation);
         $lTotal = 0;
         $lStockService = new StockService();
         $lDetailOperationService = new DetailOperationService();
         $lListeIdDetailCommande = array();
         foreach ($pReservation->getDetailReservation() as $lProduit) {
             array_push($lListeIdDetailCommande, $lProduit->getIdDetailCommande());
         }
         $lDetailMarche = DetailMarcheViewManager::selectByIdDetailCommande($lListeIdDetailCommande);
         foreach ($lReservationsActuelle->getDetailReservation() as $lReservationActuelle) {
             $lTestUpdate = false;
             foreach ($pReservation->getDetailReservation() as $lReservationNouvelle) {
                 if ($lReservationActuelle->getIdDetailCommande() == $lReservationNouvelle->getIdDetailCommande()) {
                     $lTotal += $lReservationNouvelle->getMontant();
                     // Maj du stock
                     $lStock = new StockVO();
                     $lStock->setId($lReservationActuelle->getId()->getIdStock());
                     $lStock->setQuantite($lReservationNouvelle->getQuantite());
                     $lStock->setType(0);
                     $lStock->setIdCompte($pReservation->getId()->getIdCompte());
                     $lStock->setIdDetailCommande($lReservationActuelle->getIdDetailCommande());
                     $lStock->setIdOperation($lIdOperation);
                     $lStock->setIdNomProduit($lDetailMarche[$lReservationActuelle->getIdDetailCommande()]->getProIdNomProduit());
                     $lStock->setUnite($lDetailMarche[$lReservationActuelle->getIdDetailCommande()]->getProUniteMesure());
                     $lStockService->set($lStock);
                     // Maj du détail Opération
                     $lDetailOperation = new DetailOperationVO();
                     $lDetailOperation->setId($lReservationActuelle->getId()->getIdDetailOperation());
                     $lDetailOperation->setIdOperation($lIdOperation);
                     $lDetailOperation->setIdCompte($pReservation->getId()->getIdCompte());
                     $lDetailOperation->setMontant($lReservationNouvelle->getMontant());
                     $lDetailOperation->setLibelle("Marché N°" . $pReservation->getId()->getIdCommande());
                     $lDetailOperation->setTypePaiement(0);
                     $lDetailOperation->setIdDetailCommande($lReservationActuelle->getIdDetailCommande());
                     $lDetailOperation->setIdNomProduit($lDetailMarche[$lReservationActuelle->getIdDetailCommande()]->getProIdNomProduit());
                     $lDetailOperationService->set($lDetailOperation);
                     $lTestUpdate = true;
                 }
             }
             if (!$lTestUpdate) {
                 // Suppression du stock et du detail operation
                 $lStockService->delete($lReservationActuelle->getId()->getIdStock());
                 $lDetailOperationService->delete($lReservationActuelle->getId()->getIdDetailOperation());
             }
         }
         foreach ($pReservation->getDetailReservation() as $lReservationNouvelle) {
             $lTestInsert = true;
             foreach ($lReservationsActuelle->getDetailReservation() as $lReservationActuelle) {
                 if ($lReservationActuelle->getIdDetailCommande() == $lReservationNouvelle->getIdDetailCommande()) {
                     $lTestInsert = false;
                 }
             }
             if ($lTestInsert) {
                 $lTotal += $lReservationNouvelle->getMontant();
                 // Ajout du stock
                 $lStock = new StockVO();
                 $lStock->setQuantite($lReservationNouvelle->getQuantite());
                 $lStock->setType(0);
                 $lStock->setIdCompte($pReservation->getId()->getIdCompte());
                 $lStock->setIdDetailCommande($lReservationNouvelle->getIdDetailCommande());
                 $lStock->setIdOperation($lIdOperation);
                 $lStock->setIdNomProduit($lDetailMarche[$lReservationNouvelle->getIdDetailCommande()]->getProIdNomProduit());
                 $lStock->setUnite($lDetailMarche[$lReservationNouvelle->getIdDetailCommande()]->getProUniteMesure());
                 $lStockService->set($lStock);
                 // Ajout du détail Opération
                 $lDetailOperation = new DetailOperationVO();
                 $lDetailOperation->setIdOperation($lIdOperation);
                 $lDetailOperation->setIdCompte($pReservation->getId()->getIdCompte());
                 $lDetailOperation->setMontant($lReservationNouvelle->getMontant());
                 $lDetailOperation->setLibelle("Marché N°" . $pReservation->getId()->getIdCommande());
                 $lDetailOperation->setTypePaiement(0);
                 $lDetailOperation->setIdDetailCommande($lReservationNouvelle->getIdDetailCommande());
                 $lDetailOperation->setIdNomProduit($lDetailMarche[$lReservationNouvelle->getIdDetailCommande()]->getProIdNomProduit());
                 $lDetailOperationService->set($lDetailOperation);
             }
         }
         // Maj de l'opération
         $lOperation->setMontant($lTotal);
         $lOperationService->set($lOperation);
     } else {
         // La réservation est vide on la supprime
         $this->delete($pReservation->getId());
     }
 }
 /**
  * @name remplirDetailOperation($pId, $pIdOperation, $pIdCompte, $pMontant, $pLibelle, $pDate, $pTypePaiement, $pIdDetailCommande, $pIdModeleLot, $pIdNomProduit, $pIdConnexion)
  * @param int(11)
  * @param int(11)
  * @param int(11)
  * @param decimal(10,2)
  * @param varchar(100)
  * @param datetime
  * @param int(11)
  * @param int(11)
  * @param int(11)
  * @param int(11)
  * @param int(11)
  * @return DetailOperationVO
  * @desc Retourne une DetailOperationVO remplie
  */
 private static function remplirDetailOperation($pId, $pIdOperation, $pIdCompte, $pMontant, $pLibelle, $pDate, $pTypePaiement, $pIdDetailCommande, $pIdModeleLot, $pIdNomProduit, $pIdConnexion)
 {
     $lDetailOperation = new DetailOperationVO();
     $lDetailOperation->setId($pId);
     $lDetailOperation->setIdOperation($pIdOperation);
     $lDetailOperation->setIdCompte($pIdCompte);
     $lDetailOperation->setMontant($pMontant);
     $lDetailOperation->setLibelle($pLibelle);
     $lDetailOperation->setDate($pDate);
     $lDetailOperation->setTypePaiement($pTypePaiement);
     $lDetailOperation->setIdDetailCommande($pIdDetailCommande);
     $lDetailOperation->setIdModeleLot($pIdModeleLot);
     $lDetailOperation->setIdNomProduit($pIdNomProduit);
     $lDetailOperation->setIdConnexion($pIdConnexion);
     return $lDetailOperation;
 }