/** * @name update($pReservation) * @param ReservationVO * @return integer * @desc Met à jour une réservation */ private function update($pReservation) { $lTestDetailReservation = $pReservation->getDetailReservation(); if (!empty($lTestDetailReservation)) { // Si il y a encore des produits dans la réservation $lReservationsActuelle = $this->get($pReservation->getId()); $lOpeReservations = $this->selectOperationReservation($pReservation->getId()); $lIdOperation = $lOpeReservations[0]->getId(); /*$lOperation = $lOperations[0]; $lIdOperation = $lOperation->getId();*/ $lOperationService = new OperationService(); $lOperation = $lOperationService->getDetail($lIdOperation); $lTotal = 0; $lStockService = new StockService(); $lDetailOperationService = new DetailOperationService(); $lListeIdDetailCommande = array(); foreach ($pReservation->getDetailReservation() as $lProduit) { array_push($lListeIdDetailCommande, $lProduit->getIdDetailCommande()); } $lDetailMarche = DetailMarcheViewManager::selectByIdDetailCommande($lListeIdDetailCommande); foreach ($lReservationsActuelle->getDetailReservation() as $lReservationActuelle) { $lTestUpdate = false; foreach ($pReservation->getDetailReservation() as $lReservationNouvelle) { if ($lReservationActuelle->getIdDetailCommande() == $lReservationNouvelle->getIdDetailCommande()) { $lTotal += $lReservationNouvelle->getMontant(); // Maj du stock $lStock = new StockVO(); $lStock->setId($lReservationActuelle->getId()->getIdStock()); $lStock->setQuantite($lReservationNouvelle->getQuantite()); $lStock->setType(0); $lStock->setIdCompte($pReservation->getId()->getIdCompte()); $lStock->setIdDetailCommande($lReservationActuelle->getIdDetailCommande()); $lStock->setIdOperation($lIdOperation); $lStock->setIdNomProduit($lDetailMarche[$lReservationActuelle->getIdDetailCommande()]->getProIdNomProduit()); $lStock->setUnite($lDetailMarche[$lReservationActuelle->getIdDetailCommande()]->getProUniteMesure()); $lStockService->set($lStock); // Maj du détail Opération $lDetailOperation = new DetailOperationVO(); $lDetailOperation->setId($lReservationActuelle->getId()->getIdDetailOperation()); $lDetailOperation->setIdOperation($lIdOperation); $lDetailOperation->setIdCompte($pReservation->getId()->getIdCompte()); $lDetailOperation->setMontant($lReservationNouvelle->getMontant()); $lDetailOperation->setLibelle("Marché N°" . $pReservation->getId()->getIdCommande()); $lDetailOperation->setTypePaiement(0); $lDetailOperation->setIdDetailCommande($lReservationActuelle->getIdDetailCommande()); $lDetailOperation->setIdNomProduit($lDetailMarche[$lReservationActuelle->getIdDetailCommande()]->getProIdNomProduit()); $lDetailOperationService->set($lDetailOperation); $lTestUpdate = true; } } if (!$lTestUpdate) { // Suppression du stock et du detail operation $lStockService->delete($lReservationActuelle->getId()->getIdStock()); $lDetailOperationService->delete($lReservationActuelle->getId()->getIdDetailOperation()); } } foreach ($pReservation->getDetailReservation() as $lReservationNouvelle) { $lTestInsert = true; foreach ($lReservationsActuelle->getDetailReservation() as $lReservationActuelle) { if ($lReservationActuelle->getIdDetailCommande() == $lReservationNouvelle->getIdDetailCommande()) { $lTestInsert = false; } } if ($lTestInsert) { $lTotal += $lReservationNouvelle->getMontant(); // Ajout du stock $lStock = new StockVO(); $lStock->setQuantite($lReservationNouvelle->getQuantite()); $lStock->setType(0); $lStock->setIdCompte($pReservation->getId()->getIdCompte()); $lStock->setIdDetailCommande($lReservationNouvelle->getIdDetailCommande()); $lStock->setIdOperation($lIdOperation); $lStock->setIdNomProduit($lDetailMarche[$lReservationNouvelle->getIdDetailCommande()]->getProIdNomProduit()); $lStock->setUnite($lDetailMarche[$lReservationNouvelle->getIdDetailCommande()]->getProUniteMesure()); $lStockService->set($lStock); // Ajout du détail Opération $lDetailOperation = new DetailOperationVO(); $lDetailOperation->setIdOperation($lIdOperation); $lDetailOperation->setIdCompte($pReservation->getId()->getIdCompte()); $lDetailOperation->setMontant($lReservationNouvelle->getMontant()); $lDetailOperation->setLibelle("Marché N°" . $pReservation->getId()->getIdCommande()); $lDetailOperation->setTypePaiement(0); $lDetailOperation->setIdDetailCommande($lReservationNouvelle->getIdDetailCommande()); $lDetailOperation->setIdNomProduit($lDetailMarche[$lReservationNouvelle->getIdDetailCommande()]->getProIdNomProduit()); $lDetailOperationService->set($lDetailOperation); } } // Maj de l'opération $lOperation->setMontant($lTotal); $lOperationService->set($lOperation); } else { // La réservation est vide on la supprime $this->delete($pReservation->getId()); } }
/** * @name update($pMarche) * @param MarcheVO * @return integer * @desc Insère une nouvelle ligne dans la table, à partir des informations de la CommandeVO en paramètre (l'id sera automatiquement calculé par la BDD) */ public function update($pMarche) { $lIdMarche = $pMarche->getId(); $lMarche = new CommandeVO(); $lMarche->setId($lIdMarche); $lMarche->setNumero($pMarche->getNumero()); $lMarche->setNom($pMarche->getNom()); $lMarche->setDescription($pMarche->getDescription()); $lMarche->setDateMarcheDebut($pMarche->getDateMarcheDebut()); $lMarche->setDateMarcheFin($pMarche->getDateMarcheFin()); $lMarche->setDateDebutReservation($pMarche->getDateDebutReservation()); $lMarche->setDateFinReservation($pMarche->getDateFinReservation()); $lMarche->setArchive($pMarche->getArchive()); CommandeManager::update($lMarche); // Maj des infos de la commande $lMarcheActuel = $this->get($lIdMarche); if ($lIdMarche != null && $lMarcheActuel->getId() != null) { $lStockService = new StockService(); foreach ($lMarcheActuel->getProduits() as $lProduitActuel) { $lMaj = true; // Produits Modifiés foreach ($pMarche->getProduits() as $lProduitNv) { if ($lProduitActuel->getId() == $lProduitNv->getId()) { $lMaj = false; //Les lots foreach ($lProduitActuel->getLots() as $lLotActuel) { $lMajLot = true; foreach ($lProduitNv->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()); } } // Supprimer Lot if ($lMajLot) { $lDeleteLot = DetailCommandeManager::select($lLotActuel->getId()); $lDeleteLot->setEtat(1); DetailCommandeManager::update($lDeleteLot); } } // Nouveau Lot foreach ($lProduitNv->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); } } $lResaActuel = GestionCommandeReservationProducteurViewManager::getStockReservationProducteur($lProduitActuel->getIdCompteProducteur(), $lProduitActuel->getId()); $lStockActuel = $lStockService->get($lResaActuel[0]->getStoId()); // Maj du stock $lStockActuel->setQuantite($lProduitNv->getQteRestante()); $lStockActuel->setIdCompte($lProduitNv->getIdProducteur()); $lStockActuel->setIdDetailCommande($lDcomId); $lStockService->set($lStockActuel); $lProduit = ProduitManager::select($lProduitActuel->getId()); $lProduit->setIdCommande($lIdMarche); $lProduit->setIdNomProduit($lProduitNv->getIdNom()); $lProduit->setUniteMesure($lProduitNv->getUnite()); $lProduit->setMaxProduitCommande($lProduitNv->getQteMaxCommande()); $lProduit->setIdCompteProducteur($lProduitNv->getIdProducteur()); // C'est bien le compte il faut changer le nom du champ $lProduit->setType($lProduitNv->getType()); ProduitManager::update($lProduit); } } // Produits supprimés if ($lMaj) { // Suppression des lots $lLots = DetailCommandeManager::selectByIdProduit($lProduitActuel->getId()); foreach ($lLots as $lLot) { $lLot->setEtat(1); DetailCommandeManager::update($lLot); } $lProduit = new ProduitVO(); $lProduit->setId($lProduitActuel->getId()); $lProduit->setIdCommande($lIdMarche); $lProduit->setIdNomProduit($lProduitActuel->getIdNom()); $lProduit->setUniteMesure($lProduitActuel->getUnite()); $lProduit->setMaxProduitCommande($lProduitActuel->getQteMaxCommande()); $lProduit->setIdCompteProducteur($lProduitActuel->getIdCompteProducteur()); $lProduit->setType($lProduitActuel->getType()); $lProduit->setEtat(1); ProduitManager::update($lProduit); } } // Les nouveaux produits foreach ($pMarche->getProduits() as $lProduitNv) { $lAjout = true; foreach ($lMarcheActuel->getProduits() as $lProduitActuel) { if ($lProduitActuel->getId() == $lProduitNv->getId()) { $lAjout = false; } } if ($lAjout) { // Insertion du produit $lProduit = new ProduitVO(); $lProduit->setIdCommande($lIdMarche); $lProduit->setIdNomProduit($lProduitNv->getIdNom()); $lProduit->setUniteMesure($lProduitNv->getUnite()); $lProduit->setMaxProduitCommande($lProduitNv->getQteMaxCommande()); $lProduit->setIdCompteProducteur($lProduitNv->getIdProducteur()); // C'est bien le compte il faut changer le nom du champ $lProduit->setStockReservation($lProduitNv->getQteRestante()); $lProduit->setStockInitial($lProduitNv->getQteRestante()); $lProduit->setType($lProduitNv->getType()); $lIdProduit = ProduitManager::insert($lProduit); //Insertion des lots foreach ($lProduitNv->getLots() as $lNouveauLot) { $lDetailCommande = new DetailCommandeVO(); $lDetailCommande->setIdProduit($lIdProduit); $lDetailCommande->setTaille($lNouveauLot->getTaille()); $lDetailCommande->setPrix($lNouveauLot->getPrix()); $lDcomId = DetailCommandeManager::insert($lDetailCommande); } //Insertion du stock -> Met à jour le stock reservation dans le produit $lStock = new StockVO(); $lStock->setQuantite($lProduitNv->getQteRestante()); $lStock->setType(0); $lStock->setIdCompte($lProduitNv->getIdProducteur()); // C'est bien le compte il faut changer le nom du champ $lStock->setIdDetailCommande($lDcomId); $lStockService = new StockService(); $lStockService->set($lStock); } } } return $lIdMarche; }
/** * @name remplirStock($pId, $pDate, $pQuantite, $pType, $pIdCompte, $pIdDetailCommande, $pIdModeleLot, $pIdOperation, $pIdNomProduit, $pUnite) * @param int(11) * @param datetime * @param decimal(10,2) * @param tinyint(1) * @param int(11) * @param int(11) * @param int(11) * @param int(11) * @param int(11) * @param varchar(20) * @return StockVO * @desc Retourne une StockVO remplie */ private static function remplirStock($pId, $pDate, $pQuantite, $pType, $pIdCompte, $pIdDetailCommande, $pIdModeleLot, $pIdOperation, $pIdNomProduit, $pUnite) { $lStock = new StockVO(); $lStock->setId($pId); $lStock->setDate($pDate); $lStock->setQuantite($pQuantite); $lStock->setType($pType); $lStock->setIdCompte($pIdCompte); $lStock->setIdDetailCommande($pIdDetailCommande); $lStock->setIdModeleLot($pIdModeleLot); $lStock->setIdOperation($pIdOperation); $lStock->setIdNomProduit($pIdNomProduit); $lStock->setUnite($pUnite); return $lStock; }
/** * @name enregistrerBonDeCommande($pParam) * @return AfficheListeProduitBonDeCommandeResponse * @desc Enregistre le bon de commande. */ public function enregistrerBonDeCommande($pParam) { $lVr = ProduitsBonDeCommandeValid::validAjout($pParam); if ($lVr->getValid()) { $lIdMarche = $pParam["id_commande"]; $lIdCompteFerme = $pParam["id_compte_ferme"]; $lProduits = $pParam["produits"]; // On enregistre uniquement les produits avec à minima quantité (même si prix à 0) // Calcul du total $lTotal = 0; $lProduitsValide = array(); foreach ($lProduits as $lProduit) { if ($lProduit["quantite"] > 0) { array_push($lProduitsValide, $lProduit); } $lTotal += $lProduit["prix"]; } // Récupère l'opération Bon de commande si elle existe $lOperationService = new OperationService(); $lOperations = $lOperationService->getBonCommande($lIdMarche, $lIdCompteFerme); $lIdOperation = $lOperations[0]->getId(); if (is_null($lIdOperation)) { // Si il n'y a pas d'opération de Bon de commande $lOperation = new OperationDetailVO(); $lOperation->setIdCompte($lIdCompteFerme); $lOperation->setLibelle('Bon de Commande'); $lOperation->setTypePaiement(5); $lOperationChampComplementaire = new OperationChampComplementaireVO(); $lOperationChampComplementaire->setChcpId(1); $lOperationChampComplementaire->setValeur($lIdMarche); $lOperation->setChampComplementaire(array($lOperationChampComplementaire)); } else { $lOperation = $lOperations[0]; } $lOperation->setMontant($lTotal); $lIdOperation = $lOperationService->set($lOperation); // Ajout ou mise à jour de l'operation $lBonCommande = InfoBonCommandeViewManager::selectInfoBonCommande($lIdMarche, $lIdCompteFerme); $lDetailOperationService = new DetailOperationService(); $lStockService = new StockService(); foreach ($lProduitsValide as $lProduit) { $lMaj = false; foreach ($lBonCommande as $lBon) { if ($lProduit["dcomId"] == $lBon->getDcomId()) { $lMaj = true; //$lDcom = DetailCommandeManager::selectByIdProduit($lProduit["id"]); $lStock = new StockVO(); $lStock->setId($lBon->getStoId()); $lStock->setQuantite($lProduit["quantite"]); $lStock->setType(3); $lStock->setIdCompte($lIdCompteFerme); $lStock->setIdDetailCommande($lProduit["dcomId"]); $lStock->setIdOperation($lIdOperation); $lStockService->set($lStock); $lDetailOperation = $lDetailOperationService->get($lBon->getDopeId()); $lDetailOperation->setIdOperation($lIdOperation); $lDetailOperation->setIdCompte($lIdCompteFerme); $lDetailOperation->setMontant($lProduit["prix"]); $lDetailOperation->setLibelle('Bon de Commande'); $lDetailOperation->setTypePaiement(5); $lDetailOperationService->set($lDetailOperation); } } if (!$lMaj) { //$lDcom = DetailCommandeManager::selectByIdProduit($lProduit["id"]); $lStock = new StockVO(); $lStock->setQuantite($lProduit["quantite"]); $lStock->setType(3); $lStock->setIdCompte($lIdCompteFerme); $lStock->setIdDetailCommande($lProduit["dcomId"]); $lStock->setIdOperation($lIdOperation); $lStockService->set($lStock); $lDetailOperation = new DetailOperationVO(); $lDetailOperation->setIdOperation($lIdOperation); $lDetailOperation->setIdCompte($lIdCompteFerme); $lDetailOperation->setMontant($lProduit["prix"]); $lDetailOperation->setLibelle('Bon de Commande'); $lDetailOperation->setTypePaiement(5); //$lDetailOperation->setTypePaiementChampComplementaire($lProduit["id"]); $lDetailOperation->setIdDetailCommande($lProduit["dcomId"]); $lDetailOperationService->set($lDetailOperation); } } foreach ($lBonCommande as $lBon) { $lDelete = true; foreach ($lProduitsValide as $lProduit) { if ($lProduit["dcomId"] == $lBon->getDcomId()) { $lDelete = false; } } if ($lDelete) { $lStockService->delete($lBon->getStoId()); $lDetailOperationService->delete($lBon->getDopeId()); } } } return $lVr; }