/**
  * @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;
 }
Beispiel #2
0
 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));
 }
Beispiel #3
0
 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;
 }
Beispiel #10
0
 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;
 }