/** * @name convertFromArray($pArray) * @param array() * @desc Convertit le array en objet DetailCommandeVO */ public static function convertFromArray($pArray) { $lValid = isset($pArray['id']) && isset($pArray['idProduit']) && isset($pArray['taille']) && isset($pArray['prix']); if ($lValid) { $lVo = new DetailCommandeVO(); $lVo->setId($pArray['id']); $lVo->setIdProduit($pArray['idProduit']); $lVo->setTaille($pArray['taille']); $lVo->setPrix($pArray['prix']); return $lVo; } return NULL; }
/** * @name remplirDetailCommande($pId, $pIdProduit, $pTaille, $pPrix, $pEtat) * @param int(11) * @param int(11) * @param decimal(10,2) * @param decimal(10,2) * @param int(11) * @return DetailCommandeVO * @desc Retourne une DetailCommandeVO remplie */ private static function remplirDetailCommande($pId, $pIdProduit, $pTaille, $pPrix, $pEtat) { $lDetailCommande = new DetailCommandeVO(); $lDetailCommande->setId($pId); $lDetailCommande->setIdProduit($pIdProduit); $lDetailCommande->setTaille($pTaille); $lDetailCommande->setPrix($pPrix); $lDetailCommande->setEtat($pEtat); return $lDetailCommande; }
/** * @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); } }