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