/**
  * @name validAjoutOperation($pData)
  * @return OperationDetailVR
  * @desc Test la validite de l'élément
  */
 public static function validAjoutOperation($pData)
 {
     return OperationDetailValid::validAjout($pData, array("reel" => true, "negatif" => true));
 }
 /**
  * @name validUpdate($pData)
  * @return OperationDetailVR
  * @desc Test la validite de l'élément
  */
 public static function validUpdate($pData)
 {
     $lVr = OperationDetailValid::validDelete($pData);
     if ($lVr->getValid()) {
         return OperationDetailValid::validAjout($pData);
     }
     return $lVr;
 }
 /**
  * @name validUpdate($pData)
  * @return OperationDetailVR
  * @desc Test la validite de l'élément
  */
 public static function validUpdate($pData, $pParam = array("negatif" => false, "reel" => false))
 {
     $lVr = OperationDetailValid::validDelete($pData);
     if ($lVr->getValid()) {
         return OperationDetailValid::validAjout($pData, $pParam);
     }
     return $lVr;
 }
 /**
  * @name validEnregistrer($pData)
  * @return AchatVR
  * @desc Test la validite de l'élément
  */
 public static function validEnregistrer($pData)
 {
     $lVr = new AchatVR();
     //Tests inputs
     if (!isset($pData['operationAchat'])) {
         $lVr->setValid(false);
         $lVr->getOperationAchat()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getOperationAchat()->addErreur($lErreur);
     }
     if (!isset($pData['operationAchatSolidaire'])) {
         $lVr->setValid(false);
         $lVr->getOperationAchatSolidaire()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getOperationAchatSolidaire()->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['rechargement'])) {
         $lVr->setValid(false);
         $lVr->getRechargement()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getRechargement()->addErreur($lErreur);
     }
     if ($lVr->getValid()) {
         //Tests Techniques
         $lIdCompte = 0;
         if (!is_null($pData['operationAchat']) && !empty($pData['operationAchat'])) {
             if ($pData['operationAchat']['montant'] == 0) {
                 $lVr->setOperationAchat(OperationDetailValid::validDelete($pData['operationAchat']));
             } else {
                 $lVr->setOperationAchat(OperationDetailValid::validAjout($pData['operationAchat'], array("negatif" => true)));
                 if (!$lVr->getOperationAchat()->getValid()) {
                     $lVr->setValid(false);
                 } else {
                     if (isset($pData['operationAchat']['champComplementaire'][1]['valeur'])) {
                         $lIdCompte = $pData['operationAchat']['idCompte'];
                         // Le marche doit être ouvert
                         $lOpeAchatChampComp = $lVr->getOperationAchat()->getChampComplementaire();
                         $lInfoMarche = $lOpeAchatChampComp[1]->getData();
                         if ($lInfoMarche['marche']->getArchive() != 0) {
                             $lVr->setValid(false);
                             $lVr->getLog()->setValid(false);
                             $lErreur = new VRerreur();
                             $lErreur->setCode(MessagesErreurs::ERR_239_CODE);
                             $lErreur->setMessage(MessagesErreurs::ERR_239_MSG);
                             $lVr->getLog()->addErreur($lErreur);
                         }
                     }
                 }
             }
         }
         if (!is_null($pData['operationAchatSolidaire']) && !empty($pData['operationAchatSolidaire'])) {
             if ($pData['operationAchatSolidaire']['montant'] == 0) {
                 $lVr->setOperationAchat(OperationDetailValid::validDelete($pData['operationAchatSolidaire']));
             } else {
                 $lVr->setOperationAchatSolidaire(OperationDetailValid::validAjout($pData['operationAchatSolidaire'], array("negatif" => true)));
                 if (!$lVr->getOperationAchatSolidaire()->getValid()) {
                     $lVr->setValid(false);
                 } else {
                     if (isset($pData['operationAchatSolidaire']['champComplementaire'][1]['valeur'])) {
                         $lIdCompte = $pData['operationAchatSolidaire']['idCompte'];
                         // Le marche doit être ouvert
                         $lOpeAchatChampComp = $lVr->getOperationAchatSolidaire()->getChampComplementaire();
                         $lInfoMarche = $lOpeAchatChampComp[1]->getData();
                         if ($lInfoMarche['marche']->getArchive() != 0) {
                             $lVr->setValid(false);
                             $lVr->getLog()->setValid(false);
                             $lErreur = new VRerreur();
                             $lErreur->setCode(MessagesErreurs::ERR_239_CODE);
                             $lErreur->setMessage(MessagesErreurs::ERR_239_MSG);
                             $lVr->getLog()->addErreur($lErreur);
                         }
                     }
                 }
             }
         }
         $lTotal = 0;
         $lTotalSolidaire = 0;
         if (!is_array($pData['produits'])) {
             $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);
         } else {
             foreach ($pData['produits'] as $lIndice => $lProduit) {
                 if (!is_null($pData['produits'][$lIndice])) {
                     $lVrDetail = ProduitDetailAchatValid::validAjout($lProduit);
                     if (!$lVrDetail->getValid()) {
                         $lVr->setValid(false);
                     } else {
                         if (is_float((double) $lProduit['montant']) && !empty($lProduit['montant'])) {
                             $lTotal += $lProduit['montant'];
                         }
                         if (is_float((double) $lProduit['montantSolidaire']) && !empty($lProduit['montantSolidaire'])) {
                             $lTotalSolidaire += $lProduit['montantSolidaire'];
                         }
                     }
                     $lVr->addProduits($lVrDetail);
                 }
             }
         }
         // L'opération doit exister si il y a un total (Normal ou Solidaire)
         if ($lTotal != 0 && (is_null($pData['operationAchat']) || empty($pData['operationAchat']) || bccomp($lTotal, (double) $pData['operationAchat']["montant"]) != 0) || $lTotalSolidaire != 0 && (is_null($pData['operationAchatSolidaire']) || empty($pData['operationAchatSolidaire']) || bccomp($lTotalSolidaire, (double) $pData['operationAchatSolidaire']["montant"]) != 0)) {
             $lVr->setValid(false);
             $lVr->getLog()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_266_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_266_MSG);
             $lVr->getLog()->addErreur($lErreur);
         }
         $lRechargement = 0;
         if (!empty($pData['rechargement']['montant']) && $pData['rechargement']['montant'] != 0) {
             $lVr->setRechargement(OperationDetailValid::validAjout($pData['rechargement']));
             if (!$lVr->getRechargement()->getValid()) {
                 $lVr->setValid(false);
             } else {
                 $lRechargement = $pData['rechargement']['montant'];
             }
         } else {
             if ($lIdCompte != -3 && $lTotal + $lTotalSolidaire == 0) {
                 // Si compte adherent et pas de rechargement il faut un produit
                 $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);
             }
         }
         if ($lIdCompte == -3) {
             if ($lTotal + $lTotalSolidaire == 0) {
                 // Si compte invité il faut un produit
                 $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);
             }
             if (bcadd(bcadd($lTotal, $lTotalSolidaire, 2), $lRechargement, 2) != 0) {
                 // Compte invite reste à 0
                 $lVr->setValid(false);
                 $lVr->getLog()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_244_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_244_MSG);
                 $lVr->getLog()->addErreur($lErreur);
             }
         }
     }
     return $lVr;
 }
 /**
  * @name validUpdate($pData)
  * @return AdhesionAdherentDetailVR
  * @desc Test la validite de l'élément
  */
 public static function validUpdate($pData)
 {
     $lVr = new AdhesionAdherentDetailVR();
     //Tests inputs
     if (!isset($pData['adhesionAdherent'])) {
         $lVr->setValid(false);
         $lVr->getAdhesionAdherent()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getAdhesionAdherent()->addErreur($lErreur);
     }
     if (!isset($pData['operation'])) {
         $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 ($lVr->getValid()) {
         //Tests Fonctionnels
         if (empty($pData['adhesionAdherent'])) {
             $lVr->setValid(false);
             $lVr->getAdhesionAdherent()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getAdhesionAdherent()->addErreur($lErreur);
         } else {
             $lAdhesionAdherent = AdhesionAdherentValid::validUpdate($pData['adhesionAdherent']);
             $lVr->setAdhesionAdherent($lAdhesionAdherent);
             $lVr->setValid($lAdhesionAdherent->getValid());
         }
         if (empty($pData['operation'])) {
             $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);
         } else {
             $lOperation = OperationDetailValid::validUpdate($pData['operation']);
             $lVr->setOperation($lOperation);
             $lVr->setValid($lAdhesionAdherent->getValid());
         }
     }
     return $lVr;
 }