/** * @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 supprimerProduit($pId) * @param integer * @desc Supprime un produit du marché */ public function supprimerProduit($pId) { $lProduit = ProduitManager::select($pId); // Suppression des lots $lLots = DetailCommandeManager::selectByIdProduit($pId); foreach ($lLots as $lLot) { $lLot->setEtat(1); DetailCommandeManager::update($lLot); } $lProduit->setEtat(1); ProduitManager::update($lProduit); // Modif des réservations $lReservationService = new ReservationService(); $lIdMarche = $lProduit->getIdCommande(); foreach ($lLots as $lLot) { // Chaque lot modifié $lListeDetailReservation = $lReservationService->getReservationSurLot($lLot->getId()); 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() != $lLot->getId()) { // Ne positionne que les autres produits array_push($lNvDetailReservation, $lDetailReservationActuelle); } } $lReservationVO->setDetailReservation($lNvDetailReservation); $lReservationService->set($lReservationVO); // Maj de la reservation } } } }