コード例 #1
0
 /**
  * @name getReservation($pParam)
  * @return ReservationAdherentResponse
  * @desc Retourne les détails d'une réservation et de la commande
  */
 public function getReservation($pParam)
 {
     $lVr = AfficheReservationAdherentValid::validAjout($pParam);
     if ($lVr->getValid()) {
         $lIdAdherent = $pParam["id_adherent"];
         $lIdCommande = $pParam["id_commande"];
         $lResponse = new ReservationAdherentResponse();
         $lAdherent = AdherentViewManager::select($lIdAdherent);
         $lResponse->setAdherent($lAdherent);
         $lMarcheService = new MarcheService();
         $lResponse->setMarche($lMarcheService->get($pParam["id_commande"]));
         $lReservationService = new ReservationService();
         $lIdReservation = new IdReservationVO();
         $lIdReservation->setIdCompte($lAdherent->getAdhIdCompte());
         $lIdReservation->setIdCommande($pParam["id_commande"]);
         if ($lReservationService->enCoursOuAchete($lIdReservation)) {
             $lReservation = $lReservationService->get($lIdReservation);
             $lResponse->setReservation($lReservation->getDetailReservation());
             $lResponse->setEtat($lReservation->getEtat());
         } else {
             $lResponse->setEtat(null);
         }
         return $lResponse;
     }
     return $lVr;
 }
