/** * @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 select($pId, $pActive) * @param IdReservationVO * @param bool * @return ReservationVO * @desc Retourne une Reservation */ public function select($pId, $pActive = false) { $lOperations = $this->selectOperationReservation($pId, $pActive); $lReservation = new ReservationVO(); $lReservation->setId($pId); // Recherche du détail de la reservation $lDetailOperationService = new DetailOperationService(); $lStockService = new StockService(); if (!is_null($lOperations[0]->getTypePaiement())) { $lReservation->setEtat($lOperations[0]->getTypePaiement()); switch ($lOperations[0]->getTypePaiement()) { /* case 7: // Un achat foreach($lOperations as $lOperation) { if($lOperation->getTypePaiement() == 7) { // Mise à jour du détail de réservation à partir de l'historique du stock HistoriqueStockManager::selectReservation($lOperation->getId(), $lReservation); $lReservation->setTotal($lOperation->getMontant()); } } break;*/ case 22: // Reservation achetée // Reservation achetée case 0: // Reservation en cours $lOperation = $lOperations[0]; $lDetailsReservation = ReservationDetailViewManager::selectDetail($lOperation->getId(), 0, 0); foreach ($lDetailsReservation as $lDetail) { if ($lDetail->getDopeTypePaiement() == 0) { $lDetailReservation = new DetailReservationVO(); $lDetailReservation->getId()->setIdStock($lDetail->getStoId()); $lDetailReservation->getId()->setIdDetailOperation($lDetail->getDopeId()); $lDetailReservation->setIdDetailCommande($lDetail->getStoIdDetailCommande()); $lDetailReservation->setMontant($lDetail->getDopeMontant()); $lDetailReservation->setQuantite($lDetail->getStoQuantite()); $lDetailReservation->setIdProduit($lDetail->getDcomIdProduit()); $lDetailReservation->setIdNomProduit($lDetail->getDcomIdNomProduit()); $lDetailReservation->setUnite($lDetail->getStoUnite()); $lReservation->addDetailReservation($lDetailReservation); } } $lReservation->setTotal($lOperation->getMontant()); break; case 15: // Reservation non récupérée $lOperation = $lOperations[0]; $lDetailsReservation = ReservationDetailViewManager::selectDetail($lOperation->getId(), 15, 5); foreach ($lDetailsReservation as $lDetail) { if ($lDetail->getDopeTypePaiement() == 15) { $lDetailReservation = new DetailReservationVO(); $lDetailReservation->getId()->setIdStock($lDetail->getStoId()); $lDetailReservation->getId()->setIdDetailOperation($lDetail->getDopeId()); $lDetailReservation->setIdDetailCommande($lDetail->getStoIdDetailCommande()); $lDetailReservation->setMontant($lDetail->getDopeMontant()); $lDetailReservation->setQuantite($lDetail->getStoQuantite()); $lDetailReservation->setIdProduit($lDetail->getDcomIdProduit()); $lDetailReservation->setIdNomProduit($lDetail->getDcomIdNomProduit()); $lDetailReservation->setUnite($lDetail->getStoUnite()); $lReservation->addDetailReservation($lDetailReservation); } } $lReservation->setTotal($lOperation->getMontant()); break; case 16: // Reservation annulée $lOperation = $lOperations[0]; $lDetailsReservation = ReservationDetailViewManager::selectDetail($lOperation->getId(), 16, 6); foreach ($lDetailsReservation as $lDetail) { if ($lDetail->getDopeTypePaiement() == 16) { $lDetailReservation = new DetailReservationVO(); $lDetailReservation->getId()->setIdStock($lDetail->getStoId()); $lDetailReservation->getId()->setIdDetailOperation($lDetail->getDopeId()); $lDetailReservation->setIdDetailCommande($lDetail->getStoIdDetailCommande()); $lDetailReservation->setMontant($lDetail->getDopeMontant()); $lDetailReservation->setQuantite($lDetail->getStoQuantite()); $lDetailReservation->setIdProduit($lDetail->getDcomIdProduit()); $lDetailReservation->setIdNomProduit($lDetail->getDcomIdNomProduit()); $lDetailReservation->setUnite($lDetail->getStoUnite()); $lReservation->addDetailReservation($lDetailReservation); } } $lReservation->setTotal($lOperation->getMontant()); break; } } return $lReservation; }
/** * @name modifierAchat($pParam) * @return ListeReservationCommandeVR * @desc Met à jour une réservation */ public function modifierAchat($pParam) { $lVr = AfficheAchatAdherentValid::validModifierAchat($pParam); if ($lVr->getValid()) { $lAchatData = $pParam["achat"]; $lAchat = new AchatVO(); if ($lAchatData['idAchat'] < 0) { // Si c'est un ajout $lVr = AfficheAchatAdherentValid::validAjoutAchat($lAchatData); if ($lVr->getValid()) { // Recherche si il y a une réservation $lIdReservation = new IdReservationVO(); $lIdReservation->setIdCompte($lAchatData["idCompte"]); $lIdReservation->setIdCommande($lAchatData["idMarche"]); $lReservationService = new ReservationService(); $lOperations = $lReservationService->selectOperationReservation($lIdReservation); if ($lOperations[0]->getTypePaiement() == 0) { $lAchat->getId()->setIdReservation($lOperations[0]->getId()); } $lAchat->getId()->setIdCompte($lAchatData["idCompte"]); $lAchat->getId()->setIdCommande($lAchatData["idMarche"]); foreach ($lAchatData["produits"] as $lDetail) { $lDetailCommande = DetailCommandeManager::selectByIdProduit($lDetail["id"]); $lDetailAchat = new DetailReservationVO(); $lDetailAchat->setIdDetailCommande($lDetailCommande[0]->getId()); $lDetailAchat->setQuantite($lDetail["quantite"]); $lDetailAchat->setMontant($lDetail["prix"]); $lProduit = ProduitManager::select($lDetail["id"]); $lDetailAchat->setIdNomProduit($lProduit->getIdNomProduit()); $lDetailAchat->setUnite($lProduit->getUniteMesure()); if ($lAchatData["idAchat"] == -1) { $lAchat->addDetailAchat($lDetailAchat); } else { if ($lAchatData["idAchat"] == -2) { $lAchat->addDetailAchatSolidaire($lDetailAchat); } } } } else { return $lVr; } } else { $lOperationService = new OperationService(); $lOperation = $lOperationService->get($lAchatData["idAchat"]); $lAchat = new AchatVO(); $lAchat->getId()->setIdCompte($lOperation->getIdCompte()); $lAchat->getId()->setIdCommande($lOperation->getIdCommande()); $lAchat->getId()->setIdAchat($lOperation->getId()); foreach ($lAchatData["produits"] as $lDetail) { $lDetailCommande = DetailCommandeManager::selectByIdProduit($lDetail["id"]); $lDetailAchat = new DetailReservationVO(); $lDetailAchat->setIdDetailCommande($lDetailCommande[0]->getId()); $lDetailAchat->setQuantite($lDetail["quantite"]); $lDetailAchat->setMontant($lDetail["prix"]); $lProduit = ProduitManager::select($lDetail["id"]); $lDetailAchat->setIdNomProduit($lProduit->getIdNomProduit()); $lDetailAchat->setUnite($lProduit->getUniteMesure()); if ($lOperation->getTypePaiement() == 7) { $lAchat->addDetailAchat($lDetailAchat); } else { if ($lOperation->getTypePaiement() == 8) { $lAchat->addDetailAchatSolidaire($lDetailAchat); } } } } $lAchatService = new AchatService(); $lIdOperation = $lAchatService->set($lAchat); } return $lVr; }
/** * @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 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 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; }