/** * @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 validAjout($pData) * @return ProduitBonDeLivraisonVR * @desc Test la validite de l'élément */ public static function validAjout($pData) { $lVr = new ProduitBonDeLivraisonVR(); //Tests inputs if (!isset($pData['id'])) { $lVr->setValid(false); $lVr->getId()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_201_CODE); $lErreur->setMessage(MessagesErreurs::ERR_201_MSG); $lVr->getId()->addErreur($lErreur); } if (!isset($pData['quantite'])) { $lVr->setValid(false); $lVr->getQuantite()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_201_CODE); $lErreur->setMessage(MessagesErreurs::ERR_201_MSG); $lVr->getQuantite()->addErreur($lErreur); } if (!isset($pData['prix'])) { $lVr->setValid(false); $lVr->getPrix()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_201_CODE); $lErreur->setMessage(MessagesErreurs::ERR_201_MSG); $lVr->getPrix()->addErreur($lErreur); } if ($lVr->getValid()) { //Tests Techniques if (!is_int((int) $pData['id'])) { $lVr->setValid(false); $lVr->getId()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_104_CODE); $lErreur->setMessage(MessagesErreurs::ERR_104_MSG); $lVr->getId()->addErreur($lErreur); } if ($pData['quantite'] != '' && (!TestFonction::checkLength($pData['quantite'], 0, 12) || $pData['quantite'] > 999999999.99)) { $lVr->setValid(false); $lVr->getQuantite()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_101_CODE); $lErreur->setMessage(MessagesErreurs::ERR_101_MSG); $lVr->getQuantite()->addErreur($lErreur); } if ($pData['quantite'] != '' && !is_float((double) $pData['quantite'])) { $lVr->setValid(false); $lVr->getQuantite()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_109_CODE); $lErreur->setMessage(MessagesErreurs::ERR_109_MSG); $lVr->getQuantite()->addErreur($lErreur); } if ($pData['prix'] != '' && (!TestFonction::checkLength($pData['prix'], 0, 12) || $pData['prix'] > 999999999.99)) { $lVr->setValid(false); $lVr->getPrix()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_101_CODE); $lErreur->setMessage(MessagesErreurs::ERR_101_MSG); $lVr->getPrix()->addErreur($lErreur); } if ($pData['prix'] != '' && !is_float((double) $pData['prix'])) { $lVr->setValid(false); $lVr->getPrix()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_109_CODE); $lErreur->setMessage(MessagesErreurs::ERR_109_MSG); $lVr->getPrix()->addErreur($lErreur); } if ($pData['quantiteSolidaire'] != '' && (!TestFonction::checkLength($pData['quantiteSolidaire'], 0, 12) || $pData['quantiteSolidaire'] > 999999999.99)) { $lVr->setValid(false); $lVr->getQuantiteSolidaire()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_101_CODE); $lErreur->setMessage(MessagesErreurs::ERR_101_MSG); $lVr->getQuantiteSolidaire()->addErreur($lErreur); } if ($pData['quantiteSolidaire'] != '' && !is_float((double) $pData['quantiteSolidaire'])) { $lVr->setValid(false); $lVr->getQuantiteSolidaire()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_109_CODE); $lErreur->setMessage(MessagesErreurs::ERR_109_MSG); $lVr->getQuantiteSolidaire()->addErreur($lErreur); } //Tests Fonctionnels if (empty($pData['id'])) { $lVr->setValid(false); $lVr->getId()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_201_CODE); $lErreur->setMessage(MessagesErreurs::ERR_201_MSG); $lVr->getId()->addErreur($lErreur); } if ($pData['prix'] != '' && empty($pData['quantite'])) { $lVr->setValid(false); $lVr->getQuantite()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_201_CODE); $lErreur->setMessage(MessagesErreurs::ERR_201_MSG); $lVr->getQuantite()->addErreur($lErreur); } if ($pData['prix'] != '' && empty($pData['prix'])) { $lVr->setValid(false); $lVr->getPrix()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_201_CODE); $lErreur->setMessage(MessagesErreurs::ERR_201_MSG); $lVr->getPrix()->addErreur($lErreur); } if ($pData['quantite'] != '' && $pData['quantite'] < 0) { $lVr->setValid(false); $lVr->getQuantite()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_215_CODE); $lErreur->setMessage(MessagesErreurs::ERR_215_MSG); $lVr->getQuantite()->addErreur($lErreur); } if ($pData['prix'] != '' && $pData['prix'] < 0) { $lVr->setValid(false); $lVr->getPrix()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_215_CODE); $lErreur->setMessage(MessagesErreurs::ERR_215_MSG); $lVr->getPrix()->addErreur($lErreur); } if ($pData['quantiteSolidaire'] != '' && $pData['quantiteSolidaire'] < 0) { $lVr->setValid(false); $lVr->getQuantiteSolidaire()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_215_CODE); $lErreur->setMessage(MessagesErreurs::ERR_215_MSG); $lVr->getQuantiteSolidaire()->addErreur($lErreur); } $lDcom = DetailCommandeManager::selectByIdProduit($pData["id"]); if ($lDcom[0]->getIdProduit() != $pData["id"]) { $lVr->setValid(false); $lVr->getLog()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_216_CODE); $lErreur->setMessage(MessagesErreurs::ERR_216_MSG); $lVr->getLog()->addErreur($lErreur); } } return $lVr; }
/** * @name update($pAchat) * @param AchatVO * @return integer * @desc Met à jour un achat */ private function update($pAchat) { $lOperationService = new OperationService(); // Rechargement $lIdRechargement = $pAchat->getRechargement()->getId(); $lCompteRechargement = $pAchat->getRechargement()->getIdCompte(); $lMajRechargement = false; if (!empty($lIdRechargement) && !is_null($lIdRechargement)) { $lMontantRechargement = $pAchat->getRechargement()->getMontant(); if (!empty($lMontantRechargement) && !is_null($lMontantRechargement)) { // Maj du rechargement $lMajRechargement = true; $lIdRechargement = $lOperationService->set($pAchat->getRechargement()); } else { if ($lMontantRechargement == 0) { // Suppression du rechargement $lOperationService->delete($lIdRechargement); $lIdRechargement = NULL; } } } else { if (!empty($lCompteRechargement) && !is_null($lCompteRechargement)) { // Ajout du rechargement $pAchat->getRechargement()->setLibelle('Rechargement'); $lIdRechargement = $lOperationService->set($pAchat->getRechargement()); } } //$lIdOperationAchat = 0; //$lIdOperationAchatSolidaire = 0; $lIdCompte = 0; $lIdMarche = 0; $lLibelleOperation = ''; $lLibelleOperationSolidaire = ''; $lAchatActuel = NULL; $lIdOperationAchatActuel = 0; $lIdOperationAchatSolidaireActuel = 0; // Achat $lIdOperationAchat = $pAchat->getOperationAchat()->getId(); $lTestCompteAchat = $pAchat->getOperationAchat()->getIdCompte(); $lMajAchat = false; if (!empty($lIdOperationAchat) && !is_null($lIdOperationAchat)) { $lAchatActuel = $this->select($lIdOperationAchat); $lIdOperationAchatActuel = $lIdOperationAchat; $lMontantAchat = $pAchat->getOperationAchat()->getMontant(); $ltestChampComplementaire = $pAchat->getOperationAchat()->getChampComplementaire(); $lIdOperationZeybu = $ltestChampComplementaire[8]->getValeur(); $lLibelleOperation = $pAchat->getOperationAchat()->getLibelle(); $lIdCompte = $pAchat->getOperationAchat()->getIdCompte(); if (isset($ltestChampComplementaire[1])) { $lIdMarche = $ltestChampComplementaire[1]->getValeur(); } if (!empty($lMontantAchat) && !is_null($lMontantAchat)) { // Maj de l'achat $lMajAchat = true; $lIdOperationAchat = $lOperationService->set($pAchat->getOperationAchat()); $lOperationZeybu = $lOperationService->getDetail($lIdOperationZeybu); $lOperationZeybu->setMontant($pAchat->getOperationAchat()->getMontant() * -1); $lOperationService->set($lOperationZeybu); } else { if ($lMontantAchat == 0) { // Suppression de l'achat $lOperationService->delete($lIdOperationAchat); $lOperationService->delete($lIdOperationZeybu); $lIdOperationAchat = NULL; } } } else { if (!empty($lTestCompteAchat) && !is_null($lTestCompteAchat)) { // Ajout Achat $lIdCompte = $pAchat->getOperationAchat()->getIdCompte(); $ltestChampComplementaire = $pAchat->getOperationAchat()->getChampComplementaire(); if (isset($ltestChampComplementaire[1])) { $lIdMarche = $ltestChampComplementaire[1]->getValeur(); $lMarcheService = new MarcheService(); $lMarche = $lMarcheService->getInfoMarche($lIdMarche); $lLibelleOperation = "Marché N°" . $lMarche->getNumero(); } else { $lLibelleOperation = "Achat du " . StringUtils::dateAujourdhuiFr(); } $pAchat->getOperationAchat()->setLibelle($lLibelleOperation); $lIdOperationAchat = $lOperationService->set($pAchat->getOperationAchat()); // Operation d'achat $lOperationZeybu = new OperationDetailVO(); $lOperationZeybu->setIdCompte(-1); $lOperationZeybu->setMontant($pAchat->getOperationAchat()->getMontant() * -1); $lOperationZeybu->setLibelle($lLibelleOperation); $lOperationZeybu->setTypePaiement($pAchat->getOperationAchat()->getTypePaiement()); $lOperationZeybuChampComplementaire = $pAchat->getOperationAchat()->getChampComplementaire(); $lOperationZeybuChampComplementaire[8] = new OperationChampComplementaireVO(null, 8, $lIdOperationAchat); $lOperationZeybu->setChampComplementaire($lOperationZeybuChampComplementaire); $lIdOperationZeybu = $lOperationService->set($lOperationZeybu); // Operation Zeybu } } // Achat Solidaire $lIdOperationAchatSolidaire = $pAchat->getOperationAchatSolidaire()->getId(); $lTestCompteAchatSolidaire = $pAchat->getOperationAchatSolidaire()->getIdCompte(); $lMajAchatSolidaire = false; if (!empty($lIdOperationAchatSolidaire) && !is_null($lIdOperationAchatSolidaire)) { if (is_null($lAchatActuel)) { $lAchatActuel = $this->select($lIdOperationAchatSolidaire); } $lIdOperationAchatSolidaireActuel = $lIdOperationAchatSolidaire; $lMontantAchatSolidaire = $pAchat->getOperationAchatSolidaire()->getMontant(); $ltestChampComplementaire = $pAchat->getOperationAchatSolidaire()->getChampComplementaire(); $lIdOperationZeybuSolidaire = $ltestChampComplementaire[8]->getValeur(); $lLibelleOperationSolidaire = $pAchat->getOperationAchatSolidaire()->getLibelle(); $lIdCompte = $pAchat->getOperationAchatSolidaire()->getIdCompte(); if (isset($ltestChampComplementaire[1])) { $lIdMarche = $ltestChampComplementaire[1]->getValeur(); } if (!empty($lMontantAchatSolidaire) && !is_null($lMontantAchatSolidaire)) { // Maj de l'achat $lMajAchatSolidaire = true; $lIdOperationAchatSolidaire = $lOperationService->set($pAchat->getOperationAchatSolidaire()); $lOperationZeybuSolidaire = $lOperationService->getDetail($lIdOperationZeybuSolidaire); $lOperationZeybuSolidaire->setMontant($pAchat->getOperationAchatSolidaire()->getMontant() * -1); $lOperationService->set($lOperationZeybuSolidaire); } else { if ($lMontantAchatSolidaire == 0) { // Suppression de l'achat $lOperationService->delete($lIdOperationAchatSolidaire); $lOperationService->delete($lIdOperationZeybuSolidaire); $lIdOperationAchatSolidaire = NULL; } } } else { if (!empty($lTestCompteAchatSolidaire) && !is_null($lTestCompteAchatSolidaire)) { $lIdCompte = $pAchat->getOperationAchatSolidaire()->getIdCompte(); $ltestChampComplementaire = $pAchat->getOperationAchatSolidaire()->getChampComplementaire(); if (isset($ltestChampComplementaire[1])) { if (!isset($lMarche)) { // Pour éviter de lancer 2 fois la requête $lIdMarche = $ltestChampComplementaire[1]->getValeur(); $lMarcheService = new MarcheService(); $lMarche = $lMarcheService->getInfoMarche($lIdMarche); } $lLibelleOperationSolidaire = "Marché Solidaire N°" . $lMarche->getNumero(); } else { $lLibelleOperationSolidaire = "Achat Solidaire du " . StringUtils::dateAujourdhuiFr(); } $pAchat->getOperationAchatSolidaire()->setLibelle($lLibelleOperationSolidaire); $lIdOperationAchatSolidaire = $lOperationService->set($pAchat->getOperationAchatSolidaire()); // Operation d'achat Solidaire $lOperationZeybuSolidaire = new OperationDetailVO(); $lOperationZeybuSolidaire->setIdCompte(-1); $lOperationZeybuSolidaire->setMontant($pAchat->getOperationAchatSolidaire()->getMontant() * -1); $lOperationZeybuSolidaire->setLibelle($lLibelleOperationSolidaire); $lOperationZeybuSolidaire->setTypePaiement($pAchat->getOperationAchatSolidaire()->getTypePaiement()); $lOperationZeybuSolidaireChampComplementaire = $pAchat->getOperationAchatSolidaire()->getChampComplementaire(); $lOperationZeybuSolidaireChampComplementaire[8] = new OperationChampComplementaireVO(null, 8, $lIdOperationAchatSolidaire); $lOperationZeybuSolidaire->setChampComplementaire($lOperationZeybuSolidaireChampComplementaire); $lIdOperationZeybuSolidaire = $lOperationService->set($lOperationZeybuSolidaire); // Operation Zeybu solidaire } } // Liaison Rechargement if (!is_null($lIdRechargement)) { $lMaj = false; $lRechargementChampComplementaire = $pAchat->getRechargement()->getChampComplementaire(); if (!is_null($lIdOperationAchat)) { $lMaj = true; $lRechargementChampComplementaire[12] = new OperationChampComplementaireVO(null, 12, $lIdOperationAchat); } else { if (is_null($lIdOperationAchat)) { unset($lRechargementChampComplementaire[12]); } } if (!is_null($lIdOperationAchatSolidaire)) { $lMaj = true; $lRechargementChampComplementaire[13] = new OperationChampComplementaireVO(null, 13, $lIdOperationAchatSolidaire); } else { if (is_null($lIdOperationAchatSolidaire)) { unset($lRechargementChampComplementaire[13]); } } if ($lMaj) { $pAchat->getRechargement()->setChampComplementaire($lRechargementChampComplementaire); $lOperationService->set($pAchat->getRechargement()); } } // Liaison achat if (!is_null($lIdOperationAchat)) { $lChampComplementaire = $pAchat->getOperationAchat()->getChampComplementaire(); $lChampComplementaire[8] = new OperationChampComplementaireVO(null, 8, $lIdOperationZeybu); if (!is_null($lIdRechargement)) { $lChampComplementaire[14] = new OperationChampComplementaireVO(null, 14, $lIdRechargement); } else { if (is_null($lIdRechargement)) { unset($lChampComplementaire[14]); } } if (!is_null($lIdOperationAchatSolidaire)) { $lChampComplementaire[13] = new OperationChampComplementaireVO(null, 13, $lIdOperationAchatSolidaire); } else { if (is_null($lIdOperationAchatSolidaire)) { unset($lChampComplementaire[13]); } } $pAchat->getOperationAchat()->setChampComplementaire($lChampComplementaire); $lOperationService->set($pAchat->getOperationAchat()); // Operation d'achat avec lien operation zeybu } // Liaison Achat Solidaire if (!is_null($lIdOperationAchatSolidaire)) { $lChampComplementaireSolidaire = $pAchat->getOperationAchatSolidaire()->getChampComplementaire(); $lChampComplementaireSolidaire[8] = new OperationChampComplementaireVO(null, 8, $lIdOperationZeybuSolidaire); if (!is_null($lIdRechargement)) { $lChampComplementaireSolidaire[14] = new OperationChampComplementaireVO(null, 14, $lIdRechargement); } else { if (is_null($lIdRechargement)) { unset($lChampComplementaireSolidaire[14]); } } if (!is_null($lIdOperationAchat)) { $lChampComplementaireSolidaire[12] = new OperationChampComplementaireVO(null, 12, $lIdOperationAchat); } else { if (is_null($lIdOperationAchat)) { unset($lChampComplementaireSolidaire[12]); } } $pAchat->getOperationAchatSolidaire()->setChampComplementaire($lChampComplementaireSolidaire); $lOperationService->set($pAchat->getOperationAchatSolidaire()); // Operation d'achat solidaire avec lien operation zeybu } // Ajout des produits $lIdModeleLot = array(); $lIdDetailCommande = array(); foreach ($pAchat->getProduits() as $lProduit) { $lTestModeleLot = $lProduit->getIdModeleLot(); $lTestDetailCommande = $lProduit->getIdDetailCommande(); if (!empty($lTestModeleLot) && !is_null($lTestModeleLot)) { array_push($lIdModeleLot, $lTestModeleLot); } else { if (!empty($lTestDetailCommande) && !is_null($lTestDetailCommande)) { array_push($lIdDetailCommande, $lTestDetailCommande); } } $lTestModeleLotSolidaire = $lProduit->getIdModeleLotSolidaire(); $lTestDetailCommandeSolidaire = $lProduit->getIdDetailCommandeSolidaire(); if (!empty($lTestModeleLotSolidaire) && !is_null($lTestModeleLotSolidaire)) { array_push($lIdModeleLot, $lTestModeleLotSolidaire); } else { if (!empty($lTestDetailCommandeSolidaire) && !is_null($lTestDetailCommandeSolidaire)) { array_push($lIdDetailCommande, $lTestDetailCommandeSolidaire); } } } if (!empty($lIdModeleLot)) { $lListeModeleLot = ModeleLotManager::selectByArray($lIdModeleLot); } if (!empty($lIdDetailCommande)) { $lListeDetailCommande = DetailCommandeManager::selectByArrayClassByDcomId($lIdDetailCommande); } // Suppression de l'ensemble des lignes de produit qui seront à nouveau insérées DetailAchatManager::delete($lIdOperationAchatActuel, $lIdOperationAchatSolidaireActuel); $lDetailOperationService = new DetailOperationService(); $lStockService = new StockService(); foreach ($lAchatActuel->getProduits() as $lProduitInital) { $lMaj = false; foreach ($pAchat->getProduits() as $lProduitMaj) { if ($lProduitInital->getIdStock() == $lProduitMaj->getIdStock() && $lProduitInital->getIdDetailOperation() == $lProduitMaj->getIdDetailOperation() && $lProduitInital->getIdStockSolidaire() == $lProduitMaj->getIdStockSolidaire() && $lProduitInital->getIdDetailOperationSolidaire() == $lProduitMaj->getIdDetailOperationSolidaire()) { // Modification $lMaj = true; // Stock $lIdStock = 0; $lIdDetailOperation = 0; if ($lProduitInital->getIdStock() == 0 && $lProduitMaj->getQuantite() < 0) { // Ajout $lUnite = ''; $lTestModeleLot = $lProduitMaj->getIdModeleLot(); $lTestDetailCommande = $lProduitMaj->getIdDetailCommande(); if (!empty($lTestModeleLot) && !is_null($lTestModeleLot)) { $lUnite = $lListeModeleLot[$lTestModeleLot]->getUnite(); } else { if (!empty($lTestDetailCommande) && !is_null($lTestDetailCommande)) { $lUnite = $lListeDetailCommande[$lTestDetailCommande]->getUnite(); } } $lIdStock = $lStockService->set(new StockVO(null, null, $lProduitMaj->getQuantite(), 1, $lIdCompte, $lProduitMaj->getIdDetailCommande(), $lProduitMaj->getIdModeleLot(), $lIdOperationAchat, $lProduitMaj->getIdNomProduit(), $lUnite)); // Prix $lIdDetailOperation = $lDetailOperationService->set(new DetailOperationVO(null, $lIdOperationAchat, $lIdCompte, $lProduitMaj->getMontant(), $lLibelleOperation, null, 7, $lProduitMaj->getIdDetailCommande(), $lProduitMaj->getIdModeleLot(), $lProduitMaj->getIdNomProduit(), null)); } else { if ($lProduitInital->getIdStock() != 0 && $lProduitMaj->getQuantite() < 0) { // Modification $lStockInitial = $lStockService->get($lProduitInital->getIdStock()); $lIdStock = $lStockInitial->getId(); $lStockInitial->setQuantite($lProduitMaj->getQuantite()); $lStockService->set($lStockInitial); // Prix $lDetailOperationInitial = $lDetailOperationService->get($lProduitInital->getIdDetailOperation()); $lIdDetailOperation = $lDetailOperationInitial->getId(); $lDetailOperationInitial->setMontant($lProduitMaj->getMontant()); $lDetailOperationService->set($lDetailOperationInitial); } else { // Suppression $lStockService->delete($lProduitInital->getIdStock()); $lDetailOperationService->delete($lProduitInital->getIdDetailOperation()); } } // Stock Solidaire $lIdStockSolidaire = 0; $lIdDetailOperationSolidaire = 0; if ($lProduitInital->getIdStockSolidaire() == 0 && $lProduitMaj->getQuantiteSolidaire() < 0) { $lUniteSolidaire = ''; $lTestModeleLotSolidaire = $lProduitMaj->getIdModeleLotSolidaire(); $lTestDetailCommandeSolidaire = $lProduitMaj->getIdDetailCommandeSolidaire(); if (!empty($lTestModeleLotSolidaire) && !is_null($lTestModeleLotSolidaire)) { $lUniteSolidaire = $lListeModeleLot[$lTestModeleLotSolidaire]->getUnite(); } else { if (!empty($lTestDetailCommandeSolidaire) && !is_null($lTestDetailCommandeSolidaire)) { $lUniteSolidaire = $lListeDetailCommande[$lTestDetailCommandeSolidaire]->getUnite(); } } $lIdStockSolidaire = $lStockService->set(new StockVO(null, null, $lProduitMaj->getQuantiteSolidaire(), 2, $lIdCompte, $lProduitMaj->getIdDetailCommandeSolidaire(), $lProduitMaj->getIdModeleLotSolidaire(), $lIdOperationAchatSolidaire, $lProduitMaj->getIdNomProduit(), $lUniteSolidaire)); // Prix $lIdDetailOperationSolidaire = $lDetailOperationService->set(new DetailOperationVO(null, $lIdOperationAchatSolidaire, $lIdCompte, $lProduitMaj->getMontantSolidaire(), $lLibelleOperationSolidaire, null, 8, $lProduitMaj->getIdDetailCommandeSolidaire(), $lProduitMaj->getIdModeleLotSolidaire(), $lProduitMaj->getIdNomProduit(), null)); } else { if ($lProduitInital->getIdStockSolidaire() != 0 && $lProduitMaj->getQuantiteSolidaire() < 0) { // Modification $lStockInitialSolidaire = $lStockService->get($lProduitInital->getIdStockSolidaire()); $lIdStockSolidaire = $lStockInitialSolidaire->getId(); $lStockInitialSolidaire->setQuantite($lProduitMaj->getQuantiteSolidaire()); $lStockService->set($lStockInitialSolidaire); // Prix $lDetailOperationInitialSolidaire = $lDetailOperationService->get($lProduitInital->getIdDetailOperationSolidaire()); $lIdDetailOperationSolidaire = $lDetailOperationInitialSolidaire->getId(); $lDetailOperationInitialSolidaire->setMontant($lProduitMaj->getMontantSolidaire()); $lDetailOperationService->set($lDetailOperationInitialSolidaire); } else { // Suppression $lStockService->delete($lProduitInital->getIdStockSolidaire()); $lDetailOperationService->delete($lProduitInital->getIdDetailOperationSolidaire()); } } if ($lProduitMaj->getQuantiteSolidaire() < 0 || $lProduitMaj->getQuantite() < 0) { // Pas d'ajout de ligne vide DetailAchatManager::insert(new DetailAchatVO($lIdOperationAchat, $lIdOperationAchatSolidaire, $lProduitMaj->getIdNomProduit(), $lIdStock, $lIdDetailOperation, $lIdStockSolidaire, $lIdDetailOperationSolidaire)); } } } if (!$lMaj) { // Suppression $lStockService->delete($lProduitInital->getIdStock()); $lDetailOperationService->delete($lProduitInital->getIdDetailOperation()); $lStockService->delete($lProduitInital->getIdStockSolidaire()); $lDetailOperationService->delete($lProduitInital->getIdDetailOperationSolidaire()); } } foreach ($pAchat->getProduits() as $lProduitMaj) { $lMaj = false; foreach ($lAchatActuel->getProduits() as $lProduitInital) { if ($lProduitInital->getIdStock() == $lProduitMaj->getIdStock() && $lProduitInital->getIdDetailOperation() == $lProduitMaj->getIdDetailOperation() && $lProduitInital->getIdStockSolidaire() == $lProduitMaj->getIdStockSolidaire() && $lProduitInital->getIdDetailOperationSolidaire() == $lProduitMaj->getIdDetailOperationSolidaire()) { // Modification $lMaj = true; } } if (!$lMaj) { // Ajout // Stock $lIdStock = 0; $lIdDetailOperation = 0; if ($lProduitMaj->getQuantite() < 0) { $lUnite = ''; $lTestModeleLot = $lProduitMaj->getIdModeleLot(); $lTestDetailCommande = $lProduitMaj->getIdDetailCommande(); if (!empty($lTestModeleLot) && !is_null($lTestModeleLot)) { $lUnite = $lListeModeleLot[$lTestModeleLot]->getUnite(); } else { if (!empty($lTestDetailCommande) && !is_null($lTestDetailCommande)) { $lUnite = $lListeDetailCommande[$lTestDetailCommande]->getUnite(); } } $lIdStock = $lStockService->set(new StockVO(null, null, $lProduitMaj->getQuantite(), 1, $lIdCompte, $lProduitMaj->getIdDetailCommande(), $lProduitMaj->getIdModeleLot(), $lIdOperationAchat, $lProduitMaj->getIdNomProduit(), $lUnite)); // Prix $lIdDetailOperation = $lDetailOperationService->set(new DetailOperationVO(null, $lIdOperationAchat, $lIdCompte, $lProduitMaj->getMontant(), $lLibelleOperation, null, 7, $lProduitMaj->getIdDetailCommande(), $lProduitMaj->getIdModeleLot(), $lProduitMaj->getIdNomProduit(), null)); } // Stock Solidaire $lIdStockSolidaire = 0; $lIdDetailOperationSolidaire = 0; if ($lProduitMaj->getQuantiteSolidaire() < 0) { $lUniteSolidaire = ''; $lTestModeleLotSolidaire = $lProduitMaj->getIdModeleLotSolidaire(); $lTestDetailCommandeSolidaire = $lProduitMaj->getIdDetailCommandeSolidaire(); if (!empty($lTestModeleLotSolidaire) && !is_null($lTestModeleLotSolidaire)) { $lUniteSolidaire = $lListeModeleLot[$lTestModeleLotSolidaire]->getUnite(); } else { if (!empty($lTestDetailCommandeSolidaire) && !is_null($lTestDetailCommandeSolidaire)) { $lUniteSolidaire = $lListeDetailCommande[$lTestDetailCommandeSolidaire]->getUnite(); } } $lIdStockSolidaire = $lStockService->set(new StockVO(null, null, $lProduitMaj->getQuantiteSolidaire(), 2, $lIdCompte, $lProduitMaj->getIdDetailCommandeSolidaire(), $lProduitMaj->getIdModeleLotSolidaire(), $lIdOperationAchatSolidaire, $lProduitMaj->getIdNomProduit(), $lUniteSolidaire)); // Prix $lIdDetailOperationSolidaire = $lDetailOperationService->set(new DetailOperationVO(null, $lIdOperationAchatSolidaire, $lIdCompte, $lProduitMaj->getMontantSolidaire(), $lLibelleOperationSolidaire, null, 8, $lProduitMaj->getIdDetailCommandeSolidaire(), $lProduitMaj->getIdModeleLotSolidaire(), $lProduitMaj->getIdNomProduit(), null)); } if ($lProduitMaj->getQuantiteSolidaire() < 0 || $lProduitMaj->getQuantite() < 0) { // Pas d'ajout de ligne vide DetailAchatManager::insert(new DetailAchatVO($lIdOperationAchat, $lIdOperationAchatSolidaire, $lProduitMaj->getIdNomProduit(), $lIdStock, $lIdDetailOperation, $lIdStockSolidaire, $lIdDetailOperationSolidaire)); } } } // Retourne l'Id de l'achat ou à defaut celui de l'achat solidaire $lIdRetour = $lIdOperationAchat; if ($lIdRetour == 0) { if ($lIdOperationAchatSolidaire != 0) { $lIdRetour = $lIdOperationAchatSolidaire; } else { $lIdRetour = $lIdRechargement; } } return $lIdRetour; }
/** * @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 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 }
<table cellspacing="0" style="width: 100%; text-align: left; font-size: 10pt;"> <thead> <tr> <th style="width: 55px; text-align: center; border: solid 1px black;" >Compte</th> <th style="width: 125px; text-align: center; border-top: solid 1px black; border-bottom: solid 1px black; border-right: solid 1px black;">Nom</th> <th style="width: 125px; text-align: center; border-top: solid 1px black; border-bottom: solid 1px black; border-right: solid 1px black;">Prénom</th> <th style="width: 95px; text-align: center; border-top: solid 1px black; border-bottom: solid 1px black; border-right: solid 1px black;">Tél.</th> <?php $lLots = array(); $lNbLignePrixProduit = 0; $j = 0; while ($j < $lNbProduitPage) { $lIdProduit = $lIdProduits[$i * $lLimitePaysage + $j]; $lProduits = ProduitManager::selectDetailProduits(array($lIdProduit)); $lProduit = $lProduits[0]; $lLots[$lIdProduit] = DetailCommandeManager::selectByIdProduit($lIdProduit); $lnbLignePrix = count($lLots[$lIdProduit]); if ($lNbLignePrixProduit < $lnbLignePrix) { $lNbLignePrixProduit = $lnbLignePrix; } $lLabelNomProduit = $lProduit->getNproNom(); if ($lProduit->getProType() == 2) { $lLabelNomProduit .= " (Abonnement)"; } ?> <th colspan="2" style="width: 80px; text-align: center; border-top: solid 1px black; border-bottom: solid 1px black; border-right: solid 1px black;"><?php echo $lLabelNomProduit; ?> </th> <?php
/** * @name validUpdate($pData) * @returnCommandeDetailReservationVR * @desc Test la validite de l'élément */ public static function validUpdate($pData) { $lVr = new CommandeDetailReservationVR(); //Tests inputs if (!isset($pData['stoQuantite'])) { $lVr->setValid(false); $lVr->getStoQuantite()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_201_CODE); $lErreur->setMessage(MessagesErreurs::ERR_201_MSG); $lVr->getStoQuantite()->addErreur($lErreur); } if (!isset($pData['stoIdDetailCommande'])) { $lVr->setValid(false); $lVr->getStoIdDetailCommande()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_201_CODE); $lErreur->setMessage(MessagesErreurs::ERR_201_MSG); $lVr->getStoIdDetailCommande()->addErreur($lErreur); } if (!isset($pData['idOperation'])) { $lVr->setValid(false); $lVr->getLog()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_201_CODE); $lErreur->setMessage(MessagesErreurs::ERR_201_MSG); $lVr->getLog()->addErreur($lErreur); } if ($lVr->getValid()) { //Tests Techniques if (!TestFonction::checkLength($pData['stoQuantite'], 0, 12) || $pData['stoQuantite'] > 999999999.99) { $lVr->setValid(false); $lVr->getStoQuantite()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_101_CODE); $lErreur->setMessage(MessagesErreurs::ERR_101_MSG); $lVr->getStoQuantite()->addErreur($lErreur); } if (!is_float((double) $pData['stoQuantite'])) { $lVr->setValid(false); $lVr->getStoQuantite()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_108_CODE); $lErreur->setMessage(MessagesErreurs::ERR_108_MSG); $lVr->getStoQuantite()->addErreur($lErreur); } if (!TestFonction::checkLength($pData['stoIdDetailCommande'], 0, 11)) { $lVr->setValid(false); $lVr->getStoIdDetailCommande()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_101_CODE); $lErreur->setMessage(MessagesErreurs::ERR_101_MSG); $lVr->getStoIdDetailCommande()->addErreur($lErreur); } if (!is_float((double) $pData['stoIdDetailCommande'])) { $lVr->setValid(false); $lVr->getStoIdDetailCommande()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_108_CODE); $lErreur->setMessage(MessagesErreurs::ERR_108_MSG); $lVr->getStoIdDetailCommande()->addErreur($lErreur); } if (!is_int((int) $pData['idOperation'])) { $lVr->setValid(false); $lVr->getLog()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_104_CODE); $lErreur->setMessage(MessagesErreurs::ERR_104_MSG); $lVr->getLog()->addErreur($lErreur); } //Tests Fonctionnels if (empty($pData['stoQuantite'])) { $lVr->setValid(false); $lVr->getStoQuantite()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_201_CODE); $lErreur->setMessage(MessagesErreurs::ERR_201_MSG); $lVr->getStoQuantite()->addErreur($lErreur); } if (empty($pData['stoIdDetailCommande'])) { $lVr->setValid(false); $lVr->getStoIdDetailCommande()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_201_CODE); $lErreur->setMessage(MessagesErreurs::ERR_201_MSG); $lVr->getStoIdDetailCommande()->addErreur($lErreur); } if (empty($pData['idOperation'])) { $lVr->setValid(false); $lVr->getLog()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_201_CODE); $lErreur->setMessage(MessagesErreurs::ERR_201_MSG); $lVr->getLog()->addErreur($lErreur); } if ($pData['stoQuantite'] >= 0) { $lVr->setValid(false); $lVr->getStoQuantite()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_201_CODE); $lErreur->setMessage(MessagesErreurs::ERR_201_MSG); $lVr->getStoQuantite()->addErreur($lErreur); } $lDcom = DetailCommandeManager::select($pData['stoIdDetailCommande']); if ($lDcom->getId() == null) { $lVr->setValid(false); $lVr->getLog()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_216_CODE); $lErreur->setMessage(MessagesErreurs::ERR_216_MSG); $lVr->getLog()->addErreur($lErreur); } else { $lPdt = ProduitManager::select($lDcom->getIdProduit()); if ($lPdt->getId() == null) { $lVr->setValid(false); $lVr->getLog()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_216_CODE); $lErreur->setMessage(MessagesErreurs::ERR_216_MSG); $lVr->getLog()->addErreur($lErreur); } else { $lQte = $pData['stoQuantite'] * -1; if ($lPdt->getMaxProduitCommande() != -1 && $lQte > $lPdt->getMaxProduitCommande()) { $lVr->setValid(false); $lVr->getStoIdProduit()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_217_CODE); $lErreur->setMessage(MessagesErreurs::ERR_217_MSG); $lVr->getStoIdProduit()->addErreur($lErreur); } $StockService = new StockService(); $lStocks = $StockService->getDetailReservation($pData['idOperation']); $lStock = $lStocks[0]; $lQuantiteReservation = $lStock->getQuantite(); if ($lPdt->getStockInitial() != -1 && $lQte > $lPdt->getStockReservation() - $lQuantiteReservation) { $lVr->setValid(false); $lVr->getStoIdProduit()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_218_CODE); $lErreur->setMessage(MessagesErreurs::ERR_218_MSG); $lVr->getStoIdProduit()->addErreur($lErreur); } } } } return $lVr; }
/** * @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 recherche( $pTypeRecherche, $pTypeCritere, $pCritereRecherche, $pTypeTri, $pCritereTri ) * @param string nom de la table * @param string Le type de critère de recherche * @param array(string) champs à récupérer dans la table * @param array(array(string, object)) Dictionnaire(champ, valeur)) contenant les champs à filtrer ainsi que la valeur du filtre * @param array(array(string, string)) Dictionnaire(champ, sens) contenant les tris à appliquer * @return array(DetailCommandeVO) * @desc Récupères les lignes de la table selon le critère de recherche puis trie et renvoie la liste de résultat sous forme d'une collection de DetailCommandeVO */ public static function recherche($pTypeRecherche, $pTypeCritere, $pCritereRecherche, $pTypeTri, $pCritereTri) { // Initialisation du Logger $lLogger =& Log::singleton('file', CHEMIN_FICHIER_LOGS); $lLogger->setMask(Log::MAX(LOG_LEVEL)); // Préparation de la requète $lChamps = array(DetailCommandeManager::CHAMP_DETAILCOMMANDE_ID . "," . DetailCommandeManager::CHAMP_DETAILCOMMANDE_ID_PRODUIT . "," . DetailCommandeManager::CHAMP_DETAILCOMMANDE_TAILLE . "," . DetailCommandeManager::CHAMP_DETAILCOMMANDE_PRIX . "," . DetailCommandeManager::CHAMP_DETAILCOMMANDE_ETAT); // Préparation de la requète de recherche $lRequete = DbUtils::prepareRequeteRecherche(DetailCommandeManager::TABLE_DETAILCOMMANDE, $lChamps, $pTypeRecherche, $pTypeCritere, $pCritereRecherche, $pTypeTri, $pCritereTri); $lListeDetailCommande = array(); if ($lRequete !== false) { $lLogger->log("Execution de la requete : " . $lRequete, PEAR_LOG_DEBUG); // Maj des logs $lSql = Dbutils::executerRequete($lRequete); if (mysql_num_rows($lSql) > 0) { while ($lLigne = mysql_fetch_assoc($lSql)) { array_push($lListeDetailCommande, DetailCommandeManager::remplirDetailCommande($lLigne[DetailCommandeManager::CHAMP_DETAILCOMMANDE_ID], $lLigne[DetailCommandeManager::CHAMP_DETAILCOMMANDE_ID_PRODUIT], $lLigne[DetailCommandeManager::CHAMP_DETAILCOMMANDE_TAILLE], $lLigne[DetailCommandeManager::CHAMP_DETAILCOMMANDE_PRIX], $lLigne[DetailCommandeManager::CHAMP_DETAILCOMMANDE_ETAT])); } } else { $lListeDetailCommande[0] = new DetailCommandeVO(); } return $lListeDetailCommande; } $lListeDetailCommande[0] = new DetailCommandeVO(); return $lListeDetailCommande; }
/** * @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 } } } }
/** * @name validUpdate($pData) * @return DetailReservationMarcheVR * @desc Test la validite de l'élément */ public static function validUpdate($pData) { $lVr = new DetailReservationMarcheVR(); //Tests inputs if (!isset($pData['stoQuantite'])) { $lVr->setValid(false); $lVr->getStoQuantite()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_201_CODE); $lErreur->setMessage(MessagesErreurs::ERR_201_MSG); $lVr->getStoQuantite()->addErreur($lErreur); } if (!isset($pData['stoIdDetailCommande'])) { $lVr->setValid(false); $lVr->getStoIdDetailCommande()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_201_CODE); $lErreur->setMessage(MessagesErreurs::ERR_201_MSG); $lVr->getStoIdDetailCommande()->addErreur($lErreur); } if (!isset($pData['idOperation'])) { $lVr->setValid(false); $lVr->getLog()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_201_CODE); $lErreur->setMessage(MessagesErreurs::ERR_201_MSG); $lVr->getLog()->addErreur($lErreur); } if ($lVr->getValid()) { //Tests Techniques if (!TestFonction::checkLength($pData['stoQuantite'], 0, 12) || $pData['stoQuantite'] > 999999999.99) { $lVr->setValid(false); $lVr->getStoQuantite()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_101_CODE); $lErreur->setMessage(MessagesErreurs::ERR_101_MSG); $lVr->getStoQuantite()->addErreur($lErreur); } if (!is_float((double) $pData['stoQuantite'])) { $lVr->setValid(false); $lVr->getStoQuantite()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_108_CODE); $lErreur->setMessage(MessagesErreurs::ERR_108_MSG); $lVr->getStoQuantite()->addErreur($lErreur); } if (!TestFonction::checkLength($pData['stoIdDetailCommande'], 0, 11)) { $lVr->setValid(false); $lVr->getStoIdDetailCommande()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_101_CODE); $lErreur->setMessage(MessagesErreurs::ERR_101_MSG); $lVr->getStoIdDetailCommande()->addErreur($lErreur); } if (!is_float((double) $pData['stoIdDetailCommande'])) { $lVr->setValid(false); $lVr->getStoIdDetailCommande()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_108_CODE); $lErreur->setMessage(MessagesErreurs::ERR_108_MSG); $lVr->getStoIdDetailCommande()->addErreur($lErreur); } if (!is_int((int) $pData['idOperation'])) { $lVr->setValid(false); $lVr->getLog()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_104_CODE); $lErreur->setMessage(MessagesErreurs::ERR_104_MSG); $lVr->getLog()->addErreur($lErreur); } //Tests Fonctionnels if (empty($pData['stoQuantite'])) { $lVr->setValid(false); $lVr->getStoQuantite()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_201_CODE); $lErreur->setMessage(MessagesErreurs::ERR_201_MSG); $lVr->getStoQuantite()->addErreur($lErreur); } if (empty($pData['stoIdDetailCommande'])) { $lVr->setValid(false); $lVr->getStoIdDetailCommande()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_201_CODE); $lErreur->setMessage(MessagesErreurs::ERR_201_MSG); $lVr->getStoIdDetailCommande()->addErreur($lErreur); } if (empty($pData['idOperation'])) { $lVr->setValid(false); $lVr->getLog()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_201_CODE); $lErreur->setMessage(MessagesErreurs::ERR_201_MSG); $lVr->getLog()->addErreur($lErreur); } if ($pData['stoQuantite'] >= 0) { $lVr->setValid(false); $lVr->getStoQuantite()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_201_CODE); $lErreur->setMessage(MessagesErreurs::ERR_201_MSG); $lVr->getStoQuantite()->addErreur($lErreur); } $lDcom = DetailCommandeManager::select($pData['stoIdDetailCommande']); if ($lDcom->getId() == null) { $lVr->setValid(false); $lVr->getLog()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_216_CODE); $lErreur->setMessage(MessagesErreurs::ERR_216_MSG); $lVr->getLog()->addErreur($lErreur); } else { $lPdt = ProduitManager::select($lDcom->getIdProduit()); if ($lPdt->getId() == null) { $lVr->setValid(false); $lVr->getLog()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_216_CODE); $lErreur->setMessage(MessagesErreurs::ERR_216_MSG); $lVr->getLog()->addErreur($lErreur); } else { $lQte = $pData['stoQuantite'] * -1; if ($lPdt->getMaxProduitCommande() != -1 && $lQte > $lPdt->getMaxProduitCommande()) { $lVr->setValid(false); $lVr->getStoQuantite()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_217_CODE); $lErreur->setMessage(MessagesErreurs::ERR_217_MSG); $lVr->getStoQuantite()->addErreur($lErreur); } /*$StockService = new StockService(); $lStocks = $StockService->getDetailReservation($pData['idOperation']); $lContinu = true; $lQuantiteReservation = 0; $i = 0; while($lContinu && isset($lStocks[$i])) { if( $lStocks[$i]->getIdDetailCommande() == $pData['stoIdDetailCommande']) { $lQuantiteReservation = $lStocks[$i]->getQuantite(); $lContinu = false; } $i++; } */ $lQteMax = $lPdt->getStockReservation(); if ($pData['idOperation'] != -1) { $StockService = new StockService(); $lStocks = $StockService->getDetailReservation($pData['idOperation']); $lContinu = true; $lQuantiteReservation = 0; $i = 0; while ($lContinu && isset($lStocks[$i])) { if ($lStocks[$i]->getIdDetailCommande() == $pData['stoIdDetailCommande']) { $lQuantiteReservation = $lStocks[$i]->getQuantite(); $lContinu = false; } $i++; } $lQteMax -= $lQuantiteReservation; // Qté réservation est négative -- = + } if ($lPdt->getStockInitial() != -1 && $lQte > $lQteMax) { $lVr->setValid(false); $lVr->getStoQuantite()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_218_CODE); $lErreur->setMessage(MessagesErreurs::ERR_218_MSG); $lVr->getStoQuantite()->addErreur($lErreur); } // La quantité doit être un multiple du lot if (fmod($lQte, $lDcom->getTaille()) != 0) { $lVr->setValid(false); $lVr->getStoQuantite()->setValid(false); $lErreur = new VRerreur(); $lErreur->setCode(MessagesErreurs::ERR_245_CODE); $lErreur->setMessage(MessagesErreurs::ERR_245_MSG); $lVr->getStoQuantite()->addErreur($lErreur); } } } } return $lVr; }
/** * @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; }