/** * @name modifierReservation($pParam) * @return ListeReservationCommandeVR * @desc Met à jour une réservation */ public function modifierReservation($pParam) { $lVr = CommandeReservationValid::validUpdate($pParam); if ($lVr->getValid()) { $lIdLot = $pParam["detailReservation"][0]["stoIdDetailCommande"]; $lDetailMarche = DetailMarcheViewManager::selectByLot($lIdLot); $lReservationService = new ReservationService(); $lReservation = new ReservationVO(); $lReservation->getId()->setIdCompte($pParam["id_compte"]); $lReservation->getId()->setIdCommande($lDetailMarche[0]->getComId()); foreach ($pParam["detailReservation"] as $lDetail) { $lDetailCommande = DetailCommandeManager::select($lDetail["stoIdDetailCommande"]); $lPrix = $lDetail["stoQuantite"] / $lDetailCommande->getTaille() * $lDetailCommande->getPrix(); $lDetailReservation = new DetailReservationVO(); $lDetailReservation->setIdDetailCommande($lDetail["stoIdDetailCommande"]); $lDetailReservation->setQuantite($lDetail["stoQuantite"]); $lDetailReservation->setMontant($lPrix); /*$lDetailProduit = DetailMarcheViewManager::selectByLot($lDetail["stoIdDetailCommande"]); $lDetailReservation->setIdNomProduit($lDetailProduit[0]->getNproId());*/ $lReservation->addDetailReservation($lDetailReservation); } $lReservationService = new ReservationService(); $lIdOperation = $lReservationService->set($lReservation); } return $lVr; }
/** * @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); } }
/** * @name updateStockProduit($pStock) * @param StockVO * @return integer * @desc Met à jour une opération */ public function updateStockProduit($pStock) { // TODO les test : on update que les types 0/1/2/3/4/5/6 $lStockActuel = $this->get($pStock->getId()); $pStock->setDate(StringUtils::dateTimeAujourdhuiDb()); // TODO Mise à jour du stock selon le type switch ($pStock->getType()) { case 0: // Reservation $lLot = DetailCommandeManager::select($pStock->getIdDetailCommande()); $lProduit = ProduitManager::select($lLot->getIdProduit()); if ($pStock->getQuantite() != -1 && $lProduit->getStockInitial() == -1) { // Maj Stock Reservation dans le produit $lProduit->setStockReservation($lProduit->getStockReservation() + $pStock->getQuantite()); $lProduit->setStockInitial($pStock->getQuantite()); ProduitManager::update($lProduit); } else { if ($pStock->getQuantite() == -1 && $lProduit->getStockInitial() != -1) { //echo 2; // Maj Stock Reservation dans le produit $lProduit->setStockReservation($lProduit->getStockReservation() - $lProduit->getStockInitial()); $lProduit->setStockInitial(-1); ProduitManager::update($lProduit); } else { if ($pStock->getQuantite() != -1 && $lProduit->getStockInitial() != -1) { //echo 3; // Maj Stock Reservation dans le produit $lProduit->setStockReservation($lProduit->getStockReservation() - $lProduit->getStockInitial() + $pStock->getQuantite()); $lProduit->setStockInitial($pStock->getQuantite()); ProduitManager::update($lProduit); } } } break; } $this->insertHistorique($pStock); // Ajout historique return StockManager::update($pStock); // update }
/** * @name validUpdate($pData) * @returnCommandeDetailReservationVR * @desc Test la validite de l'élément */ public static function validUpdate($pData) { $lVr = new CommandeDetailReservationVR(); //Tests inputs if (!isset($pData['stoQuantite'])) { $lVr->setValid(false); $lVr->getStoQuantite()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_201_CODE); $lErreur->setMessage(MessagesErreurs::ERR_201_MSG); $lVr->getStoQuantite()->addErreur($lErreur); } if (!isset($pData['stoIdDetailCommande'])) { $lVr->setValid(false); $lVr->getStoIdDetailCommande()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_201_CODE); $lErreur->setMessage(MessagesErreurs::ERR_201_MSG); $lVr->getStoIdDetailCommande()->addErreur($lErreur); } if (!isset($pData['idOperation'])) { $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 (!TestFonction::checkLength($pData['stoQuantite'], 0, 12) || $pData['stoQuantite'] > 999999999.99) { $lVr->setValid(false); $lVr->getStoQuantite()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_101_CODE); $lErreur->setMessage(MessagesErreurs::ERR_101_MSG); $lVr->getStoQuantite()->addErreur($lErreur); } if (!is_float((double) $pData['stoQuantite'])) { $lVr->setValid(false); $lVr->getStoQuantite()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_108_CODE); $lErreur->setMessage(MessagesErreurs::ERR_108_MSG); $lVr->getStoQuantite()->addErreur($lErreur); } if (!TestFonction::checkLength($pData['stoIdDetailCommande'], 0, 11)) { $lVr->setValid(false); $lVr->getStoIdDetailCommande()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_101_CODE); $lErreur->setMessage(MessagesErreurs::ERR_101_MSG); $lVr->getStoIdDetailCommande()->addErreur($lErreur); } if (!is_float((double) $pData['stoIdDetailCommande'])) { $lVr->setValid(false); $lVr->getStoIdDetailCommande()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_108_CODE); $lErreur->setMessage(MessagesErreurs::ERR_108_MSG); $lVr->getStoIdDetailCommande()->addErreur($lErreur); } if (!is_int((int) $pData['idOperation'])) { $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['stoQuantite'])) { $lVr->setValid(false); $lVr->getStoQuantite()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_201_CODE); $lErreur->setMessage(MessagesErreurs::ERR_201_MSG); $lVr->getStoQuantite()->addErreur($lErreur); } if (empty($pData['stoIdDetailCommande'])) { $lVr->setValid(false); $lVr->getStoIdDetailCommande()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_201_CODE); $lErreur->setMessage(MessagesErreurs::ERR_201_MSG); $lVr->getStoIdDetailCommande()->addErreur($lErreur); } if (empty($pData['idOperation'])) { $lVr->setValid(false); $lVr->getLog()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_201_CODE); $lErreur->setMessage(MessagesErreurs::ERR_201_MSG); $lVr->getLog()->addErreur($lErreur); } if ($pData['stoQuantite'] >= 0) { $lVr->setValid(false); $lVr->getStoQuantite()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_201_CODE); $lErreur->setMessage(MessagesErreurs::ERR_201_MSG); $lVr->getStoQuantite()->addErreur($lErreur); } $lDcom = DetailCommandeManager::select($pData['stoIdDetailCommande']); if ($lDcom->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); } else { $lPdt = ProduitManager::select($lDcom->getIdProduit()); if ($lPdt->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); } else { $lQte = $pData['stoQuantite'] * -1; if ($lPdt->getMaxProduitCommande() != -1 && $lQte > $lPdt->getMaxProduitCommande()) { $lVr->setValid(false); $lVr->getStoIdProduit()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_217_CODE); $lErreur->setMessage(MessagesErreurs::ERR_217_MSG); $lVr->getStoIdProduit()->addErreur($lErreur); } $StockService = new StockService(); $lStocks = $StockService->getDetailReservation($pData['idOperation']); $lStock = $lStocks[0]; $lQuantiteReservation = $lStock->getQuantite(); if ($lPdt->getStockInitial() != -1 && $lQte > $lPdt->getStockReservation() - $lQuantiteReservation) { $lVr->setValid(false); $lVr->getStoIdProduit()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_218_CODE); $lErreur->setMessage(MessagesErreurs::ERR_218_MSG); $lVr->getStoIdProduit()->addErreur($lErreur); } } } } return $lVr; }
/** * @name validAjout($pData) * @return ProduitBonDeCommandeVR * @desc Test la validite de l'élément */ public static function validAjout($pData) { $lVr = new ProduitBonDeCommandeVR(); //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['dcomId'])) { $lVr->setValid(false); $lVr->getDcomId()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_201_CODE); $lErreur->setMessage(MessagesErreurs::ERR_201_MSG); $lVr->getDcomId()->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 ($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_104_CODE); $lErreur->setMessage(MessagesErreurs::ERR_104_MSG); $lVr->getId()->addErreur($lErreur); } if (!TestFonction::checkLength($pData['dcomId'], 0, 11)) { $lVr->setValid(false); $lVr->getDcomId()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_101_CODE); $lErreur->setMessage(MessagesErreurs::ERR_101_MSG); $lVr->getDcomId()->addErreur($lErreur); } if (!is_int((int) $pData['dcomId'])) { $lVr->setValid(false); $lVr->getDcomId()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_104_CODE); $lErreur->setMessage(MessagesErreurs::ERR_104_MSG); $lVr->getDcomId()->addErreur($lErreur); } if ($pData['quantite'] != '' && (!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 ($pData['quantite'] != '' && !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 ($pData['prix'] != '' && (!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 ($pData['prix'] != '' && !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); } //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['dcomId'])) { $lVr->setValid(false); $lVr->getDcomId()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_201_CODE); $lErreur->setMessage(MessagesErreurs::ERR_201_MSG); $lVr->getDcomId()->addErreur($lErreur); } if ($pData['prix'] != '' && 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 ($pData['quantite'] != '' && 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['quantite'] != '' && $pData['quantite'] < 0) { $lVr->setValid(false); $lVr->getQuantite()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_215_CODE); $lErreur->setMessage(MessagesErreurs::ERR_215_MSG); $lVr->getQuantite()->addErreur($lErreur); } if ($pData['prix'] != '' && $pData['prix'] < 0) { $lVr->setValid(false); $lVr->getPrix()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_215_CODE); $lErreur->setMessage(MessagesErreurs::ERR_215_MSG); $lVr->getPrix()->addErreur($lErreur); } $lDcom = DetailCommandeManager::selectByIdProduit($pData["id"]); if ($lDcom[0]->getIdProduit() != $pData["id"]) { $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); } $lDcom = DetailCommandeManager::select($pData["dcomId"]); if ($lDcom->getId() != $pData["dcomId"]) { $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); } } return $lVr; }
/** * @name updateProduit($pProduit) * @param ProduitVO * @desc Met à jour le produit du marché */ public function updateProduit($pProduit, $pLotRemplacement = array()) { $lProduitActuel = $this->selectProduit($pProduit->getId()); //Les lots $lLotModif = array(); $lLotSupp = array(); foreach ($lProduitActuel->getLots() as $lLotActuel) { $lMajLot = true; foreach ($pProduit->getLots() as $lLotNv) { // Maj Lot if ($lLotActuel->getId() == $lLotNv->getId()) { $lDcomId = $lLotActuel->getId(); $lMajLot = false; $lDetailCommande = new DetailCommandeVO(); $lDetailCommande->setId($lLotActuel->getId()); $lDetailCommande->setIdProduit($lProduitActuel->getId()); $lDetailCommande->setTaille($lLotNv->getTaille()); $lDetailCommande->setPrix($lLotNv->getPrix()); DetailCommandeManager::update($lDetailCommande); // Maj des réservations associées DetailOperationManager::majTotalReservation($lLotActuel->getId()); array_push($lLotModif, $lDetailCommande); } } // Supprimer Lot if ($lMajLot) { array_push($lLotSupp, $lLotActuel->getId()); } } // Nouveau Lot $lLotAdd = array(); foreach ($pProduit->getLots() as $lLotNv) { $lAjout = true; foreach ($lProduitActuel->getLots() as $lLotActuel) { if ($lLotActuel->getId() == $lLotNv->getId()) { $lAjout = false; } } if ($lAjout) { $lDetailCommande = new DetailCommandeVO(); $lDetailCommande->setIdProduit($lProduitActuel->getId()); $lDetailCommande->setTaille($lLotNv->getTaille()); $lDetailCommande->setPrix($lLotNv->getPrix()); $lDcomId = DetailCommandeManager::insert($lDetailCommande); $lLotAdd[$lLotNv->getId()] = $lDcomId; // Si supression d'un lot et positionnement de ce nouveau lot permet de récupérer l'ID } } $lStockService = new StockService(); $lResaActuel = GestionCommandeReservationProducteurViewManager::getStockReservationProducteur($lProduitActuel->getIdCompteFerme(), $lProduitActuel->getId()); $lStockActuel = $lStockService->get($lResaActuel[0]->getStoId()); // Maj du stock $lStockActuel->setQuantite($pProduit->getQteRestante()); $lStockActuel->setIdDetailCommande($lDcomId); $lStockService->updateStockProduit($lStockActuel); $lProduit = ProduitManager::select($lProduitActuel->getId()); $lProduit->setUniteMesure($pProduit->getUnite()); if ($pProduit->getQteMaxCommande() == "" || $pProduit->getQteMaxCommande() == -1) { $lProduit->setMaxProduitCommande(-1); } else { $lProduit->setMaxProduitCommande($pProduit->getQteMaxCommande()); } $lProduit->setType($pProduit->getType()); ProduitManager::update($lProduit); // Modif des réservations $lReservationService = new ReservationService(); $lIdMarche = $lProduitActuel->getIdMarche(); foreach ($lLotSupp as $lIdLot) { // Chaque lot supprimé => La réservation est positionnée sur un autre lot if (isset($pLotRemplacement[$lIdLot])) { $lIdLotRemplacement = $pLotRemplacement[$lIdLot]; if ($lIdLotRemplacement < 0) { $lIdLotRemplacement = $lLotAdd[$lIdLotRemplacement]; } $lListeDetailReservation = $lReservationService->getReservationSurLot($lIdLot); if (!is_null($lListeDetailReservation[0]->getDopeIdCompte())) { // Si il y a des réservations foreach ($lListeDetailReservation as $lDetailReservation) { // Chaque réservation de lot modifié $lIdReservationVO = new IdReservationVO(); $lIdReservationVO->setIdCompte($lDetailReservation->getDopeIdCompte()); $lIdReservationVO->setIdCommande($lIdMarche); $lReservationVO = $lReservationService->get($lIdReservationVO); $lNvDetailReservation = array(); foreach ($lReservationVO->getDetailReservation() as $lDetailReservationActuelle) { if ($lDetailReservationActuelle->getIdDetailCommande() == $lIdLot) { // Maj de la reservation pour ce produit $lDetailCommande = DetailCommandeManager::select($lIdLotRemplacement); $lPrix = $lDetailReservation->getStoQuantite() / $lDetailCommande->getTaille() * $lDetailCommande->getPrix(); $lDetailReservationVO = new DetailReservationVO(); $lDetailReservationVO->setIdDetailCommande($lIdLotRemplacement); $lDetailReservationVO->setQuantite($lDetailReservation->getStoQuantite()); $lDetailReservationVO->setMontant($lPrix); array_push($lNvDetailReservation, $lDetailReservationVO); } else { // Ajout des autres produits array_push($lNvDetailReservation, $lDetailReservationActuelle); } } $lReservationVO->setDetailReservation($lNvDetailReservation); $lReservationService->set($lReservationVO); // Maj de la reservation } } } $lDeleteLot = DetailCommandeManager::select($lIdLot); $lDeleteLot->setEtat(1); DetailCommandeManager::update($lDeleteLot); } }
/** * @name validUpdate($pData) * @return DetailReservationMarcheVR * @desc Test la validite de l'élément */ public static function validUpdate($pData) { $lVr = new DetailReservationMarcheVR(); //Tests inputs if (!isset($pData['stoQuantite'])) { $lVr->setValid(false); $lVr->getStoQuantite()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_201_CODE); $lErreur->setMessage(MessagesErreurs::ERR_201_MSG); $lVr->getStoQuantite()->addErreur($lErreur); } if (!isset($pData['stoIdDetailCommande'])) { $lVr->setValid(false); $lVr->getStoIdDetailCommande()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_201_CODE); $lErreur->setMessage(MessagesErreurs::ERR_201_MSG); $lVr->getStoIdDetailCommande()->addErreur($lErreur); } if (!isset($pData['idOperation'])) { $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 (!TestFonction::checkLength($pData['stoQuantite'], 0, 12) || $pData['stoQuantite'] > 999999999.99) { $lVr->setValid(false); $lVr->getStoQuantite()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_101_CODE); $lErreur->setMessage(MessagesErreurs::ERR_101_MSG); $lVr->getStoQuantite()->addErreur($lErreur); } if (!is_float((double) $pData['stoQuantite'])) { $lVr->setValid(false); $lVr->getStoQuantite()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_108_CODE); $lErreur->setMessage(MessagesErreurs::ERR_108_MSG); $lVr->getStoQuantite()->addErreur($lErreur); } if (!TestFonction::checkLength($pData['stoIdDetailCommande'], 0, 11)) { $lVr->setValid(false); $lVr->getStoIdDetailCommande()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_101_CODE); $lErreur->setMessage(MessagesErreurs::ERR_101_MSG); $lVr->getStoIdDetailCommande()->addErreur($lErreur); } if (!is_float((double) $pData['stoIdDetailCommande'])) { $lVr->setValid(false); $lVr->getStoIdDetailCommande()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_108_CODE); $lErreur->setMessage(MessagesErreurs::ERR_108_MSG); $lVr->getStoIdDetailCommande()->addErreur($lErreur); } if (!is_int((int) $pData['idOperation'])) { $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['stoQuantite'])) { $lVr->setValid(false); $lVr->getStoQuantite()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_201_CODE); $lErreur->setMessage(MessagesErreurs::ERR_201_MSG); $lVr->getStoQuantite()->addErreur($lErreur); } if (empty($pData['stoIdDetailCommande'])) { $lVr->setValid(false); $lVr->getStoIdDetailCommande()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_201_CODE); $lErreur->setMessage(MessagesErreurs::ERR_201_MSG); $lVr->getStoIdDetailCommande()->addErreur($lErreur); } if (empty($pData['idOperation'])) { $lVr->setValid(false); $lVr->getLog()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_201_CODE); $lErreur->setMessage(MessagesErreurs::ERR_201_MSG); $lVr->getLog()->addErreur($lErreur); } if ($pData['stoQuantite'] >= 0) { $lVr->setValid(false); $lVr->getStoQuantite()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_201_CODE); $lErreur->setMessage(MessagesErreurs::ERR_201_MSG); $lVr->getStoQuantite()->addErreur($lErreur); } $lDcom = DetailCommandeManager::select($pData['stoIdDetailCommande']); if ($lDcom->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); } else { $lPdt = ProduitManager::select($lDcom->getIdProduit()); if ($lPdt->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); } else { $lQte = $pData['stoQuantite'] * -1; if ($lPdt->getMaxProduitCommande() != -1 && $lQte > $lPdt->getMaxProduitCommande()) { $lVr->setValid(false); $lVr->getStoQuantite()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_217_CODE); $lErreur->setMessage(MessagesErreurs::ERR_217_MSG); $lVr->getStoQuantite()->addErreur($lErreur); } /*$StockService = new StockService(); $lStocks = $StockService->getDetailReservation($pData['idOperation']); $lContinu = true; $lQuantiteReservation = 0; $i = 0; while($lContinu && isset($lStocks[$i])) { if( $lStocks[$i]->getIdDetailCommande() == $pData['stoIdDetailCommande']) { $lQuantiteReservation = $lStocks[$i]->getQuantite(); $lContinu = false; } $i++; } */ $lQteMax = $lPdt->getStockReservation(); if ($pData['idOperation'] != -1) { $StockService = new StockService(); $lStocks = $StockService->getDetailReservation($pData['idOperation']); $lContinu = true; $lQuantiteReservation = 0; $i = 0; while ($lContinu && isset($lStocks[$i])) { if ($lStocks[$i]->getIdDetailCommande() == $pData['stoIdDetailCommande']) { $lQuantiteReservation = $lStocks[$i]->getQuantite(); $lContinu = false; } $i++; } $lQteMax -= $lQuantiteReservation; // Qté réservation est négative -- = + } if ($lPdt->getStockInitial() != -1 && $lQte > $lQteMax) { $lVr->setValid(false); $lVr->getStoQuantite()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_218_CODE); $lErreur->setMessage(MessagesErreurs::ERR_218_MSG); $lVr->getStoQuantite()->addErreur($lErreur); } // La quantité doit être un multiple du lot if (fmod($lQte, $lDcom->getTaille()) != 0) { $lVr->setValid(false); $lVr->getStoQuantite()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_245_CODE); $lErreur->setMessage(MessagesErreurs::ERR_245_MSG); $lVr->getStoQuantite()->addErreur($lErreur); } } } } return $lVr; }
/** * @name modifierReservation($pParam) * @return ListeReservationCommandeVR * @desc Met à jour une réservation */ public function modifierReservation($pParam) { $pParam['idCompte'] = $_SESSION[ID_COMPTE]; $lVr = ReservationMarcheValid::validUpdate($pParam); if ($lVr->getValid()) { $lReservationService = new ReservationService(); $lIdLot = $pParam["detailReservation"][0]["stoIdDetailCommande"]; $lDetailMarche = DetailMarcheViewManager::selectByLot($lIdLot); $lReservation = new ReservationVO(); $lReservation->getId()->setIdCompte($_SESSION[ID_COMPTE]); $lReservation->getId()->setIdCommande($lDetailMarche[0]->getComId()); $lReservationAbonnement = array(); $lReservationsActuelle = $lReservationService->get($lReservation->getId()); $lProduitsAbonnementMarche = ProduitManager::selectbyIdMarcheProduitAbonnement($lDetailMarche[0]->getComId()); foreach ($lReservationsActuelle->getDetailReservation() as $lReservationActuelle) { foreach ($lProduitsAbonnementMarche as $lProduitAboMarche) { if ($lReservationActuelle->getIdProduit() == $lProduitAboMarche->getId()) { $lReservationAbonnement[$lProduitAboMarche->getId()] = $lReservationActuelle; } } } foreach ($pParam["detailReservation"] as $lDetail) { $lDetailCommande = DetailCommandeManager::select($lDetail["stoIdDetailCommande"]); $lPrix = $lDetail["stoQuantite"] / $lDetailCommande->getTaille() * $lDetailCommande->getPrix(); $lDetailReservation = new DetailReservationVO(); $lDetailReservation->setIdDetailCommande($lDetail["stoIdDetailCommande"]); $lDetailReservation->setQuantite($lDetail["stoQuantite"]); $lDetailReservation->setMontant($lPrix); $lAjout = true; foreach ($lProduitsAbonnementMarche as $lProduitAboMarche) { if ($lDetailCommande->getIdProduit() == $lProduitAboMarche->getId()) { if (!isset($lReservationAbonnement[$lProduitAboMarche->getId()])) { $lReservationAbonnement[$lProduitAboMarche->getId()] = $lDetailReservation; } $lAjout = false; } } if ($lAjout) { $lReservation->addDetailReservation($lDetailReservation); } } foreach ($lReservationAbonnement as $lReservationAbo) { $lReservation->addDetailReservation($lReservationAbo); } $lIdOperation = $lReservationService->set($lReservation); } return $lVr; }