/**
  * @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($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 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 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;
 }