/**
  * @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;
 }
 /**
  * @name validAjout($pData)
  * @return AchatCommandeVR
  * @desc Test la validite de l'élément
  */
 public static function validAjout($pData)
 {
     $lVr = new AchatCommandeVR();
     // Pour les adhents non compte invité et achat marché on vérifie si il n'y a pas déjà un achat
     if ($pData['idCompte'] != -3 && $pData['id'] != -1) {
         $lIdAchat = new IdAchatVO();
         $lIdAchat->setIdCompte($pData['idCompte']);
         $lIdAchat->setIdCommande($pData['id']);
         $lAchatService = new AchatService();
         $lAchat = $lAchatService->getAll($lIdAchat);
         if (isset($lAchat[0]) && is_object($lAchat[0]) && !is_null($lAchat[0]->getId()->getIdCompte())) {
             $lVr->setValid(false);
             $lVr->getLog()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_263_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_263_MSG);
             $lVr->getLog()->addErreur($lErreur);
         }
     }
     return $lVr;
 }