/**
  * @name rechargerCompte($pParam)
  * @return VR
  * @desc Recharge le compte d'un adhérent
  */
 public function rechargerCompte($pParam)
 {
     $lVr = RechargementCompteValid::validAjout($pParam);
     if ($lVr->getValid()) {
         $lOperationService = new OperationService();
         $lOperationService->set(OperationDetailToVO::convertFromArray($pParam));
     }
     return $lVr;
 }
 /**
  * @name getInformationFerme()
  * @return InformationFermeResponse
  * @desc Recherche la liste des Fermes
  */
 public function getInformationFerme($pParam)
 {
     $lVr = FermeValid::validDelete($pParam);
     if ($lVr->getValid()) {
         $lResponse = new InformationFermeResponse();
         $lFerme = FermeViewManager::select($pParam["id"]);
         $lResponse->setFerme($lFerme);
         $lOperationService = new OperationService();
         $lResponse->setOperationPassee($lOperationService->getOperationPassee($lFerme[0]->getFerIdCompte()));
         //$lResponse->setTypePaiement( TypePaiementManager::selectAll() );
         return $lResponse;
     }
     return $lVr;
 }
 /**
  * @name getInfoCompte($pParam)
  * @return InfoCompteResponse
  * @desc Renvoie le Compte de l'adherent après avoir récupérer les informations en fonction de l'ID.
  */
 public function getInfoCompte($pParam)
 {
     $lResponse = new InfoCompteResponse();
     $lIdAdherent = $pParam['id_adherent'];
     $lAdherent = AdherentViewManager::select($lIdAdherent);
     $lResponse->setAdherent($lAdherent);
     $lOperationService = new OperationService();
     $lResponse->setOperationAvenir($lOperationService->getOperationAvenir($lAdherent->getAdhIdCompte()));
     $lResponse->setOperationPassee($lOperationService->getOperationPassee($lAdherent->getAdhIdCompte()));
     $lCompteService = new CompteService();
     $lResponse->setAdherentCompte($lCompteService->getAdherentCompte($lAdherent->getAdhIdCompte()));
     $lAdhesionService = new AdhesionService();
     $lResponse->setNbAdhesionEnCours($lAdhesionService->getNbAdhesionEnCoursSurAdherent($lIdAdherent));
     return $lResponse;
 }
 /**
  * @name getListePaiementExport($pParam)
  * @return InfoMarcheVR
  * @desc Retourne la liste des adhérents qui ont réservé sur cette commande et les infos sur la commande.
  */
 public function getListePaiementExport($pParam)
 {
     $lVr = MarcheValid::validGetMarche($pParam);
     if ($lVr->getValid()) {
         $lIdMarche = $pParam["id"];
         $lTypePaiement = $pParam["type"];
         $lCSV = new CSV();
         $lCSV->setNom('Caisse.csv');
         // Le Nom
         // L'entete
         $lEntete = array("Date", "N°", "Compte", "Nom", "Prénom", "Montant", "");
         $lOperationService = new OperationService();
         if ($lTypePaiement == 1) {
             $lOperations = $lOperationService->getListeEspeceCaisse($lIdMarche);
         } else {
             array_push($lEntete, "N°");
             $lOperations = $lOperationService->getListeChequeCaisse($lIdMarche);
         }
         $lCSV->setEntete($lEntete);
         // Les données
         $lContenuTableau = array();
         foreach ($lOperations as $lOperation) {
             if (!is_null($lOperation->getCptLabel())) {
                 $lDate = StringUtils::extractDate($lOperation->getOpeDate());
                 if (is_null($lOperation->getAdhNumero())) {
                     $lAdhNumero = '';
                     $lAdhNom = '';
                     $lAdhPrenom = '';
                 } else {
                     $lAdhNumero = $lOperation->getAdhNumero();
                     $lAdhNom = $lOperation->getAdhNom();
                     $lAdhPrenom = $lOperation->getAdhPrenom();
                 }
                 $lLignecontenu = array($lDate, $lAdhNumero, $lOperation->getCptLabel(), $lAdhNom, $lAdhPrenom, $lOperation->getOpeMontant(), SIGLE_MONETAIRE);
                 if ($lTypePaiement == 2) {
                     $lChampComplementaire = $lOperation->getOpeTypePaiementChampComplementaire();
                     array_push($lLignecontenu, $lChampComplementaire[3]->getValeur());
                 }
                 array_push($lContenuTableau, $lLignecontenu);
             }
         }
         $lCSV->setData($lContenuTableau);
         // Export en CSV
         $lCSV->output();
     } else {
         return $lVr;
     }
 }
 /**
  * @name insert($pCompte)
  * @param CompteVO
  * @return CompteVO
  * @desc Ajoute un compte
  */
 private function insert($pCompte)
 {
     $lId = CompteManager::insert($pCompte);
     // Le label est l'id du compte par défaut
     $pCompte->setId($lId);
     $pCompte->setLabel('C' . $lId);
     $this->update($pCompte);
     // Initialisation du compte
     $lOperation = new OperationDetailVO();
     $lOperation->setIdCompte($lId);
     $lOperation->setMontant(0);
     $lOperation->setLibelle("Création du compte");
     $lOperation->setDate(StringUtils::dateAujourdhuiDb());
     $lOperation->setTypePaiement(-1);
     $lOperationService = new OperationService();
     $lOperationService->set($lOperation);
     return $pCompte;
 }
 /**
  * @name modifierPaiement($pParam)
  * @desc modifie un paiement
  */
 public function modifierPaiement($pParam)
 {
     $lVr = SuiviPaiementValid::validModifierPaiement($pParam);
     if ($lVr->getValid()) {
         $lOperationService = new OperationService();
         $lOperationInitiale = $lOperationService->getDetail($pParam["id"]);
         $lOperationInitiale->setTypePaiement($pParam["typePaiement"]);
         $lOperationInitiale->setMontant($pParam["montant"]);
         $lChampComplementaire = array();
         foreach ($pParam['champComplementaire'] as $lChamp) {
             if (!is_null($lChamp)) {
                 array_push($lChampComplementaire, OperationChampComplementaireToVO::convertFromArray($lChamp));
             }
         }
         $lOperationInitiale->setChampComplementaire($lChampComplementaire);
         $lOperationService->set($lOperationInitiale);
     }
     return $lVr;
 }
 /**
  * @name delete($pIdFacture)
  * @param integer
  * @desc Supprime une facture
  */
 public function delete($pIdFacture)
 {
     $lFactureValid = new NAMESPACE_CLASSE\NAMESPACE_VALIDATEUR\MOD_SERVICE\FactureValid();
     if ($lFactureValid->delete($pIdFacture)) {
         $lFacture = $this->select($pIdFacture);
         $lOperationService = new OperationService();
         // Suppression des opérations
         //	$lOperationService->delete($pIdFacture);
         $lOperationService->delete($lFacture->getOperationProducteur()->getId());
         //	$lOperationService->delete($lFacture->getOperationZeybu()->getId());
         // Suppression du détail de facture
         DetailFactureManager::delete($pIdFacture);
         $lDetailOperationService = new DetailOperationService();
         $lStockService = new StockService();
         foreach ($lFacture->getProduits() as $lProduit) {
             $lStockService->delete($lProduit->getIdStock());
             $lDetailOperationService->delete($lProduit->getIdDetailOperation());
             $lStockService->delete($lProduit->getIdStockSolidaire());
         }
     }
 }
 /**
  * @name updateEnAchat($pIdReservation)
  * @param IdReservationVO
  * @desc Met à jour une réservation
  */
 public function updateEnAchat($pIdReservation)
 {
     $lOperations = $this->selectOperationReservation($pIdReservation);
     $lOperation = $lOperations[0];
     $lIdOperation = $lOperation->getId();
     if (!is_null($lIdOperation)) {
         // Maj du type paiement
         $lOperationService = new OperationService();
         $lOperation = $lOperationService->getDetail($lIdOperation);
         $lOperation->setTypePaiement(22);
         $lOperationService->set($lOperation);
     }
 }
 /**
  * @name validAjout($pData)
  * @return RemiseChequeVR
  * @desc Test la validite de l'élément
  */
 public static function validAjout($pData)
 {
     $lVr = new RemiseChequeVR();
     //Tests inputs
     if (!isset($pData['operations'])) {
         $lVr->setValid(false);
         $lVr->getOperations()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getOperations()->addErreur($lErreur);
     }
     if ($lVr->getValid()) {
         //Tests Techniques
         if (!is_array($pData['operations'])) {
             $lVr->setValid(false);
             $lVr->getOperations()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_115_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_115_MSG);
             $lVr->getOperations()->addErreur($lErreur);
         }
         //Tests Fonctionnels
         //La liste d'opération ne doit pas être vide
         if (empty($pData['operations'])) {
             $lVr->setValid(false);
             $lVr->getOperations()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getOperations()->addErreur($lErreur);
         }
         if ($lVr->getValid()) {
             // Creation de lla liste des id
             $lIdOperation = array();
             foreach ($pData['operations'] as $lOperation) {
                 array_push($lIdOperation, $lOperation['id']);
             }
             // Récupération des operations
             $lOperationService = new OperationService();
             $lOperations = $lOperationService->getByArray($lIdOperation);
             // Vérifie pour chaque ID que l'operation Existe
             foreach ($lIdOperation as $lId) {
                 $lExiste = false;
                 foreach ($lOperations as $lOperation) {
                     if ($lOperation->getId() == $lId) {
                         $lExiste = true;
                     }
                 }
                 // Si une des opération n'existe pas afficher l'erreur
                 if (!$lExiste) {
                     $lVr->setValid(false);
                     $lOperationErreur = new VRelement();
                     $lOperationErreur->setValid(false);
                     $lErreur = new VRerreur();
                     $lErreur->setCode(MessagesErreurs::ERR_216_CODE);
                     $lErreur->setMessage(MessagesErreurs::ERR_216_MSG);
                     $lOperationErreur->addErreur($lErreur);
                     $lVrOperations = $lVr->getOperations();
                     $lVrOperations[$lId] = $lOperationErreur;
                     $lVr->setOperation($lVrOperations);
                 }
             }
             $lRemiseChequeService = new RemiseChequeService();
             if ($lRemiseChequeService->operationDejaSurRemise($lIdOperation)) {
                 $lVr->setValid(false);
                 $lVr->getLog()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_273_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_273_MSG);
                 $lVr->getLog()->addErreur($lErreur);
             }
         }
     }
     return $lVr;
 }
 /**
  * @name validAjout($pData)
  * @return FactureVR
  * @desc Test la validite de l'élément
  */
 public static function validEnregistrer($pData)
 {
     $lVr = new FactureVR();
     //Tests Techniques
     if (!isset($pData['id'])) {
         $lVr->setValid(false);
         $lVr->getOperation()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getOperation()->addErreur($lErreur);
     }
     if (!isset($pData['operationProducteur'])) {
         $lVr->setValid(false);
         $lVr->getOperationProducteur()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getOperationProducteur()->addErreur($lErreur);
     }
     if (!isset($pData['operationZeybu'])) {
         $lVr->setValid(false);
         $lVr->getOperationZeybu()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getOperationZeybu()->addErreur($lErreur);
     }
     if (!isset($pData['produits'])) {
         $lVr->setValid(false);
         $lVr->getProduits()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getProduits()->addErreur($lErreur);
     }
     if (!isset($pData['operationProducteur']['idCompte'])) {
         $lVr->setValid(false);
         $lVr->getOperationProducteur()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getOperationProducteur()->addErreur($lErreur);
     }
     if (!isset($pData['operationProducteur']['montant'])) {
         $lVr->setValid(false);
         $lVr->getMontant()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getMontant()->addErreur($lErreur);
     }
     if (!isset($pData['operationProducteur']['typePaiement'])) {
         $lVr->setValid(false);
         $lVr->getTypePaiement()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getTypePaiement()->addErreur($lErreur);
     }
     if (!isset($pData['operationProducteur']['champComplementaire'])) {
         $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()) {
         // Dans le cas d'une modification
         if ($pData['id']['id'] != '' && !TestFonction::checkLength($pData['id']['id'], 0, 11)) {
             $lVr->setValid(false);
             $lVr->getOperation()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_101_CODE);
             $lVr->getOperation()->addErreur($lErreur);
         }
         if ($pData['id']['id'] != '' && !is_int((int) $pData['id']['id'])) {
             $lVr->setValid(false);
             $lVr->getOperation()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_108_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_108_MSG);
             $lVr->getOperation()->addErreur($lErreur);
         }
         // Pour création ou modification
         if (!TestFonction::checkLength($pData['operationProducteur']['idCompte'], 0, 11)) {
             $lVr->setValid(false);
             $lVr->getOperationProducteur()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
             $lVr->getOperationProducteur()->addErreur($lErreur);
         }
         if (!is_int((int) $pData['operationProducteur']['idCompte'])) {
             $lVr->setValid(false);
             $lVr->getOperationProducteur()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_108_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_108_MSG);
             $lVr->getOperationProducteur()->addErreur($lErreur);
         }
         if (!TestFonction::checkLength($pData['operationProducteur']['montant'], 0, 12) || $pData['operationProducteur']['montant'] > 999999999.99) {
             $lVr->setValid(false);
             $lVr->getMontant()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
             $lVr->getMontant()->addErreur($lErreur);
         }
         if (!is_float((double) $pData['operationProducteur']['montant'])) {
             $lVr->setValid(false);
             $lVr->getMontant()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_109_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_109_MSG);
             $lVr->getMontant()->addErreur($lErreur);
         }
         if (!TestFonction::checkLength($pData['operationProducteur']['typePaiement'], 0, 11)) {
             $lVr->setValid(false);
             $lVr->getTypePaiement()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
             $lVr->getTypePaiement()->addErreur($lErreur);
         }
         if (!is_int((int) $pData['operationProducteur']['typePaiement'])) {
             $lVr->setValid(false);
             $lVr->getTypePaiement()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_108_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_108_MSG);
             $lVr->getTypePaiement()->addErreur($lErreur);
         }
         if (!is_array($pData['operationProducteur']['champComplementaire'])) {
             $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 (!is_array($pData['produits'])) {
             $lVr->setValid(false);
             $lVr->getProduits()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_110_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_110_MSG);
             $lVr->getProduits()->addErreur($lErreur);
         }
         //Tests Fonctionnels
         if (empty($pData['operationProducteur']['idCompte'])) {
             $lVr->setValid(false);
             $lVr->getOperationProducteur()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getOperationProducteur()->addErreur($lErreur);
         }
         if (empty($pData['operationProducteur']['typePaiement']) && $pData['operationProducteur']['typePaiement'] != 0) {
             $lVr->setValid(false);
             $lVr->getTypePaiement()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getTypePaiement()->addErreur($lErreur);
         }
         if ($pData['operationProducteur']['typePaiement'] < 0) {
             $lVr->setValid(false);
             $lVr->getTypePaiement()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_236_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_236_MSG);
             $lVr->getTypePaiement()->addErreur($lErreur);
         }
         if (empty($pData['produits'])) {
             $lVr->setValid(false);
             $lVr->getProduits()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getProduits()->addErreur($lErreur);
         }
         if (isset($pData['id']['champComplementaire'][1])) {
             // Si Marché
             $lVrChampComplementaire = ChampComplementaireValid::validUpdate($pData['id']['champComplementaire'][1], 0);
             if (!$lVrChampComplementaire->getValid()) {
                 $lVr->setValid(false);
             }
             $lVr->setChampComplementaire(array(1 => $lVrChampComplementaire));
         }
         if ($pData['id']['id'] != '') {
             // Modification
             // La facture doit exister
             $lOperationService = new OperationService();
             $lOperationId = $lOperationService->get($pData['id']['id']);
             if ($lOperationId->getId() != $pData['id']['id']) {
                 $lVr->setValid(false);
                 $lVr->getOperation()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_216_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_216_MSG);
                 $lVr->getOperation()->addErreur($lErreur);
             }
         }
         if (empty($pData['operationProducteur']['montant']) && $pData['operationProducteur']['montant'] != 0) {
             $lVr->setValid(false);
             $lVr->getMontant()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getMontant()->addErreur($lErreur);
         }
         if ($pData['operationProducteur']['montant'] < 0) {
             $lVr->setValid(false);
             $lVr->getMontant()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_215_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_215_MSG);
             $lVr->getMontant()->addErreur($lErreur);
         }
         // Il est autorisé d'enregistrer un facture (réception de produit) sans payer.
         if ($pData['operationProducteur']['montant'] == 0 && $pData['operationProducteur']['typePaiement'] != 0 || $pData['operationProducteur']['montant'] != 0 && $pData['operationProducteur']['typePaiement'] == 0) {
             $lVr->setValid(false);
             $lVr->getMontant()->setValid(false);
             $lVr->getTypePaiement()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_216_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_216_MSG);
             $lVr->getMontant()->addErreur($lErreur);
             $lVr->getTypePaiement()->addErreur($lErreur);
         }
         $lFerme = FermeManager::selectByIdCompte($pData['operationProducteur']['idCompte']);
         if ($lFerme[0]->getIdCompte() != $pData['operationProducteur']['idCompte']) {
             $lVr->setValid(false);
             $lVr->getOperationProducteur()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_216_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_216_MSG);
             $lVr->getOperationProducteur()->addErreur($lErreur);
         }
         $lTypePaiementService = new TypePaiementService();
         $lTypePaiement = $lTypePaiementService->selectVisible($pData['operationProducteur']['typePaiement']);
         // Il est autorisé d'enregistrer un facture (réception de produit) sans payer.
         if ($lTypePaiement->getId() != $pData['operationProducteur']['typePaiement'] && $pData['operationProducteur']['typePaiement'] != 0) {
             $lVr->setValid(false);
             $lVr->getTypePaiement()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_216_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_216_MSG);
             $lVr->getTypePaiement()->addErreur($lErreur);
         } else {
             $lChampComplementaire = array();
             foreach ($pData['operationProducteur']['champComplementaire'] as $lChamp) {
                 if (!is_null($lChamp)) {
                     $lObligatoire = NULL;
                     foreach ($lTypePaiement->getChampComplementaire() as $lChampTypePaiement) {
                         if ($lChampTypePaiement->getId() == $lChamp['id']) {
                             $lObligatoire = $lChampTypePaiement->getObligatoire();
                         }
                     }
                     $lVrChampComplementaire = ChampComplementaireValid::validUpdate($lChamp, $lObligatoire);
                     if (!$lVrChampComplementaire->getValid()) {
                         $lVr->setValid(false);
                     }
                     $lChampComplementaire[$lChamp['id']] = $lVrChampComplementaire;
                 }
             }
             $lVr->setChampComplementaire($lChampComplementaire);
         }
         if (is_array($pData['produits'])) {
             $lValidProduit = new ProduitDetailFactureValid();
             //$i = 0;
             //while(isset($pData['produits'][$i])) {
             foreach ($pData['produits'] as $lIndice => $lProduit) {
                 if (!is_null($pData['produits'][$lIndice])) {
                     $lVrProduit = $lValidProduit->validAjout($pData['produits'][$lIndice], $lFerme[0]->getId());
                     if (!$lVrProduit->getValid()) {
                         $lVr->setValid(false);
                     }
                     $lVr->addProduits($lVrProduit);
                 }
                 //	$i++;
             }
         }
     }
     return $lVr;
 }
 /**
  * @name getInfoAchatMarche($pParam)
  * @return InfoAchatCommandeResponse
  * @desc Retourne les infos de réservation d'un adhérent
  */
 public function getInfoAchatMarche($pParam)
 {
     $lVr = MarcheValid::validGetInfoAchatMarche($pParam);
     if ($lVr->getValid()) {
         $lResponse = new InfoAchatCommandeResponse();
         if ($pParam["id_adherent"] != 0) {
             // Si ce n'est pas le compte invité
             $lAdherent = AdherentViewManager::select($pParam["id_adherent"]);
             $lResponse->setAdherent($lAdherent);
         }
         $lStockService = new StockService();
         $lStockProduitsDisponible = $lStockService->getProduitsDisponible();
         // Stock de produit disponible
         $lStock = array();
         $lProduitsMarche = array();
         $lProduitsReservation = array();
         $lProduitsAchat = array();
         if ($pParam["id_commande"] != -1) {
             // Si ce n'est pas la caisse permanente
             $lMarcheService = new MarcheService();
             $lMarche = $lMarcheService->get($pParam["id_commande"]);
             $lProduitsMarche = $lMarche->getProduits();
             $lResponse->setMarche($lMarche);
             // Les informations du marché
             if ($pParam["id_adherent"] != 0) {
                 // Si ce n'est pas le compte invité
                 $lReservationService = new ReservationService();
                 $lIdReservation = new IdReservationVO();
                 $lIdReservation->setIdCompte($lAdherent->getAdhIdCompte());
                 $lIdReservation->setIdCommande($pParam["id_commande"]);
                 // Récupère les réservations actives
                 $lProduitsReservation = $lReservationService->get($lIdReservation, true)->getDetailReservation();
                 $lResponse->setReservation($lProduitsReservation);
                 // La réservation
                 $lAchatService = new AchatService();
                 $lOperationsAchat = $lAchatService->selectOperationAchat($lAdherent->getAdhIdCompte(), $pParam["id_commande"]);
                 $lAchat = new AchatVO();
                 if (!is_null($lOperationsAchat[0]->getId())) {
                     $lAchat = $lAchatService->get($lOperationsAchat[0]->getId());
                     $lProduitsAchat = $lAchat->getProduits();
                 } else {
                     $lOperationService = new OperationService();
                     $lOperationsRechargement = $lOperationService->getOperationRechargementSurMarche($lAdherent->getAdhIdCompte(), $pParam["id_commande"]);
                     if (!is_null($lOperationsRechargement[0]->getId())) {
                         $lAchat = $lAchatService->get($lOperationsRechargement[0]->getId());
                     }
                 }
                 $lResponse->setAchats($lAchat);
                 // L'achat
             }
         }
         if ($pParam["id_adherent"] != 0) {
             // Si ce n'est pas le compte invité
             $lAdhesionService = new AdhesionService();
             $lResponse->setNbAdhesionEnCours($lAdhesionService->getNbAdhesionEnCoursSurAdherent($pParam["id_adherent"]));
         }
         // Fusion des stocks
         $lLotsProduits = array();
         foreach ($lStockProduitsDisponible as $lProduitStock) {
             if (!is_null($lProduitStock->getId())) {
                 $lAjout = true;
                 foreach ($lProduitsMarche as $lProduitMarche) {
                     if ($lProduitStock->getIdNom() == $lProduitMarche->getIdNom() && $lProduitStock->getUnite() == $lProduitMarche->getUnite()) {
                         $lAjout = false;
                     }
                 }
                 if ($lAjout) {
                     if (!isset($lStock[$lProduitStock->getCproNom()])) {
                         $lStock[$lProduitStock->getCproNom()] = array("cproId" => $lProduitStock->getIdCategorie(), "cproNom" => $lProduitStock->getCproNom(), "produits" => array());
                     }
                     $lUnite = $lProduitStock->getUnite();
                     $lStock[$lProduitStock->getCproNom()]["produits"][$lProduitStock->getNom() . $lProduitStock->getUnite()] = new ProduitDetailAchatAfficheVO($lProduitStock->getIdNom(), null, null, null, null, null, null, null, null, null, $lUnite, null, $lUnite, null, null, $lProduitStock->getIdCategorie(), $lProduitStock->getCproNom(), null, $lProduitStock->getNom());
                     $lLotsProduits[$lProduitStock->getIdNom() . $lProduitStock->getUnite()] = array("nom" => $lProduitStock->getNom(), "type" => "modele", "lots" => $lProduitStock->getLots());
                 }
             }
         }
         foreach ($lProduitsMarche as $lProduitMarche) {
             if (!isset($lStock[$lProduitMarche->getCproNom()])) {
                 $lStock[$lProduitMarche->getCproNom()] = array("cproId" => $lProduitMarche->getIdCategorie(), "cproNom" => $lProduitMarche->getCproNom(), "produits" => array());
             }
             $lUnite = !is_null($lProduitMarche->getUnite()) ? $lProduitMarche->getUnite() : $lProduitMarche->getUniteSolidaire();
             $lMontant = NULL;
             $lQuantite = NULL;
             $lIdDetailCommande = NULL;
             // Ajout des réservations
             if (empty($lProduitsAchat)) {
                 foreach ($lProduitsReservation as $lProduitReservation) {
                     if ($lProduitReservation->getIdNomProduit() == $lProduitMarche->getIdNom() && $lProduitReservation->getUnite() == $lProduitMarche->getUnite()) {
                         $lQuantite = $lProduitReservation->getQuantite();
                         $lMontant = $lProduitReservation->getMontant();
                         $lIdDetailCommande = $lProduitReservation->getIdDetailCommande();
                     }
                 }
             }
             $lStock[$lProduitMarche->getCproNom()]["produits"][$lProduitMarche->getNom() . $lProduitMarche->getUnite()] = new ProduitDetailAchatAfficheVO($lProduitMarche->getIdNom(), null, null, null, null, $lIdDetailCommande, null, null, null, $lQuantite, $lUnite, null, $lUnite, $lMontant, null, $lProduitMarche->getIdCategorie(), $lProduitMarche->getCproNom(), null, $lProduitMarche->getNom());
             $lLotsProduits[$lProduitMarche->getIdNom() . $lProduitMarche->getUnite()] = array("nom" => $lProduitMarche->getNom(), "type" => "marche", "lots" => $lProduitMarche->getLots());
         }
         foreach ($lProduitsAchat as $lProduitAchat) {
             $lUnite = !is_null($lProduitAchat->getUnite()) ? $lProduitAchat->getUnite() : $lProduitAchat->getUniteSolidaire();
             if (!is_null($lUnite)) {
                 if (isset($lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite])) {
                     $lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite]->setIdStock($lProduitAchat->getIdStock());
                     $lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite]->setIdStockSolidaire($lProduitAchat->getIdStockSolidaire());
                     $lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite]->setIdDetailCommande($lProduitAchat->getIdDetailCommande());
                     $lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite]->setIdModeleLot($lProduitAchat->getIdModeleLot());
                     $lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite]->setIdDetailCommandeSolidaire($lProduitAchat->getIdDetailCommandeSolidaire());
                     $lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite]->setIdModeleLotSolidaire($lProduitAchat->getIdModeleLotSolidaire());
                     $lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite]->setQuantite($lProduitAchat->getQuantite());
                     $lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite]->setQuantiteSolidaire($lProduitAchat->getQuantiteSolidaire());
                     $lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite]->setMontant($lProduitAchat->getMontant());
                     $lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite]->setMontantSolidaire($lProduitAchat->getMontantSolidaire());
                     $lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite]->setIdDetailOperation($lProduitAchat->getIdDetailOperation());
                     $lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite]->setIdDetailOperationSolidaire($lProduitAchat->getIdDetailOperationSolidaire());
                 } else {
                     if (!isset($lStock[$lProduitAchat->getCproNom()])) {
                         $lStock[$lProduitAchat->getCproNom()] = array("cproId" => $lProduitAchat->getCproId(), "cproNom" => $lProduitAchat->getCproNom(), "produits" => array());
                     }
                     $lProduitAchat->setUnite($lUnite);
                     $lProduitAchat->setUniteSolidaire($lUnite);
                     $lStock[$lProduitAchat->getCproNom()]["produits"][$lProduitAchat->getNproNom() . $lUnite] = $lProduitAchat;
                     // Ajout des lots
                     $lModelesLot = ModeleLotManager::selectByIdNomProduit($lProduitAchat->getIdNomProduit());
                     // Récupère même les lots supprimés car il y a peut être eu un achat sur ce lot précédemment
                     $lLots = array();
                     foreach ($lModelesLot as $lModeleLot) {
                         $lLot = new DetailMarcheVO();
                         $lLot->setId($lModeleLot->getId());
                         $lLot->setTaille($lModeleLot->getQuantite());
                         $lLot->setPrix($lModeleLot->getPrix());
                         $lLots[$lModeleLot->getId()] = $lLot;
                     }
                     $lLotsProduits[$lProduitAchat->getIdNomProduit() . $lUnite] = array("nom" => $lProduitAchat->getNproNom(), "type" => "modele", "lots" => $lLots);
                 }
             }
         }
         ksort($lStock);
         $lResponse->setStock($lStock);
         // Stock de produit disponible
         $lResponse->setLots($lLotsProduits);
         // Lots des produits
         $lBanqueService = new BanqueService();
         $lTypePaiementService = new TypePaiementService();
         $lResponse->setTypePaiement($lTypePaiementService->selectVisible());
         // Type de paiment
         $lResponse->setBanques($lBanqueService->getAllActif());
         // Liste des banques
         $lResponse->setIdRequete(uniqid());
         return $lResponse;
     }
     return $lVr;
 }
 /**
  * @name validGetAchat($pData)
  * @return AfficheAchatAdherentVR
  * @desc Test la validite de l'élément
  */
 public static function validGetAchat($pData)
 {
     $lVr = new AfficheAchatAdherentVR();
     //Tests inputs
     if (!isset($pData['idAchat'])) {
         $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['idAchat'], 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['idAchat'])) {
             $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);
         }
         //Tests Fonctionnels
         if (empty($pData['idAchat'])) {
             $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);
         }
         $lOperationService = new OperationService();
         if (!$lOperationService->existe($pData['idAchat'])) {
             $lVr->setValid(false);
             $lVr->getId()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_216_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_216_MSG);
             $lVr->getId()->addErreur($lErreur);
         }
     }
     return $lVr;
 }
 /**
  * @name validUpdate($pData)
  * @return CompteSolidaireModifierVirementVR
  * @desc Test la validite de l'élément
  */
 public static function validUpdate($pData)
 {
     $lVr = new CompteSolidaireModifierVirementVR();
     //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['montant'])) {
         $lVr->setValid(false);
         $lVr->getMontant()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getMontant()->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['montant'], 0, 12) || $pData['montant'] > 999999999.99) {
             $lVr->setValid(false);
             $lVr->getMontant()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
             $lVr->getMontant()->addErreur($lErreur);
         }
         if (!is_float((double) $pData['montant'])) {
             $lVr->setValid(false);
             $lVr->getMontant()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_109_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_109_MSG);
             $lVr->getMontant()->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['montant'])) {
             $lVr->setValid(false);
             $lVr->getMontant()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getMontant()->addErreur($lErreur);
         }
         if ($pData['montant'] <= 0) {
             $lVr->setValid(false);
             $lVr->getMontant()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_215_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_215_MSG);
             $lVr->getMontant()->addErreur($lErreur);
         }
         if ($lVr->getValid()) {
             $lOperationService = new OperationService();
             $lOperation = $lOperationService->getDetail($pData['id']);
             $lOpeChampComp = $lOperation->getChampComplementaire();
             if ($lOperation->getTypePaiement() == 3 || $lOperation->getTypePaiement() == 9) {
                 $lOperationSoeur = $lOperationService->getDetail($lOpeChampComp[4]->getValeur());
             } else {
                 if ($lOperation->getTypePaiement() == 4 || $lOperation->getTypePaiement() == 10) {
                     $lOperationSoeur = $lOperationService->getDetail($lOpeChampComp[5]->getValeur());
                 }
             }
             $lCompteService = new CompteService();
             if (!$lCompteService->existe($lOperationSoeur->getIdCompte()) || !$lCompteService->existe($lOperation->getIdCompte())) {
                 $lVr->setValid(false);
                 $lVr->getId()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_227_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_227_MSG);
                 $lVr->getId()->addErreur($lErreur);
             }
             // Le Montant dans l'operation est négatif donc solde - montant
             if ($pData['montant'] > $lCompteService->get(-2)->getSolde() - $lOperation->getMontant()) {
                 $lVr->setValid(false);
                 $lVr->getMontant()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_237_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_237_MSG);
                 $lVr->getMontant()->addErreur($lErreur);
             }
         }
     }
     return $lVr;
 }
 /**
  * @name validModifierPaiement($pData)
  * @return RechargementCompteVR
  * @desc Test la validite de l'élément
  */
 public static function validModifierPaiement($pData)
 {
     $lVr = new RechargementCompteVR();
     //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['montant'])) {
         $lVr->setValid(false);
         $lVr->getMontant()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getMontant()->addErreur($lErreur);
     }
     if (!isset($pData['champComplementaire'])) {
         $lVr->setValid(false);
         $lVr->getChampComplementaire()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getChampComplementaire()->addErreur($lErreur);
     }
     if (!isset($pData['typePaiement'])) {
         $lVr->setValid(false);
         $lVr->getTypePaiement()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getTypePaiement()->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_CODE);
             $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 (!TestFonction::checkLength($pData['montant'], 0, 12) || $pData['montant'] > 999999999.99) {
             $lVr->setValid(false);
             $lVr->getMontant()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
             $lVr->getMontant()->addErreur($lErreur);
         }
         if (!is_float((double) $pData['montant'])) {
             $lVr->setValid(false);
             $lVr->getMontant()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_109_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_109_MSG);
             $lVr->getMontant()->addErreur($lErreur);
         }
         if (!TestFonction::checkLength($pData['typePaiement'], 0, 11)) {
             $lVr->setValid(false);
             $lVr->getTypePaiement()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
             $lVr->getTypePaiement()->addErreur($lErreur);
         }
         if (!is_int((int) $pData['typePaiement'])) {
             $lVr->setValid(false);
             $lVr->getTypePaiement()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_108_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_108_MSG);
             $lVr->getTypePaiement()->addErreur($lErreur);
         }
         if (!is_array($pData['champComplementaire'])) {
             $lVr->setValid(false);
             $lVr->getChampComplementaire()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_115_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_115_MSG);
             $lVr->getChampComplementaire()->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['montant'])) {
             $lVr->setValid(false);
             $lVr->getMontant()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getMontant()->addErreur($lErreur);
         }
         if ($pData['montant'] < 0) {
             $lVr->setValid(false);
             $lVr->getMontant()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_215_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_215_MSG);
             $lVr->getMontant()->addErreur($lErreur);
         }
         $lOperationService = new OperationService();
         $lOperation = $lOperationService->get($pData['id']);
         if ($lOperation->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);
         }
         if ($lOperation->getType() != 0) {
             $lVr->setValid(false);
             $lVr->getId()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_227_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_227_MSG);
             $lVr->getId()->addErreur($lErreur);
         }
         $lTypePaiementService = new TypePaiementService();
         $lTypePaiement = $lTypePaiementService->selectVisible($pData['typePaiement']);
         // Il est autorisé d'enregistrer un facture (réception de produit) sans payer.
         if ($lTypePaiement->getId() != $pData['typePaiement']) {
             $lVr->setValid(false);
             $lVr->getTypePaiement()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_216_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_216_MSG);
             $lVr->getTypePaiement()->addErreur($lErreur);
         } else {
             $lChampComplementaire = array();
             foreach ($pData['champComplementaire'] as $lChamp) {
                 if (!is_null($lChamp)) {
                     $lObligatoire = NULL;
                     foreach ($lTypePaiement->getChampComplementaire() as $lChampTypePaiement) {
                         if ($lChampTypePaiement->getId() == $lChamp['id']) {
                             $lObligatoire = $lChampTypePaiement->getObligatoire();
                         }
                     }
                     $lVrChampComplementaire = ChampComplementaireValid::validUpdate($lChamp, $lObligatoire);
                     if (!$lVrChampComplementaire->getValid()) {
                         $lVr->setValid(false);
                     }
                     $lChampComplementaire[$lChamp['id']] = $lVrChampComplementaire;
                 }
             }
             $lVr->setChampComplementaire($lChampComplementaire);
         }
     }
     return $lVr;
 }
 /**
  * @name select($pId)
  * @param integer(11)
  * @return AchatVO
  * @desc Retourne un achat
  */
 private function select($pId)
 {
     $lOperationService = new OperationService();
     $lOperationInitiale = $lOperationService->getDetail($pId);
     $lChampComplementaire = $lOperationInitiale->getChampComplementaire();
     $lOperationAchat = NULL;
     $lOperationAchatSolidaire = NULL;
     $lRechargement = NULL;
     $lIdOperationAchat = 0;
     $lIdOperationAchatSolidaire = 0;
     switch ($lOperationInitiale->getTypePaiement()) {
         case 7:
             $lOperationAchat = $lOperationInitiale;
             $lIdOperationAchat = $lOperationAchat->getId();
             if (isset($lChampComplementaire[13]) && !is_null($lChampComplementaire[13])) {
                 $lIdOperationAchatSolidaire = $lChampComplementaire[13]->getValeur();
                 if (!is_null($lIdOperationAchatSolidaire)) {
                     $lOperationAchatSolidaire = $lOperationService->getDetail($lIdOperationAchatSolidaire);
                 }
             }
             if (isset($lChampComplementaire[14]) && !is_null($lChampComplementaire[14])) {
                 $lIdRechargement = $lChampComplementaire[14]->getValeur();
                 if (!is_null($lIdRechargement)) {
                     $lRechargement = $lOperationService->getDetail($lIdRechargement);
                 }
             }
             break;
         case 8:
             $lOperationAchatSolidaire = $lOperationInitiale;
             $lIdOperationAchatSolidaire = $lOperationAchatSolidaire->getId();
             if (isset($lChampComplementaire[12]) && !is_null($lChampComplementaire[12])) {
                 $lIdOperationAchat = $lChampComplementaire[12]->getValeur();
                 if (!is_null($lIdOperationAchat)) {
                     $lOperationAchat = $lOperationService->getDetail($lIdOperationAchat);
                 }
             }
             if (isset($lChampComplementaire[14]) && !is_null($lChampComplementaire[14])) {
                 $lIdRechargement = $lChampComplementaire[14]->getValeur();
                 if (!is_null($lIdRechargement)) {
                     $lRechargement = $lOperationService->getDetail($lIdRechargement);
                 }
             }
             break;
         default:
             $lRechargement = $lOperationInitiale;
             if (isset($lChampComplementaire[12]) && !is_null($lChampComplementaire[12])) {
                 $lIdOperationAchat = $lChampComplementaire[12]->getValeur();
                 if (!is_null($lIdOperationAchat)) {
                     $lOperationAchat = $lOperationService->getDetail($lIdOperationAchat);
                 }
             }
             if (isset($lChampComplementaire[13]) && !is_null($lChampComplementaire[13])) {
                 $lIdOperationAchatSolidaire = $lChampComplementaire[13]->getValeur();
                 if (!is_null($lIdOperationAchatSolidaire)) {
                     $lOperationAchatSolidaire = $lOperationService->getDetail($lIdOperationAchatSolidaire);
                 }
             }
             break;
     }
     $lProduits = DetailAchatManager::selectProduitsDetailAchat($lIdOperationAchat, $lIdOperationAchatSolidaire);
     return new AchatVO($lOperationAchat, $lOperationAchatSolidaire, $lProduits, $lRechargement);
 }
 /**
  * @name ajoutOperation($pParam)
  * @return OperationDetailVR
  * @desc Ajoute une operation au compte association
  */
 public function ajoutOperation($pParam)
 {
     $lVr = CompteAssociationValid::validAjoutOperation($pParam);
     if ($lVr->getValid()) {
         $lOperationService = new OperationService();
         $lOperation = OperationDetailToVO::convertFromArray($pParam);
         $lOperation->setIdCompte(-4);
         // Le Compte Association
         $lOperationService->set($lOperation);
     }
     return $lVr;
 }
 /**
  * @name validUpdateMarche($pData)
  * @return AchatCommandeVR
  * @desc Test la validite de l'élément
  */
 public static function validUpdateMarche($pData)
 {
     $lVr = new AchatCommandeVR();
     //Tests Fonctionnels
     // Adhérent doit avoir soit un achat soit un rechargement à minima
     if ($pData['idCompte'] != -3 && (empty($pData['rechargement']['montant']) || $pData['rechargement']['montant'] == 0) && empty($pData['idAchat'])) {
         $lVr->setValid(false);
         $lVr->getLog()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_207_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_207_MSG);
         $lVr->getLog()->addErreur($lErreur);
     }
     // Compte invité doit avoir un achat
     if ($pData['idCompte'] == -3 && empty($pData['idAchat'])) {
         $lVr->setValid(false);
         $lVr->getLog()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_207_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_207_MSG);
         $lVr->getLog()->addErreur($lErreur);
     }
     // Si achat il faut le vérifier
     if ($lVr->getValid(false) && !empty($pData['idAchat'])) {
         $lOperationService = new OperationService();
         $lValid = true;
         foreach ($pData['idAchat'] as $lIdAchat) {
             $lValid &= $lOperationService->existe($lIdAchat);
         }
         if (!$lValid) {
             $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);
         }
     }
     return $lVr;
 }
 /**
  * @name setCloturer($IdMarche)
  * @param integer
  * @desc Cloture le marche
  */
 public function setCloturer($IdMarche)
 {
     $lMarche = CommandeManager::select($IdMarche);
     $lMarche->setArchive(2);
     $lOperationService = new OperationService();
     // On Passe les opérations réservées non récupérées en statut cloturé
     $lListeOperation = $lOperationService->getReservationCommande($IdMarche);
     foreach ($lListeOperation as $lOperation) {
         if ($lOperation->getId() != null) {
             $lOperation->setTypePaiement(15);
             $lOperationService->set($lOperation);
         }
     }
     return CommandeManager::update($lMarche);
 }
 /**
  * @name getOperationPassee($pId)
  * @param integer
  * @return array(OperationPasseeViewVO)
  * @desc Retourne les opérations passées pour un adhérent
  */
 public function getOperationPassee($pId)
 {
     $lAdherentValid = new NAMESPACE_CLASSE\NAMESPACE_VALIDATEUR\MOD_SERVICE\AdherentValid();
     if ($lAdherentValid->delete($pId)) {
         $lAdherent = $this->select($pId);
         $lOperationService = new OperationService();
         return $lOperationService->getOperationPassee($lAdherent->getAdhIdCompte());
     }
     return false;
 }
 /**
  * @name validSupprimerAchat($pData)
  * @return SupprimerAchatAdherentVR
  * @desc Test la validite de l'élément
  */
 public static function validSupprimerAchat($pData)
 {
     $lVr = new SupprimerAchatAdherentVR();
     //Tests inputs
     if (!isset($pData['idAchat'])) {
         $lVr->setValid(false);
         $lVr->getIdAchat()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getIdAchat()->addErreur($lErreur);
     }
     if ($lVr->getValid()) {
         //Tests Techniques
         if (!TestFonction::checkLength($pData['idAchat'], 0, 11)) {
             $lVr->setValid(false);
             $lVr->getIdAchat()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
             $lVr->getIdAchat()->addErreur($lErreur);
         }
         if (!is_int((int) $pData['idAchat'])) {
             $lVr->setValid(false);
             $lVr->getIdAchat()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_108_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_108_MSG);
             $lVr->getIdAchat()->addErreur($lErreur);
         }
         //Tests Fonctionnels
         if (empty($pData['idAchat'])) {
             $lVr->setValid(false);
             $lVr->getIdAchat()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getIdAchat()->addErreur($lErreur);
         }
         if ($lVr->getValid()) {
             $lOperationService = new OperationService();
             $lOperation = $lOperationService->get($pData['idAchat']);
             if (is_null($lOperation->getId()) || $lOperation->getTypePaiement() != 7 && $lOperation->getTypePaiement() != 8) {
                 $lVr->setValid(false);
                 $lVr->getIdAchat()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_216_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_216_MSG);
                 $lVr->getIdAchat()->addErreur($lErreur);
             }
         }
     }
     return $lVr;
 }
 /**
  * @name exportOperation($pParam)
  * @desc Donne les opérations sur le compte du zeybu
  */
 public function exportOperation($pParam)
 {
     $lVr = CompteZeybuValid::validRecherche($pParam);
     if ($lVr->getValid()) {
         $lDateDebut = NULL;
         if (!empty($pParam['dateDebut'])) {
             $lDateDebut = $pParam['dateDebut'];
         }
         $lDateFin = NULL;
         if (!empty($pParam['dateFin'])) {
             $lDateFin = $pParam['dateFin'];
         }
         $lIdMarche = NULL;
         if (!empty($pParam['idMarche'])) {
             $lIdMarche = $pParam['idMarche'];
         }
         $lCSV = new CSV();
         $lCSV->setNom('CompteMarche.csv');
         // Le Nom
         // L'entete
         $lEntete = array("Date", "Compte", "Libelle", "Paiement", "N°", "Debit", "", "Credit", "");
         $lCSV->setEntete($lEntete);
         // Les données
         $lOperationService = new OperationService();
         $lOperations = $lOperationService->rechercheOperationZeybu($lDateDebut, $lDateFin, $lIdMarche);
         $lContenuTableau = array();
         foreach ($lOperations as $lOperation) {
             $lDate = StringUtils::extractDate($lOperation->getOpeDate());
             $lPaiement = '';
             if (!is_null($lOperation->getTppType())) {
                 $lPaiement = $lOperation->getTppType();
             }
             $lCheque = '';
             if (!is_null($lOperation->getNumeroCheque())) {
                 $lCheque = $lOperation->getNumeroCheque();
             }
             $lDebit = '';
             $lCredit = '';
             if ($lOperation->getOpeMontant() < 0) {
                 $lDebit = $lOperation->getOpeMontant() * -1;
             } else {
                 $lCredit = $lOperation->getOpeMontant();
             }
             $lLignecontenu = array($lDate, $lOperation->getCptLabel(), $lOperation->getOpeLibelle(), $lPaiement, $lCheque, $lDebit, SIGLE_MONETAIRE, $lCredit, SIGLE_MONETAIRE);
             array_push($lContenuTableau, $lLignecontenu);
         }
         $lCSV->setData($lContenuTableau);
         // Export en CSV
         $lCSV->output();
     } else {
         return $lVr;
     }
 }
 /**
  * @name validInfoAchatMarche($pData)
  * @return AchatVR
  * @desc Test la validite de l'élément
  */
 public static function validInfoAchatMarche($pData)
 {
     $lVr = new InfoAchatMarcheVR();
     //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['id_adherent'])) {
         $lVr->setValid(false);
         $lVr->getIdAdherent()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getIdAdherent()->addErreur($lErreur);
     }
     if (!isset($pData['id_commande'])) {
         $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 ($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['id_adherent'], 0, 11)) {
             $lVr->setValid(false);
             $lVr->getIdAdherent()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
             $lVr->getIdAdherent()->addErreur($lErreur);
         }
         if (!is_int((int) $pData['id_adherent'])) {
             $lVr->setValid(false);
             $lVr->getIdAdherent()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_108_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_108_MSG);
             $lVr->getIdAdherent()->addErreur($lErreur);
         }
         if (!TestFonction::checkLength($pData['id_commande'], 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 (!is_int((int) $pData['id_commande'])) {
             $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);
         }
         //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['id'])) {
             // L'operation d'achat doit exister
             $lOperationService = new OperationService();
             $lOperationAchat = $lOperationService->get($pData['id']);
             if ($lOperationAchat->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);
             }
         } else {
             // Si pas d'achat il faut le marché à minima
             if (empty($pData['id_commande'])) {
                 $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);
             }
         }
         // Si c'est un adhérent
         if (!empty($pData['id_adherent']) && $pData['id_adherent'] != -3) {
             $lAdherentService = new AdherentService();
             $lAdherent = $lAdherentService->get($pData['id_adherent']);
             if ($lAdherent->getAdhId() != $pData['id_adherent']) {
                 $lVr->setValid(false);
                 $lVr->getIdAdherent()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
                 $lVr->getIdAdherent()->addErreur($lErreur);
             }
             if ($lVr->getValid()) {
                 $lVr->setData(array('adherent' => $lAdherent));
             }
         }
     }
     return $lVr;
 }
 /**
  * @name supprimerAchat($pParam)
  * @return ListeReservationCommandeVR
  * @desc Met à jour une réservation
  */
 public function supprimerAchat($pParam)
 {
     $lVr = AfficheAchatAdherentValid::validSupprimerAchat($pParam);
     if ($lVr->getValid()) {
         $lOperationService = new OperationService();
         $lOperation = $lOperationService->get($pParam["idAchat"]);
         $lIdAchatVO = new IdAchatVO();
         $lIdAchatVO->setIdCompte($lOperation->getIdCompte());
         $lIdAchatVO->setIdCommande($lOperation->getIdCommande());
         $lIdAchatVO->setIdAchat($lOperation->getId());
         $lAchatService = new AchatService();
         $lSupressionAchat = $lAchatService->delete($lIdAchatVO);
     }
     return $lVr;
 }
 /**
  * @name encaisser($pIdRemiseCheque)
  * @param integer
  * @desc Valide les opérations
  */
 public function encaisser($pIdRemiseCheque)
 {
     // Les infos de la remise
     $lRemise = $this->getDetail($pIdRemiseCheque);
     $lIdOperations = array();
     foreach ($lRemise->getOperations() as $lOperation) {
         // récupération des Id Operations
         array_push($lIdOperations, $lOperation->getIdOperation());
     }
     $lOperationService = new OperationService();
     $lOperationService->validerPaiementByArray($lIdOperations);
     // Valide les opérations
     // Valide la remise
     $lRemise->setEtat(1);
     RemiseChequeManager::update($lRemise);
 }
 /**
  * @name estCredit($pIdOperation)
  * @return bool
  * @desc Test si le paramètre est un id d'une opération de crédit
  */
 public function estCredit($pIdOperation)
 {
     if ($this->estId($pIdOperation) && !is_null($pIdOperation)) {
         $lOperationService = new OperationService();
         $lOperation = $lOperationService->get($pIdOperation);
         if (!is_null($lOperation)) {
             return $lOperation->getTypePaiement() == 4 || $lOperation->getTypePaiement() == 10;
         }
     }
     return false;
 }
 /**
  * @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 enregistrerBonDeCommande($pParam)
  * @return AfficheListeProduitBonDeCommandeResponse
  * @desc Enregistre le bon de commande.
  */
 public function enregistrerBonDeCommande($pParam)
 {
     $lVr = ProduitsBonDeCommandeValid::validAjout($pParam);
     if ($lVr->getValid()) {
         $lIdMarche = $pParam["id_commande"];
         $lIdCompteFerme = $pParam["id_compte_ferme"];
         $lProduits = $pParam["produits"];
         // On enregistre uniquement les produits avec à minima quantité (même si prix à 0)
         // Calcul du total
         $lTotal = 0;
         $lProduitsValide = array();
         foreach ($lProduits as $lProduit) {
             if ($lProduit["quantite"] > 0) {
                 array_push($lProduitsValide, $lProduit);
             }
             $lTotal += $lProduit["prix"];
         }
         // Récupère l'opération Bon de commande si elle existe
         $lOperationService = new OperationService();
         $lOperations = $lOperationService->getBonCommande($lIdMarche, $lIdCompteFerme);
         $lIdOperation = $lOperations[0]->getId();
         if (is_null($lIdOperation)) {
             // Si il n'y a pas d'opération de Bon de commande
             $lOperation = new OperationDetailVO();
             $lOperation->setIdCompte($lIdCompteFerme);
             $lOperation->setLibelle('Bon de Commande');
             $lOperation->setTypePaiement(5);
             $lOperationChampComplementaire = new OperationChampComplementaireVO();
             $lOperationChampComplementaire->setChcpId(1);
             $lOperationChampComplementaire->setValeur($lIdMarche);
             $lOperation->setChampComplementaire(array($lOperationChampComplementaire));
         } else {
             $lOperation = $lOperations[0];
         }
         $lOperation->setMontant($lTotal);
         $lIdOperation = $lOperationService->set($lOperation);
         // Ajout ou mise à jour de l'operation
         $lBonCommande = InfoBonCommandeViewManager::selectInfoBonCommande($lIdMarche, $lIdCompteFerme);
         $lDetailOperationService = new DetailOperationService();
         $lStockService = new StockService();
         foreach ($lProduitsValide as $lProduit) {
             $lMaj = false;
             foreach ($lBonCommande as $lBon) {
                 if ($lProduit["dcomId"] == $lBon->getDcomId()) {
                     $lMaj = true;
                     //$lDcom = DetailCommandeManager::selectByIdProduit($lProduit["id"]);
                     $lStock = new StockVO();
                     $lStock->setId($lBon->getStoId());
                     $lStock->setQuantite($lProduit["quantite"]);
                     $lStock->setType(3);
                     $lStock->setIdCompte($lIdCompteFerme);
                     $lStock->setIdDetailCommande($lProduit["dcomId"]);
                     $lStock->setIdOperation($lIdOperation);
                     $lStockService->set($lStock);
                     $lDetailOperation = $lDetailOperationService->get($lBon->getDopeId());
                     $lDetailOperation->setIdOperation($lIdOperation);
                     $lDetailOperation->setIdCompte($lIdCompteFerme);
                     $lDetailOperation->setMontant($lProduit["prix"]);
                     $lDetailOperation->setLibelle('Bon de Commande');
                     $lDetailOperation->setTypePaiement(5);
                     $lDetailOperationService->set($lDetailOperation);
                 }
             }
             if (!$lMaj) {
                 //$lDcom = DetailCommandeManager::selectByIdProduit($lProduit["id"]);
                 $lStock = new StockVO();
                 $lStock->setQuantite($lProduit["quantite"]);
                 $lStock->setType(3);
                 $lStock->setIdCompte($lIdCompteFerme);
                 $lStock->setIdDetailCommande($lProduit["dcomId"]);
                 $lStock->setIdOperation($lIdOperation);
                 $lStockService->set($lStock);
                 $lDetailOperation = new DetailOperationVO();
                 $lDetailOperation->setIdOperation($lIdOperation);
                 $lDetailOperation->setIdCompte($lIdCompteFerme);
                 $lDetailOperation->setMontant($lProduit["prix"]);
                 $lDetailOperation->setLibelle('Bon de Commande');
                 $lDetailOperation->setTypePaiement(5);
                 //$lDetailOperation->setTypePaiementChampComplementaire($lProduit["id"]);
                 $lDetailOperation->setIdDetailCommande($lProduit["dcomId"]);
                 $lDetailOperationService->set($lDetailOperation);
             }
         }
         foreach ($lBonCommande as $lBon) {
             $lDelete = true;
             foreach ($lProduitsValide as $lProduit) {
                 if ($lProduit["dcomId"] == $lBon->getDcomId()) {
                     $lDelete = false;
                 }
             }
             if ($lDelete) {
                 $lStockService->delete($lBon->getStoId());
                 $lDetailOperationService->delete($lBon->getDopeId());
             }
         }
     }
     return $lVr;
 }