/**
  * @name modifierReservation($pParam)
  * @return ListeReservationCommandeVR
  * @desc Met à jour une réservation
  */
 public function modifierReservation($pParam)
 {
     $lVr = CommandeReservationValid::validUpdate($pParam);
     if ($lVr->getValid()) {
         $lIdLot = $pParam["detailReservation"][0]["stoIdDetailCommande"];
         $lDetailMarche = DetailMarcheViewManager::selectByLot($lIdLot);
         $lReservationService = new ReservationService();
         $lReservation = new ReservationVO();
         $lReservation->getId()->setIdCompte($pParam["id_compte"]);
         $lReservation->getId()->setIdCommande($lDetailMarche[0]->getComId());
         foreach ($pParam["detailReservation"] as $lDetail) {
             $lDetailCommande = DetailCommandeManager::select($lDetail["stoIdDetailCommande"]);
             $lPrix = $lDetail["stoQuantite"] / $lDetailCommande->getTaille() * $lDetailCommande->getPrix();
             $lDetailReservation = new DetailReservationVO();
             $lDetailReservation->setIdDetailCommande($lDetail["stoIdDetailCommande"]);
             $lDetailReservation->setQuantite($lDetail["stoQuantite"]);
             $lDetailReservation->setMontant($lPrix);
             /*$lDetailProduit = DetailMarcheViewManager::selectByLot($lDetail["stoIdDetailCommande"]);
             		$lDetailReservation->setIdNomProduit($lDetailProduit[0]->getNproId());*/
             $lReservation->addDetailReservation($lDetailReservation);
         }
         $lReservationService = new ReservationService();
         $lIdOperation = $lReservationService->set($lReservation);
     }
     return $lVr;
 }
 /**
  * @name ajoutReservation($pIdCompte,$pIdMarche)
  * @param integer
  * @param integer
  * @return bool
  * @desc Positionne les réservations pour les abonnements du compte sur le maché
  */
 public function ajoutReservation($pIdCompte, $pIdMarche)
 {
     $lProduits = $this->getProduitsAbonne($pIdCompte);
     $lMarcheService = new MarcheService();
     $lMarche = $lMarcheService->get($pIdMarche);
     $lReservationAbonnement = array("idCompte" => $pIdCompte, "produits" => array());
     foreach ($lMarche->getProduits() as $lNouveauProduit) {
         // Ajout des réservations pour abonnement
         if ($lNouveauProduit->getType() == 2) {
             $lIdNomProduit = $lNouveauProduit->getIdNom();
             foreach ($lProduits as $lProduit) {
                 if ($lIdNomProduit == $lProduit->getNproId()) {
                     // Pas de suspension de l'abonnement et stock dispo pour positionner cette réservation (ou pas de limite de stock)
                     if (!(TestFonction::dateTimeEstPLusGrandeEgale($lMarche->getDateMarcheDebut(), $lProduit->getCptAboDateDebutSuspension(), 'db') && TestFonction::dateTimeEstPLusGrandeEgale($lProduit->getCptAboDateFinSuspension(), $lMarche->getDateMarcheDebut(), 'db')) && !(TestFonction::dateTimeEstPLusGrandeEgale($lMarche->getDateMarcheFin(), $lProduit->getCptAboDateDebutSuspension(), 'db') && TestFonction::dateTimeEstPLusGrandeEgale($lProduit->getCptAboDateFinSuspension(), $lMarche->getDateMarcheFin(), 'db')) && ($lNouveauProduit->getStockReservation() >= $lProduit->getCptAboQuantite() || $lNouveauProduit->getStockInitial() == -1)) {
                         foreach ($lNouveauProduit->getLots() as $lLot) {
                             $lDcomId = $lLot->getId();
                         }
                         $lReservationAbonnement["produits"][$lIdNomProduit] = array("id" => $lIdNomProduit, "idLot" => $lDcomId, "quantite" => $lProduit->getCptAboQuantite());
                     }
                 }
             }
         }
     }
     // Positionnement des réservations
     $lReservationService = new ReservationService();
     $lReservationVO = new ReservationVO();
     $lReservationVO->getId()->setIdCompte($pIdCompte);
     $lReservationVO->getId()->setIdCommande($pIdMarche);
     $lEnregistrer = false;
     foreach ($lReservationAbonnement["produits"] as $lDetail) {
         $lDetailCommande = DetailCommandeManager::select($lDetail["idLot"]);
         $lPrix = $lDetail["quantite"] / $lDetailCommande->getTaille() * $lDetailCommande->getPrix();
         $lDetailReservation = new DetailReservationVO();
         $lDetailReservation->setIdDetailCommande($lDetail["idLot"]);
         $lDetailReservation->setQuantite($lDetail["quantite"] * -1);
         $lDetailReservation->setMontant($lPrix * -1);
         $lReservationVO->addDetailReservation($lDetailReservation);
         $lEnregistrer = true;
     }
     if ($lEnregistrer) {
         $lReservationService->set($lReservationVO);
     }
 }
 /**
  * @name select($pId, $pActive)
  * @param IdReservationVO
  * @param bool
  * @return ReservationVO
  * @desc Retourne une Reservation
  */
 public function select($pId, $pActive = false)
 {
     $lOperations = $this->selectOperationReservation($pId, $pActive);
     $lReservation = new ReservationVO();
     $lReservation->setId($pId);
     // Recherche du détail de la reservation
     $lDetailOperationService = new DetailOperationService();
     $lStockService = new StockService();
     if (!is_null($lOperations[0]->getTypePaiement())) {
         $lReservation->setEtat($lOperations[0]->getTypePaiement());
         switch ($lOperations[0]->getTypePaiement()) {
             /*	case 7: // Un achat
             			foreach($lOperations as $lOperation) {
             				if($lOperation->getTypePaiement() == 7) {
             					// Mise à jour du détail de réservation à partir de l'historique du stock
             					HistoriqueStockManager::selectReservation($lOperation->getId(), $lReservation);
             					$lReservation->setTotal($lOperation->getMontant());
             				}		
             			}	
             			break;*/
             case 22:
                 // Reservation achetée
             // Reservation achetée
             case 0:
                 // Reservation en cours
                 $lOperation = $lOperations[0];
                 $lDetailsReservation = ReservationDetailViewManager::selectDetail($lOperation->getId(), 0, 0);
                 foreach ($lDetailsReservation as $lDetail) {
                     if ($lDetail->getDopeTypePaiement() == 0) {
                         $lDetailReservation = new DetailReservationVO();
                         $lDetailReservation->getId()->setIdStock($lDetail->getStoId());
                         $lDetailReservation->getId()->setIdDetailOperation($lDetail->getDopeId());
                         $lDetailReservation->setIdDetailCommande($lDetail->getStoIdDetailCommande());
                         $lDetailReservation->setMontant($lDetail->getDopeMontant());
                         $lDetailReservation->setQuantite($lDetail->getStoQuantite());
                         $lDetailReservation->setIdProduit($lDetail->getDcomIdProduit());
                         $lDetailReservation->setIdNomProduit($lDetail->getDcomIdNomProduit());
                         $lDetailReservation->setUnite($lDetail->getStoUnite());
                         $lReservation->addDetailReservation($lDetailReservation);
                     }
                 }
                 $lReservation->setTotal($lOperation->getMontant());
                 break;
             case 15:
                 // Reservation non récupérée
                 $lOperation = $lOperations[0];
                 $lDetailsReservation = ReservationDetailViewManager::selectDetail($lOperation->getId(), 15, 5);
                 foreach ($lDetailsReservation as $lDetail) {
                     if ($lDetail->getDopeTypePaiement() == 15) {
                         $lDetailReservation = new DetailReservationVO();
                         $lDetailReservation->getId()->setIdStock($lDetail->getStoId());
                         $lDetailReservation->getId()->setIdDetailOperation($lDetail->getDopeId());
                         $lDetailReservation->setIdDetailCommande($lDetail->getStoIdDetailCommande());
                         $lDetailReservation->setMontant($lDetail->getDopeMontant());
                         $lDetailReservation->setQuantite($lDetail->getStoQuantite());
                         $lDetailReservation->setIdProduit($lDetail->getDcomIdProduit());
                         $lDetailReservation->setIdNomProduit($lDetail->getDcomIdNomProduit());
                         $lDetailReservation->setUnite($lDetail->getStoUnite());
                         $lReservation->addDetailReservation($lDetailReservation);
                     }
                 }
                 $lReservation->setTotal($lOperation->getMontant());
                 break;
             case 16:
                 // Reservation annulée
                 $lOperation = $lOperations[0];
                 $lDetailsReservation = ReservationDetailViewManager::selectDetail($lOperation->getId(), 16, 6);
                 foreach ($lDetailsReservation as $lDetail) {
                     if ($lDetail->getDopeTypePaiement() == 16) {
                         $lDetailReservation = new DetailReservationVO();
                         $lDetailReservation->getId()->setIdStock($lDetail->getStoId());
                         $lDetailReservation->getId()->setIdDetailOperation($lDetail->getDopeId());
                         $lDetailReservation->setIdDetailCommande($lDetail->getStoIdDetailCommande());
                         $lDetailReservation->setMontant($lDetail->getDopeMontant());
                         $lDetailReservation->setQuantite($lDetail->getStoQuantite());
                         $lDetailReservation->setIdProduit($lDetail->getDcomIdProduit());
                         $lDetailReservation->setIdNomProduit($lDetail->getDcomIdNomProduit());
                         $lDetailReservation->setUnite($lDetail->getStoUnite());
                         $lReservation->addDetailReservation($lDetailReservation);
                     }
                 }
                 $lReservation->setTotal($lOperation->getMontant());
                 break;
         }
     }
     return $lReservation;
 }
 /**
  * @name selectReservation($pIdOperation, &$pReservation)
  * @param integer
  * @param ReservationVO
  * @desc Récupère le détail d'une réservation (achetée) à partir de l'historique du stock
  */
 public static function selectReservation($pIdOperation, &$pReservation)
 {
     // Initialisation du Logger
     $lLogger =& Log::singleton('file', CHEMIN_FICHIER_LOGS);
     $lLogger->setMask(Log::MAX(LOG_LEVEL));
     $lRequete = "SELECT \n\t\t\t\t   hStock." . HistoriqueStockManager::CHAMP_HISTORIQUESTOCK_STO_ID . ", hStock." . HistoriqueStockManager::CHAMP_HISTORIQUESTOCK_ID_DETAIL_COMMANDE . ", hStock." . HistoriqueStockManager::CHAMP_HISTORIQUESTOCK_QUANTITE . "," . DetailCommandeManager::CHAMP_DETAILCOMMANDE_ID_PRODUIT . " FROM " . HistoriqueStockManager::TABLE_HISTORIQUESTOCK . " as hStock " . "INNER JOIN (" . "SELECT max(" . HistoriqueStockManager::CHAMP_HISTORIQUESTOCK_DATE . ") as date" . "," . HistoriqueStockManager::CHAMP_HISTORIQUESTOCK_ID_DETAIL_COMMANDE . " FROM " . HistoriqueStockManager::TABLE_HISTORIQUESTOCK . " WHERE " . HistoriqueStockManager::CHAMP_HISTORIQUESTOCK_ID_OPERATION . " = " . $pIdOperation . " AND " . HistoriqueStockManager::CHAMP_HISTORIQUESTOCK_TYPE . " = 0 " . " GROUP BY " . HistoriqueStockManager::CHAMP_HISTORIQUESTOCK_ID_DETAIL_COMMANDE . ") gp " . " ON gp.date = hStock.hsto_date AND gp." . HistoriqueStockManager::CHAMP_HISTORIQUESTOCK_ID_DETAIL_COMMANDE . " = hStock." . HistoriqueStockManager::CHAMP_HISTORIQUESTOCK_ID_DETAIL_COMMANDE . " INNER JOIN " . DetailCommandeManager::TABLE_DETAILCOMMANDE . " ON " . DetailCommandeManager::CHAMP_DETAILCOMMANDE_ID . " =  hStock." . HistoriqueStockManager::CHAMP_HISTORIQUESTOCK_ID_DETAIL_COMMANDE . " WHERE " . HistoriqueStockManager::CHAMP_HISTORIQUESTOCK_ID_OPERATION . " = " . $pIdOperation . " AND " . HistoriqueStockManager::CHAMP_HISTORIQUESTOCK_TYPE . " = 0;";
     $lLogger->log("Execution de la requete : " . $lRequete, PEAR_LOG_DEBUG);
     // Maj des logs
     $lSql = Dbutils::executerRequete($lRequete);
     if (mysql_num_rows($lSql) > 0) {
         while ($lLigne = mysql_fetch_assoc($lSql)) {
             $lDetailReservation = new DetailReservationVO();
             $lDetailReservation->getId()->setIdStock($lLigne[HistoriqueStockManager::CHAMP_HISTORIQUESTOCK_STO_ID]);
             $lDetailReservation->setIdDetailCommande($lLigne[HistoriqueStockManager::CHAMP_HISTORIQUESTOCK_ID_DETAIL_COMMANDE]);
             $lDetailReservation->setQuantite($lLigne[HistoriqueStockManager::CHAMP_HISTORIQUESTOCK_QUANTITE]);
             $lDetailReservation->setIdProduit($lLigne[DetailCommandeManager::CHAMP_DETAILCOMMANDE_ID_PRODUIT]);
             $pReservation->addDetailReservation($lDetailReservation);
         }
     }
 }
 /**
  * @name modifierAchat($pParam)
  * @return ListeReservationCommandeVR
  * @desc Met à jour une réservation
  */
 public function modifierAchat($pParam)
 {
     $lVr = AfficheAchatAdherentValid::validModifierAchat($pParam);
     if ($lVr->getValid()) {
         $lAchatData = $pParam["achat"];
         $lAchat = new AchatVO();
         if ($lAchatData['idAchat'] < 0) {
             // Si c'est un ajout
             $lVr = AfficheAchatAdherentValid::validAjoutAchat($lAchatData);
             if ($lVr->getValid()) {
                 // Recherche si il y a une réservation
                 $lIdReservation = new IdReservationVO();
                 $lIdReservation->setIdCompte($lAchatData["idCompte"]);
                 $lIdReservation->setIdCommande($lAchatData["idMarche"]);
                 $lReservationService = new ReservationService();
                 $lOperations = $lReservationService->selectOperationReservation($lIdReservation);
                 if ($lOperations[0]->getTypePaiement() == 0) {
                     $lAchat->getId()->setIdReservation($lOperations[0]->getId());
                 }
                 $lAchat->getId()->setIdCompte($lAchatData["idCompte"]);
                 $lAchat->getId()->setIdCommande($lAchatData["idMarche"]);
                 foreach ($lAchatData["produits"] as $lDetail) {
                     $lDetailCommande = DetailCommandeManager::selectByIdProduit($lDetail["id"]);
                     $lDetailAchat = new DetailReservationVO();
                     $lDetailAchat->setIdDetailCommande($lDetailCommande[0]->getId());
                     $lDetailAchat->setQuantite($lDetail["quantite"]);
                     $lDetailAchat->setMontant($lDetail["prix"]);
                     $lProduit = ProduitManager::select($lDetail["id"]);
                     $lDetailAchat->setIdNomProduit($lProduit->getIdNomProduit());
                     $lDetailAchat->setUnite($lProduit->getUniteMesure());
                     if ($lAchatData["idAchat"] == -1) {
                         $lAchat->addDetailAchat($lDetailAchat);
                     } else {
                         if ($lAchatData["idAchat"] == -2) {
                             $lAchat->addDetailAchatSolidaire($lDetailAchat);
                         }
                     }
                 }
             } else {
                 return $lVr;
             }
         } else {
             $lOperationService = new OperationService();
             $lOperation = $lOperationService->get($lAchatData["idAchat"]);
             $lAchat = new AchatVO();
             $lAchat->getId()->setIdCompte($lOperation->getIdCompte());
             $lAchat->getId()->setIdCommande($lOperation->getIdCommande());
             $lAchat->getId()->setIdAchat($lOperation->getId());
             foreach ($lAchatData["produits"] as $lDetail) {
                 $lDetailCommande = DetailCommandeManager::selectByIdProduit($lDetail["id"]);
                 $lDetailAchat = new DetailReservationVO();
                 $lDetailAchat->setIdDetailCommande($lDetailCommande[0]->getId());
                 $lDetailAchat->setQuantite($lDetail["quantite"]);
                 $lDetailAchat->setMontant($lDetail["prix"]);
                 $lProduit = ProduitManager::select($lDetail["id"]);
                 $lDetailAchat->setIdNomProduit($lProduit->getIdNomProduit());
                 $lDetailAchat->setUnite($lProduit->getUniteMesure());
                 if ($lOperation->getTypePaiement() == 7) {
                     $lAchat->addDetailAchat($lDetailAchat);
                 } else {
                     if ($lOperation->getTypePaiement() == 8) {
                         $lAchat->addDetailAchatSolidaire($lDetailAchat);
                     }
                 }
             }
         }
         $lAchatService = new AchatService();
         $lIdOperation = $lAchatService->set($lAchat);
     }
     return $lVr;
 }