コード例 #2
0
 /**
  * @name updateAbonnement($pCompteAbonnement)
  * @param CompteAbonnementVO
  * @return integer
  * @desc Met à jour un Abonnement
  */
 private function updateAbonnement($pCompteAbonnement)
 {
     // Récupère le produitAbonnement
     $lProduitAbonnement = $this->getProduit($pCompteAbonnement->getIdProduitAbonnement());
     // La liste des Produit identique en abonnement sur des marche en cours
     $lProduitsMarche = DetailMarcheViewManager::selectProduitAbonnementMarcheActifByIdNomProduit($lProduitAbonnement->getIdNomProduit());
     $lListeProduitsMarche = array();
     foreach ($lProduitsMarche as $lProduit) {
         if (isset($lListeProduitsMarche[$lProduit->getProId()])) {
             array_push($lListeProduitsMarche[$lProduit->getProId()]["lots"], $lProduit);
         } else {
             $lListeProduitsMarche[$lProduit->getProId()]["produit"] = $lProduit;
             $lListeProduitsMarche[$lProduit->getProId()]["lots"] = array();
             array_push($lListeProduitsMarche[$lProduit->getProId()]["lots"], $lProduit);
         }
     }
     $lReservationService = new ReservationService();
     $lStockService = new StockService();
     foreach ($lListeProduitsMarche as $lProduitMarche) {
         $lSuspendu = false;
         // Si il n'y a pas de suspension à la date du marché
         if (TestFonction::dateTimeEstPLusGrandeEgale($lProduitMarche["produit"]->getComDateMarcheDebut(), $pCompteAbonnement->getDateDebutSuspension(), 'db') && TestFonction::dateTimeEstPLusGrandeEgale($pCompteAbonnement->getDateFinSuspension(), $lProduitMarche["produit"]->getComDateMarcheFin(), 'db')) {
             $lSuspendu = true;
         }
         $lPoursuivre = true;
         // Si le marché n'est pas encore passé
         if (!TestFonction::dateTimeEstPLusGrandeEgale($lProduitMarche["produit"]->getComDateMarcheDebut(), StringUtils::dateTimeAujourdhuiDb(), 'db')) {
             $lPoursuivre = false;
         }
         if ($lPoursuivre) {
             // Recherche de l'Id du lot dans le marché pour le produit correspondant.
             $lIdLot = 0;
             foreach ($lProduitMarche["lots"] as $lLot) {
                 if (fmod($pCompteAbonnement->getQuantite(), $lLot->getDcomTaille()) == 0) {
                     $lIdLot = $lLot->getDcomId();
                     $lTailleLot = $lLot->getDcomTaille();
                     $lPrixLot = $lLot->getDcomPrix();
                 }
             }
             // Si un lot correspond
             $lPoursuivre = $lIdLot != 0;
             if ($lPoursuivre) {
                 $lReservation = new ReservationVO();
                 $lReservation->getId()->setIdCompte($pCompteAbonnement->getIdCompte());
                 $lReservation->getId()->setIdCommande($lProduitMarche["produit"]->getComId());
                 $lReservationsActuelle = $lReservationService->get($lReservation->getId());
                 $lTestDetailReservation = $lReservationsActuelle->getDetailReservation();
                 if (empty($lTestDetailReservation) && !$lSuspendu && $pCompteAbonnement->getEtat() == 0) {
                     // Ajoute une réservation
                     $lQuantite = $pCompteAbonnement->getQuantite();
                     if ($lProduitMarche["produit"]->getProStockInitial() != -1) {
                         $lStockProduit = $lStockService->selectByIdProduitStockProduitReservation($lProduitMarche["produit"]->getProId());
                         $lStockDispo = $lProduitMarche["produit"]->getProStockInitial() - $lStockProduit[0]->getStoQuantite();
                         if ($lStockDispo > 0) {
                             if ($lStockDispo < $lQuantite) {
                                 $lQuantite = $lStockDispo;
                             }
                         } else {
                             // Plus de stock
                             $lPoursuivre = false;
                         }
                     }
                     if ($lPoursuivre) {
                         if ($lProduitMarche["produit"]->getProMaxProduitCommande() != -1 && $lProduitMarche["produit"]->getProMaxProduitCommande() < $lQuantite) {
                             $lQuantite = $lProduitMarche["produit"]->getProMaxProduitCommande();
                         }
                         $lDetailReservation = new DetailReservationVO();
                         $lDetailReservation->setIdDetailCommande($lIdLot);
                         $lDetailReservation->setQuantite(-1 * $lQuantite);
                         $lDetailReservation->setMontant(-1 * $lQuantite / $lTailleLot * $lPrixLot);
                         $lReservationsActuelle->addDetailReservation($lDetailReservation);
                         $lReservationsActuelle->setId($lReservation->getId());
                         $lReservationService->set($lReservationsActuelle);
                     }
                 } else {
                     // Si il y a une réservation déjà sur ce produit on la met à jour
                     $lMaj = false;
                     $lQuantiteActuelle = 0;
                     foreach ($lReservationsActuelle->getDetailReservation() as $lDetailReservationActuelle) {
                         if ($lDetailReservationActuelle->getIdProduit() == $lProduitMarche["produit"]->getProId()) {
                             $lQuantiteActuelle = $lDetailReservationActuelle->getQuantite();
                             $lMaj = true;
                         } else {
                             $lReservation->addDetailReservation($lDetailReservationActuelle);
                         }
                     }
                     if ($lMaj || !$lMaj && !$lSuspendu && $pCompteAbonnement->getEtat() == 0) {
                         $lQuantite = $pCompteAbonnement->getQuantite();
                         if ($lProduitMarche["produit"]->getProStockInitial() != -1) {
                             $lStockProduit = $lStockService->selectByIdProduitStockProduitReservation($lProduitMarche["produit"]->getProId());
                             $lStockDispo = $lProduitMarche["produit"]->getProStockInitial() - $lStockProduit[0]->getStoQuantite() - $lQuantiteActuelle;
                             if ($lStockDispo > 0) {
                                 if ($lStockDispo < $lQuantite) {
                                     $lQuantite = $lStockDispo;
                                 }
                             } else {
                                 // Plus de stock
                                 $lPoursuivre = false;
                             }
                         }
                         if ($lPoursuivre) {
                             if ($lProduitMarche["produit"]->getProMaxProduitCommande() != -1 && $lProduitMarche["produit"]->getProMaxProduitCommande() < $lQuantite) {
                                 $lQuantite = $lProduitMarche["produit"]->getProMaxProduitCommande();
                             }
                             $lDetailReservation = new DetailReservationVO();
                             $lDetailReservation->setIdDetailCommande($lIdLot);
                             $lDetailReservation->setQuantite(-1 * $lQuantite);
                             $lDetailReservation->setMontant(-1 * $lQuantite / $lTailleLot * $lPrixLot);
                             if ($pCompteAbonnement->getEtat() == 0 && !$lSuspendu) {
                                 // Si l'abonnement est toujours actif et qu'il n'y a pas de suspension
                                 $lReservation->addDetailReservation($lDetailReservation);
                             }
                         }
                         $lReservationService->set($lReservation);
                     }
                 }
             }
         }
     }
     return CompteAbonnementManager::update($pCompteAbonnement);
 }
