/**
  * @name validDelete($pData)
  * @return ProducteurVR
  * @desc Test la validite de l'élément
  */
 public static function validDelete($pData)
 {
     $lVr = new ProducteurVR();
     //Tests inputs
     if (!isset($pData['id'])) {
         $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 ($lVr->getValid()) {
         //Tests Techniques
         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 (!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 (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 producteur doit exister
         $lProducteur = ProducteurManager::select($pData['id']);
         if ($lProducteur->getId() != $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);
         }
     }
     return $lVr;
 }
 /**
  * @name modifierProducteur($pParam)
  * @desc Met à jour les informations du Producteur ainsi que ses autorisations
  */
 public function modifierProducteur($pParam)
 {
     $lVr = ProducteurValid::validUpdate($pParam);
     if ($lVr->getValid()) {
         $lProducteur = new ProducteurVO();
         $lProducteur->setId($pParam["id"]);
         $lProducteur->setIdFerme($pParam["idFerme"]);
         $lProducteur->setNom($pParam["nom"]);
         $lProducteur->setPrenom($pParam["prenom"]);
         $lProducteur->setCourrielPrincipal($pParam["courrielPrincipal"]);
         $lProducteur->setCourrielSecondaire($pParam["courrielSecondaire"]);
         $lProducteur->setTelephonePrincipal($pParam["telephonePrincipal"]);
         $lProducteur->setTelephoneSecondaire($pParam["telephoneSecondaire"]);
         $lProducteur->setAdresse($pParam["adresse"]);
         $lProducteur->setCodePostal($pParam["codePostal"]);
         $lProducteur->setVille($pParam["ville"]);
         $lProducteur->setDateNaissance($pParam["dateNaissance"]);
         $lProducteur->setCommentaire($pParam["commentaire"]);
         // Insertion de la date de mise à jour
         $lProducteur->setDateMaj(StringUtils::dateTimeAujourdhuiDb());
         // On reporte le numero dans la maj
         $lProducteurActuel = ProducteurManager::select($lProducteur->getId());
         $lProducteur->setNumero($lProducteurActuel->getNumero());
         // L'adherent n'est pas supprimé
         $lProducteur->setEtat(0);
         // Maj du producteur dans la BDD
         ProducteurManager::update($lProducteur);
         $lResponse = new ModifierProducteurResponse();
         $lResponse->setNumero($lProducteur->getNumero());
         return $lResponse;
     }
     return $lVr;
 }
 /**
  * @name insert($pVo)
  * @param ProducteurVO
  * @return integer
  * @desc Insère une nouvelle ligne dans la table, à partir des informations de la ProducteurVO en paramètre (l'id sera automatiquement calculé par la BDD)
  */
 public static function insert($pVo)
 {
     // Initialisation du Logger
     $lLogger =& Log::singleton('file', CHEMIN_FICHIER_LOGS);
     $lLogger->setMask(Log::MAX(LOG_LEVEL));
     // Mise en forme des données
     $pVo->setNom(StringUtils::formaterNom(trim($pVo->getNom())));
     $pVo->setPrenom(StringUtils::formaterPrenom(trim($pVo->getPrenom())));
     $pVo->setCourrielPrincipal(trim($pVo->getCourrielPrincipal()));
     $pVo->setCourrielSecondaire(trim($pVo->getCourrielSecondaire()));
     $pVo->setTelephonePrincipal(trim($pVo->getTelephonePrincipal()));
     $pVo->setTelephoneSecondaire(trim($pVo->getTelephoneSecondaire()));
     $pVo->setAdresse(trim($pVo->getAdresse()));
     $pVo->setCodePostal(trim($pVo->getCodePostal()));
     $pVo->setVille(StringUtils::formaterVille(trim($pVo->getVille())));
     $pVo->setCommentaire(trim($pVo->getCommentaire()));
     // Protection des dates vides
     if ($pVo->getDateNaissance() == '') {
         $pVo->setDateNaissance(StringUtils::FORMAT_DATE_NULLE);
     }
     if ($pVo->getDateCreation() == '') {
         $pVo->setDateCreation(StringUtils::FORMAT_DATE_NULLE);
     }
     if ($pVo->getDateMaj() == '') {
         $pVo->getDateMaj(StringUtils::FORMAT_DATE_NULLE);
     }
     $lRequete = "INSERT INTO " . ProducteurManager::TABLE_PRODUCTEUR . "\n\t\t\t\t(" . ProducteurManager::CHAMP_PRODUCTEUR_ID . "\n\t\t\t\t," . ProducteurManager::CHAMP_PRODUCTEUR_ID_FERME . "\n\t\t\t\t," . ProducteurManager::CHAMP_PRODUCTEUR_NUMERO . "\n\t\t\t\t," . ProducteurManager::CHAMP_PRODUCTEUR_NOM . "\n\t\t\t\t," . ProducteurManager::CHAMP_PRODUCTEUR_PRENOM . "\n\t\t\t\t," . ProducteurManager::CHAMP_PRODUCTEUR_COURRIEL_PRINCIPAL . "\n\t\t\t\t," . ProducteurManager::CHAMP_PRODUCTEUR_COURRIEL_SECONDAIRE . "\n\t\t\t\t," . ProducteurManager::CHAMP_PRODUCTEUR_TELEPHONE_PRINCIPAL . "\n\t\t\t\t," . ProducteurManager::CHAMP_PRODUCTEUR_TELEPHONE_SECONDAIRE . "\n\t\t\t\t," . ProducteurManager::CHAMP_PRODUCTEUR_ADRESSE . "\n\t\t\t\t," . ProducteurManager::CHAMP_PRODUCTEUR_CODE_POSTAL . "\n\t\t\t\t," . ProducteurManager::CHAMP_PRODUCTEUR_VILLE . "\n\t\t\t\t," . ProducteurManager::CHAMP_PRODUCTEUR_DATE_NAISSANCE . "\n\t\t\t\t," . ProducteurManager::CHAMP_PRODUCTEUR_DATE_CREATION . "\n\t\t\t\t," . ProducteurManager::CHAMP_PRODUCTEUR_DATE_MAJ . "\n\t\t\t\t," . ProducteurManager::CHAMP_PRODUCTEUR_COMMENTAIRE . "\n\t\t\t\t," . ProducteurManager::CHAMP_PRODUCTEUR_ETAT . ")\n\t\t\tVALUES (NULL\n\t\t\t\t,'" . StringUtils::securiser($pVo->getIdFerme()) . "'\n\t\t\t\t,'" . StringUtils::securiser($pVo->getNumero()) . "'\n\t\t\t\t,'" . StringUtils::securiser($pVo->getNom()) . "'\n\t\t\t\t,'" . StringUtils::securiser($pVo->getPrenom()) . "'\n\t\t\t\t,'" . StringUtils::securiser($pVo->getCourrielPrincipal()) . "'\n\t\t\t\t,'" . StringUtils::securiser($pVo->getCourrielSecondaire()) . "'\n\t\t\t\t,'" . StringUtils::securiser($pVo->getTelephonePrincipal()) . "'\n\t\t\t\t,'" . StringUtils::securiser($pVo->getTelephoneSecondaire()) . "'\n\t\t\t\t,'" . StringUtils::securiser($pVo->getAdresse()) . "'\n\t\t\t\t,'" . StringUtils::securiser($pVo->getCodePostal()) . "'\n\t\t\t\t,'" . StringUtils::securiser($pVo->getVille()) . "'\n\t\t\t\t,'" . StringUtils::securiser($pVo->getDateNaissance()) . "'\n\t\t\t\t,'" . StringUtils::securiser($pVo->getDateCreation()) . "'\n\t\t\t\t,'" . StringUtils::securiser($pVo->getDateMaj()) . "'\n\t\t\t\t,'" . StringUtils::securiser($pVo->getCommentaire()) . "'\n\t\t\t\t,'" . StringUtils::securiser($pVo->getEtat()) . "')";
     $lLogger->log("Execution de la requete : " . $lRequete, PEAR_LOG_DEBUG);
     // Maj des logs
     $lId = Dbutils::executerRequeteInsertRetourId($lRequete);
     // Execution de la requete et récupération de l'Id généré par la BDD
     $pVo->setId($lId);
     $pVo->setNumero('P' . $lId);
     // Mise à jour du numéro dans l'objet
     ProducteurManager::update($pVo);
     // Mise à jour de la base
     return $lId;
 }
 /**
  * @name validUpdate($pData)
  * @return ProduitCommandeVR
  * @desc Test la validite de l'élément
  */
 public static function validUpdate($pData)
 {
     $lTestId = ProduitCommandeValid::validDelete($pData);
     if ($lTestId->getValid()) {
         $lVr = new ProduitCommandeVR();
         //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['idProducteur'], 0, 11)) {
             $lVr->setValid(false);
             $lVr->getIdProducteur()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
             $lVr->getIdProducteur()->addErreur($lErreur);
         }
         if (!is_int((int) $pData['idProducteur'])) {
             $lVr->setValid(false);
             $lVr->getIdProducteur()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_108_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_108_MSG);
             $lVr->getIdProducteur()->addErreur($lErreur);
         }
         if (!TestFonction::checkLength($pData['nom'], 0, 50)) {
             $lVr->setValid(false);
             $lVr->getNom()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
             $lVr->getNom()->addErreur($lErreur);
         }
         if (!TestFonction::checkLength($pData['idCategorie'], 0, 11)) {
             $lVr->setValid(false);
             $lVr->getIdCategorie()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
             $lVr->getIdCategorie()->addErreur($lErreur);
         }
         if ($pData['idCategorie'] != '' && !is_int((int) $pData['idCategorie'])) {
             $lVr->setValid(false);
             $lVr->getIdCategorie()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_108_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_108_MSG);
             $lVr->getIdCategorie()->addErreur($lErreur);
         }
         if (!TestFonction::checkLength($pData['categorie'], 0, 50)) {
             $lVr->setValid(false);
             $lVr->getCategorie()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
             $lVr->getCategorie()->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);
         }
         //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['idProducteur'])) {
             $lVr->setValid(false);
             $lVr->getIdProducteur()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getIdProducteur()->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['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 (empty($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 (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);
         }
         // 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);
             }
         }
         // Test de l'existance du producteur
         if ($lVr->getIdProducteur()->getValid()) {
             $lIdProducteur = ProducteurManager::select($pData['idProducteur']);
             $lId = $lIdProducteur->getId();
             if (empty($lId)) {
                 $lVr->setValid(false);
                 $lVr->getLog()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_234_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_234_MSG);
                 $lVr->getLog()->addErreur($lErreur);
             }
         }
         // Les quantités sont positives
         if ($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'] <= 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'] > $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->validUpdate($pData['lots'][$i]);
                 if (!$lVrLot->getValid()) {
                     $lVr->setValid(false);
                 }
                 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;
     }
     return $lTestId;
 }
 /**
  * @name validAjout($pData)
  * @return NomProduitCatalogueVR
  * @desc Test la validite de l'élément
  */
 public static function validAjout($pData)
 {
     $lVr = new NomProduitCatalogueVR();
     //Tests inputs
     if (!isset($pData['id'])) {
         $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 (!isset($pData['numero'])) {
         $lVr->setValid(false);
         $lVr->getNumero()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
         $lVr->getNumero()->addErreur($lErreur);
     }
     if (!isset($pData['idCategorie'])) {
         $lVr->setValid(false);
         $lVr->getIdCategorie()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
         $lVr->getIdCategorie()->addErreur($lErreur);
     }
     if (!isset($pData['nom'])) {
         $lVr->setValid(false);
         $lVr->getNom()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
         $lVr->getNom()->addErreur($lErreur);
     }
     if (!isset($pData['description'])) {
         $lVr->setValid(false);
         $lVr->getDescription()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
         $lVr->getDescription()->addErreur($lErreur);
     }
     if (!isset($pData['producteurs'])) {
         $lVr->setValid(false);
         $lVr->getProducteurs()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
         $lVr->getProducteurs()->addErreur($lErreur);
     }
     if (!isset($pData['caracteristiques'])) {
         $lVr->setValid(false);
         $lVr->getCaracteristiques()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
         $lVr->getCaracteristiques()->addErreur($lErreur);
     }
     if (!isset($pData['modelesLot'])) {
         $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 ($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['numero'], 0, 50)) {
             $lVr->setValid(false);
             $lVr->getNumero()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
             $lVr->getNumero()->addErreur($lErreur);
         }
         if (!TestFonction::checkLength($pData['idCategorie'], 0, 11)) {
             $lVr->setValid(false);
             $lVr->getIdCategorie()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
             $lVr->getIdCategorie()->addErreur($lErreur);
         }
         if (!is_int((int) $pData['idCategorie'])) {
             $lVr->setValid(false);
             $lVr->getIdCategorie()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_108_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_108_MSG);
             $lVr->getIdCategorie()->addErreur($lErreur);
         }
         if (!TestFonction::checkLength($pData['nom'], 0, 50)) {
             $lVr->setValid(false);
             $lVr->getNom()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
             $lVr->getNom()->addErreur($lErreur);
         }
         if (!TestFonction::checkLength($pData['description'], 0, 500)) {
             $lVr->setValid(false);
             $lVr->getDescription()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
             $lVr->getDescription()->addErreur($lErreur);
         }
         if (!is_array($pData['producteurs'])) {
             $lVr->setValid(false);
             $lVr->getProducteurs()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_115_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_115_MSG);
             $lVr->getProducteurs()->addErreur($lErreur);
         }
         if (!is_array($pData['caracteristiques'])) {
             $lVr->setValid(false);
             $lVr->getCaracteristiques()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_115_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_115_MSG);
             $lVr->getCaracteristiques()->addErreur($lErreur);
         }
         if (!is_array($pData['modelesLot'])) {
             $lVr->setValid(false);
             $lVr->getLog()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_115_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_115_MSG);
             $lVr->getLog()->addErreur($lErreur);
         }
         if ($lVr->getValid()) {
             //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['idCategorie'])) {
                 $lVr->setValid(false);
                 $lVr->getIdCategorie()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
                 $lVr->getIdCategorie()->addErreur($lErreur);
             }
             if ($pData['idCategorie'] == 0) {
                 $lVr->setValid(false);
                 $lVr->getIdCategorie()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
                 $lVr->getIdCategorie()->addErreur($lErreur);
             }
             if (empty($pData['nom'])) {
                 $lVr->setValid(false);
                 $lVr->getNom()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
                 $lVr->getNom()->addErreur($lErreur);
             }
             if (empty($pData['modelesLot'])) {
                 $lVr->setValid(false);
                 $lVr->getLog()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_264_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_264_MSG);
                 $lVr->getLog()->addErreur($lErreur);
             }
             // La Ferme doit exister
             $lFerme = FermeManager::select($pData['id']);
             if ($lFerme->getId() != $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);
             }
             // La Catégorie doit exister
             $lCategorieProduit = CategorieProduitManager::select($pData['idCategorie']);
             if ($lCategorieProduit->getId() != $pData['idCategorie']) {
                 $lVr->setValid(false);
                 $lVr->getIdCategorie()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
                 $lVr->getIdCategorie()->addErreur($lErreur);
             }
             foreach ($pData['producteurs'] as $lProducteur) {
                 $lProducteurVO = ProducteurManager::select($lProducteur);
                 if ($lProducteurVO->getIdFerme() != $pData['id']) {
                     $lVr->setValid(false);
                     $lVr->getProducteurs()->setValid(false);
                     $lErreur = new VRerreur();
                     $lErreur->setCode(MessagesErreurs::ERR_216_CODE);
                     $lErreur->setMessage(MessagesErreurs::ERR_216_MSG);
                     $lVr->getProducteurs()->addErreur($lErreur);
                 }
             }
             foreach ($pData['caracteristiques'] as $lCaracteristique) {
                 $lCaracteristiqueVO = CaracteristiqueManager::select($lCaracteristique);
                 if ($lCaracteristiqueVO->getId() != $lCaracteristique) {
                     $lVr->setValid(false);
                     $lVr->getCaracteristiques()->setValid(false);
                     $lErreur = new VRerreur();
                     $lErreur->setCode(MessagesErreurs::ERR_216_CODE);
                     $lErreur->setMessage(MessagesErreurs::ERR_216_MSG);
                     $lVr->getCaracteristiques()->addErreur($lErreur);
                 }
             }
             foreach ($pData['modelesLot'] as $lModeleLot) {
                 $lModeleLotVR = ModeleLotValid::ValidSet($lModeleLot);
                 if (!$lModeleLotVR->getValid()) {
                     $lVr->setValid(false);
                 }
                 $lVr->addModelesLot($lModeleLotVR);
             }
         }
     }
     return $lVr;
 }