Exemplo n.º 1
0
 /**
  * @name update($pFacture)
  * @param FactureVO
  * @return integer
  * @desc Met à jour une FactureVO
  */
 private function update($pFacture)
 {
     // Récupération de la facture actuelle
     $lIdOperation = $pFacture->getId()->getId();
     $lFactureInitiale = $this->select($lIdOperation);
     $lIdCompteFerme = $lFactureInitiale->getOperationProducteur()->getIdCompte();
     $lOperationService = new OperationService();
     // Montant pour l'id
     /*$lFactureInitiale->getId()->setMontant($pFacture->getOperationProducteur()->getMontant());
     		$lOperationService->set($lFactureInitiale->getId());*/
     // Gestion si pas de paiement
     if ($pFacture->getOperationProducteur()->getMontant() == 0) {
         $pFacture->getOperationProducteur()->setTypePaiement(21);
         //$pFacture->getOperationZeybu()->setTypePaiement(21);
     }
     // Montant / Typepaiement / Champ Complementaire pour le producteur
     $lFactureInitiale->getOperationProducteur()->setMontant($pFacture->getOperationProducteur()->getMontant());
     $lFactureInitiale->getOperationProducteur()->setTypePaiement($pFacture->getOperationProducteur()->getTypePaiement());
     $lFactureInitiale->getOperationProducteur()->setChampComplementaire($pFacture->getOperationProducteur()->getChampComplementaire());
     $lOperationService->set($lFactureInitiale->getOperationProducteur());
     // Montant / Typepaiement / Champ Complementaire pour le zeybu
     /*$lFactureInitiale->getOperationZeybu()->setMontant(-1 * $pFacture->getOperationProducteur()->getMontant());
     		$lFactureInitiale->getOperationZeybu()->setTypePaiement($pFacture->getOperationProducteur()->getTypePaiement());
     		$lFactureInitiale->getOperationZeybu()->setChampComplementaire($pFacture->getOperationProducteur()->getChampComplementaire());
     		$lOperationService->set($lFactureInitiale->getOperationZeybu());*/
     // Suppression de l'ensemble des lignes de facture qui seront à nouveau insérée
     DetailFactureManager::delete($lIdOperation);
     $lDetailOperationService = new DetailOperationService();
     $lStockService = new StockService();
     foreach ($lFactureInitiale->getProduits() as $lProduitInital) {
         $lMaj = false;
         foreach ($pFacture->getProduits() as $lProduitMaj) {
             if ($lProduitInital->getIdStock() == $lProduitMaj->getIdStock() && $lProduitInital->getIdDetailOperation() == $lProduitMaj->getIdDetailOperation() && $lProduitInital->getIdStockSolidaire() == $lProduitMaj->getIdStockSolidaire()) {
                 // Modification
                 $lMaj = true;
                 // Stock
                 $lIdStock = 0;
                 $lIdDetailOperation = 0;
                 if ($lProduitInital->getIdStock() == 0 && $lProduitMaj->getQuantite() > 0) {
                     // Ajout
                     $lIdStock = $lStockService->set(new StockVO(null, null, $lProduitMaj->getQuantite(), 4, $lIdCompteFerme, null, null, $lIdOperation, $lProduitMaj->getIdNomProduit(), $lProduitMaj->getUnite()));
                     // Prix
                     $lIdDetailOperation = $lDetailOperationService->set(new DetailOperationVO(null, $lIdOperation, $lIdCompteFerme, $lProduitMaj->getMontant(), 'Facture', null, 6, null, null, $lProduitMaj->getIdNomProduit(), null));
                 } else {
                     if ($lProduitInital->getIdStock() != 0 && $lProduitMaj->getQuantite() > 0) {
                         // Modification
                         $lStockInitial = $lStockService->get($lProduitInital->getIdStock());
                         $lIdStock = $lStockInitial->getId();
                         $lStockInitial->setQuantite($lProduitMaj->getQuantite());
                         $lStockService->set($lStockInitial);
                         // Prix
                         $lDetailOperationInitial = $lDetailOperationService->get($lProduitInital->getIdDetailOperation());
                         $lIdDetailOperation = $lDetailOperationInitial->getId();
                         $lDetailOperationInitial->setMontant($lProduitMaj->getMontant());
                         $lDetailOperationService->set($lDetailOperationInitial);
                     } else {
                         // Suppression
                         $lStockService->delete($lProduitInital->getIdStock());
                         $lDetailOperationService->delete($lProduitInital->getIdDetailOperation());
                     }
                 }
                 // Stock Solidaire
                 $lIdStockSolidaire = 0;
                 if ($lProduitInital->getIdStockSolidaire() == 0 && $lProduitMaj->getQuantiteSolidaire() > 0) {
                     // Ajout
                     $lIdStockSolidaire = $lStockService->set(new StockVO(null, null, $lProduitMaj->getQuantiteSolidaire(), 2, $lIdCompteFerme, null, null, $lIdOperation, $lProduitMaj->getIdNomProduit(), $lProduitMaj->getUnite()));
                 } else {
                     if ($lProduitInital->getIdStockSolidaire() != 0 && $lProduitMaj->getQuantiteSolidaire() > 0) {
                         // Modification
                         $lStockSolidaireInitial = $lStockService->get($lProduitInital->getIdStockSolidaire());
                         $lIdStockSolidaire = $lStockSolidaireInitial->getId();
                         $lStockSolidaireInitial->setQuantite($lProduitMaj->getQuantiteSolidaire());
                         $lStockService->set($lStockSolidaireInitial);
                     } else {
                         // Suppression
                         $lStockService->delete($lProduitInital->getIdStockSolidaire());
                     }
                 }
                 if ($lProduitMaj->getQuantiteSolidaire() > 0 || $lProduitMaj->getQuantite() > 0) {
                     // Pas d'ajout de ligne vide
                     DetailFactureManager::insert(new DetailFactureVO($lIdOperation, $lProduitInital->getIdNomProduit(), $lIdStock, $lIdDetailOperation, $lIdStockSolidaire));
                 }
             }
         }
         if (!$lMaj) {
             // Suppression
             $lStockService->delete($lProduitInital->getIdStock());
             $lDetailOperationService->delete($lProduitInital->getIdDetailOperation());
             $lStockService->delete($lProduitInital->getIdStockSolidaire());
         }
     }
     foreach ($pFacture->getProduits() as $lProduitMaj) {
         $lMaj = false;
         foreach ($lFactureInitiale->getProduits() as $lProduitInital) {
             if ($lProduitInital->getIdStock() == $lProduitMaj->getIdStock() && $lProduitInital->getIdDetailOperation() == $lProduitMaj->getIdDetailOperation() && $lProduitInital->getIdStockSolidaire() == $lProduitMaj->getIdStockSolidaire()) {
                 // Modification
                 $lMaj = true;
             }
         }
         if (!$lMaj) {
             // Ajout
             // Stock
             $lIdStock = 0;
             $lIdDetailOperation = 0;
             if ($lProduitMaj->getQuantite() > 0) {
                 $lIdStock = $lStockService->set(new StockVO(null, null, $lProduitMaj->getQuantite(), 4, $lIdCompteFerme, null, null, $lIdOperation, $lProduitMaj->getIdNomProduit(), $lProduitMaj->getUnite()));
                 // Prix
                 $lIdDetailOperation = $lDetailOperationService->set(new DetailOperationVO(null, $lIdOperation, $lIdCompteFerme, $lProduitMaj->getMontant(), 'Facture', null, 6, null, null, $lProduitMaj->getIdNomProduit(), null));
             }
             // Stock Solidaire
             $lIdStockSolidaire = 0;
             if ($lProduitMaj->getQuantiteSolidaire() > 0) {
                 $lIdStockSolidaire = $lStockService->set(new StockVO(null, null, $lProduitMaj->getQuantiteSolidaire(), 2, $lIdCompteFerme, null, null, $lIdOperation, $lProduitMaj->getIdNomProduit(), $lProduitMaj->getUnite()));
             }
             if ($lProduitMaj->getQuantiteSolidaire() > 0 || $lProduitMaj->getQuantite() > 0) {
                 // Pas d'ajout de ligne vide
                 DetailFactureManager::insert(new DetailFactureVO($lIdOperation, $lProduitMaj->getIdNomProduit(), $lIdStock, $lIdDetailOperation, $lIdStockSolidaire));
             }
         }
     }
     return $lIdOperation;
 }