/**
  * @name selectDetailProduits($pIdProduits)
  * @param array(integer idProduit)
  * @return array(DetailProduitVO)
  * @desc Récupères le détail des produits et les renvoie sous forme d'une collection de DetailProduitVO
  */
 public static function selectDetailProduits($pIdProduits)
 {
     $lProduitValid = new NAMESPACE_CLASSE\NAMESPACE_VALIDATEUR\MOD_SERVICE\ProduitValid();
     if ($lProduitValid->selectDetailProduits($pIdProduits)) {
         return ProduitManager::selectDetailProduits($pIdProduits);
     } else {
         return false;
     }
 }
 /**
  * @name getInfoCommandeArchive()
  * @return InfoCommandeResponse
  * @desc Retourne les infos sur la commande archivée
  */
 public function getInfoCommandeArchive($pParam)
 {
     $lVr = InfoCommandeValid::get($pParam);
     if ($lVr->getValid()) {
         $lResponse = new InfoCommandeResponse();
         $lResponse->setInfoCommande(ProduitManager::selectResumeMarche($pParam['id_marche']));
         $lResponse->setDetailMarche(CommandeManager::select($pParam['id_marche']));
         return $lResponse;
     }
     return $lVr;
 }
 /**
  * @name validAjoutProduit($pData)
  * @return CommandeCompleteVR
  * @desc Test la validite de l'élément
  */
 public static function validAjoutProduit($pData)
 {
     $lVr = CommandeCompleteValid::validDelete($pData);
     if ($lVr->getValid()) {
         $lVr = ProduitMarcheValid::validAjout($pData);
         if ($lVr->getValid()) {
             // Test si produit déjà dans le marché
             $lProduit = ProduitManager::selectbyIdNomProduitIdMarche($pData['idNom'], $pData['id']);
             $lType = $lProduit[0]->getType();
             $lId = $lProduit[0]->getId();
             if (!empty($lId) && $lType == $pData['type']) {
                 $lVr->setValid(false);
                 $lVr->getLog()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_211_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_211_MSG);
                 $lVr->getLog()->addErreur($lErreur);
             }
         }
     }
     return $lVr;
 }
 /**
  * @name getListeAchatEtReservationCSV($pParam)
  * @return Un Fichier CSV
  * @desc Retourne la liste des achats et réservations pour une commande et la liste de produits demandés
  */
 public function getListeAchatEtReservationCSV($pParam)
 {
     $lVr = ExportListeAchatEtReservationValid::validAjout($pParam);
     if ($lVr->getValid()) {
         $lIdProduits = $pParam['id_produits'];
         $lInfoAR = $this->getListeAchatEtReservationExport($pParam);
         $lQuantiteAR = $lInfoAR['quantite'];
         $lTableauAR = $lInfoAR['detail'];
         $lCSV = new CSV();
         $lCSV->setNom('AchatEtRéservations.csv');
         // Le Nom
         // L'entete
         $lEntete = array("Compte", "Nom", "Prénom", "Tel.");
         $lLigne2 = array("", "", "", "");
         $lLigne3 = array("", "", "", "Total");
         foreach ($lIdProduits as $lIdProduit) {
             $lProduit = ProduitManager::select($lIdProduit);
             $lNomProduit = NomProduitManager::select($lProduit->getIdNomProduit());
             $lLabelNomProduit = htmlspecialchars_decode($lNomProduit->getNom(), ENT_QUOTES);
             if ($lProduit->getType() == 2) {
                 $lLabelNomProduit .= " (Abonnement)";
             }
             array_push($lEntete, $lLabelNomProduit, "", "", "", "", "", "", "", "", "");
             array_push($lLigne2, "Réservation", "", "Achat", "", "", "", "Solidaire", "", "", "");
             $lQuantiteReservation = '';
             $lUniteReservation = '';
             if (isset($lQuantiteAR[$lIdProduit]['reservation']) && !empty($lQuantiteAR[$lIdProduit]['reservation'])) {
                 $lQuantiteReservation = $lQuantiteAR[$lIdProduit]['reservation'];
                 $lUniteReservation = $lProduit->getUniteMesure();
             }
             $lQuantiteAchat = '';
             $lUniteAchat = '';
             if (isset($lQuantiteAR[$lIdProduit]['qteAchat']) && !empty($lQuantiteAR[$lIdProduit]['qteAchat'])) {
                 $lQuantiteAchat = $lQuantiteAR[$lIdProduit]['qteAchat'];
                 $lUniteAchat = $lProduit->getUniteMesure();
             }
             $lPrixAchat = '';
             $lSiglePrixAchat = '';
             if (isset($lQuantiteAR[$lIdProduit]['prixAchat']) && !empty($lQuantiteAR[$lIdProduit]['prixAchat'])) {
                 $lPrixAchat = $lQuantiteAR[$lIdProduit]['prixAchat'];
                 $lSiglePrixAchat = SIGLE_MONETAIRE;
             }
             $lQuantiteSolidaire = '';
             $lUniteSolidaire = '';
             if (isset($lQuantiteAR[$lIdProduit]['qteSolidaire']) && !empty($lQuantiteAR[$lIdProduit]['qteSolidaire'])) {
                 $lQuantiteSolidaire = $lQuantiteAR[$lIdProduit]['qteSolidaire'];
                 $lUniteSolidaire = $lProduit->getUniteMesure();
             }
             $lPrixSolidaire = '';
             $lSiglePrixSolidaire = '';
             if (isset($lQuantiteAR[$lIdProduit]['prixSolidaire']) && !empty($lQuantiteAR[$lIdProduit]['prixSolidaire'])) {
                 $lPrixSolidaire = $lQuantiteAR[$lIdProduit]['prixSolidaire'];
                 $lSiglePrixSolidaire = SIGLE_MONETAIRE;
             }
             array_push($lLigne3, $lQuantiteReservation, $lUniteReservation, $lQuantiteAchat, $lUniteAchat, $lPrixAchat, $lSiglePrixAchat, $lQuantiteSolidaire, $lUniteSolidaire, $lPrixSolidaire, $lSiglePrixSolidaire);
         }
         $lCSV->setEntete($lEntete);
         // Les données
         $contenuTableau = array();
         array_push($contenuTableau, $lLigne2);
         array_push($contenuTableau, $lLigne3);
         foreach ($lTableauAR as $lVal) {
             $lLigne = array();
             array_push($lLigne, $lVal['compte']);
             array_push($lLigne, $lVal['nom']);
             array_push($lLigne, $lVal['prenom']);
             array_push($lLigne, $lVal['telephonePrincipal']);
             foreach ($lIdProduits as $lIdProduit) {
                 $lQuantiteReservation = '';
                 $lUniteReservation = '';
                 if (isset($lVal[$lIdProduit]['reservation']) && !empty($lVal[$lIdProduit]['reservation'])) {
                     $lQuantiteReservation = $lVal[$lIdProduit]['reservation'];
                     $lUniteReservation = $lVal[$lIdProduit]['unite'];
                 }
                 $lQuantiteAchat = '';
                 $lUniteAchat = '';
                 if (isset($lVal[$lIdProduit]['qteAchat']) && !empty($lVal[$lIdProduit]['qteAchat'])) {
                     $lQuantiteAchat = $lVal[$lIdProduit]['qteAchat'];
                     $lUniteAchat = $lVal[$lIdProduit]['unite'];
                 }
                 $lPrixAchat = '';
                 $lSiglePrixAchat = '';
                 if (isset($lVal[$lIdProduit]['prixAchat']) && !empty($lVal[$lIdProduit]['prixAchat'])) {
                     $lPrixAchat = $lVal[$lIdProduit]['prixAchat'];
                     $lSiglePrixAchat = SIGLE_MONETAIRE;
                 }
                 $lQuantiteSolidaire = '';
                 $lUniteSolidaire = '';
                 if (isset($lVal[$lIdProduit]['qteSolidaire']) && !empty($lVal[$lIdProduit]['qteSolidaire'])) {
                     $lQuantiteSolidaire = $lVal[$lIdProduit]['qteSolidaire'];
                     $lUniteSolidaire = $lVal[$lIdProduit]['unite'];
                 }
                 $lPrixSolidaire = '';
                 $lSiglePrixSolidaire = '';
                 if (isset($lVal[$lIdProduit]['prixSolidaire']) && !empty($lVal[$lIdProduit]['prixSolidaire'])) {
                     $lPrixSolidaire = $lVal[$lIdProduit]['prixSolidaire'];
                     $lSiglePrixSolidaire = SIGLE_MONETAIRE;
                 }
                 array_push($lLigne, $lQuantiteReservation, $lUniteReservation, $lQuantiteAchat, $lUniteAchat, $lPrixAchat, $lSiglePrixAchat, $lQuantiteSolidaire, $lUniteSolidaire, $lPrixSolidaire, $lSiglePrixSolidaire);
             }
             array_push($contenuTableau, $lLigne);
         }
         $lCSV->setData($contenuTableau);
         // Export en CSV
         $lCSV->output();
     } else {
         return $lVr;
     }
 }
 /**
  * @name updateStockProduit($pStock)
  * @param StockVO
  * @return integer
  * @desc Met à jour une opération
  */
 public function updateStockProduit($pStock)
 {
     // TODO les test : on update que les types 0/1/2/3/4/5/6
     $lStockActuel = $this->get($pStock->getId());
     $pStock->setDate(StringUtils::dateTimeAujourdhuiDb());
     // TODO Mise à jour du stock selon le type
     switch ($pStock->getType()) {
         case 0:
             // Reservation
             $lLot = DetailCommandeManager::select($pStock->getIdDetailCommande());
             $lProduit = ProduitManager::select($lLot->getIdProduit());
             if ($pStock->getQuantite() != -1 && $lProduit->getStockInitial() == -1) {
                 // Maj Stock Reservation dans le produit
                 $lProduit->setStockReservation($lProduit->getStockReservation() + $pStock->getQuantite());
                 $lProduit->setStockInitial($pStock->getQuantite());
                 ProduitManager::update($lProduit);
             } else {
                 if ($pStock->getQuantite() == -1 && $lProduit->getStockInitial() != -1) {
                     //echo 2;
                     // Maj Stock Reservation dans le produit
                     $lProduit->setStockReservation($lProduit->getStockReservation() - $lProduit->getStockInitial());
                     $lProduit->setStockInitial(-1);
                     ProduitManager::update($lProduit);
                 } else {
                     if ($pStock->getQuantite() != -1 && $lProduit->getStockInitial() != -1) {
                         //echo 3;
                         // Maj Stock Reservation dans le produit
                         $lProduit->setStockReservation($lProduit->getStockReservation() - $lProduit->getStockInitial() + $pStock->getQuantite());
                         $lProduit->setStockInitial($pStock->getQuantite());
                         ProduitManager::update($lProduit);
                     }
                 }
             }
             break;
     }
     $this->insertHistorique($pStock);
     // Ajout historique
     return StockManager::update($pStock);
     // update
 }
        </table>
    </page_footer>
	<table cellspacing="0" style="width: 100%; text-align: left; font-size: 10pt;">
		<thead>
			<tr>
				<th style="width: 55px; text-align: center; border: solid 1px black;" >Compte</th>
				<th style="width: 125px; text-align: center; border-top: solid 1px black; border-bottom: solid 1px black; border-right: solid 1px black;">Nom</th>
				<th style="width: 125px; text-align: center; border-top: solid 1px black; border-bottom: solid 1px black; border-right: solid 1px black;">Prénom</th>
				<th style="width: 95px; text-align: center; border-top: solid 1px black; border-bottom: solid 1px black; border-right: solid 1px black;">Tél.</th>
	<?php 
