/**
  * @name validDelete($pData)
  * @return ReservationMarcheVR
  * @desc Test la validite de l'élément
  */
 public static function validDelete($pData)
 {
     $lVr = new ReservationMarcheVR();
     //Tests inputs
     if (!isset($pData['id_commande'])) {
         $lVr->setValid(false);
         $lVr->getLog()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getLog()->addErreur($lErreur);
     }
     if (!isset($pData['idCompte'])) {
         $lVr->setValid(false);
         $lVr->getLog()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getLog()->addErreur($lErreur);
     }
     if ($lVr->getValid()) {
         //Tests Techniques
         if (!is_int((int) $pData['id_commande'])) {
             $lVr->setValid(false);
             $lVr->getLog()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_104_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_104_MSG);
             $lVr->getLog()->addErreur($lErreur);
         }
         if (!is_int((int) $pData['idCompte'])) {
             $lVr->setValid(false);
             $lVr->getLog()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_104_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_104_MSG);
             $lVr->getLog()->addErreur($lErreur);
         }
         //Tests Fonctionnels
         if (empty($pData['id_commande'])) {
             $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 (empty($pData['idCompte'])) {
             $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);
         }
         $lCommande = CommandeManager::select($pData['id_commande']);
         // Marché : réservation non terminée
         if (!TestFonction::dateTimeEstPLusGrandeEgale($lCommande->getDateFinReservation(), StringUtils::dateTimeAujourdhuiDb())) {
             $lVr->setValid(false);
             $lVr->getLog()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_221_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_221_MSG);
             $lVr->getLog()->addErreur($lErreur);
         } else {
             $lIdReservation = new IdReservationVO();
             $lIdReservation->setIdCompte($pData['idCompte']);
             $lIdReservation->setIdCommande($pData['id_commande']);
             $lReservationService = new ReservationService();
             $lOperations = $lReservationService->selectOperationReservation($lIdReservation);
             $lOperation = $lOperations[0];
             $lIdOperation = $lOperation->getId();
             // Si il y a bien une réservation existante
             if (is_null($lIdOperation) || $lOperation->getTypePaiement() != 0) {
                 $lVr->setValid(false);
                 $lVr->getLog()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_238_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_238_MSG);
                 $lVr->getLog()->addErreur($lErreur);
             }
         }
     }
     return $lVr;
 }
 /**
  * @name validUpdate($pData)
  * @return CommandeCompleteVR
  * @desc Test la validite de l'élément
  */
 public static function validUpdate($pData)
 {
     $lTestId = CommandeCompleteValid::validDelete($pData);
     if ($lTestId->getValid()) {
         $lVr = new CommandeCompleteVR();
         //Tests inputs
         if (!isset($pData['numero'])) {
             $lVr->setValid(false);
             $lVr->getNumero()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getNumero()->addErreur($lErreur);
         }
         if (!isset($pData['nom'])) {
             $lVr->setValid(false);
             $lVr->getNom()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getNom()->addErreur($lErreur);
         }
         if (!isset($pData['dateMarcheDebut'])) {
             $lVr->setValid(false);
             $lVr->getDateMarcheDebut()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getDateMarcheDebut()->addErreur($lErreur);
         }
         if (!isset($pData['timeMarcheDebut'])) {
             $lVr->setValid(false);
             $lVr->getTimeMarcheDebut()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getTimeMarcheDebut()->addErreur($lErreur);
         }
         if (!isset($pData['dateMarcheFin'])) {
             $lVr->setValid(false);
             $lVr->getDateMarcheFin()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getDateMarcheFin()->addErreur($lErreur);
         }
         if (!isset($pData['timeMarcheFin'])) {
             $lVr->setValid(false);
             $lVr->getTimeMarcheFin()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getTimeMarcheFin()->addErreur($lErreur);
         }
         if (!isset($pData['dateDebutReservation'])) {
             $lVr->setValid(false);
             $lVr->getDateDebutReservation()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getDateDebutReservation()->addErreur($lErreur);
         }
         if (!isset($pData['timeDebutReservation'])) {
             $lVr->setValid(false);
             $lVr->getTimeDebutReservation()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getTimeDebutReservation()->addErreur($lErreur);
         }
         if (!isset($pData['dateFinReservation'])) {
             $lVr->setValid(false);
             $lVr->getDateFinReservation()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getDateFinReservation()->addErreur($lErreur);
         }
         if (!isset($pData['timeFinReservation'])) {
             $lVr->setValid(false);
             $lVr->getTimeFinReservation()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getTimeFinReservation()->addErreur($lErreur);
         }
         if (!isset($pData['archive'])) {
             $lVr->setValid(false);
             $lVr->getArchive()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getArchive()->addErreur($lErreur);
         }
         if (!isset($pData['produits'])) {
             $lVr->setValid(false);
             $lVr->getLog()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getLog()->addErreur($lErreur);
         }
         if (!isset($pData['description'])) {
             $lVr->setValid(false);
             $lVr->getDescription()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getDescription()->addErreur($lErreur);
         }
         if ($lVr->getValid()) {
             //Tests Techniques
             if (!TestFonction::checkLength($pData['numero'], 0, 11)) {
                 $lVr->setValid(false);
                 $lVr->getNumero()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
                 $lVr->getNumero()->addErreur($lErreur);
             }
             if (!is_int((int) $pData['numero'])) {
                 $lVr->setValid(false);
                 $lVr->getNumero()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_108_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_108_MSG);
                 $lVr->getNumero()->addErreur($lErreur);
             }
             if (!TestFonction::checkLength($pData['nom'], 0, 100)) {
                 $lVr->setValid(false);
                 $lVr->getNom()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
                 $lVr->getNom()->addErreur($lErreur);
             }
             if (!TestFonction::checkDate($pData['dateMarcheDebut'], 'db')) {
                 $lVr->setValid(false);
                 $lVr->getDateMarcheDebut()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_103_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_103_MSG);
                 $lVr->getDateMarcheDebut()->addErreur($lErreur);
             }
             if (!TestFonction::checkDateExist($pData['dateMarcheDebut'], 'db')) {
                 $lVr->setValid(false);
                 $lVr->getDateMarcheDebut()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_105_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_105_MSG);
                 $lVr->getDateMarcheDebut()->addErreur($lErreur);
             }
             if (!TestFonction::checkTime($pData['timeMarcheDebut'])) {
                 $lVr->setValid(false);
                 $lVr->getTimeMarcheDebut()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_106_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_106_MSG);
                 $lVr->getTimeMarcheDebut()->addErreur($lErreur);
             }
             if (!TestFonction::checkTimeExist($pData['timeMarcheDebut'])) {
                 $lVr->setValid(false);
                 $lVr->getTimeMarcheDebut()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_107_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_107_MSG);
                 $lVr->getTimeMarcheDebut()->addErreur($lErreur);
             }
             if (!TestFonction::checkDate($pData['dateMarcheFin'], 'db')) {
                 $lVr->setValid(false);
                 $lVr->getDateMarcheFin()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_103_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_103_MSG);
                 $lVr->getDateMarcheFin()->addErreur($lErreur);
             }
             if (!TestFonction::checkDateExist($pData['dateMarcheFin'], 'db')) {
                 $lVr->setValid(false);
                 $lVr->getDateMarcheFin()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_105_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_105_MSG);
                 $lVr->getDateMarcheFin()->addErreur($lErreur);
             }
             if (!TestFonction::checkTime($pData['timeMarcheFin'])) {
                 $lVr->setValid(false);
                 $lVr->getTimeMarcheFin()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_106_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_106_MSG);
                 $lVr->getTimeMarcheFin()->addErreur($lErreur);
             }
             if (!TestFonction::checkTimeExist($pData['timeMarcheFin'])) {
                 $lVr->setValid(false);
                 $lVr->getTimeMarcheFin()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_107_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_107_MSG);
                 $lVr->getTimeMarcheFin()->addErreur($lErreur);
             }
             if (!TestFonction::checkDate($pData['dateDebutReservation'], 'db')) {
                 $lVr->setValid(false);
                 $lVr->getDateDebutReservation()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_103_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_103_MSG);
                 $lVr->getDateDebutReservation()->addErreur($lErreur);
             }
             if (!TestFonction::checkDateExist($pData['dateDebutReservation'], 'db')) {
                 $lVr->setValid(false);
                 $lVr->getDateDebutReservation()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_105_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_105_MSG);
                 $lVr->getDateDebutReservation()->addErreur($lErreur);
             }
             if (!TestFonction::checkTime($pData['timeDebutReservation'])) {
                 $lVr->setValid(false);
                 $lVr->getTimeDebutReservation()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_106_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_106_MSG);
                 $lVr->getTimeDebutReservation()->addErreur($lErreur);
             }
             if (!TestFonction::checkTimeExist($pData['timeDebutReservation'])) {
                 $lVr->setValid(false);
                 $lVr->getTimeDebutReservation()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_107_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_107_MSG);
                 $lVr->getTimeDebutReservation()->addErreur($lErreur);
             }
             if (!TestFonction::checkDate($pData['dateFinReservation'], 'db')) {
                 $lVr->setValid(false);
                 $lVr->getDateFinReservation()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_103_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_103_MSG);
                 $lVr->getDateFinReservation()->addErreur($lErreur);
             }
             if (!TestFonction::checkDateExist($pData['dateFinReservation'], 'db')) {
                 $lVr->setValid(false);
                 $lVr->getDateFinReservation()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_105_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_105_MSG);
                 $lVr->getDateFinReservation()->addErreur($lErreur);
             }
             if (!TestFonction::checkTime($pData['timeFinReservation'])) {
                 $lVr->setValid(false);
                 $lVr->getTimeFinReservation()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_106_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_106_MSG);
                 $lVr->getTimeFinReservation()->addErreur($lErreur);
             }
             if (!TestFonction::checkTimeExist($pData['timeFinReservation'])) {
                 $lVr->setValid(false);
                 $lVr->getTimeFinReservation()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_107_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_107_MSG);
                 $lVr->getTimeFinReservation()->addErreur($lErreur);
             }
             if (!TestFonction::checkLength($pData['archive'], 0, 1)) {
                 $lVr->setValid(false);
                 $lVr->getArchive()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
                 $lVr->getArchive()->addErreur($lErreur);
             }
             if (!is_array($pData['produits'])) {
                 $lVr->setValid(false);
                 $lVr->getLog()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_111_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_111_MSG);
                 $lVr->getLog()->addErreur($lErreur);
             }
             //Tests Fonctionnels
             if (empty($pData['numero'])) {
                 $lVr->setValid(false);
                 $lVr->getNumero()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
                 $lVr->getNumero()->addErreur($lErreur);
             }
             if (empty($pData['dateMarcheDebut'])) {
                 $lVr->setValid(false);
                 $lVr->getDateMarcheDebut()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
                 $lVr->getDateMarcheDebut()->addErreur($lErreur);
             }
             if (empty($pData['timeMarcheDebut'])) {
                 $lVr->setValid(false);
                 $lVr->getTimeMarcheDebut()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
                 $lVr->getTimeMarcheDebut()->addErreur($lErreur);
             }
             if (empty($pData['dateMarcheFin'])) {
                 $lVr->setValid(false);
                 $lVr->getDateMarcheFin()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
                 $lVr->getDateMarcheFin()->addErreur($lErreur);
             }
             if (empty($pData['timeMarcheFin'])) {
                 $lVr->setValid(false);
                 $lVr->getTimeMarcheFin()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
                 $lVr->getTimeMarcheFin()->addErreur($lErreur);
             }
             if (empty($pData['dateDebutReservation'])) {
                 $lVr->setValid(false);
                 $lVr->getDateDebutReservation()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
                 $lVr->getDateDebutReservation()->addErreur($lErreur);
             }
             if (empty($pData['timeDebutReservation'])) {
                 $lVr->setValid(false);
                 $lVr->getTimeDebutReservation()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
                 $lVr->getTimeDebutReservation()->addErreur($lErreur);
             }
             if (empty($pData['dateFinReservation'])) {
                 $lVr->setValid(false);
                 $lVr->getDateFinReservation()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
                 $lVr->getDateFinReservation()->addErreur($lErreur);
             }
             if (empty($pData['timeFinReservation'])) {
                 $lVr->setValid(false);
                 $lVr->getTimeFinReservation()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
                 $lVr->getTimeFinReservation()->addErreur($lErreur);
             }
             if (empty($pData['archive']) && intval($pData['archive']) != 0) {
                 $lVr->setValid(false);
                 $lVr->getArchive()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
                 $lVr->getArchive()->addErreur($lErreur);
             }
             if (empty($pData['produits'])) {
                 $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 (!TestFonction::dateTimeEstPLusGrandeEgale($pData['dateFinReservation'] . " " . $pData['timeFinReservation'], $pData['dateDebutReservation'] . " " . $pData['timeDebutReservation'], "db")) {
                 if (!TestFonction::dateEstPLusGrandeEgale($pData['dateFinReservation'], $pData['dateDebutReservation'], "db")) {
                     $lVr->setValid(false);
                     $lVr->getDateDebutReservation()->setValid(false);
                     $lVr->getDateFinReservation()->setValid(false);
                     $lErreur = new VRerreur();
                     $lErreur->setCode(MessagesErreurs::ERR_247_CODE);
                     $lErreur->setMessage(MessagesErreurs::ERR_247_MSG);
                     $lVr->getDateDebutReservation()->addErreur($lErreur);
                     $lVr->getDateFinReservation()->addErreur($lErreur);
                 } else {
                     if (TestFonction::timeEstPLusGrandeEgale($pData['timeDebutReservation'], $pData['timeFinReservation'])) {
                         $lVr->setValid(false);
                         $lVr->getTimeDebutReservation()->setValid(false);
                         $lVr->getTimeFinReservation()->setValid(false);
                         $lErreur = new VRerreur();
                         $lErreur->setCode(MessagesErreurs::ERR_248_CODE);
                         $lErreur->setMessage(MessagesErreurs::ERR_248_MSG);
                         $lVr->getTimeDebutReservation()->addErreur($lErreur);
                         $lVr->getTimeFinReservation()->addErreur($lErreur);
                     }
                 }
             }
             if (!TestFonction::dateTimeEstPLusGrandeEgale($pData['dateMarcheDebut'] . " " . $pData['timeMarcheDebut'], $pData['dateFinReservation'] . " " . $pData['timeFinReservation'], "db")) {
                 if (!TestFonction::dateEstPLusGrandeEgale($pData['dateMarcheDebut'], $pData['dateFinReservation'], "db")) {
                     $lVr->setValid(false);
                     $lVr->getDateMarcheDebut()->setValid(false);
                     $lVr->getDateFinReservation()->setValid(false);
                     $lErreur = new VRerreur();
                     $lErreur->setCode(MessagesErreurs::ERR_202_CODE);
                     $lErreur->setMessage(MessagesErreurs::ERR_202_MSG);
                     $lVr->getDateMarcheDebut()->addErreur($lErreur);
                     $lVr->getDateFinReservation()->addErreur($lErreur);
                 } else {
                     if (TestFonction::timeEstPLusGrandeEgale($pData['timeFinReservation'], $pData['timeMarcheDebut'])) {
                         $lVr->setValid(false);
                         $lVr->getTimeMarcheDebut()->setValid(false);
                         $lVr->getTimeFinReservation()->setValid(false);
                         $lErreur = new VRerreur();
                         $lErreur->setCode(MessagesErreurs::ERR_203_CODE);
                         $lErreur->setMessage(MessagesErreurs::ERR_203_MSG);
                         $lVr->getTimeMarcheDebut()->addErreur($lErreur);
                         $lVr->getTimeFinReservation()->addErreur($lErreur);
                     }
                 }
             }
             if (TestFonction::dateTimeEstPLusGrandeEgale($pData['dateMarcheDebut'] . " " . $pData['timeMarcheDebut'], $pData['dateMarcheFin'] . " " . $pData['timeMarcheFin'], "db")) {
                 if (TestFonction::timeEstPLusGrandeEgale($pData['timeMarcheDebut'], $pData['timeMarcheFin'])) {
                     $lVr->setValid(false);
                     $lVr->getTimeMarcheDebut()->setValid(false);
                     $lVr->getTimeMarcheFin()->setValid(false);
                     $lErreur = new VRerreur();
                     $lErreur->setCode(MessagesErreurs::ERR_204_CODE);
                     $lErreur->setMessage(MessagesErreurs::ERR_204_MSG);
                     $lVr->getTimeMarcheDebut()->addErreur($lErreur);
                     $lVr->getTimeMarcheFin()->addErreur($lErreur);
                 } else {
                     if (TestFonction::dateEstPLusGrandeEgale($pData['dateMarcheDebut'], $pData['dateMarcheFin'], "db")) {
                         $lVr->setValid(false);
                         $lVr->getDateMarcheDebut()->setValid(false);
                         $lVr->getDateMarcheFin()->setValid(false);
                         $lErreur = new VRerreur();
                         $lErreur->setCode(MessagesErreurs::ERR_208_CODE);
                         $lErreur->setMessage(MessagesErreurs::ERR_208_MSG);
                         $lVr->getDateMarcheDebut()->addErreur($lErreur);
                         $lVr->getDateMarcheFin()->addErreur($lErreur);
                     }
                 }
             }
             if (is_array($pData['produits'])) {
                 $lValidProduit = new ProduitCommandeValid();
                 $i = 0;
                 while (isset($pData['produits'][$i])) {
                     $lVrProduit = $lValidProduit->validAjout($pData['produits'][$i]);
                     if (!$lVrProduit->getValid()) {
                         $lVr->setValid(false);
                     }
                     $lVr->addProduits($lVrProduit);
                     $i++;
                 }
             }
             // Test si la commande existe
             $lCommande = CommandeManager::select($pData['id']);
             if ($lCommande->getId() != $pData['id']) {
                 $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;
     }
     return $lTestId;
 }
 /**
  * @name ajoutReservation($pIdCompte,$pIdMarche)
  * @param integer
  * @param integer
  * @return bool
  * @desc Positionne les réservations pour les abonnements du compte sur le maché
  */
 public function ajoutReservation($pIdCompte, $pIdMarche)
 {
     $lProduits = $this->getProduitsAbonne($pIdCompte);
     $lMarcheService = new MarcheService();
     $lMarche = $lMarcheService->get($pIdMarche);
     $lReservationAbonnement = array("idCompte" => $pIdCompte, "produits" => array());
     foreach ($lMarche->getProduits() as $lNouveauProduit) {
         // Ajout des réservations pour abonnement
         if ($lNouveauProduit->getType() == 2) {
             $lIdNomProduit = $lNouveauProduit->getIdNom();
             foreach ($lProduits as $lProduit) {
                 if ($lIdNomProduit == $lProduit->getNproId()) {
                     // Pas de suspension de l'abonnement et stock dispo pour positionner cette réservation (ou pas de limite de stock)
                     if (!(TestFonction::dateTimeEstPLusGrandeEgale($lMarche->getDateMarcheDebut(), $lProduit->getCptAboDateDebutSuspension(), 'db') && TestFonction::dateTimeEstPLusGrandeEgale($lProduit->getCptAboDateFinSuspension(), $lMarche->getDateMarcheDebut(), 'db')) && !(TestFonction::dateTimeEstPLusGrandeEgale($lMarche->getDateMarcheFin(), $lProduit->getCptAboDateDebutSuspension(), 'db') && TestFonction::dateTimeEstPLusGrandeEgale($lProduit->getCptAboDateFinSuspension(), $lMarche->getDateMarcheFin(), 'db')) && ($lNouveauProduit->getStockReservation() >= $lProduit->getCptAboQuantite() || $lNouveauProduit->getStockInitial() == -1)) {
                         foreach ($lNouveauProduit->getLots() as $lLot) {
                             $lDcomId = $lLot->getId();
                         }
                         $lReservationAbonnement["produits"][$lIdNomProduit] = array("id" => $lIdNomProduit, "idLot" => $lDcomId, "quantite" => $lProduit->getCptAboQuantite());
                     }
                 }
             }
         }
     }
     // Positionnement des réservations
     $lReservationService = new ReservationService();
     $lReservationVO = new ReservationVO();
     $lReservationVO->getId()->setIdCompte($pIdCompte);
     $lReservationVO->getId()->setIdCommande($pIdMarche);
     $lEnregistrer = false;
     foreach ($lReservationAbonnement["produits"] as $lDetail) {
         $lDetailCommande = DetailCommandeManager::select($lDetail["idLot"]);
         $lPrix = $lDetail["quantite"] / $lDetailCommande->getTaille() * $lDetailCommande->getPrix();
         $lDetailReservation = new DetailReservationVO();
         $lDetailReservation->setIdDetailCommande($lDetail["idLot"]);
         $lDetailReservation->setQuantite($lDetail["quantite"] * -1);
         $lDetailReservation->setMontant($lPrix * -1);
         $lReservationVO->addDetailReservation($lDetailReservation);
         $lEnregistrer = true;
     }
     if ($lEnregistrer) {
         $lReservationService->set($lReservationVO);
     }
 }
                 $lData["categories"][$lProduit->getIdCategorie()] = array("nom" => $lProduit->getCproNom(), "produits" => array());
             }
             array_push($lData["categories"][$lProduit->getIdCategorie()]["produits"], $lPdt);
         }
     }
 }
 foreach ($lData["categories"] as $lCategorie) {
     $lTemplate->assign_block_vars('categories', array('nom' => $lCategorie["nom"]));
     foreach ($lCategorie["produits"] as $lProduit) {
         $lTemplate->assign_block_vars('categories.produits', $lProduit);
     }
 }
 $lSolde = $lPage->getAdherent()->getCptSolde();
 $lSoldeNv = $lSolde - $lTotal;
 $lTemplate->assign_vars(array('idMarche' => $_GET["id_marche"], 'sigleMonetaire' => SIGLE_MONETAIRE, 'solde' => StringUtils::affichageMonetaireFr($lSolde), 'soldeNv' => StringUtils::affichageMonetaireFr($lSoldeNv), 'comNumero' => $lPage->getMarche()->getNumero(), 'total' => StringUtils::affichageMonetaireFr($lTotal), 'dateFinReservation' => StringUtils::extractDate($lPage->getMarche()->getDateFinReservation()), 'heureFinReservation' => StringUtils::extractDbHeure($lPage->getMarche()->getDateFinReservation()), 'minuteFinReservation' => StringUtils::extractDbMinute($lPage->getMarche()->getDateFinReservation()), 'dateMarcheDebut' => StringUtils::extractDate($lPage->getMarche()->getDateMarcheDebut()), 'heureMarcheDebut' => StringUtils::extractDbHeure($lPage->getMarche()->getDateMarcheDebut()), 'minuteMarcheDebut' => StringUtils::extractDbMinute($lPage->getMarche()->getDateMarcheDebut()), 'heureMarcheFin' => StringUtils::extractDbHeure($lPage->getMarche()->getDateMarcheFin()), 'minuteMarcheFin' => StringUtils::extractDbMinute($lPage->getMarche()->getDateMarcheFin())));
 if (TestFonction::dateTimeEstPLusGrandeEgale($lPage->getMarche()->getDateFinReservation(), StringUtils::dateTimeAujourdhuiDb())) {
     $lTemplate->set_filenames(array('boutonValiderReservation' => MOD_COMMANDE . '/' . 'BoutonValiderNvReservation.html'));
     $lTemplate->assign_var_from_handle('GESTION_RESERVATION', 'boutonValiderReservation');
 }
 // Pied de Page
 $lTemplate->set_filenames(array('piedPage' => COMMUN_TEMPLATE . 'PiedPage.html'));
 $lTemplate->assign_vars(array('PROP_NOM' => PROP_NOM, 'PROP_ADRESSE' => PROP_ADRESSE, 'PROP_CODE_POSTAL' => PROP_CODE_POSTAL, 'PROP_VILLE' => PROP_VILLE, 'PROP_TEL' => PROP_TEL, 'PROP_MEL' => PROP_MEL, 'ZEYBUX_TITRE_SITE' => ZEYBUX_TITRE_SITE));
 $lTemplate->assign_var_from_handle('PIED_PAGE', 'piedPage');
 $lTemplate->set_filenames(array('page' => 'Page.html'));
 $lTemplate->assign_var_from_handle('CONTENU', 'body');
 // Stock les infos pour une modification
 foreach ($_POST['id-produit'] as $lIdProduit) {
     if (isset($_POST['produit-' . $lIdProduit . '-lot']) && isset($_POST['produit-' . $lIdProduit . '-quantite'])) {
         $lParamRetour["detailReservation"][$lIdProduit] = array("id" => "", "stoIdDetailCommande" => $_POST['produit-' . $lIdProduit . '-lot'], "stoQuantite" => StringUtils::decimalFrToDb($_POST['produit-' . $lIdProduit . '-quantite']) * -1, "idProduit" => $lIdProduit);
     }
 }
 /**
  * @name validUpdateInformation($pData)
  * @return ModifierMarcheVR
  * @desc Test la validite de l'élément
  */
 public static function validUpdateInformation($pData)
 {
     $lVr = new ModifierMarcheVR();
     //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['dateMarcheDebut'])) {
         $lVr->setValid(false);
         $lVr->getDateMarcheDebut()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getDateMarcheDebut()->addErreur($lErreur);
     }
     if (!isset($pData['timeMarcheDebut'])) {
         $lVr->setValid(false);
         $lVr->getTimeMarcheDebut()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getTimeMarcheDebut()->addErreur($lErreur);
     }
     if (!isset($pData['dateMarcheFin'])) {
         $lVr->setValid(false);
         $lVr->getDateMarcheFin()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getDateMarcheFin()->addErreur($lErreur);
     }
     if (!isset($pData['timeMarcheFin'])) {
         $lVr->setValid(false);
         $lVr->getTimeMarcheFin()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getTimeMarcheFin()->addErreur($lErreur);
     }
     if (!isset($pData['dateFinReservation'])) {
         $lVr->setValid(false);
         $lVr->getDateFinReservation()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getDateFinReservation()->addErreur($lErreur);
     }
     if (!isset($pData['timeFinReservation'])) {
         $lVr->setValid(false);
         $lVr->getTimeFinReservation()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getTimeFinReservation()->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['nom'], 0, 100)) {
             $lVr->setValid(false);
             $lVr->getNom()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_101_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_101_MSG);
             $lVr->getNom()->addErreur($lErreur);
         }
         if (!TestFonction::checkDate($pData['dateMarcheDebut'], 'db')) {
             $lVr->setValid(false);
             $lVr->getDateMarcheDebut()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_103_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_103_MSG);
             $lVr->getDateMarcheDebut()->addErreur($lErreur);
         }
         if (!TestFonction::checkDateExist($pData['dateMarcheDebut'], 'db')) {
             $lVr->setValid(false);
             $lVr->getDateMarcheDebut()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_105_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_105_MSG);
             $lVr->getDateMarcheDebut()->addErreur($lErreur);
         }
         if (!TestFonction::checkTime($pData['timeMarcheDebut'])) {
             $lVr->setValid(false);
             $lVr->getTimeMarcheDebut()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_106_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_106_MSG);
             $lVr->getTimeMarcheDebut()->addErreur($lErreur);
         }
         if (!TestFonction::checkTimeExist($pData['timeMarcheDebut'])) {
             $lVr->setValid(false);
             $lVr->getTimeMarcheDebut()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_107_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_107_MSG);
             $lVr->getTimeMarcheDebut()->addErreur($lErreur);
         }
         if (!TestFonction::checkDate($pData['dateMarcheFin'], 'db')) {
             $lVr->setValid(false);
             $lVr->getDateMarcheFin()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_103_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_103_MSG);
             $lVr->getDateMarcheFin()->addErreur($lErreur);
         }
         if (!TestFonction::checkDateExist($pData['dateMarcheFin'], 'db')) {
             $lVr->setValid(false);
             $lVr->getDateMarcheFin()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_105_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_105_MSG);
             $lVr->getDateMarcheFin()->addErreur($lErreur);
         }
         if (!TestFonction::checkTime($pData['timeMarcheFin'])) {
             $lVr->setValid(false);
             $lVr->getTimeMarcheFin()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_106_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_106_MSG);
             $lVr->getTimeMarcheFin()->addErreur($lErreur);
         }
         if (!TestFonction::checkTimeExist($pData['timeMarcheFin'])) {
             $lVr->setValid(false);
             $lVr->getTimeMarcheFin()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_107_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_107_MSG);
             $lVr->getTimeMarcheFin()->addErreur($lErreur);
         }
         if (!TestFonction::checkDate($pData['dateFinReservation'], 'db')) {
             $lVr->setValid(false);
             $lVr->getDateFinReservation()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_103_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_103_MSG);
             $lVr->getDateFinReservation()->addErreur($lErreur);
         }
         if (!TestFonction::checkDateExist($pData['dateFinReservation'], 'db')) {
             $lVr->setValid(false);
             $lVr->getDateFinReservation()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_105_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_105_MSG);
             $lVr->getDateFinReservation()->addErreur($lErreur);
         }
         if (!TestFonction::checkTime($pData['timeFinReservation'])) {
             $lVr->setValid(false);
             $lVr->getTimeFinReservation()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_106_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_106_MSG);
             $lVr->getTimeFinReservation()->addErreur($lErreur);
         }
         if (!TestFonction::checkTimeExist($pData['timeFinReservation'])) {
             $lVr->setValid(false);
             $lVr->getTimeFinReservation()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_107_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_107_MSG);
             $lVr->getTimeFinReservation()->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['dateMarcheDebut'])) {
             $lVr->setValid(false);
             $lVr->getDateMarcheDebut()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getDateMarcheDebut()->addErreur($lErreur);
         }
         if (empty($pData['timeMarcheDebut'])) {
             $lVr->setValid(false);
             $lVr->getTimeMarcheDebut()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getTimeMarcheDebut()->addErreur($lErreur);
         }
         if (empty($pData['dateMarcheFin'])) {
             $lVr->setValid(false);
             $lVr->getDateMarcheFin()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getDateMarcheFin()->addErreur($lErreur);
         }
         if (empty($pData['timeMarcheFin'])) {
             $lVr->setValid(false);
             $lVr->getTimeMarcheFin()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getTimeMarcheFin()->addErreur($lErreur);
         }
         if (empty($pData['dateFinReservation'])) {
             $lVr->setValid(false);
             $lVr->getDateFinReservation()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getDateFinReservation()->addErreur($lErreur);
         }
         if (empty($pData['timeFinReservation'])) {
             $lVr->setValid(false);
             $lVr->getTimeFinReservation()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
             $lVr->getTimeFinReservation()->addErreur($lErreur);
         }
         if (!TestFonction::dateTimeEstPLusGrandeEgale($pData['dateMarcheDebut'] . " " . $pData['timeMarcheDebut'], $pData['dateFinReservation'] . " " . $pData['timeFinReservation'], "db")) {
             if (!TestFonction::dateEstPLusGrandeEgale($pData['dateMarcheDebut'], $pData['dateFinReservation'], "db")) {
                 $lVr->setValid(false);
                 $lVr->getDateMarcheDebut()->setValid(false);
                 $lVr->getDateFinReservation()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_202_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_202_MSG);
                 $lVr->getDateMarcheDebut()->addErreur($lErreur);
                 $lVr->getDateFinReservation()->addErreur($lErreur);
             } else {
                 if (TestFonction::timeEstPLusGrandeEgale($pData['timeFinReservation'], $pData['timeMarcheDebut'])) {
                     $lVr->setValid(false);
                     $lVr->getTimeMarcheDebut()->setValid(false);
                     $lVr->getTimeFinReservation()->setValid(false);
                     $lErreur = new VRerreur();
                     $lErreur->setCode(MessagesErreurs::ERR_203_CODE);
                     $lErreur->setMessage(MessagesErreurs::ERR_203_MSG);
                     $lVr->getTimeMarcheDebut()->addErreur($lErreur);
                     $lVr->getTimeFinReservation()->addErreur($lErreur);
                 }
             }
         }
         if (TestFonction::dateTimeEstPLusGrandeEgale($pData['dateMarcheDebut'] . " " . $pData['timeMarcheDebut'], $pData['dateMarcheFin'] . " " . $pData['timeMarcheFin'], "db")) {
             if (TestFonction::timeEstPLusGrandeEgale($pData['timeMarcheDebut'], $pData['timeMarcheFin'])) {
                 $lVr->setValid(false);
                 $lVr->getTimeMarcheDebut()->setValid(false);
                 $lVr->getTimeMarcheFin()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_204_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_204_MSG);
                 $lVr->getTimeMarcheDebut()->addErreur($lErreur);
                 $lVr->getTimeMarcheFin()->addErreur($lErreur);
             } else {
                 if (TestFonction::dateEstPLusGrandeEgale($pData['dateMarcheDebut'], $pData['dateMarcheFin'], "db")) {
                     $lVr->setValid(false);
                     $lVr->getDateMarcheDebut()->setValid(false);
                     $lVr->getDateMarcheFin()->setValid(false);
                     $lErreur = new VRerreur();
                     $lErreur->setCode(MessagesErreurs::ERR_208_CODE);
                     $lErreur->setMessage(MessagesErreurs::ERR_208_MSG);
                     $lVr->getDateMarcheDebut()->addErreur($lErreur);
                     $lVr->getDateMarcheFin()->addErreur($lErreur);
                 }
             }
         }
         // Test si la commande existe
         $lCommande = CommandeManager::select($pData['id']);
         if ($lCommande->getId() != $pData['id']) {
             $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;
     }
     return $lTestId;
 }
 /**
  * @name ajoutProduit($pProduit)
  * @param ProduitMarcheVO
  * @desc Ajoute une produit au marche
  */
 public function ajoutProduit($pProduit)
 {
     $lComptes = CompteNomProduitViewManager::select($pProduit->getIdNom());
     $lComptes = $lComptes[0];
     $lIdCompteFerme = $lComptes->getFerIdCompte();
     // Insertion du produit
     $lProduit = new ProduitVO();
     $lProduit->setIdCommande($pProduit->getId());
     $lProduit->setIdNomProduit($pProduit->getIdNom());
     $lProduit->setUniteMesure($pProduit->getUnite());
     if ($pProduit->getQteMaxCommande() == "" || $pProduit->getQteMaxCommande() == -1) {
         $lProduit->setMaxProduitCommande(-1);
     } else {
         $lProduit->setMaxProduitCommande($pProduit->getQteMaxCommande());
     }
     $lProduit->setIdCompteFerme($lIdCompteFerme);
     if ($pProduit->getQteRestante() == "" || $pProduit->getQteRestante() == -1) {
         $lProduit->setStockReservation(0);
         $lProduit->setStockInitial(-1);
     } else {
         $lProduit->setStockReservation($pProduit->getQteRestante());
         $lProduit->setStockInitial($pProduit->getQteRestante());
     }
     $lProduit->setType($pProduit->getType());
     $lIdProduit = ProduitManager::insert($lProduit);
     //Insertion des lots
     $lCorrespondanceLotAbonnement = array();
     foreach ($pProduit->getLots() as $lNouveauLot) {
         $lDetailCommande = new DetailCommandeVO();
         $lDetailCommande->setIdProduit($lIdProduit);
         $lDetailCommande->setTaille($lNouveauLot->getTaille());
         $lDetailCommande->setPrix($lNouveauLot->getPrix());
         $lDcomId = DetailCommandeManager::insert($lDetailCommande);
         $lCorrespondanceLotAbonnement[$lNouveauLot->getId()] = $lDcomId;
     }
     $lStockService = new StockService();
     //Insertion du stock -> Met à jour le stock reservation dans le produit
     $lStock = new StockVO();
     if ($pProduit->getQteRestante() == "" || $pProduit->getQteRestante() == -1) {
         $lStock->setQuantite(0);
     } else {
         $lStock->setQuantite($pProduit->getQteRestante());
     }
     $lStock->setType(0);
     $lStock->setIdCompte($lIdCompteFerme);
     $lStock->setIdDetailCommande($lDcomId);
     //$lStock->setIdOperation(0);
     $lStockService->set($lStock);
     // Ajout des réservations pour abonnement
     if ($lProduit->getType() == 2) {
         $lIdMarche = $lProduit->getIdCommande();
         $lMarche = $this->getInfoMarche($lIdMarche);
         $lAbonnementService = new AbonnementService();
         $lReservationService = new ReservationService();
         $lIdNomProduit = $lProduit->getIdNomProduit();
         $lAbonnes = $lAbonnementService->getAbonnesByIdNomProduit($lIdNomProduit);
         if (!is_null($lAbonnes[0]->getCptAboIdProduitAbonnement())) {
             // Si il y a des abonnés
             foreach ($lAbonnes as $lAbonne) {
                 // Pas de suspension de l'abonnement
                 if (!(TestFonction::dateTimeEstPLusGrandeEgale($lMarche->getDateMarcheDebut(), $lAbonne->getCptAboDateDebutSuspension(), 'db') && TestFonction::dateTimeEstPLusGrandeEgale($lAbonne->getCptAboDateFinSuspension(), $lMarche->getDateMarcheDebut(), 'db')) && !(TestFonction::dateTimeEstPLusGrandeEgale($lMarche->getDateMarcheFin(), $lAbonne->getCptAboDateDebutSuspension(), 'db') && TestFonction::dateTimeEstPLusGrandeEgale($lAbonne->getCptAboDateFinSuspension(), $lMarche->getDateMarcheFin(), 'db'))) {
                     $lIdCompte = $lAbonne->getCptAboIdCompte();
                     $lIdReservationVO = new IdReservationVO();
                     $lIdReservationVO->setIdCompte($lIdCompte);
                     $lIdReservationVO->setIdCommande($lIdMarche);
                     $lReservationVO = new ReservationVO();
                     $lReservationVO->setId($lIdReservationVO);
                     if ($lReservationService->enCours($lIdReservationVO)) {
                         $lReservationVO = $lReservationService->get($lIdReservationVO);
                     }
                     $lDetailCommande = DetailCommandeManager::select($lCorrespondanceLotAbonnement[$lAbonne->getCptAboIdLotAbonnement()]);
                     $lPrix = $lAbonne->getCptAboQuantite() / $lDetailCommande->getTaille() * $lDetailCommande->getPrix();
                     $lDetailReservation = new DetailReservationVO();
                     $lDetailReservation->setIdDetailCommande($lCorrespondanceLotAbonnement[$lAbonne->getCptAboIdLotAbonnement()]);
                     $lDetailReservation->setQuantite($lAbonne->getCptAboQuantite() * -1);
                     $lDetailReservation->setMontant($lPrix * -1);
                     $lReservationVO->addDetailReservation($lDetailReservation);
                     $lReservationService->set($lReservationVO);
                 }
             }
         }
     }
     return $lIdProduit;
 }
 /**
  * @name validUpdate($pData)
  * @return CommandeReservationVR
  * @desc Test la validite de l'élément
  */
 public static function validUpdate($pData)
 {
     $lVr = new CommandeReservationVR();
     //Tests inputs
     if (!isset($pData['detailReservation'])) {
         $lVr->setValid(false);
         $lVr->getLog()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getLog()->addErreur($lErreur);
     }
     if (!isset($pData['idCompte'])) {
         $lVr->setValid(false);
         $lVr->getLog()->setValid(false);
         $lErreur = new VRerreur();
         $lErreur->setCode(MessagesErreurs::ERR_201_CODE);
         $lErreur->setMessage(MessagesErreurs::ERR_201_MSG);
         $lVr->getLog()->addErreur($lErreur);
     }
     if ($lVr->getValid()) {
         //Tests Techniques
         if (!is_array($pData['detailReservation'])) {
             $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_int((int) $pData['idCompte'])) {
             $lVr->setValid(false);
             $lVr->getLog()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_104_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_104_MSG);
             $lVr->getLog()->addErreur($lErreur);
         }
         //Tests Fonctionnels
         if (empty($pData['detailReservation'])) {
             $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 (empty($pData['idCompte'])) {
             $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 (isset($pData["detailReservation"][0]["stoIdDetailCommande"])) {
             $lIdLot = $pData["detailReservation"][0]["stoIdDetailCommande"];
             $lDetailMarche = DetailMarcheViewManager::selectByLot($lIdLot);
             // Marché : réservation non terminée
             if (!TestFonction::dateTimeEstPLusGrandeEgale($lDetailMarche[0]->getComDateFinReservation(), StringUtils::dateTimeAujourdhuiDb())) {
                 $lVr->setValid(false);
                 $lVr->getLog()->setValid(false);
                 $lErreur = new VRerreur();
                 $lErreur->setCode(MessagesErreurs::ERR_221_CODE);
                 $lErreur->setMessage(MessagesErreurs::ERR_221_MSG);
                 $lVr->getLog()->addErreur($lErreur);
             } else {
                 $lIdReservation = new IdReservationVO();
                 $lIdReservation->setIdCompte($pData['idCompte']);
                 $lIdReservation->setIdCommande($lDetailMarche[0]->getComId());
                 $lReservationService = new ReservationService();
                 $lOperations = $lReservationService->selectOperationReservation($lIdReservation);
                 $lOperation = $lOperations[0];
                 $lIdOperation = $lOperation->getId();
                 // Si il y a bien une réservation existante
                 if (is_null($lIdOperation) || $lOperation->getTypePaiement() != 0) {
                     $lVr->setValid(false);
                     $lVr->getLog()->setValid(false);
                     $lErreur = new VRerreur();
                     $lErreur->setCode(MessagesErreurs::ERR_238_CODE);
                     $lErreur->setMessage(MessagesErreurs::ERR_238_MSG);
                     $lVr->getLog()->addErreur($lErreur);
                 }
                 if ($lVr->getValid()) {
                     foreach ($pData['detailReservation'] as $lReservation) {
                         $lReservation["idOperation"] = $lIdOperation;
                         $lVrReservation = CommandeDetailReservationValid::validUpdate($lReservation);
                         if (!$lVrReservation->getValid()) {
                             $lVr->setValid(false);
                         }
                         //$lVr->addCommandes($lVrReservation);
                         if (isset($lReservation["stoIdDetailCommande"])) {
                             $lCommandes = $lVr->getCommandes();
                             $lCommandes[$lReservation["stoIdDetailCommande"]] = $lVrReservation;
                             $lVr->setCommandes($lCommandes);
                         }
                     }
                 }
             }
         } else {
             $lVr->setValid(false);
             $lVr->getLog()->setValid(false);
             $lErreur = new VRerreur();
             $lErreur->setCode(MessagesErreurs::ERR_117_CODE);
             $lErreur->setMessage(MessagesErreurs::ERR_117_MSG);
             $lVr->getLog()->addErreur($lErreur);
         }
     }
     return $lVr;
 }