/** * @name modifierStock($pParam) * @return StockQuantiteVR * @desc Modifie une ligne de stock */ public function modifierStock($pParam) { $lVr = StockQuantiteValid::validUpdate($pParam); if ($lVr->getValid()) { $lStockService = new StockService(); $lStockService->setStockQuantite(StockQuantiteToVO::convertFromArray($pParam)); } return $lVr; }
public function index() { $this->view->addCss('dashboard/index.css'); $stockService = new StockService(); $itemsLowInStock = $stockService->fetchLowInStock(); $currentDate = date('Y-m-d'); $totalExpenses = $this->_getTotalExpense($currentDate); $totalSales = 0; $overdueCredits = array(); $salesTransactionService = new SalesTransactionService(); $totalSales = $salesTransactionService->fetchTotalSales($currentDate); $creditService = new CreditService(); $overdueCredits = $creditService->fetchOverdueCredits(); $this->renderView('index', array('itemsLowInStock' => $itemsLowInStock, 'totalExpenses' => $totalExpenses, 'totalSales' => $totalSales, 'overdueCredits' => $overdueCredits)); }
public function processItemExpenseForm($data) { $this->db->trans_begin(); try { $itemService = new ItemService(); if ($data['newItem'] == 1) { $data['itemId'] = $itemService->saveItem($data); } if ($data['supplier']) { $supplierService = new SupplierService(); $data['supplierId'] = $supplierService->saveOrUpdate($data); } $stockService = new StockService(); $stockService->addItemsToStock($data['itemId'], $data['quantity']); $itemExpenseService = new ItemExpenseService(); $itemExpenseService->saveItemExpense($data); $itemService->updateSuggestedSellingPrice($data['itemId'], $data['price']); } catch (Exception $e) { $this->db->trans_rollback(); throw new Exception($e->getMessage()); } $this->db->trans_commit(); }
/** * @name delete($pId) * @param IdAchatVO * @desc Supprime un achat */ public function delete($pId) { $lAchatValid = new NAMESPACE_CLASSE\NAMESPACE_VALIDATEUR\MOD_SERVICE\AchatValid(); if (!is_null($pId) && $lAchatValid->select($pId)) { $lAchatActuel = $this->select($pId); $lOperationService = new OperationService(); // Suppression des opérations if (!is_null($lAchatActuel->getRechargement())) { // Rechargement $lOperationService->delete($lAchatActuel->getRechargement()->getId()); } $lIdCompte = 0; $lIdMarche = 0; $lIdOperationAchat = 0; if (!is_null($lAchatActuel->getOperationAchat())) { // Achat avec Ope Zeybu $lIdOperationAchat = $lAchatActuel->getOperationAchat()->getId(); $lOperationService->delete($lAchatActuel->getOperationAchat()->getId()); $lOperationAchatChampComp = $lAchatActuel->getOperationAchat()->getChampComplementaire(); $lOperationService->delete($lOperationAchatChampComp[8]->getValeur()); $lIdCompte = $lAchatActuel->getOperationAchat()->getIdCompte(); $lIdMarche = $lOperationAchatChampComp[1]->getValeur(); } $lIdOperationAchatSolidaire = 0; if (!is_null($lAchatActuel->getOperationAchatSolidaire())) { // Achat solidaire avec ope zeybu $lIdOperationAchatSolidaire = $lAchatActuel->getOperationAchatSolidaire()->getId(); $lOperationService->delete($lAchatActuel->getOperationAchatSolidaire()->getId()); $lOperationAchatSolidaireChampComp = $lAchatActuel->getOperationAchatSolidaire()->getChampComplementaire(); $lOperationService->delete($lOperationAchatSolidaireChampComp[8]->getValeur()); $lIdCompte = $lAchatActuel->getOperationAchatSolidaire()->getIdCompte(); $lIdMarche = $lOperationAchatSolidaireChampComp[1]->getValeur(); } // Suppression de l'ensemble des lignes de produit DetailAchatManager::delete($lIdOperationAchat, $lIdOperationAchatSolidaire); $lDetailOperationService = new DetailOperationService(); $lStockService = new StockService(); foreach ($lAchatActuel->getProduits() as $lProduitInital) { $lStockService->delete($lProduitInital->getIdStock()); $lDetailOperationService->delete($lProduitInital->getIdDetailOperation()); $lStockService->delete($lProduitInital->getIdStockSolidaire()); $lDetailOperationService->delete($lProduitInital->getIdDetailOperationSolidaire()); } // Suppression de la réservation $lReservationService = new ReservationService(); $lIdReservation = new IdReservationVO(); $lIdReservation->setIdCompte($lIdCompte); $lIdReservation->setIdCommande($lIdMarche); $lReservationService->delete($lIdReservation); return true; } return false; }
/** * @name delete($pIdFacture) * @param integer * @desc Supprime une facture */ public function delete($pIdFacture) { $lFactureValid = new NAMESPACE_CLASSE\NAMESPACE_VALIDATEUR\MOD_SERVICE\FactureValid(); if ($lFactureValid->delete($pIdFacture)) { $lFacture = $this->select($pIdFacture); $lOperationService = new OperationService(); // Suppression des opérations // $lOperationService->delete($pIdFacture); $lOperationService->delete($lFacture->getOperationProducteur()->getId()); // $lOperationService->delete($lFacture->getOperationZeybu()->getId()); // Suppression du détail de facture DetailFactureManager::delete($pIdFacture); $lDetailOperationService = new DetailOperationService(); $lStockService = new StockService(); foreach ($lFacture->getProduits() as $lProduit) { $lStockService->delete($lProduit->getIdStock()); $lDetailOperationService->delete($lProduit->getIdDetailOperation()); $lStockService->delete($lProduit->getIdStockSolidaire()); } } }
/** * @name getInfoAchatMarche($pParam) * @return InfoAchatCommandeResponse * @desc Retourne les infos de réservation d'un adhérent */ public function getInfoAchatMarche($pParam) { $lVr = AchatValid::validInfoAchatMarche($pParam); if ($lVr->getValid()) { $lResponse = new InfoAchatCommandeResponse(); $lProduitsAchat = array(); $lIdMarche = 0; $lIdCompte = 0; if (!empty($pParam["id_commande"])) { $lIdMarche = $pParam["id_commande"]; } if (!empty($pParam["id"])) { $lAchatService = new AchatService(); $lAchat = $lAchatService->get($pParam["id"]); $lProduitsAchat = $lAchat->getProduits(); $lResponse->setAchats($lAchat); // L'achat if (!is_null($lAchat->getOperationAchat())) { $lIdCompte = $lAchat->getOperationAchat()->getIdCompte(); $lChcp = $lAchat->getOperationAchat()->getChampComplementaire(); if (isset($lChcp[1])) { $lIdMarche = $lChcp[1]->getValeur(); } } if (!is_null($lAchat->getOperationAchatSolidaire())) { $lIdCompte = $lAchat->getOperationAchatSolidaire()->getIdCompte(); $lChcp = $lAchat->getOperationAchatSolidaire()->getChampComplementaire(); if (isset($lChcp[1])) { $lIdMarche = $lChcp[1]->getValeur(); } } } if ($pParam["id_adherent"] > 0) { // Si c'est un compte adhérent $lData = $lVr->getData(); $lIdCompte = $lData['adherent']->getAdhIdCompte(); $lResponse->setAdherent($lData['adherent']); $lAdhesionService = new AdhesionService(); $lResponse->setNbAdhesionEnCours($lAdhesionService->getNbAdhesionEnCoursSurAdherent($pParam["id_adherent"])); } $lStockService = new StockService(); $lStockProduitsDisponible = $lStockService->getProduitsDisponible(); $lStock = array(); $lProduitsMarche = array(); if ($lIdMarche != 0) { // Si ce n'est pas la caisse permanente $lMarcheService = new MarcheService(); $lMarche = $lMarcheService->get($lIdMarche); $lProduitsMarche = $lMarche->getProduits(); $lResponse->setMarche($lMarche); // Les informations du marché } // Fusion des stocks $lLotsProduits = array(); foreach ($lStockProduitsDisponible as $lProduitStock) { $lAjout = true; foreach ($lProduitsMarche as $lProduitMarche) { if ($lProduitStock->getIdNom() == $lProduitMarche->getIdNom() && $lProduitStock->getUnite() == $lProduitMarche->getUnite()) { $lAjout = false; } } if ($lAjout) { if (!isset($lStock[$lProduitStock->getCproNom()])) { $lStock[$lProduitStock->getCproNom()] = array("cproId" => $lProduitStock->getIdCategorie(), "cproNom" => $lProduitStock->getCproNom(), "produits" => array()); } $lUnite = !is_null($lProduitStock->getUnite()) ? $lProduitStock->getUnite() : $lProduitStock->getUniteSolidaire(); $lStock[$lProduitStock->getCproNom()]["produits"][$lProduitStock->getNom() . $lProduitStock->getUnite()] = new ProduitDetailAchatAfficheVO($lProduitStock->getIdNom(), null, null, null, null, null, null, null, null, null, $lUnite, null, $lUnite, null, null, $lProduitStock->getIdCategorie(), $lProduitStock->getCproNom(), null, $lProduitStock->getNom()); $lLotsProduits[$lProduitStock->getIdNom() . $lProduitStock->getUnite()] = array("nom" => $lProduitStock->getNom(), "type" => "modele", "lots" => $lProduitStock->getLots()); } } foreach ($lProduitsMarche as $lProduitMarche) { if (!isset($lStock[$lProduitMarche->getCproNom()])) { $lStock[$lProduitMarche->getCproNom()] = array("cproId" => $lProduitMarche->getIdCategorie(), "cproNom" => $lProduitMarche->getCproNom(), "produits" => array()); } $lUnite = !is_null($lProduitMarche->getUnite()) ? $lProduitMarche->getUnite() : $lProduitMarche->getUniteSolidaire(); $lStock[$lProduitMarche->getCproNom()]["produits"][$lProduitMarche->getNom() . $lProduitMarche->getUnite()] = new ProduitDetailAchatAfficheVO($lProduitMarche->getIdNom(), null, null, null, null, null, null, null, null, null, $lUnite, null, $lUnite, null, null, $lProduitMarche->getIdCategorie(), $lProduitMarche->getCproNom(), null, $lProduitMarche->getNom()); $lLotsProduits[$lProduitMarche->getIdNom() . $lProduitMarche->getUnite()] = array("nom" => $lProduitMarche->getNom(), "type" => "marche", "lots" => $lProduitMarche->getLots()); } foreach ($lProduitsAchat as $lProduitAchat) { $lUnite = !is_null($lProduitAchat->getUnite()) ? $lProduitAchat->getUnite() : $lProduitAchat->getUniteSolidaire(); if (!is_null($lUnite)) { if (isset($lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite])) { $lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite]->setIdStock($lProduitAchat->getIdStock()); $lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite]->setIdStockSolidaire($lProduitAchat->getIdStockSolidaire()); $lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite]->setIdDetailCommande($lProduitAchat->getIdDetailCommande()); $lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite]->setIdModeleLot($lProduitAchat->getIdModeleLot()); $lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite]->setIdDetailCommandeSolidaire($lProduitAchat->getIdDetailCommandeSolidaire()); $lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite]->setIdModeleLotSolidaire($lProduitAchat->getIdModeleLotSolidaire()); $lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite]->setQuantite($lProduitAchat->getQuantite()); $lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite]->setQuantiteSolidaire($lProduitAchat->getQuantiteSolidaire()); $lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite]->setMontant($lProduitAchat->getMontant()); $lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite]->setMontantSolidaire($lProduitAchat->getMontantSolidaire()); $lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite]->setIdDetailOperation($lProduitAchat->getIdDetailOperation()); $lStock[$lProduitAchat->getCproNom()][$lProduitAchat->getNproNom()][$lUnite]->setIdDetailOperationSolidaire($lProduitAchat->getIdDetailOperationSolidaire()); } else { if (!isset($lStock[$lProduitAchat->getCproNom()])) { $lStock[$lProduitAchat->getCproNom()] = array("cproId" => $lProduitAchat->getCproId(), "cproNom" => $lProduitAchat->getCproNom(), "produits" => array()); } $lProduitAchat->setUnite($lUnite); $lProduitAchat->setUniteSolidaire($lUnite); $lStock[$lProduitAchat->getCproNom()]["produits"][$lProduitAchat->getNproNom() . $lUnite] = $lProduitAchat; // Ajout des lots $lModelesLot = ModeleLotManager::selectByIdNomProduit($lProduitAchat->getIdNomProduit()); // Récupère même les lots supprimés car il y a peut être eu un achat sur ce lot précédemment $lLots = array(); foreach ($lModelesLot as $lModeleLot) { $lLot = new DetailMarcheVO(); $lLot->setId($lModeleLot->getId()); $lLot->setTaille($lModeleLot->getQuantite()); $lLot->setPrix($lModeleLot->getPrix()); $lLots[$lModeleLot->getId()] = $lLot; } $lLotsProduits[$lProduitAchat->getIdNomProduit() . $lUnite] = array("nom" => $lProduitAchat->getNproNom(), "type" => "modele", "lots" => $lLots); } } } ksort($lStock); $lResponse->setStock($lStock); // Stock de produit disponible $lResponse->setLots($lLotsProduits); // Lots des produits $lBanqueService = new BanqueService(); $lTypePaiementService = new TypePaiementService(); $lResponse->setTypePaiement($lTypePaiementService->selectVisible()); // Type de paiment $lResponse->setBanques($lBanqueService->getAllActif()); // Liste des banques $lResponse->setIdRequete(uniqid()); return $lResponse; } return $lVr; }
/** * @name updateAbonnement($pCompteAbonnement) * @param CompteAbonnementVO * @return integer * @desc Met à jour un Abonnement */ private function updateAbonnement($pCompteAbonnement) { // Récupère le produitAbonnement $lProduitAbonnement = $this->getProduit($pCompteAbonnement->getIdProduitAbonnement()); // La liste des Produit identique en abonnement sur des marche en cours $lProduitsMarche = DetailMarcheViewManager::selectProduitAbonnementMarcheActifByIdNomProduit($lProduitAbonnement->getIdNomProduit()); $lListeProduitsMarche = array(); foreach ($lProduitsMarche as $lProduit) { if (isset($lListeProduitsMarche[$lProduit->getProId()])) { array_push($lListeProduitsMarche[$lProduit->getProId()]["lots"], $lProduit); } else { $lListeProduitsMarche[$lProduit->getProId()]["produit"] = $lProduit; $lListeProduitsMarche[$lProduit->getProId()]["lots"] = array(); array_push($lListeProduitsMarche[$lProduit->getProId()]["lots"], $lProduit); } } $lReservationService = new ReservationService(); $lStockService = new StockService(); foreach ($lListeProduitsMarche as $lProduitMarche) { $lSuspendu = false; // Si il n'y a pas de suspension à la date du marché if (TestFonction::dateTimeEstPLusGrandeEgale($lProduitMarche["produit"]->getComDateMarcheDebut(), $pCompteAbonnement->getDateDebutSuspension(), 'db') && TestFonction::dateTimeEstPLusGrandeEgale($pCompteAbonnement->getDateFinSuspension(), $lProduitMarche["produit"]->getComDateMarcheFin(), 'db')) { $lSuspendu = true; } $lPoursuivre = true; // Si le marché n'est pas encore passé if (!TestFonction::dateTimeEstPLusGrandeEgale($lProduitMarche["produit"]->getComDateMarcheDebut(), StringUtils::dateTimeAujourdhuiDb(), 'db')) { $lPoursuivre = false; } if ($lPoursuivre) { // Recherche de l'Id du lot dans le marché pour le produit correspondant. $lIdLot = 0; foreach ($lProduitMarche["lots"] as $lLot) { if (fmod($pCompteAbonnement->getQuantite(), $lLot->getDcomTaille()) == 0) { $lIdLot = $lLot->getDcomId(); $lTailleLot = $lLot->getDcomTaille(); $lPrixLot = $lLot->getDcomPrix(); } } // Si un lot correspond $lPoursuivre = $lIdLot != 0; if ($lPoursuivre) { $lReservation = new ReservationVO(); $lReservation->getId()->setIdCompte($pCompteAbonnement->getIdCompte()); $lReservation->getId()->setIdCommande($lProduitMarche["produit"]->getComId()); $lReservationsActuelle = $lReservationService->get($lReservation->getId()); $lTestDetailReservation = $lReservationsActuelle->getDetailReservation(); if (empty($lTestDetailReservation) && !$lSuspendu && $pCompteAbonnement->getEtat() == 0) { // Ajoute une réservation $lQuantite = $pCompteAbonnement->getQuantite(); if ($lProduitMarche["produit"]->getProStockInitial() != -1) { $lStockProduit = $lStockService->selectByIdProduitStockProduitReservation($lProduitMarche["produit"]->getProId()); $lStockDispo = $lProduitMarche["produit"]->getProStockInitial() - $lStockProduit[0]->getStoQuantite(); if ($lStockDispo > 0) { if ($lStockDispo < $lQuantite) { $lQuantite = $lStockDispo; } } else { // Plus de stock $lPoursuivre = false; } } if ($lPoursuivre) { if ($lProduitMarche["produit"]->getProMaxProduitCommande() != -1 && $lProduitMarche["produit"]->getProMaxProduitCommande() < $lQuantite) { $lQuantite = $lProduitMarche["produit"]->getProMaxProduitCommande(); } $lDetailReservation = new DetailReservationVO(); $lDetailReservation->setIdDetailCommande($lIdLot); $lDetailReservation->setQuantite(-1 * $lQuantite); $lDetailReservation->setMontant(-1 * $lQuantite / $lTailleLot * $lPrixLot); $lReservationsActuelle->addDetailReservation($lDetailReservation); $lReservationsActuelle->setId($lReservation->getId()); $lReservationService->set($lReservationsActuelle); } } else { // Si il y a une réservation déjà sur ce produit on la met à jour $lMaj = false; $lQuantiteActuelle = 0; foreach ($lReservationsActuelle->getDetailReservation() as $lDetailReservationActuelle) { if ($lDetailReservationActuelle->getIdProduit() == $lProduitMarche["produit"]->getProId()) { $lQuantiteActuelle = $lDetailReservationActuelle->getQuantite(); $lMaj = true; } else { $lReservation->addDetailReservation($lDetailReservationActuelle); } } if ($lMaj || !$lMaj && !$lSuspendu && $pCompteAbonnement->getEtat() == 0) { $lQuantite = $pCompteAbonnement->getQuantite(); if ($lProduitMarche["produit"]->getProStockInitial() != -1) { $lStockProduit = $lStockService->selectByIdProduitStockProduitReservation($lProduitMarche["produit"]->getProId()); $lStockDispo = $lProduitMarche["produit"]->getProStockInitial() - $lStockProduit[0]->getStoQuantite() - $lQuantiteActuelle; if ($lStockDispo > 0) { if ($lStockDispo < $lQuantite) { $lQuantite = $lStockDispo; } } else { // Plus de stock $lPoursuivre = false; } } if ($lPoursuivre) { if ($lProduitMarche["produit"]->getProMaxProduitCommande() != -1 && $lProduitMarche["produit"]->getProMaxProduitCommande() < $lQuantite) { $lQuantite = $lProduitMarche["produit"]->getProMaxProduitCommande(); } $lDetailReservation = new DetailReservationVO(); $lDetailReservation->setIdDetailCommande($lIdLot); $lDetailReservation->setQuantite(-1 * $lQuantite); $lDetailReservation->setMontant(-1 * $lQuantite / $lTailleLot * $lPrixLot); if ($pCompteAbonnement->getEtat() == 0 && !$lSuspendu) { // Si l'abonnement est toujours actif et qu'il n'y a pas de suspension $lReservation->addDetailReservation($lDetailReservation); } } $lReservationService->set($lReservation); } } } } } return CompteAbonnementManager::update($pCompteAbonnement); }
/** * @name delete($pId) * @param IdReservationVO * @desc Met à jour une réservation */ public function delete($pIdReservation) { $lReservationsActuelle = $this->get($pIdReservation); $lOperations = $this->selectOperationReservation($pIdReservation); $lOperation = $lOperations[0]; $lIdOperation = $lOperation->getId(); // Suppression de l'opération $lOperationService = new OperationService(); $lOperationService->delete($lIdOperation); $lStockService = new StockService(); $lDetailOperationService = new DetailOperationService(); foreach ($lReservationsActuelle->getDetailReservation() as $lReservationActuelle) { // Suppression du stock et du detail operation $lStockService->delete($lReservationActuelle->getId()->getIdStock()); $lDetailOperationService->delete($lReservationActuelle->getId()->getIdDetailOperation()); } }
/** * @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; }
public function removeItemsFromStocks($salesObjs) { $stockService = new StockService(); foreach ($salesObjs as $salesObj) { // TODO hardcoded $stockService->removeItemsFromStock($salesObj->itemId, $salesObj->qty); } }
/** * @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 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 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; }