コード例 #3
0
 /**
  * @name getInfoAchatMarche($pParam)
  * @return InfoAchatCommandeResponse
  * @desc Retourne les infos de réservation d'un adhérent
  */
 public function getInfoAchatMarche($pParam)
 {
     $lVr = MarcheValid::validGetInfoAchatMarche($pParam);
     if ($lVr->getValid()) {
         $lResponse = new InfoAchatCommandeResponse();
         if ($pParam["id_adherent"] != 0) {
             // Si ce n'est pas le compte invité
             $lAdherent = AdherentViewManager::select($pParam["id_adherent"]);
             $lResponse->setAdherent($lAdherent);
         }
         $lStockService = new StockService();
         $lStockProduitsDisponible = $lStockService->getProduitsDisponible();
         // Stock de produit disponible
         $lStock = array();
         $lProduitsMarche = array();
         $lProduitsReservation = array();
         $lProduitsAchat = array();
         if ($pParam["id_commande"] != -1) {
             // Si ce n'est pas la caisse permanente
             $lMarcheService = new MarcheService();
             $lMarche = $lMarcheService->get($pParam["id_commande"]);
             $lProduitsMarche = $lMarche->getProduits();
             $lResponse->setMarche($lMarche);
             // Les informations du marché
             if ($pParam["id_adherent"] != 0) {
                 // Si ce n'est pas le compte invité
                 $lReservationService = new ReservationService();
                 $lIdReservation = new IdReservationVO();
                 $lIdReservation->setIdCompte($lAdherent->getAdhIdCompte());
                 $lIdReservation->setIdCommande($pParam["id_commande"]);
                 // Récupère les réservations actives
                 $lProduitsReservation = $lReservationService->get($lIdReservation, true)->getDetailReservation();
                 $lResponse->setReservation($lProduitsReservation);
                 // La réservation
                 $lAchatService = new AchatService();
                 $lOperationsAchat = $lAchatService->selectOperationAchat($lAdherent->getAdhIdCompte(), $pParam["id_commande"]);
                 $lAchat = new AchatVO();
                 if (!is_null($lOperationsAchat[0]->getId())) {
                     $lAchat = $lAchatService->get($lOperationsAchat[0]->getId());
                     $lProduitsAchat = $lAchat->getProduits();
                 } else {
                     $lOperationService = new OperationService();
                     $lOperationsRechargement = $lOperationService->getOperationRechargementSurMarche($lAdherent->getAdhIdCompte(), $pParam["id_commande"]);
                     if (!is_null($lOperationsRechargement[0]->getId())) {
                         $lAchat = $lAchatService->get($lOperationsRechargement[0]->getId());
                     }
                 }
                 $lResponse->setAchats($lAchat);
                 // L'achat
             }
         }
         if ($pParam["id_adherent"] != 0) {
             // Si ce n'est pas le compte invité
             $lAdhesionService = new AdhesionService();
             $lResponse->setNbAdhesionEnCours($lAdhesionService->getNbAdhesionEnCoursSurAdherent($pParam["id_adherent"]));
         }
         // Fusion des stocks
         $lLotsProduits = array();
         foreach ($lStockProduitsDisponible as $lProduitStock) {
             if (!is_null($lProduitStock->getId())) {
                 $lAjout = true;
                 foreach ($lProduitsMarche as $lProduitMarche) {
                     if ($lProduitStock->getIdNom() == $lProduitMarche->getIdNom() && $lProduitStock->getUnite() == $lProduitMarche->getUnite()) {
                         $lAjout = false;
                     }
                 }
                 if ($lAjout) {
                     if (!isset($lStock[$lProduitStock->getCproNom()])) {
                         $lStock[$lProduitStock->getCproNom()] = array("cproId" => $lProduitStock->getIdCategorie(), "cproNom" => $lProduitStock->getCproNom(), "produits" => array());
                     }
                     $lUnite = $lProduitStock->getUnite();
                     $lStock[$lProduitStock->getCproNom()]["produits"][$lProduitStock->getNom() . $lProduitStock->getUnite()] = new ProduitDetailAchatAfficheVO($lProduitStock->getIdNom(), null, null, null, null, null, null, null, null, null, $lUnite, null, $lUnite, null, null, $lProduitStock->getIdCategorie(), $lProduitStock->getCproNom(), null, $lProduitStock->getNom());
                     $lLotsProduits[$lProduitStock->getIdNom() . $lProduitStock->getUnite()] = array("nom" => $lProduitStock->getNom(), "type" => "modele", "lots" => $lProduitStock->getLots());
                 }
             }
         }
         foreach ($lProduitsMarche as $lProduitMarche) {
             if (!isset($lStock[$lProduitMarche->getCproNom()])) {
                 $lStock[$lProduitMarche->getCproNom()] = array("cproId" => $lProduitMarche->getIdCategorie(), "cproNom" => $lProduitMarche->getCproNom(), "produits" => array());
             }
             $lUnite = !is_null($lProduitMarche->getUnite()) ? $lProduitMarche->getUnite() : $lProduitMarche->getUniteSolidaire();
             $lMontant = NULL;
             $lQuantite = NULL;
             $lIdDetailCommande = NULL;
             // Ajout des réservations
             if (empty($lProduitsAchat)) {
                 foreach ($lProduitsReservation as $lProduitReservation) {
                     if ($lProduitReservation->getIdNomProduit() == $lProduitMarche->getIdNom() && $lProduitReservation->getUnite() == $lProduitMarche->getUnite()) {
                         $lQuantite = $lProduitReservation->getQuantite();
                         $lMontant = $lProduitReservation->getMontant();
                         $lIdDetailCommande = $lProduitReservation->getIdDetailCommande();
                     }
                 }
             }
             $lStock[$lProduitMarche->getCproNom()]["produits"][$lProduitMarche->getNom() . $lProduitMarche->getUnite()] = new ProduitDetailAchatAfficheVO($lProduitMarche->getIdNom(), null, null, null, null, $lIdDetailCommande, null, null, null, $lQuantite, $lUnite, null, $lUnite, $lMontant, null, $lProduitMarche->getIdCategorie(), $lProduitMarche->getCproNom(), null, $lProduitMarche->getNom());
             $lLotsProduits[$lProduitMarche->getIdNom() . $lProduitMarche->getUnite()] = array("nom" => $lProduitMarche->getNom(), "type" => "marche", "lots" => $lProduitMarche->getLots());
         }
         foreach ($lProduitsAchat as $lProduitAchat) {
             $lUnite = !is_null($lProduitAchat->getUnite()) ? $lProduitAchat->getUnite() : $lProduitAchat->getUniteSolidaire();
             if (!is_null($lUnite)) {
                 if (isset($lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite])) {
                     $lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite]->setIdStock($lProduitAchat->getIdStock());
                     $lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite]->setIdStockSolidaire($lProduitAchat->getIdStockSolidaire());
                     $lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite]->setIdDetailCommande($lProduitAchat->getIdDetailCommande());
                     $lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite]->setIdModeleLot($lProduitAchat->getIdModeleLot());
                     $lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite]->setIdDetailCommandeSolidaire($lProduitAchat->getIdDetailCommandeSolidaire());
                     $lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite]->setIdModeleLotSolidaire($lProduitAchat->getIdModeleLotSolidaire());
                     $lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite]->setQuantite($lProduitAchat->getQuantite());
                     $lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite]->setQuantiteSolidaire($lProduitAchat->getQuantiteSolidaire());
                     $lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite]->setMontant($lProduitAchat->getMontant());
                     $lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite]->setMontantSolidaire($lProduitAchat->getMontantSolidaire());
                     $lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite]->setIdDetailOperation($lProduitAchat->getIdDetailOperation());
                     $lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite]->setIdDetailOperationSolidaire($lProduitAchat->getIdDetailOperationSolidaire());
                 } else {
                     if (!isset($lStock[$lProduitAchat->getCproNom()])) {
                         $lStock[$lProduitAchat->getCproNom()] = array("cproId" => $lProduitAchat->getCproId(), "cproNom" => $lProduitAchat->getCproNom(), "produits" => array());
                     }
                     $lProduitAchat->setUnite($lUnite);
                     $lProduitAchat->setUniteSolidaire($lUnite);
                     $lStock[$lProduitAchat->getCproNom()]["produits"][$lProduitAchat->getNproNom() . $lUnite] = $lProduitAchat;
                     // Ajout des lots
                     $lModelesLot = ModeleLotManager::selectByIdNomProduit($lProduitAchat->getIdNomProduit());
                     // Récupère même les lots supprimés car il y a peut être eu un achat sur ce lot précédemment
                     $lLots = array();
                     foreach ($lModelesLot as $lModeleLot) {
                         $lLot = new DetailMarcheVO();
                         $lLot->setId($lModeleLot->getId());
                         $lLot->setTaille($lModeleLot->getQuantite());
                         $lLot->setPrix($lModeleLot->getPrix());
                         $lLots[$lModeleLot->getId()] = $lLot;
                     }
                     $lLotsProduits[$lProduitAchat->getIdNomProduit() . $lUnite] = array("nom" => $lProduitAchat->getNproNom(), "type" => "modele", "lots" => $lLots);
                 }
             }
         }
         ksort($lStock);
         $lResponse->setStock($lStock);
         // Stock de produit disponible
         $lResponse->setLots($lLotsProduits);
         // Lots des produits
         $lBanqueService = new BanqueService();
         $lTypePaiementService = new TypePaiementService();
         $lResponse->setTypePaiement($lTypePaiementService->selectVisible());
         // Type de paiment
         $lResponse->setBanques($lBanqueService->getAllActif());
         // Liste des banques
         $lResponse->setIdRequete(uniqid());
         return $lResponse;
     }
     return $lVr;
 }
