/**
  * @name validDelete($pData)
  * @return NomProduitCatalogueVR
  * @desc Test la validite de l'élément
  */
 public static function validDelete($pData)
 {
     $lVr = new NomProduitCatalogueVR();
     //Tests inputs
     if (!isset($pData['idNomProduit'])) {
         $lVr->setValid(false);
         $lVr->getIdNomProduit()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
         $lVr->getIdNomProduit()->addErreur($lErreur);
     }
     if ($lVr->getValid()) {
         //Tests Techniques
         if (!TestFonction::checkLength($pData['idNomProduit'], 0, 11)) {
             $lVr->setValid(false);
             $lVr->getIdNomProduit()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
             $lVr->getIdNomProduit()->addErreur($lErreur);
         }
         if (!is_int((int) $pData['idNomProduit'])) {
             $lVr->setValid(false);
             $lVr->getIdNomProduit()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_108_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_108_MSG);
             $lVr->getIdNomProduit()->addErreur($lErreur);
         }
         //Tests Fonctionnels
         if (empty($pData['idNomProduit'])) {
             $lVr->setValid(false);
             $lVr->getIdNomProduit()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getIdNomProduit()->addErreur($lErreur);
         }
         // La NomProduit doit exister
         $lNomProduit = NomProduitManager::select($pData['idNomProduit']);
         if ($lNomProduit->getId() != $pData['idNomProduit']) {
             $lVr->setValid(false);
             $lVr->getIdNomProduit()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getIdNomProduit()->addErreur($lErreur);
         }
     }
     return $lVr;
 }
 /**
  * @name validAjout($pData)
  * @return ProduitAjoutAchatVR
  * @desc Test la validite de l'élément
  */
 public static function validAjout($pData)
 {
     $lVr = new ProduitAjoutAchatVR();
     //Tests inputs
     if (!isset($pData['idCompte'])) {
         $lVr->setValid(false);
         $lVr->getIdCompte()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getIdCompte()->addErreur($lErreur);
     }
     if (!isset($pData['idMarche'])) {
         $lVr->setValid(false);
         $lVr->getIdMarche()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getIdMarche()->addErreur($lErreur);
     }
     if (!isset($pData['idOperation'])) {
         $lVr->setValid(false);
         $lVr->getIdOperation()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getIdOperation()->addErreur($lErreur);
     }
     if (!isset($pData['idNomProduit'])) {
         $lVr->setValid(false);
         $lVr->getIdNomProduit()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getIdNomProduit()->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['solidaire'])) {
         $lVr->setValid(false);
         $lVr->getSolidaire()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getSolidaire()->addErreur($lErreur);
     }
     if ($lVr->getValid()) {
         //Tests Techniques
         if (!TestFonction::checkLength($pData['idCompte'], 0, 11)) {
             $lVr->setValid(false);
             $lVr->getIdCompte()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
             $lVr->getIdCompte()->addErreur($lErreur);
         }
         if (!is_int((int) $pData['idCompte'])) {
             $lVr->setValid(false);
             $lVr->getIdCompte()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_108_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_108_MSG);
             $lVr->getIdCompte()->addErreur($lErreur);
         }
         if (!TestFonction::checkLength($pData['idMarche'], 0, 11)) {
             $lVr->setValid(false);
             $lVr->getIdMarche()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
             $lVr->getIdMarche()->addErreur($lErreur);
         }
         if ($pData['idMarche'] != '' && !is_int((int) $pData['idMarche'])) {
             $lVr->setValid(false);
             $lVr->getIdMarche()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_108_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_108_MSG);
             $lVr->getIdMarche()->addErreur($lErreur);
         }
         if (!TestFonction::checkLength($pData['idOperation'], 0, 11)) {
             $lVr->setValid(false);
             $lVr->getIdOperation()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
             $lVr->getIdOperation()->addErreur($lErreur);
         }
         if ($pData['idOperation'] != '' && !is_int((int) $pData['idOperation'])) {
             $lVr->setValid(false);
             $lVr->getIdOperation()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_108_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_108_MSG);
             $lVr->getIdOperation()->addErreur($lErreur);
         }
         if (!TestFonction::checkLength($pData['idNomProduit'], 0, 11)) {
             $lVr->setValid(false);
             $lVr->getIdNomProduit()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
             $lVr->getIdNomProduit()->addErreur($lErreur);
         }
         if (!is_int((int) $pData['idNomProduit'])) {
             $lVr->setValid(false);
             $lVr->getIdNomProduit()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_108_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_108_MSG);
             $lVr->getIdNomProduit()->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_109_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_109_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_109_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_109_MSG);
             $lVr->getPrix()->addErreur($lErreur);
         }
         if (!TestFonction::checkLength($pData['solidaire'], 0, 1)) {
             $lVr->setValid(false);
             $lVr->getSolidaire()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
             $lVr->getSolidaire()->addErreur($lErreur);
         }
         if (!is_int((int) $pData['solidaire'])) {
             $lVr->setValid(false);
             $lVr->getSolidaire()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_108_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_108_MSG);
             $lVr->getSolidaire()->addErreur($lErreur);
         }
         //Tests Fonctionnels
         if (empty($pData['idCompte'])) {
             $lVr->setValid(false);
             $lVr->getIdCompte()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getIdCompte()->addErreur($lErreur);
         }
         if (empty($pData['idNomProduit'])) {
             $lVr->setValid(false);
             $lVr->getIdNomProduit()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getIdNomProduit()->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 ($pData['solidaire'] != 0 && empty($pData['solidaire'])) {
             $lVr->setValid(false);
             $lVr->getSolidaire()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getSolidaire()->addErreur($lErreur);
         }
         // Si c'est sur un marché il doit exister est être ouvert
         if (!empty($pData['idMarche'])) {
             $lCommande = CommandeManager::select($pData['idMarche']);
             if ($lCommande->getId() != $pData['idMarche']) {
                 $lVr->setValid(false);
                 $lVr->getIdMarche()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_216_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_216_MSG);
                 $lVr->getIdMarche()->addErreur($lErreur);
             }
             // Le marche doit être ouvert
             if ($lCommande->getArchive() != 0) {
                 $lVr->setValid(false);
                 $lVr->getIdMarche()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_239_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_239_MSG);
                 $lVr->getIdMarche()->addErreur($lErreur);
             }
         }
         // Si c'est sur un opération elle doit exister
         if (!empty($pData['idOperation'])) {
             $lOperationService = new OperationService();
             if (!$lOperationService->existe($pData['idOperation'])) {
                 $lVr->setValid(false);
                 $lVr->getIdOperation()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_216_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_216_MSG);
                 $lVr->getIdOperation()->addErreur($lErreur);
             }
         }
         // Le compte existe
         $lCompteService = new CompteService();
         if (!$lCompteService->existe($pData['idCompte'])) {
             $lVr->setValid(false);
             $lVr->getIdCompte()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_216_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_216_MSG);
             $lVr->getIdCompte()->addErreur($lErreur);
         }
         // Le produit existe
         $lNomProduit = NomProduitManager::select($pData['idNomProduit']);
         if ($lNomProduit->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);
         }
         // Les quantité sont négatives
         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);
         }
         // Le prix est négatif
         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);
         }
     }
     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 supprimerProduit($pParam)
  * @return NomProduitCatalogueVR
  * @desc Supprime un produit
  */
 public function supprimerProduit($pParam)
 {
     $lVr = NomProduitCatalogueValid::validDelete($pParam);
     if ($lVr->getValid()) {
         $lId = $pParam['idNomProduit'];
         NomProduitManager::delete($lId);
         NomProduitProducteurManager::deleteByIdNomProduit($lId);
         CaracteristiqueProduitManager::deleteByIdNomProduit($lId);
         ModeleLotManager::deleteByIdNomProduit($lId);
     }
     return $lVr;
 }
 /**
  * @name getStockProduitFerme($pIdCompteFerme)
  * @param integer
  * @return array(StockProduitFermeVO)
  * @desc Retourne le stock des produits d'une ferme
  */
 public function getStockProduitFerme($pIdCompteFerme)
 {
     return NomProduitManager::selectStockProduitFerme($pIdCompteFerme);
 }
 /**
  * @name listeProduitCategorie($pId)
  * @return array(NomProduitVO)
  * @desc Retourne la liste des produits liés à la catégorie
  */
 private function listeProduitCategorie($pId)
 {
     return NomProduitManager::selectByIdCategorie($pId);
 }
 /**
  * @name selectStockProduitFerme($pIdCompteFerme)
  * @return array(StockProduitFermeVO)
  * @desc Récupères le stock de produit pour une ferme
  */
 public static function selectStockProduitFerme($pIdCompteFerme)
 {
     // Initialisation du Logger
     $lLogger =& Log::singleton('file', CHEMIN_FICHIER_LOGS);
     $lLogger->setMask(Log::MAX(LOG_LEVEL));
     $lRequete = "SELECT " . NomProduitManager::CHAMP_NOMPRODUIT_ID . "," . NomProduitManager::CHAMP_NOMPRODUIT_NUMERO . "," . NomProduitManager::CHAMP_NOMPRODUIT_NOM . "," . CategorieProduitManager::CHAMP_CATEGORIEPRODUIT_ID . "," . CategorieProduitManager::CHAMP_CATEGORIEPRODUIT_NOM . "," . FermeManager::CHAMP_FERME_ID . "," . FermeManager::CHAMP_FERME_NUMERO . "," . FermeManager::CHAMP_FERME_NOM . "," . FermeManager::CHAMP_FERME_ID_COMPTE . "," . StockQuantiteManager::CHAMP_STOCKQUANTITE_ID . "," . StockQuantiteManager::CHAMP_STOCKQUANTITE_QUANTITE . "," . StockQuantiteManager::CHAMP_STOCKQUANTITE_QUANTITE_SOLIDAIRE . "," . StockQuantiteManager::CHAMP_STOCKQUANTITE_UNITE . " FROM " . NomProduitManager::TABLE_NOMPRODUIT . " JOIN " . CategorieProduitManager::TABLE_CATEGORIEPRODUIT . " ON " . CategorieProduitManager::CHAMP_CATEGORIEPRODUIT_ID . " = " . NomProduitManager::CHAMP_NOMPRODUIT_ID_CATEGORIE . " JOIN " . FermeManager::TABLE_FERME . " ON " . FermeManager::CHAMP_FERME_ID . " = " . NomProduitManager::CHAMP_NOMPRODUIT_ID_FERME . " LEFT JOIN " . StockQuantiteManager::TABLE_STOCKQUANTITE . " ON " . StockQuantiteManager::CHAMP_STOCKQUANTITE_ID_NOM_PRODUIT . " = " . NomProduitManager::CHAMP_NOMPRODUIT_ID . " WHERE " . " (" . StockQuantiteManager::CHAMP_STOCKQUANTITE_ETAT . " = 0 " . " OR ISNULL(" . StockQuantiteManager::CHAMP_STOCKQUANTITE_ETAT . ") )" . " AND " . FermeManager::CHAMP_FERME_ETAT . " = 0 " . " AND " . CategorieProduitManager::CHAMP_CATEGORIEPRODUIT_ETAT . " = 0 " . " AND " . NomProduitManager::CHAMP_NOMPRODUIT_ETAT . " = 0 " . " AND " . FermeManager::CHAMP_FERME_ID_COMPTE . " = '" . StringUtils::securiser($pIdCompteFerme) . "'" . " ORDER BY " . CategorieProduitManager::CHAMP_CATEGORIEPRODUIT_NOM . ", " . NomProduitManager::CHAMP_NOMPRODUIT_NOM . ", " . StockQuantiteManager::CHAMP_STOCKQUANTITE_UNITE . ";";
     $lLogger->log("Execution de la requete : " . $lRequete, PEAR_LOG_DEBUG);
     // Maj des logs
     $lSql = Dbutils::executerRequete($lRequete);
     $lListeNomProduit = array();
     if (mysql_num_rows($lSql) > 0) {
         while ($lLigne = mysql_fetch_assoc($lSql)) {
             array_push($lListeNomProduit, NomProduitManager::remplirStockFerme($lLigne[NomProduitManager::CHAMP_NOMPRODUIT_ID], $lLigne[NomProduitManager::CHAMP_NOMPRODUIT_NUMERO], $lLigne[NomProduitManager::CHAMP_NOMPRODUIT_NOM], $lLigne[CategorieProduitManager::CHAMP_CATEGORIEPRODUIT_ID], $lLigne[CategorieProduitManager::CHAMP_CATEGORIEPRODUIT_NOM], $lLigne[FermeManager::CHAMP_FERME_ID], $lLigne[FermeManager::CHAMP_FERME_NUMERO], $lLigne[FermeManager::CHAMP_FERME_NOM], $lLigne[FermeManager::CHAMP_FERME_ID_COMPTE], $lLigne[StockQuantiteManager::CHAMP_STOCKQUANTITE_ID], $lLigne[StockQuantiteManager::CHAMP_STOCKQUANTITE_QUANTITE], $lLigne[StockQuantiteManager::CHAMP_STOCKQUANTITE_QUANTITE_SOLIDAIRE], $lLigne[StockQuantiteManager::CHAMP_STOCKQUANTITE_UNITE]));
         }
     } else {
         $lListeNomProduit[0] = new NomProduitVO();
     }
     return $lListeNomProduit;
 }
 /**
  * @name validAjout($pData)
  * @return ProduitMarcheVR
  * @desc Test la validite de l'élément
  */
 public static function validAjout($pData)
 {
     $lVr = new ProduitMarcheVR();
     //Tests inputs
     if (!isset($pData['idNom'])) {
         $lVr->setValid(false);
         $lVr->getIdNom()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getIdNom()->addErreur($lErreur);
     }
     if (!isset($pData['unite'])) {
         $lVr->setValid(false);
         $lVr->getUnite()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getUnite()->addErreur($lErreur);
     }
     if (!isset($pData['qteMaxCommande'])) {
         $lVr->setValid(false);
         $lVr->getQteMaxCommande()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getQteMaxCommande()->addErreur($lErreur);
     }
     if (!isset($pData['qteRestante'])) {
         $lVr->setValid(false);
         $lVr->getQteRestante()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getQteRestante()->addErreur($lErreur);
     }
     if (!isset($pData['lots'])) {
         $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 (!isset($pData['type'])) {
         $lVr->setValid(false);
         $lVr->getType()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getType()->addErreur($lErreur);
     }
     if ($lVr->getValid()) {
         //Tests Techniques
         if (!TestFonction::checkLength($pData['idNom'], 0, 11)) {
             $lVr->setValid(false);
             $lVr->getIdNom()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
             $lVr->getIdNom()->addErreur($lErreur);
         }
         if (!is_int((int) $pData['idNom'])) {
             $lVr->setValid(false);
             $lVr->getIdNom()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_108_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_108_MSG);
             $lVr->getIdNom()->addErreur($lErreur);
         }
         if (!TestFonction::checkLength($pData['unite'], 0, 20)) {
             $lVr->setValid(false);
             $lVr->getUnite()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
             $lVr->getUnite()->addErreur($lErreur);
         }
         if (!TestFonction::checkLength($pData['qteMaxCommande'], 0, 12) || $pData['qteMaxCommande'] > 999999999.99) {
             $lVr->setValid(false);
             $lVr->getQteMaxCommande()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
             $lVr->getQteMaxCommande()->addErreur($lErreur);
         }
         if (!is_float((double) $pData['qteMaxCommande'])) {
             $lVr->setValid(false);
             $lVr->getQteMaxCommande()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_109_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_109_MSG);
             $lVr->getQteMaxCommande()->addErreur($lErreur);
         }
         if (!TestFonction::checkLength($pData['qteRestante'], 0, 12) || $pData['qteRestante'] > 999999999.99) {
             $lVr->setValid(false);
             $lVr->getQteRestante()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
             $lVr->getQteRestante()->addErreur($lErreur);
         }
         if (!is_float((double) $pData['qteRestante'])) {
             $lVr->setValid(false);
             $lVr->getQteRestante()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_109_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_109_MSG);
             $lVr->getQteRestante()->addErreur($lErreur);
         }
         if (!is_array($pData['lots'])) {
             $lVr->setValid(false);
             $lVr->getLog()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_110_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_110_MSG);
             $lVr->getLog()->addErreur($lErreur);
         }
         if (!TestFonction::checkLength($pData['type'], 0, 11)) {
             $lVr->setValid(false);
             $lVr->getType()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
             $lVr->getType()->addErreur($lErreur);
         }
         if (!is_int((int) $pData['type'])) {
             $lVr->setValid(false);
             $lVr->getType()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_108_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_108_MSG);
             $lVr->getType()->addErreur($lErreur);
         }
         //Tests Fonctionnels
         if (empty($pData['idNom'])) {
             $lVr->setValid(false);
             $lVr->getIdNom()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getIdNom()->addErreur($lErreur);
         }
         if (empty($pData['unite'])) {
             $lVr->setValid(false);
             $lVr->getUnite()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getUnite()->addErreur($lErreur);
         }
         if (empty($pData['lots'])) {
             $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['type'] == '') {
             $lVr->setValid(false);
             $lVr->getType()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getType()->addErreur($lErreur);
         }
         // Test de l'existance du produit
         if ($lVr->getIdNom()->getValid()) {
             $lNomProduit = NomProduitManager::select($pData['idNom']);
             $lId = $lNomProduit->getId();
             if (empty($lId)) {
                 $lVr->setValid(false);
                 $lVr->getLog()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_210_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_210_MSG);
                 $lVr->getLog()->addErreur($lErreur);
             }
         }
         // Les quantités sont positives
         if ($pData['qteMaxCommande'] != -1 && $pData['qteMaxCommande'] < 0) {
             $lVr->setValid(false);
             $lVr->getQteMaxCommande()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_215_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_215_MSG);
             $lVr->getQteMaxCommande()->addErreur($lErreur);
         }
         if ($pData['qteRestante'] != -1 && $pData['qteRestante'] < 0) {
             $lVr->setValid(false);
             $lVr->getQteRestante()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_215_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_215_MSG);
             $lVr->getQteRestante()->addErreur($lErreur);
         }
         if ($pData['qteMaxCommande'] != -1 && $pData['qteRestante'] != -1 && $pData['qteMaxCommande'] > $pData['qteRestante']) {
             $lVr->setValid(false);
             $lVr->getQteRestante()->setValid(false);
             $lVr->getQteMaxCommande()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_205_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_205_MSG);
             $lVr->getQteRestante()->addErreur($lErreur);
             $lVr->getQteMaxCommande()->addErreur($lErreur);
         }
         if (is_array($pData['lots'])) {
             $lValidLot = new DetailCommandeValid();
             $i = 0;
             while (isset($pData['lots'][$i])) {
                 $lVrLot = $lValidLot->validAjout($pData['lots'][$i]);
                 if (!$lVrLot->getValid()) {
                     $lVr->setValid(false);
                 }
                 /*if(!empty($pData['qteMaxCommande'])) {
                 			if(floatval($pData['lots'][$i]['taille']) > floatval($pData['qteMaxCommande'])) {
                 				$lVr->setValid(false);
                 				$lVrLot->setValid(false);
                 				$lVrLot->getTaille()->setValid(false);
                 				$lErreur = new VRerreur();
                 				$lErreur->setCode(MessagesErreurs::ERR_206_CODE);
                 				$lErreur->setMessage(MessagesErreurs::ERR_206_MSG);
                 				$lVrLot->getTaille()->addErreur($lErreur);
                 			}
                 		}*/
                 $lVr->addLots($lVrLot);
                 $i++;
             }
         }
     }
     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 validDelete($pData)
  * @return NomProduitVR
  * @desc Test la validite de l'élément
  */
 public static function validDelete($pData)
 {
     $lVr = new NomProduitVR();
     //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()) {
         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);
         }
         $lNomProduit = NomProduitManager::select($pData['id']);
         if ($lNomProduit->getId() != $pData['id']) {
             $lVr = new TemplateVR();
             $lVr->getId(false);
             $lVr->getLog()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_216_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_216_MSG);
             $lVr->getId()->addErreur($lErreur);
         }
     }
     return $lVr;
 }
 /**
  * @name selectAll()
  * @return array(NomProduitVO)
  * @desc Retourne une liste d'Operation
  */
 private function selectAll()
 {
     return NomProduitManager::selectAll();
 }