$lLots = array();
$lNbLignePrixProduit = 0;
$j = 0;
while ($j < $lNbProduitPage) {
    $lIdProduit = $lIdProduits[$i * $lLimitePaysage + $j];
    $lProduits = ProduitManager::selectDetailProduits(array($lIdProduit));
    $lProduit = $lProduits[0];
    $lLots[$lIdProduit] = DetailCommandeManager::selectByIdProduit($lIdProduit);
    $lnbLignePrix = count($lLots[$lIdProduit]);
    if ($lNbLignePrixProduit < $lnbLignePrix) {
        $lNbLignePrixProduit = $lnbLignePrix;
    }
    $lLabelNomProduit = $lProduit->getNproNom();
    if ($lProduit->getProType() == 2) {
        $lLabelNomProduit .= " (Abonnement)";
    }
    ?>
				<th colspan="2" style="width: 80px; text-align: center; border-top: solid 1px black; border-bottom: solid 1px black; border-right: solid 1px black;"><?php 
    echo $lLabelNomProduit;
    ?>
</th>
 /**
  * @name validDelete($pData)
  * @return ProduitMarcheVR
  * @desc Test la validite de l'élément
  */
 public static function validDelete($pData)
 {
     $lVr = new ProduitMarcheVR();
     //Tests inputs
     if (!isset($pData['id'])) {
         $lVr->setValid(false);
         $lVr->getId()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getId()->addErreur($lErreur);
     }
     if ($lVr->getValid()) {
         //Tests Techniques
         if (!TestFonction::checkLength($pData['id'], 0, 11)) {
             $lVr->setValid(false);
             $lVr->getId()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
             $lVr->getId()->addErreur($lErreur);
         }
         if (!is_int((int) $pData['id'])) {
             $lVr->setValid(false);
             $lVr->getId()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_104_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_104_MSG);
             $lVr->getId()->addErreur($lErreur);
         }
         if (empty($pData['id'])) {
             $lVr->setValid(false);
             $lVr->getId()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getId()->addErreur($lErreur);
         }
         // Le produit doit exister
         $lProduit = ProduitManager::select($pData['id']);
         if ($lProduit->getId() != $pData['id']) {
             $lVr->setValid(false);
             $lVr->getId()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_210_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_210_MSG);
             $lVr->getId()->addErreur($lErreur);
         }
     }
     return $lVr;
 }
 /**
  * @name validUpdate($pData)
  * @returnCommandeDetailReservationVR
  * @desc Test la validite de l'élément
  */
 public static function validUpdate($pData)
 {
     $lVr = new CommandeDetailReservationVR();
     //Tests inputs
     if (!isset($pData['stoQuantite'])) {
         $lVr->setValid(false);
         $lVr->getStoQuantite()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getStoQuantite()->addErreur($lErreur);
     }
     if (!isset($pData['stoIdDetailCommande'])) {
         $lVr->setValid(false);
         $lVr->getStoIdDetailCommande()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getStoIdDetailCommande()->addErreur($lErreur);
     }
     if (!isset($pData['idOperation'])) {
         $lVr->setValid(false);
         $lVr->getLog()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getLog()->addErreur($lErreur);
     }
     if ($lVr->getValid()) {
         //Tests Techniques
         if (!TestFonction::checkLength($pData['stoQuantite'], 0, 12) || $pData['stoQuantite'] > 999999999.99) {
             $lVr->setValid(false);
             $lVr->getStoQuantite()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
             $lVr->getStoQuantite()->addErreur($lErreur);
         }
         if (!is_float((double) $pData['stoQuantite'])) {
             $lVr->setValid(false);
             $lVr->getStoQuantite()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_108_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_108_MSG);
             $lVr->getStoQuantite()->addErreur($lErreur);
         }
         if (!TestFonction::checkLength($pData['stoIdDetailCommande'], 0, 11)) {
             $lVr->setValid(false);
             $lVr->getStoIdDetailCommande()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
             $lVr->getStoIdDetailCommande()->addErreur($lErreur);
         }
         if (!is_float((double) $pData['stoIdDetailCommande'])) {
             $lVr->setValid(false);
             $lVr->getStoIdDetailCommande()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_108_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_108_MSG);
             $lVr->getStoIdDetailCommande()->addErreur($lErreur);
         }
         if (!is_int((int) $pData['idOperation'])) {
             $lVr->setValid(false);
             $lVr->getLog()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_104_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_104_MSG);
             $lVr->getLog()->addErreur($lErreur);
         }
         //Tests Fonctionnels
         if (empty($pData['stoQuantite'])) {
             $lVr->setValid(false);
             $lVr->getStoQuantite()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getStoQuantite()->addErreur($lErreur);
         }
         if (empty($pData['stoIdDetailCommande'])) {
             $lVr->setValid(false);
             $lVr->getStoIdDetailCommande()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getStoIdDetailCommande()->addErreur($lErreur);
         }
         if (empty($pData['idOperation'])) {
             $lVr->setValid(false);
             $lVr->getLog()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getLog()->addErreur($lErreur);
         }
         if ($pData['stoQuantite'] >= 0) {
             $lVr->setValid(false);
             $lVr->getStoQuantite()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getStoQuantite()->addErreur($lErreur);
         }
         $lDcom = DetailCommandeManager::select($pData['stoIdDetailCommande']);
         if ($lDcom->getId() == null) {
             $lVr->setValid(false);
             $lVr->getLog()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_216_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_216_MSG);
             $lVr->getLog()->addErreur($lErreur);
         } else {
             $lPdt = ProduitManager::select($lDcom->getIdProduit());
             if ($lPdt->getId() == null) {
                 $lVr->setValid(false);
                 $lVr->getLog()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_216_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_216_MSG);
                 $lVr->getLog()->addErreur($lErreur);
             } else {
                 $lQte = $pData['stoQuantite'] * -1;
                 if ($lPdt->getMaxProduitCommande() != -1 && $lQte > $lPdt->getMaxProduitCommande()) {
                     $lVr->setValid(false);
                     $lVr->getStoIdProduit()->setValid(false);
                     $lErreur = new VRerreur();
                     $lErreur->setCode(MessagesErreurs::ERR_217_CODE);
                     $lErreur->setMessage(MessagesErreurs::ERR_217_MSG);
                     $lVr->getStoIdProduit()->addErreur($lErreur);
                 }
                 $StockService = new StockService();
                 $lStocks = $StockService->getDetailReservation($pData['idOperation']);
                 $lStock = $lStocks[0];
                 $lQuantiteReservation = $lStock->getQuantite();
                 if ($lPdt->getStockInitial() != -1 && $lQte > $lPdt->getStockReservation() - $lQuantiteReservation) {
                     $lVr->setValid(false);
                     $lVr->getStoIdProduit()->setValid(false);
                     $lErreur = new VRerreur();
                     $lErreur->setCode(MessagesErreurs::ERR_218_CODE);
                     $lErreur->setMessage(MessagesErreurs::ERR_218_MSG);
                     $lVr->getStoIdProduit()->addErreur($lErreur);
                 }
             }
         }
     }
     return $lVr;
 }
 /**
  * @name getListeReservationCSV($pParam)
  * @return Un Fichier CSV
  * @desc Retourne la liste des réservations pour une commande et la liste de produits demandés
  */
 public function getListeReservationCSV($pParam)
 {
     $lVr = ExportListeReservationValid::validAjout($pParam);
     if ($lVr->getValid()) {
         $lIdProduits = $pParam['id_produits'];
         $lInfoReservation = $this->getListeReservationExport($pParam);
         $lQuantiteReservation = $lInfoReservation['quantite'];
         $lTableauReservation = $lInfoReservation['detail'];
         $lCSV = new CSV();
         $lCSV->setNom('Réservations.csv');
         // Le Nom
         // L'entete
         $lEntete = array("Compte", "Nom", "Prénom", "Tel.");
         $lLigne2 = array("", "", "", "");
         $lLigne3 = array("", "", "", "");
         foreach ($lIdProduits as $lIdProduit) {
             $lProduit = ProduitManager::select($lIdProduit);
             $lNomProduit = NomProduitManager::select($lProduit->getIdNomProduit());
             $lLabelNomProduit = htmlspecialchars_decode($lNomProduit->getNom(), ENT_QUOTES);
             if ($lProduit->getType() == 2) {
                 $lLabelNomProduit .= " (Abonnement)";
             }
             array_push($lEntete, $lLabelNomProduit, "");
             array_push($lLigne2, "Prévu", "Réel");
             $lQuantite = '';
             if (isset($lQuantiteReservation[$lIdProduit])) {
                 $lQuantite = $lQuantiteReservation[$lIdProduit];
             }
             array_push($lLigne3, $lQuantite, "");
         }
         $lCSV->setEntete($lEntete);
         // Les données
         $contenuTableau = array();
         array_push($contenuTableau, $lLigne2);
         array_push($contenuTableau, $lLigne3);
         foreach ($lTableauReservation as $lVal) {
             $lLigne = array();
             array_push($lLigne, $lVal['compte']);
             array_push($lLigne, $lVal['nom']);
             array_push($lLigne, $lVal['prenom']);
             array_push($lLigne, $lVal['telephonePrincipal']);
             foreach ($lIdProduits as $lIdProduit) {
                 array_push($lLigne, $lVal[$lIdProduit], "");
             }
             array_push($contenuTableau, $lLigne);
         }
         $lCSV->setData($contenuTableau);
         // Export en CSV
         $lCSV->output();
     } else {
         return $lVr;
     }
 }
 /**
  * @name getDetailProduit($pParam)
  * @return DetailProduitResponse
  * @desc Retourne le détail d'un produit
  */
 public function getDetailProduit($pParam)
 {
     $lVr = AfficheReservationAdherentValid::validGetDetailProduit($pParam);
     if ($lVr->getValid()) {
         $lId = $pParam['id'];
         $lProduit = ProduitManager::select($lId);
         $lIdNomProduit = $lProduit->getIdNomProduit();
         $lNomProduit = NomProduitViewManager::select($lProduit->getIdNomProduit($lIdNomProduit));
         $lNomProduit = $lNomProduit[0];
         $lNomProduitCatalagueVO = new NomProduitCatalogueVO();
         $lNomProduitCatalagueVO->setId($lNomProduit->getNProIdFerme());
         $lNomProduitCatalagueVO->setCproNom($lNomProduit->getCproNom());
         $lNomProduitCatalagueVO->setNom($lNomProduit->getNProNom());
         $lNomProduitCatalagueVO->setDescription($lNomProduit->getNProDescription());
         $lProducteurs = NomProduitProducteurViewManager::select($lIdNomProduit);
         $lNomProduitCatalagueVO->setProducteurs($lProducteurs);
         $lCaracteristiques = CaracteristiqueProduitViewManager::select($lIdNomProduit);
         $lNomProduitCatalagueVO->setCaracteristiques($lCaracteristiques);
         $lResponse = new DetailProduitResponse();
         $lResponse->setProduit($lNomProduitCatalagueVO);
         return $lResponse;
     }
     return $lVr;
 }
 /**
  * @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;
 }
 /**
  * @name selectDetailProduits($pProduits)
  * @param array(integer idProduit)
  * @return array(DetailProduitVO)
  * @desc Récupères le détail des produits et les renvoie sous forme d'une collection de DetailProduitVO
  */
 public static function selectDetailProduits($pProduits)
 {
     // Initialisation du Logger
     $lLogger =& Log::singleton('file', CHEMIN_FICHIER_LOGS);
     $lLogger->setMask(Log::MAX(LOG_LEVEL));
     $lRequete = "SELECT " . ProduitManager::CHAMP_PRODUIT_ID . "," . ProduitManager::CHAMP_PRODUIT_ID_COMMANDE . "," . ProduitManager::CHAMP_PRODUIT_ID_NOM_PRODUIT . "," . ProduitManager::CHAMP_PRODUIT_UNITE_MESURE . "," . ProduitManager::CHAMP_PRODUIT_MAX_PRODUIT_COMMANDE . "," . ProduitManager::CHAMP_PRODUIT_ID_COMPTE_FERME . "," . ProduitManager::CHAMP_PRODUIT_STOCK_RESERVATION . "," . ProduitManager::CHAMP_PRODUIT_STOCK_INITIAL . "," . ProduitManager::CHAMP_PRODUIT_TYPE . "," . ProduitManager::CHAMP_PRODUIT_ETAT . "," . NomProduitManager::CHAMP_NOMPRODUIT_ID . "," . NomProduitManager::CHAMP_NOMPRODUIT_NUMERO . "," . NomProduitManager::CHAMP_NOMPRODUIT_NOM . "," . NomProduitManager::CHAMP_NOMPRODUIT_DESCRIPTION . "," . NomProduitManager::CHAMP_NOMPRODUIT_ID_CATEGORIE . "," . NomProduitManager::CHAMP_NOMPRODUIT_ID_FERME . "," . NomProduitManager::CHAMP_NOMPRODUIT_ETAT . "," . CategorieProduitManager::CHAMP_CATEGORIEPRODUIT_ID . "," . CategorieProduitManager::CHAMP_CATEGORIEPRODUIT_NOM . "," . CategorieProduitManager::CHAMP_CATEGORIEPRODUIT_DESCRIPTION . "," . CategorieProduitManager::CHAMP_CATEGORIEPRODUIT_ETAT . "\n \t\t\tFROM " . ProduitManager::TABLE_PRODUIT . " \n\t\t\tJOIN " . NomProduitManager::TABLE_NOMPRODUIT . " on " . NomProduitManager::CHAMP_NOMPRODUIT_ID . " = " . ProduitManager::CHAMP_PRODUIT_ID_NOM_PRODUIT . "\n\t\t\tJOIN " . CategorieProduitManager::TABLE_CATEGORIEPRODUIT . " on " . CategorieProduitManager::CHAMP_CATEGORIEPRODUIT_ID . " = " . NomProduitManager::CHAMP_NOMPRODUIT_ID_CATEGORIE . "\n\t\t\tWHERE " . ProduitManager::CHAMP_PRODUIT_ID . " in ( '" . str_replace(",", "','", StringUtils::securiser(implode(",", $pProduits))) . "')\n\t\t\tORDER BY " . CategorieProduitManager::CHAMP_CATEGORIEPRODUIT_NOM . " ASC," . NomProduitManager::CHAMP_NOMPRODUIT_NOM . " ASC;";
     $lLogger->log("Execution de la requete : " . $lRequete, PEAR_LOG_DEBUG);
     // Maj des logs
     $lSql = Dbutils::executerRequete($lRequete);
     $lListeProduit = array();
     if (mysql_num_rows($lSql) > 0) {
         while ($lLigne = mysql_fetch_assoc($lSql)) {
             array_push($lListeProduit, ProduitManager::remplirDetailProduit($lLigne[ProduitManager::CHAMP_PRODUIT_ID], $lLigne[ProduitManager::CHAMP_PRODUIT_ID_COMMANDE], $lLigne[ProduitManager::CHAMP_PRODUIT_ID_NOM_PRODUIT], $lLigne[ProduitManager::CHAMP_PRODUIT_UNITE_MESURE], $lLigne[ProduitManager::CHAMP_PRODUIT_MAX_PRODUIT_COMMANDE], $lLigne[ProduitManager::CHAMP_PRODUIT_ID_COMPTE_FERME], $lLigne[ProduitManager::CHAMP_PRODUIT_STOCK_RESERVATION], $lLigne[ProduitManager::CHAMP_PRODUIT_STOCK_INITIAL], $lLigne[ProduitManager::CHAMP_PRODUIT_TYPE], $lLigne[ProduitManager::CHAMP_PRODUIT_ETAT], $lLigne[NomProduitManager::CHAMP_NOMPRODUIT_ID], $lLigne[NomProduitManager::CHAMP_NOMPRODUIT_NUMERO], $lLigne[NomProduitManager::CHAMP_NOMPRODUIT_NOM], $lLigne[NomProduitManager::CHAMP_NOMPRODUIT_DESCRIPTION], $lLigne[NomProduitManager::CHAMP_NOMPRODUIT_ID_CATEGORIE], $lLigne[NomProduitManager::CHAMP_NOMPRODUIT_ID_FERME], $lLigne[NomProduitManager::CHAMP_NOMPRODUIT_ETAT], $lLigne[CategorieProduitManager::CHAMP_CATEGORIEPRODUIT_ID], $lLigne[CategorieProduitManager::CHAMP_CATEGORIEPRODUIT_NOM], $lLigne[CategorieProduitManager::CHAMP_CATEGORIEPRODUIT_DESCRIPTION], $lLigne[CategorieProduitManager::CHAMP_CATEGORIEPRODUIT_ETAT]));
         }
     } else {
         $lListeProduit[0] = new DetailProduitVO();
     }
     return $lListeProduit;
 }
 /**
  * @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
             }
         }
     }
 }
 /**
  * @name validAjout($pData)
  * @returnCommandeDetailReservationVR
  * @desc Test la validite de l'élément
  */
 public static function validAjout($pData)
 {
     $lVr = new MarcheDetailAchatVR();
     //Tests inputs
     if (!isset($pData['id'])) {
         $lVr->setValid(false);
         $lVr->getId()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getId()->addErreur($lErreur);
     }
     if (!isset($pData['quantite'])) {
         $lVr->setValid(false);
         $lVr->getQuantite()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getQuantite()->addErreur($lErreur);
     }
     if (!isset($pData['prix'])) {
         $lVr->setValid(false);
         $lVr->getPrix()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getPrix()->addErreur($lErreur);
     }
     if (!isset($pData['idCommande'])) {
         $lVr->setValid(false);
         $lVr->getLog()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getLog()->addErreur($lErreur);
     }
     if ($lVr->getValid()) {
         //Tests Techniques
         if (!TestFonction::checkLength($pData['id'], 0, 11)) {
             $lVr->setValid(false);
             $lVr->getId()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
             $lVr->getId()->addErreur($lErreur);
         }
         if (!is_int((int) $pData['id'])) {
             $lVr->setValid(false);
             $lVr->getId()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_108_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_108_MSG);
             $lVr->getId()->addErreur($lErreur);
         }
         if (!TestFonction::checkLength($pData['quantite'], 0, 12) || $pData['quantite'] > 999999999.99) {
             $lVr->setValid(false);
             $lVr->getQuantite()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
             $lVr->getQuantite()->addErreur($lErreur);
         }
         if (!is_float((double) $pData['quantite'])) {
             $lVr->setValid(false);
             $lVr->getQuantite()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_108_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_108_MSG);
             $lVr->getQuantite()->addErreur($lErreur);
         }
         if (!TestFonction::checkLength($pData['prix'], 0, 12) || $pData['prix'] > 999999999.99) {
             $lVr->setValid(false);
             $lVr->getPrix()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
             $lVr->getPrix()->addErreur($lErreur);
         }
         if (!is_float((double) $pData['prix'])) {
             $lVr->setValid(false);
             $lVr->getPrix()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_108_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_108_MSG);
             $lVr->getPrix()->addErreur($lErreur);
         }
         if (!TestFonction::checkLength($pData['idCommande'], 0, 11)) {
             $lVr->setValid(false);
             $lVr->getLog()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
             $lVr->getLog()->addErreur($lErreur);
         }
         if (!is_int((int) $pData['idCommande'])) {
             $lVr->setValid(false);
             $lVr->getLog()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_108_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_108_MSG);
             $lVr->getLog()->addErreur($lErreur);
         }
         //Tests Fonctionnels
         if (empty($pData['id'])) {
             $lVr->setValid(false);
             $lVr->getId()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getId()->addErreur($lErreur);
         }
         if (empty($pData['quantite'])) {
             $lVr->setValid(false);
             $lVr->getQuantite()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getQuantite()->addErreur($lErreur);
         }
         if (empty($pData['prix'])) {
             $lVr->setValid(false);
             $lVr->getPrix()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getPrix()->addErreur($lErreur);
         }
         if (empty($pData['idCommande'])) {
             $lVr->setValid(false);
             $lVr->getLog()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getLog()->addErreur($lErreur);
         }
         if ($pData['quantite'] >= 0) {
             $lVr->setValid(false);
             $lVr->getQuantite()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getQuantite()->addErreur($lErreur);
         }
         if ($pData['prix'] >= 0) {
             $lVr->setValid(false);
             $lVr->getPrix()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getPrix()->addErreur($lErreur);
         }
         $lPdt = ProduitManager::select($pData['id']);
         if ($lPdt->getId() == null) {
             $lVr->setValid(false);
             $lVr->getLog()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_216_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_216_MSG);
             $lVr->getLog()->addErreur($lErreur);
         } else {
             if ($lPdt->getIdCommande() != $pData['idCommande']) {
                 $lVr->setValid(false);
                 $lVr->getLog()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_216_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_216_MSG);
                 $lVr->getLog()->addErreur($lErreur);
             }
         }
     }
     return $lVr;
 }
 /**
  * @name validUpdate($pData)
  * @return DetailReservationMarcheVR
  * @desc Test la validite de l'élément
  */
 public static function validUpdate($pData)
 {
     $lVr = new DetailReservationMarcheVR();
     //Tests inputs
     if (!isset($pData['stoQuantite'])) {
         $lVr->setValid(false);
         $lVr->getStoQuantite()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getStoQuantite()->addErreur($lErreur);
     }
     if (!isset($pData['stoIdDetailCommande'])) {
         $lVr->setValid(false);
         $lVr->getStoIdDetailCommande()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getStoIdDetailCommande()->addErreur($lErreur);
     }
     if (!isset($pData['idOperation'])) {
         $lVr->setValid(false);
         $lVr->getLog()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getLog()->addErreur($lErreur);
     }
     if ($lVr->getValid()) {
         //Tests Techniques
         if (!TestFonction::checkLength($pData['stoQuantite'], 0, 12) || $pData['stoQuantite'] > 999999999.99) {
             $lVr->setValid(false);
             $lVr->getStoQuantite()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
             $lVr->getStoQuantite()->addErreur($lErreur);
         }
         if (!is_float((double) $pData['stoQuantite'])) {
             $lVr->setValid(false);
             $lVr->getStoQuantite()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_108_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_108_MSG);
             $lVr->getStoQuantite()->addErreur($lErreur);
         }
         if (!TestFonction::checkLength($pData['stoIdDetailCommande'], 0, 11)) {
             $lVr->setValid(false);
             $lVr->getStoIdDetailCommande()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
             $lVr->getStoIdDetailCommande()->addErreur($lErreur);
         }
         if (!is_float((double) $pData['stoIdDetailCommande'])) {
             $lVr->setValid(false);
             $lVr->getStoIdDetailCommande()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_108_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_108_MSG);
             $lVr->getStoIdDetailCommande()->addErreur($lErreur);
         }
         if (!is_int((int) $pData['idOperation'])) {
             $lVr->setValid(false);
             $lVr->getLog()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_104_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_104_MSG);
             $lVr->getLog()->addErreur($lErreur);
         }
         //Tests Fonctionnels
         if (empty($pData['stoQuantite'])) {
             $lVr->setValid(false);
             $lVr->getStoQuantite()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getStoQuantite()->addErreur($lErreur);
         }
         if (empty($pData['stoIdDetailCommande'])) {
             $lVr->setValid(false);
             $lVr->getStoIdDetailCommande()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getStoIdDetailCommande()->addErreur($lErreur);
         }
         if (empty($pData['idOperation'])) {
             $lVr->setValid(false);
             $lVr->getLog()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getLog()->addErreur($lErreur);
         }
         if ($pData['stoQuantite'] >= 0) {
             $lVr->setValid(false);
             $lVr->getStoQuantite()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getStoQuantite()->addErreur($lErreur);
         }
         $lDcom = DetailCommandeManager::select($pData['stoIdDetailCommande']);
         if ($lDcom->getId() == null) {
             $lVr->setValid(false);
             $lVr->getLog()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_216_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_216_MSG);
             $lVr->getLog()->addErreur($lErreur);
         } else {
             $lPdt = ProduitManager::select($lDcom->getIdProduit());
             if ($lPdt->getId() == null) {
                 $lVr->setValid(false);
                 $lVr->getLog()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_216_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_216_MSG);
                 $lVr->getLog()->addErreur($lErreur);
             } else {
                 $lQte = $pData['stoQuantite'] * -1;
                 if ($lPdt->getMaxProduitCommande() != -1 && $lQte > $lPdt->getMaxProduitCommande()) {
                     $lVr->setValid(false);
                     $lVr->getStoQuantite()->setValid(false);
                     $lErreur = new VRerreur();
                     $lErreur->setCode(MessagesErreurs::ERR_217_CODE);
                     $lErreur->setMessage(MessagesErreurs::ERR_217_MSG);
                     $lVr->getStoQuantite()->addErreur($lErreur);
                 }
                 /*$StockService = new StockService();
                 		$lStocks = $StockService->getDetailReservation($pData['idOperation']);
                 		
                 		$lContinu = true;
                 		$lQuantiteReservation = 0;
                 		$i = 0;
                 		while($lContinu && isset($lStocks[$i])) {
                 			if(	$lStocks[$i]->getIdDetailCommande() == $pData['stoIdDetailCommande']) {
                 				$lQuantiteReservation = $lStocks[$i]->getQuantite();
                 				$lContinu = false;
                 			}
                 			$i++;
                 		}
                 		*/
                 $lQteMax = $lPdt->getStockReservation();
                 if ($pData['idOperation'] != -1) {
                     $StockService = new StockService();
                     $lStocks = $StockService->getDetailReservation($pData['idOperation']);
                     $lContinu = true;
                     $lQuantiteReservation = 0;
                     $i = 0;
                     while ($lContinu && isset($lStocks[$i])) {
                         if ($lStocks[$i]->getIdDetailCommande() == $pData['stoIdDetailCommande']) {
                             $lQuantiteReservation = $lStocks[$i]->getQuantite();
                             $lContinu = false;
                         }
                         $i++;
                     }
                     $lQteMax -= $lQuantiteReservation;
                     // Qté réservation est négative -- = +
                 }
                 if ($lPdt->getStockInitial() != -1 && $lQte > $lQteMax) {
                     $lVr->setValid(false);
                     $lVr->getStoQuantite()->setValid(false);
                     $lErreur = new VRerreur();
                     $lErreur->setCode(MessagesErreurs::ERR_218_CODE);
                     $lErreur->setMessage(MessagesErreurs::ERR_218_MSG);
                     $lVr->getStoQuantite()->addErreur($lErreur);
                 }
                 // La quantité doit être un multiple du lot
                 if (fmod($lQte, $lDcom->getTaille()) != 0) {
                     $lVr->setValid(false);
                     $lVr->getStoQuantite()->setValid(false);
                     $lErreur = new VRerreur();
                     $lErreur->setCode(MessagesErreurs::ERR_245_CODE);
                     $lErreur->setMessage(MessagesErreurs::ERR_245_MSG);
                     $lVr->getStoQuantite()->addErreur($lErreur);
                 }
             }
         }
     }
     return $lVr;
 }
 /**
  * @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;
 }