/** * @name update($pStock) * @param StockVO * @return integer * @desc Met à jour une opération */ private function update($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()); $this->insertHistorique($pStock); // Ajout historique // 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() > 0) { // Reservation Producteur (commande) // Maj Stock Reservation dans le produit if ($lProduit->getStockInitial() == -1) { // Si Pas de limite (Qte init = -1) il ne faut pas prendre en compte la qte init. $lStockReservation = $lProduit->getStockReservation() + $pStock->getQuantite(); } else { $lStockReservation = $lProduit->getStockReservation() - $lProduit->getStockInitial() + $pStock->getQuantite(); } $lProduit->setStockReservation($lStockReservation); $lProduit->setStockInitial($pStock->getQuantite()); ProduitManager::update($lProduit); } else { // Reservation Adherent // Maj Stock Reservation dans le produit $lProduit->setStockReservation($lProduit->getStockReservation() + $pStock->getQuantite() - $lStockActuel->getQuantite()); ProduitManager::update($lProduit); } break; case 1: // Achat // Ajout ou Maj de la qté produit dans le stock $lStockQuantiteActuel = $this->selectQuantiteByIdNomProduitUnite($pStock->getIdNomProduit(), $pStock->getUnite()); $lStockQuantiteActuel = $lStockQuantiteActuel[0]; $lStockQuantite = new StockQuantiteVO(); if (!is_null($lStockQuantiteActuel->getId())) { $lStockQuantite->setId($lStockQuantiteActuel->getId()); $lStockQuantite->setQuantiteSolidaire($lStockQuantiteActuel->getQuantiteSolidaire()); } $lStockQuantite->setQuantite($lStockQuantiteActuel->getQuantite() + $pStock->getQuantite() - $lStockActuel->getQuantite()); $lStockQuantite->setIdNomProduit($pStock->getIdNomProduit()); $lStockQuantite->setUnite($pStock->getUnite()); $this->setStockQuantite($lStockQuantite); break; case 2: // Livraison/Achat Solidaire // Ajout ou Maj de la qté produit dans le stock $lStockQuantiteActuel = $this->selectQuantiteByIdNomProduitUnite($pStock->getIdNomProduit(), $pStock->getUnite()); $lStockQuantiteActuel = $lStockQuantiteActuel[0]; $lStockQuantite = new StockQuantiteVO(); if (!is_null($lStockQuantiteActuel->getId())) { $lStockQuantite->setId($lStockQuantiteActuel->getId()); $lStockQuantite->setQuantite($lStockQuantiteActuel->getQuantite()); } $lStockQuantite->setQuantiteSolidaire($lStockQuantiteActuel->getQuantiteSolidaire() + $pStock->getQuantite() - $lStockActuel->getQuantite()); $lStockQuantite->setIdNomProduit($pStock->getIdNomProduit()); $lStockQuantite->setUnite($pStock->getUnite()); $this->setStockQuantite($lStockQuantite); break; case 4: // Livraison /*$lLot = DetailCommandeManager::select($pStock->getIdDetailCommande()); $lProduit = ProduitManager::select($lLot->getIdProduit()); if($pStock->getQuantite() > 0) { // Livraison Producteur // Maj Stock Reservation et qté initiale dans le produit if($lProduit->getStockInitial() == -1) { // Si Pas de limite (Qte init = -1) il ne faut pas prendre en compte la qte init. $lStockReservation = $lProduit->getStockReservation() + $pStock->getQuantite(); } else { $lStockReservation = $lProduit->getStockReservation() - $lProduit->getStockInitial() + $pStock->getQuantite(); } $lProduit->setStockReservation($lStockReservation); $lProduit->setStockInitial($pStock->getQuantite()); ProduitManager::update($lProduit); }*/ // Ajout ou Maj de la qté produit dans le stock $lStockQuantiteActuel = $this->selectQuantiteByIdNomProduitUnite($pStock->getIdNomProduit(), $pStock->getUnite()); $lStockQuantiteActuel = $lStockQuantiteActuel[0]; $lStockQuantite = new StockQuantiteVO(); if (!is_null($lStockQuantiteActuel->getId())) { $lStockQuantite->setId($lStockQuantiteActuel->getId()); $lStockQuantite->setQuantiteSolidaire($lStockQuantiteActuel->getQuantiteSolidaire()); } $lStockQuantite->setQuantite($lStockQuantiteActuel->getQuantite() + $pStock->getQuantite() - $lStockActuel->getQuantite()); $lStockQuantite->setIdNomProduit($pStock->getIdNomProduit()); $lStockQuantite->setUnite($pStock->getUnite()); $this->setStockQuantite($lStockQuantite); break; case 6: // Reservation annulée // Maj Stock Reservation dans le produit $lLot = DetailCommandeManager::select($pStock->getIdDetailCommande()); $lProduit = ProduitManager::select($lLot->getIdProduit()); $lProduit->setStockReservation($lProduit->getStockReservation() - $lStockActuel->getQuantite()); ProduitManager::update($lProduit); break; case 8: // Supression d'un achat // Ajout ou Maj de la qté produit dans le stock $lStockQuantiteActuel = $this->selectQuantiteByIdNomProduitUnite($pStock->getIdNomProduit(), $pStock->getUnite()); $lStockQuantiteActuel = $lStockQuantiteActuel[0]; $lStockQuantite = new StockQuantiteVO(); if (!is_null($lStockQuantiteActuel->getId())) { $lStockQuantite->setId($lStockQuantiteActuel->getId()); $lStockQuantite->setQuantiteSolidaire($lStockQuantiteActuel->getQuantiteSolidaire()); } $lStockQuantite->setQuantite($lStockQuantiteActuel->getQuantite() - $lStockActuel->getQuantite()); $lStockQuantite->setIdNomProduit($pStock->getIdNomProduit()); $lStockQuantite->setUnite($pStock->getUnite()); $this->setStockQuantite($lStockQuantite); break; case 9: // Supression d'une Livraison // Ajout ou Maj de la qté produit dans le stock $lStockQuantiteActuel = $this->selectQuantiteByIdNomProduitUnite($pStock->getIdNomProduit(), $pStock->getUnite()); $lStockQuantiteActuel = $lStockQuantiteActuel[0]; $lStockQuantite = new StockQuantiteVO(); if (!is_null($lStockQuantiteActuel->getId())) { $lStockQuantite->setId($lStockQuantiteActuel->getId()); $lStockQuantite->setQuantiteSolidaire($lStockQuantiteActuel->getQuantiteSolidaire()); } $lStockQuantite->setQuantite($lStockQuantiteActuel->getQuantite() - $lStockActuel->getQuantite()); $lStockQuantite->setIdNomProduit($pStock->getIdNomProduit()); $lStockQuantite->setUnite($pStock->getUnite()); $this->setStockQuantite($lStockQuantite); break; case 10: // Supression d'une Livraison Solidaire // Ajout ou Maj de la qté produit dans le stock $lStockQuantiteActuel = $this->selectQuantiteByIdNomProduitUnite($pStock->getIdNomProduit(), $pStock->getUnite()); $lStockQuantiteActuel = $lStockQuantiteActuel[0]; $lStockQuantite = new StockQuantiteVO(); if (!is_null($lStockQuantiteActuel->getId())) { $lStockQuantite->setId($lStockQuantiteActuel->getId()); $lStockQuantite->setQuantite($lStockQuantiteActuel->getQuantite()); } $lStockQuantite->setQuantiteSolidaire($lStockQuantiteActuel->getQuantiteSolidaire() - $lStockActuel->getQuantite()); $lStockQuantite->setIdNomProduit($pStock->getIdNomProduit()); $lStockQuantite->setUnite($pStock->getUnite()); $this->setStockQuantite($lStockQuantite); break; } return StockManager::update($pStock); // update }
/** * @name remplirStockQuantite($pId, $pIdNomProduit, $pQuantite, $pQuantiteSolidaire, $pUnite, $pDateCreation, $pDateModification, $pIdLogin, $pEtat) * @param int(11) * @param int(11) * @param decimal(10,2) * @param decimal(10,2) * @param varchar(20) * @param datetime * @param datetime * @param int(11) * @param tinyint(1) * @return StockQuantiteVO * @desc Retourne une StockQuantiteVO remplie */ private static function remplirStockQuantite($pId, $pIdNomProduit, $pQuantite, $pQuantiteSolidaire, $pUnite, $pDateCreation, $pDateModification, $pIdLogin, $pEtat) { $lStockQuantite = new StockQuantiteVO(); $lStockQuantite->setId($pId); $lStockQuantite->setIdNomProduit($pIdNomProduit); $lStockQuantite->setQuantite($pQuantite); $lStockQuantite->setQuantiteSolidaire($pQuantiteSolidaire); $lStockQuantite->setUnite($pUnite); $lStockQuantite->setDateCreation($pDateCreation); $lStockQuantite->setDateModification($pDateModification); $lStockQuantite->setIdLogin($pIdLogin); $lStockQuantite->setEtat($pEtat); return $lStockQuantite; }