Пример #6
0
 /**
  * @name updateProduit($pProduit)
  * @param ProduitVO
  * @desc Met à jour le produit du marché
  */
 public function updateProduit($pProduit, $pLotRemplacement = array())
 {
     $lProduitActuel = $this->selectProduit($pProduit->getId());
     //Les lots
     $lLotModif = array();
     $lLotSupp = array();
     foreach ($lProduitActuel->getLots() as $lLotActuel) {
         $lMajLot = true;
         foreach ($pProduit->getLots() as $lLotNv) {
             // Maj Lot
             if ($lLotActuel->getId() == $lLotNv->getId()) {
                 $lDcomId = $lLotActuel->getId();
                 $lMajLot = false;
                 $lDetailCommande = new DetailCommandeVO();
                 $lDetailCommande->setId($lLotActuel->getId());
                 $lDetailCommande->setIdProduit($lProduitActuel->getId());
                 $lDetailCommande->setTaille($lLotNv->getTaille());
                 $lDetailCommande->setPrix($lLotNv->getPrix());
                 DetailCommandeManager::update($lDetailCommande);
                 // Maj des réservations associées
                 DetailOperationManager::majTotalReservation($lLotActuel->getId());
                 array_push($lLotModif, $lDetailCommande);
             }
         }
         // Supprimer Lot
         if ($lMajLot) {
             array_push($lLotSupp, $lLotActuel->getId());
         }
     }
     // Nouveau Lot
     $lLotAdd = array();
     foreach ($pProduit->getLots() as $lLotNv) {
         $lAjout = true;
         foreach ($lProduitActuel->getLots() as $lLotActuel) {
             if ($lLotActuel->getId() == $lLotNv->getId()) {
                 $lAjout = false;
             }
         }
         if ($lAjout) {
             $lDetailCommande = new DetailCommandeVO();
             $lDetailCommande->setIdProduit($lProduitActuel->getId());
             $lDetailCommande->setTaille($lLotNv->getTaille());
             $lDetailCommande->setPrix($lLotNv->getPrix());
             $lDcomId = DetailCommandeManager::insert($lDetailCommande);
             $lLotAdd[$lLotNv->getId()] = $lDcomId;
             // Si supression d'un lot et positionnement de ce nouveau lot permet de récupérer l'ID
         }
     }
     $lStockService = new StockService();
     $lResaActuel = GestionCommandeReservationProducteurViewManager::getStockReservationProducteur($lProduitActuel->getIdCompteFerme(), $lProduitActuel->getId());
     $lStockActuel = $lStockService->get($lResaActuel[0]->getStoId());
     // Maj du stock
     $lStockActuel->setQuantite($pProduit->getQteRestante());
     $lStockActuel->setIdDetailCommande($lDcomId);
     $lStockService->updateStockProduit($lStockActuel);
     $lProduit = ProduitManager::select($lProduitActuel->getId());
     $lProduit->setUniteMesure($pProduit->getUnite());
     if ($pProduit->getQteMaxCommande() == "" || $pProduit->getQteMaxCommande() == -1) {
         $lProduit->setMaxProduitCommande(-1);
     } else {
         $lProduit->setMaxProduitCommande($pProduit->getQteMaxCommande());
     }
     $lProduit->setType($pProduit->getType());
     ProduitManager::update($lProduit);
     // Modif des réservations
     $lReservationService = new ReservationService();
     $lIdMarche = $lProduitActuel->getIdMarche();
     foreach ($lLotSupp as $lIdLot) {
         // Chaque lot supprimé => La réservation est positionnée sur un autre lot
         if (isset($pLotRemplacement[$lIdLot])) {
             $lIdLotRemplacement = $pLotRemplacement[$lIdLot];
             if ($lIdLotRemplacement < 0) {
                 $lIdLotRemplacement = $lLotAdd[$lIdLotRemplacement];
             }
             $lListeDetailReservation = $lReservationService->getReservationSurLot($lIdLot);
             if (!is_null($lListeDetailReservation[0]->getDopeIdCompte())) {
                 // Si il y a des réservations
                 foreach ($lListeDetailReservation as $lDetailReservation) {
                     // Chaque réservation de lot modifié
                     $lIdReservationVO = new IdReservationVO();
                     $lIdReservationVO->setIdCompte($lDetailReservation->getDopeIdCompte());
                     $lIdReservationVO->setIdCommande($lIdMarche);
                     $lReservationVO = $lReservationService->get($lIdReservationVO);
                     $lNvDetailReservation = array();
                     foreach ($lReservationVO->getDetailReservation() as $lDetailReservationActuelle) {
                         if ($lDetailReservationActuelle->getIdDetailCommande() == $lIdLot) {
                             // Maj de la reservation pour ce produit
                             $lDetailCommande = DetailCommandeManager::select($lIdLotRemplacement);
                             $lPrix = $lDetailReservation->getStoQuantite() / $lDetailCommande->getTaille() * $lDetailCommande->getPrix();
                             $lDetailReservationVO = new DetailReservationVO();
                             $lDetailReservationVO->setIdDetailCommande($lIdLotRemplacement);
                             $lDetailReservationVO->setQuantite($lDetailReservation->getStoQuantite());
                             $lDetailReservationVO->setMontant($lPrix);
                             array_push($lNvDetailReservation, $lDetailReservationVO);
                         } else {
                             // Ajout des autres produits
                             array_push($lNvDetailReservation, $lDetailReservationActuelle);
                         }
                     }
                     $lReservationVO->setDetailReservation($lNvDetailReservation);
                     $lReservationService->set($lReservationVO);
                     // Maj de la reservation
                 }
             }
         }
         $lDeleteLot = DetailCommandeManager::select($lIdLot);
         $lDeleteLot->setEtat(1);
         DetailCommandeManager::update($lDeleteLot);
     }
 }
 /**
  * @name modifierReservation($pParam)
  * @return ListeReservationCommandeVR
  * @desc Met à jour une réservation
  */
 public function modifierReservation($pParam)
 {
     $pParam['idCompte'] = $_SESSION[ID_COMPTE];
     $lVr = ReservationMarcheValid::validUpdate($pParam);
     if ($lVr->getValid()) {
         $lReservationService = new ReservationService();
         $lIdLot = $pParam["detailReservation"][0]["stoIdDetailCommande"];
         $lDetailMarche = DetailMarcheViewManager::selectByLot($lIdLot);
         $lReservation = new ReservationVO();
         $lReservation->getId()->setIdCompte($_SESSION[ID_COMPTE]);
         $lReservation->getId()->setIdCommande($lDetailMarche[0]->getComId());
         $lReservationAbonnement = array();
         $lReservationsActuelle = $lReservationService->get($lReservation->getId());
         $lProduitsAbonnementMarche = ProduitManager::selectbyIdMarcheProduitAbonnement($lDetailMarche[0]->getComId());
         foreach ($lReservationsActuelle->getDetailReservation() as $lReservationActuelle) {
             foreach ($lProduitsAbonnementMarche as $lProduitAboMarche) {
                 if ($lReservationActuelle->getIdProduit() == $lProduitAboMarche->getId()) {
                     $lReservationAbonnement[$lProduitAboMarche->getId()] = $lReservationActuelle;
                 }
             }
         }
         foreach ($pParam["detailReservation"] as $lDetail) {
             $lDetailCommande = DetailCommandeManager::select($lDetail["stoIdDetailCommande"]);
             $lPrix = $lDetail["stoQuantite"] / $lDetailCommande->getTaille() * $lDetailCommande->getPrix();
             $lDetailReservation = new DetailReservationVO();
             $lDetailReservation->setIdDetailCommande($lDetail["stoIdDetailCommande"]);
             $lDetailReservation->setQuantite($lDetail["stoQuantite"]);
             $lDetailReservation->setMontant($lPrix);
             $lAjout = true;
             foreach ($lProduitsAbonnementMarche as $lProduitAboMarche) {
                 if ($lDetailCommande->getIdProduit() == $lProduitAboMarche->getId()) {
                     if (!isset($lReservationAbonnement[$lProduitAboMarche->getId()])) {
                         $lReservationAbonnement[$lProduitAboMarche->getId()] = $lDetailReservation;
                     }
                     $lAjout = false;
                 }
             }
             if ($lAjout) {
                 $lReservation->addDetailReservation($lDetailReservation);
             }
         }
         foreach ($lReservationAbonnement as $lReservationAbo) {
             $lReservation->addDetailReservation($lReservationAbo);
         }
         $lIdOperation = $lReservationService->set($lReservation);
     }
     return $lVr;
 }