コード例 #4
0
 /**
  * @name getAchatEtReservation($pParam)
  * @return AchatAdherentResponse
  * @desc Retourne les détails d'une réservation et des achats du marché
  */
 public function getAchatEtReservation($pParam)
 {
     $lVr = AfficheAchatAdherentValid::validGetAchatEtReservation($pParam);
     if ($lVr->getValid()) {
         $lIdAdherent = $pParam["id_adherent"];
         $lIdMarche = $pParam["id_marche"];
         $lIdOperation = $pParam["idOperation"];
         $lResponse = new AchatAdherentResponse();
         $lAdherent = AdherentViewManager::select($lIdAdherent);
         $lResponse->setAdherent($lAdherent);
         // Tableau pour rechercher le détail des produits achetés
         $lIdProduits = array();
         // Si achat sur marché recherche si il y a une réservation et le détail des achats
         if (!empty($lIdMarche) && empty($lIdOperation)) {
             $lReservationService = new ReservationService();
             $lIdReservation = new IdReservationVO();
             $lIdReservation->setIdCompte($lAdherent->getAdhIdCompte());
             $lIdReservation->setIdCommande($lIdMarche);
             $lReservation = $lReservationService->get($lIdReservation);
             $lResponse->setReservation($lReservation);
             if (!empty($lReservation)) {
                 // Récupère les informations sur les produits achetés
                 foreach ($lReservation->getDetailReservation() as $lDetailReservation) {
                     array_push($lIdProduits, $lDetailReservation->getIdProduit());
                 }
             }
             $lAchatService = new AchatService();
             $lIdAchat = new IdAchatVO();
             $lIdAchat->setIdCompte($lAdherent->getAdhIdCompte());
             $lIdAchat->setIdCommande($lIdMarche);
             $lAchats = $lAchatService->getAll($lIdAchat);
             $lResponse->setAchats($lAchats);
             if (is_array($lAchats)) {
                 foreach ($lAchats as $lAchat) {
                     foreach ($lAchat->getDetailAchat() as $lDetailAchat) {
                         array_push($lIdProduits, $lDetailAchat->getIdProduit());
                     }
                     foreach ($lAchat->getDetailAchatSolidaire() as $lDetailAchat) {
                         array_push($lIdProduits, $lDetailAchat->getIdProduit());
                     }
                 }
             }
         }
         // Récupère l'achat si il il y une operation
         if (!empty($lIdOperation)) {
             $lAchatService = new AchatService();
             $lIdAchat = new IdAchatVO();
             $lIdAchat->setIdAchat($lIdOperation);
             $lAchat = $lAchatService->get($lIdAchat);
             $lResponse->setAchats($lAchat);
             foreach ($lAchat->getDetailAchat() as $lDetailAchat) {
                 array_push($lIdProduits, $lDetailAchat->getIdProduit());
             }
             foreach ($lAchat->getDetailAchatSolidaire() as $lDetailAchat) {
                 array_push($lIdProduits, $lDetailAchat->getIdProduit());
             }
         }
         $lProduitService = new ProduitService();
         $lResponse->setDetailProduit($lProduitService->selectDetailProduits($lIdProduits));
         return $lResponse;
     }
     return $lVr;
 }
コード例 #5
0
 /**
  * @name supprimerProduit($pId)
  * @param integer
  * @desc Supprime un produit du marché
  */
 public function supprimerProduit($pId)
 {
     $lProduit = ProduitManager::select($pId);
     // Suppression des lots
     $lLots = DetailCommandeManager::selectByIdProduit($pId);
     foreach ($lLots as $lLot) {
         $lLot->setEtat(1);
         DetailCommandeManager::update($lLot);
     }
     $lProduit->setEtat(1);
     ProduitManager::update($lProduit);
     // Modif des réservations
     $lReservationService = new ReservationService();
     $lIdMarche = $lProduit->getIdCommande();
     foreach ($lLots as $lLot) {
         // Chaque lot modifié
         $lListeDetailReservation = $lReservationService->getReservationSurLot($lLot->getId());
         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() != $lLot->getId()) {
                         // Ne positionne que les autres produits
                         array_push($lNvDetailReservation, $lDetailReservationActuelle);
                     }
                 }
                 $lReservationVO->setDetailReservation($lNvDetailReservation);
                 $lReservationService->set($lReservationVO);
                 // Maj de la reservation
             }
         }
     }
 }
コード例 #6
0
 /**
  * @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;
 }