/** * @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; }
/** * @name update($pAchat) * @param AchatVO * @return integer * @desc Met à jour un achat */ private function update($pAchat) { $lOperationService = new OperationService(); // Rechargement $lIdRechargement = $pAchat->getRechargement()->getId(); $lCompteRechargement = $pAchat->getRechargement()->getIdCompte(); $lMajRechargement = false; if (!empty($lIdRechargement) && !is_null($lIdRechargement)) { $lMontantRechargement = $pAchat->getRechargement()->getMontant(); if (!empty($lMontantRechargement) && !is_null($lMontantRechargement)) { // Maj du rechargement $lMajRechargement = true; $lIdRechargement = $lOperationService->set($pAchat->getRechargement()); } else { if ($lMontantRechargement == 0) { // Suppression du rechargement $lOperationService->delete($lIdRechargement); $lIdRechargement = NULL; } } } else { if (!empty($lCompteRechargement) && !is_null($lCompteRechargement)) { // Ajout du rechargement $pAchat->getRechargement()->setLibelle('Rechargement'); $lIdRechargement = $lOperationService->set($pAchat->getRechargement()); } } //$lIdOperationAchat = 0; //$lIdOperationAchatSolidaire = 0; $lIdCompte = 0; $lIdMarche = 0; $lLibelleOperation = ''; $lLibelleOperationSolidaire = ''; $lAchatActuel = NULL; $lIdOperationAchatActuel = 0; $lIdOperationAchatSolidaireActuel = 0; // Achat $lIdOperationAchat = $pAchat->getOperationAchat()->getId(); $lTestCompteAchat = $pAchat->getOperationAchat()->getIdCompte(); $lMajAchat = false; if (!empty($lIdOperationAchat) && !is_null($lIdOperationAchat)) { $lAchatActuel = $this->select($lIdOperationAchat); $lIdOperationAchatActuel = $lIdOperationAchat; $lMontantAchat = $pAchat->getOperationAchat()->getMontant(); $ltestChampComplementaire = $pAchat->getOperationAchat()->getChampComplementaire(); $lIdOperationZeybu = $ltestChampComplementaire[8]->getValeur(); $lLibelleOperation = $pAchat->getOperationAchat()->getLibelle(); $lIdCompte = $pAchat->getOperationAchat()->getIdCompte(); if (isset($ltestChampComplementaire[1])) { $lIdMarche = $ltestChampComplementaire[1]->getValeur(); } if (!empty($lMontantAchat) && !is_null($lMontantAchat)) { // Maj de l'achat $lMajAchat = true; $lIdOperationAchat = $lOperationService->set($pAchat->getOperationAchat()); $lOperationZeybu = $lOperationService->getDetail($lIdOperationZeybu); $lOperationZeybu->setMontant($pAchat->getOperationAchat()->getMontant() * -1); $lOperationService->set($lOperationZeybu); } else { if ($lMontantAchat == 0) { // Suppression de l'achat $lOperationService->delete($lIdOperationAchat); $lOperationService->delete($lIdOperationZeybu); $lIdOperationAchat = NULL; } } } else { if (!empty($lTestCompteAchat) && !is_null($lTestCompteAchat)) { // Ajout Achat $lIdCompte = $pAchat->getOperationAchat()->getIdCompte(); $ltestChampComplementaire = $pAchat->getOperationAchat()->getChampComplementaire(); if (isset($ltestChampComplementaire[1])) { $lIdMarche = $ltestChampComplementaire[1]->getValeur(); $lMarcheService = new MarcheService(); $lMarche = $lMarcheService->getInfoMarche($lIdMarche); $lLibelleOperation = "Marché N°" . $lMarche->getNumero(); } else { $lLibelleOperation = "Achat du " . StringUtils::dateAujourdhuiFr(); } $pAchat->getOperationAchat()->setLibelle($lLibelleOperation); $lIdOperationAchat = $lOperationService->set($pAchat->getOperationAchat()); // Operation d'achat $lOperationZeybu = new OperationDetailVO(); $lOperationZeybu->setIdCompte(-1); $lOperationZeybu->setMontant($pAchat->getOperationAchat()->getMontant() * -1); $lOperationZeybu->setLibelle($lLibelleOperation); $lOperationZeybu->setTypePaiement($pAchat->getOperationAchat()->getTypePaiement()); $lOperationZeybuChampComplementaire = $pAchat->getOperationAchat()->getChampComplementaire(); $lOperationZeybuChampComplementaire[8] = new OperationChampComplementaireVO(null, 8, $lIdOperationAchat); $lOperationZeybu->setChampComplementaire($lOperationZeybuChampComplementaire); $lIdOperationZeybu = $lOperationService->set($lOperationZeybu); // Operation Zeybu } } // Achat Solidaire $lIdOperationAchatSolidaire = $pAchat->getOperationAchatSolidaire()->getId(); $lTestCompteAchatSolidaire = $pAchat->getOperationAchatSolidaire()->getIdCompte(); $lMajAchatSolidaire = false; if (!empty($lIdOperationAchatSolidaire) && !is_null($lIdOperationAchatSolidaire)) { if (is_null($lAchatActuel)) { $lAchatActuel = $this->select($lIdOperationAchatSolidaire); } $lIdOperationAchatSolidaireActuel = $lIdOperationAchatSolidaire; $lMontantAchatSolidaire = $pAchat->getOperationAchatSolidaire()->getMontant(); $ltestChampComplementaire = $pAchat->getOperationAchatSolidaire()->getChampComplementaire(); $lIdOperationZeybuSolidaire = $ltestChampComplementaire[8]->getValeur(); $lLibelleOperationSolidaire = $pAchat->getOperationAchatSolidaire()->getLibelle(); $lIdCompte = $pAchat->getOperationAchatSolidaire()->getIdCompte(); if (isset($ltestChampComplementaire[1])) { $lIdMarche = $ltestChampComplementaire[1]->getValeur(); } if (!empty($lMontantAchatSolidaire) && !is_null($lMontantAchatSolidaire)) { // Maj de l'achat $lMajAchatSolidaire = true; $lIdOperationAchatSolidaire = $lOperationService->set($pAchat->getOperationAchatSolidaire()); $lOperationZeybuSolidaire = $lOperationService->getDetail($lIdOperationZeybuSolidaire); $lOperationZeybuSolidaire->setMontant($pAchat->getOperationAchatSolidaire()->getMontant() * -1); $lOperationService->set($lOperationZeybuSolidaire); } else { if ($lMontantAchatSolidaire == 0) { // Suppression de l'achat $lOperationService->delete($lIdOperationAchatSolidaire); $lOperationService->delete($lIdOperationZeybuSolidaire); $lIdOperationAchatSolidaire = NULL; } } } else { if (!empty($lTestCompteAchatSolidaire) && !is_null($lTestCompteAchatSolidaire)) { $lIdCompte = $pAchat->getOperationAchatSolidaire()->getIdCompte(); $ltestChampComplementaire = $pAchat->getOperationAchatSolidaire()->getChampComplementaire(); if (isset($ltestChampComplementaire[1])) { if (!isset($lMarche)) { // Pour éviter de lancer 2 fois la requête $lIdMarche = $ltestChampComplementaire[1]->getValeur(); $lMarcheService = new MarcheService(); $lMarche = $lMarcheService->getInfoMarche($lIdMarche); } $lLibelleOperationSolidaire = "Marché Solidaire N°" . $lMarche->getNumero(); } else { $lLibelleOperationSolidaire = "Achat Solidaire du " . StringUtils::dateAujourdhuiFr(); } $pAchat->getOperationAchatSolidaire()->setLibelle($lLibelleOperationSolidaire); $lIdOperationAchatSolidaire = $lOperationService->set($pAchat->getOperationAchatSolidaire()); // Operation d'achat Solidaire $lOperationZeybuSolidaire = new OperationDetailVO(); $lOperationZeybuSolidaire->setIdCompte(-1); $lOperationZeybuSolidaire->setMontant($pAchat->getOperationAchatSolidaire()->getMontant() * -1); $lOperationZeybuSolidaire->setLibelle($lLibelleOperationSolidaire); $lOperationZeybuSolidaire->setTypePaiement($pAchat->getOperationAchatSolidaire()->getTypePaiement()); $lOperationZeybuSolidaireChampComplementaire = $pAchat->getOperationAchatSolidaire()->getChampComplementaire(); $lOperationZeybuSolidaireChampComplementaire[8] = new OperationChampComplementaireVO(null, 8, $lIdOperationAchatSolidaire); $lOperationZeybuSolidaire->setChampComplementaire($lOperationZeybuSolidaireChampComplementaire); $lIdOperationZeybuSolidaire = $lOperationService->set($lOperationZeybuSolidaire); // Operation Zeybu solidaire } } // Liaison Rechargement if (!is_null($lIdRechargement)) { $lMaj = false; $lRechargementChampComplementaire = $pAchat->getRechargement()->getChampComplementaire(); if (!is_null($lIdOperationAchat)) { $lMaj = true; $lRechargementChampComplementaire[12] = new OperationChampComplementaireVO(null, 12, $lIdOperationAchat); } else { if (is_null($lIdOperationAchat)) { unset($lRechargementChampComplementaire[12]); } } if (!is_null($lIdOperationAchatSolidaire)) { $lMaj = true; $lRechargementChampComplementaire[13] = new OperationChampComplementaireVO(null, 13, $lIdOperationAchatSolidaire); } else { if (is_null($lIdOperationAchatSolidaire)) { unset($lRechargementChampComplementaire[13]); } } if ($lMaj) { $pAchat->getRechargement()->setChampComplementaire($lRechargementChampComplementaire); $lOperationService->set($pAchat->getRechargement()); } } // Liaison achat if (!is_null($lIdOperationAchat)) { $lChampComplementaire = $pAchat->getOperationAchat()->getChampComplementaire(); $lChampComplementaire[8] = new OperationChampComplementaireVO(null, 8, $lIdOperationZeybu); if (!is_null($lIdRechargement)) { $lChampComplementaire[14] = new OperationChampComplementaireVO(null, 14, $lIdRechargement); } else { if (is_null($lIdRechargement)) { unset($lChampComplementaire[14]); } } if (!is_null($lIdOperationAchatSolidaire)) { $lChampComplementaire[13] = new OperationChampComplementaireVO(null, 13, $lIdOperationAchatSolidaire); } else { if (is_null($lIdOperationAchatSolidaire)) { unset($lChampComplementaire[13]); } } $pAchat->getOperationAchat()->setChampComplementaire($lChampComplementaire); $lOperationService->set($pAchat->getOperationAchat()); // Operation d'achat avec lien operation zeybu } // Liaison Achat Solidaire if (!is_null($lIdOperationAchatSolidaire)) { $lChampComplementaireSolidaire = $pAchat->getOperationAchatSolidaire()->getChampComplementaire(); $lChampComplementaireSolidaire[8] = new OperationChampComplementaireVO(null, 8, $lIdOperationZeybuSolidaire); if (!is_null($lIdRechargement)) { $lChampComplementaireSolidaire[14] = new OperationChampComplementaireVO(null, 14, $lIdRechargement); } else { if (is_null($lIdRechargement)) { unset($lChampComplementaireSolidaire[14]); } } if (!is_null($lIdOperationAchat)) { $lChampComplementaireSolidaire[12] = new OperationChampComplementaireVO(null, 12, $lIdOperationAchat); } else { if (is_null($lIdOperationAchat)) { unset($lChampComplementaireSolidaire[12]); } } $pAchat->getOperationAchatSolidaire()->setChampComplementaire($lChampComplementaireSolidaire); $lOperationService->set($pAchat->getOperationAchatSolidaire()); // Operation d'achat solidaire avec lien operation zeybu } // Ajout des produits $lIdModeleLot = array(); $lIdDetailCommande = array(); foreach ($pAchat->getProduits() as $lProduit) { $lTestModeleLot = $lProduit->getIdModeleLot(); $lTestDetailCommande = $lProduit->getIdDetailCommande(); if (!empty($lTestModeleLot) && !is_null($lTestModeleLot)) { array_push($lIdModeleLot, $lTestModeleLot); } else { if (!empty($lTestDetailCommande) && !is_null($lTestDetailCommande)) { array_push($lIdDetailCommande, $lTestDetailCommande); } } $lTestModeleLotSolidaire = $lProduit->getIdModeleLotSolidaire(); $lTestDetailCommandeSolidaire = $lProduit->getIdDetailCommandeSolidaire(); if (!empty($lTestModeleLotSolidaire) && !is_null($lTestModeleLotSolidaire)) { array_push($lIdModeleLot, $lTestModeleLotSolidaire); } else { if (!empty($lTestDetailCommandeSolidaire) && !is_null($lTestDetailCommandeSolidaire)) { array_push($lIdDetailCommande, $lTestDetailCommandeSolidaire); } } } if (!empty($lIdModeleLot)) { $lListeModeleLot = ModeleLotManager::selectByArray($lIdModeleLot); } if (!empty($lIdDetailCommande)) { $lListeDetailCommande = DetailCommandeManager::selectByArrayClassByDcomId($lIdDetailCommande); } // Suppression de l'ensemble des lignes de produit qui seront à nouveau insérées DetailAchatManager::delete($lIdOperationAchatActuel, $lIdOperationAchatSolidaireActuel); $lDetailOperationService = new DetailOperationService(); $lStockService = new StockService(); foreach ($lAchatActuel->getProduits() as $lProduitInital) { $lMaj = false; foreach ($pAchat->getProduits() as $lProduitMaj) { if ($lProduitInital->getIdStock() == $lProduitMaj->getIdStock() && $lProduitInital->getIdDetailOperation() == $lProduitMaj->getIdDetailOperation() && $lProduitInital->getIdStockSolidaire() == $lProduitMaj->getIdStockSolidaire() && $lProduitInital->getIdDetailOperationSolidaire() == $lProduitMaj->getIdDetailOperationSolidaire()) { // Modification $lMaj = true; // Stock $lIdStock = 0; $lIdDetailOperation = 0; if ($lProduitInital->getIdStock() == 0 && $lProduitMaj->getQuantite() < 0) { // Ajout $lUnite = ''; $lTestModeleLot = $lProduitMaj->getIdModeleLot(); $lTestDetailCommande = $lProduitMaj->getIdDetailCommande(); if (!empty($lTestModeleLot) && !is_null($lTestModeleLot)) { $lUnite = $lListeModeleLot[$lTestModeleLot]->getUnite(); } else { if (!empty($lTestDetailCommande) && !is_null($lTestDetailCommande)) { $lUnite = $lListeDetailCommande[$lTestDetailCommande]->getUnite(); } } $lIdStock = $lStockService->set(new StockVO(null, null, $lProduitMaj->getQuantite(), 1, $lIdCompte, $lProduitMaj->getIdDetailCommande(), $lProduitMaj->getIdModeleLot(), $lIdOperationAchat, $lProduitMaj->getIdNomProduit(), $lUnite)); // Prix $lIdDetailOperation = $lDetailOperationService->set(new DetailOperationVO(null, $lIdOperationAchat, $lIdCompte, $lProduitMaj->getMontant(), $lLibelleOperation, null, 7, $lProduitMaj->getIdDetailCommande(), $lProduitMaj->getIdModeleLot(), $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; $lIdDetailOperationSolidaire = 0; if ($lProduitInital->getIdStockSolidaire() == 0 && $lProduitMaj->getQuantiteSolidaire() < 0) { $lUniteSolidaire = ''; $lTestModeleLotSolidaire = $lProduitMaj->getIdModeleLotSolidaire(); $lTestDetailCommandeSolidaire = $lProduitMaj->getIdDetailCommandeSolidaire(); if (!empty($lTestModeleLotSolidaire) && !is_null($lTestModeleLotSolidaire)) { $lUniteSolidaire = $lListeModeleLot[$lTestModeleLotSolidaire]->getUnite(); } else { if (!empty($lTestDetailCommandeSolidaire) && !is_null($lTestDetailCommandeSolidaire)) { $lUniteSolidaire = $lListeDetailCommande[$lTestDetailCommandeSolidaire]->getUnite(); } } $lIdStockSolidaire = $lStockService->set(new StockVO(null, null, $lProduitMaj->getQuantiteSolidaire(), 2, $lIdCompte, $lProduitMaj->getIdDetailCommandeSolidaire(), $lProduitMaj->getIdModeleLotSolidaire(), $lIdOperationAchatSolidaire, $lProduitMaj->getIdNomProduit(), $lUniteSolidaire)); // Prix $lIdDetailOperationSolidaire = $lDetailOperationService->set(new DetailOperationVO(null, $lIdOperationAchatSolidaire, $lIdCompte, $lProduitMaj->getMontantSolidaire(), $lLibelleOperationSolidaire, null, 8, $lProduitMaj->getIdDetailCommandeSolidaire(), $lProduitMaj->getIdModeleLotSolidaire(), $lProduitMaj->getIdNomProduit(), null)); } else { if ($lProduitInital->getIdStockSolidaire() != 0 && $lProduitMaj->getQuantiteSolidaire() < 0) { // Modification $lStockInitialSolidaire = $lStockService->get($lProduitInital->getIdStockSolidaire()); $lIdStockSolidaire = $lStockInitialSolidaire->getId(); $lStockInitialSolidaire->setQuantite($lProduitMaj->getQuantiteSolidaire()); $lStockService->set($lStockInitialSolidaire); // Prix $lDetailOperationInitialSolidaire = $lDetailOperationService->get($lProduitInital->getIdDetailOperationSolidaire()); $lIdDetailOperationSolidaire = $lDetailOperationInitialSolidaire->getId(); $lDetailOperationInitialSolidaire->setMontant($lProduitMaj->getMontantSolidaire()); $lDetailOperationService->set($lDetailOperationInitialSolidaire); } else { // Suppression $lStockService->delete($lProduitInital->getIdStockSolidaire()); $lDetailOperationService->delete($lProduitInital->getIdDetailOperationSolidaire()); } } if ($lProduitMaj->getQuantiteSolidaire() < 0 || $lProduitMaj->getQuantite() < 0) { // Pas d'ajout de ligne vide DetailAchatManager::insert(new DetailAchatVO($lIdOperationAchat, $lIdOperationAchatSolidaire, $lProduitMaj->getIdNomProduit(), $lIdStock, $lIdDetailOperation, $lIdStockSolidaire, $lIdDetailOperationSolidaire)); } } } if (!$lMaj) { // Suppression $lStockService->delete($lProduitInital->getIdStock()); $lDetailOperationService->delete($lProduitInital->getIdDetailOperation()); $lStockService->delete($lProduitInital->getIdStockSolidaire()); $lDetailOperationService->delete($lProduitInital->getIdDetailOperationSolidaire()); } } foreach ($pAchat->getProduits() as $lProduitMaj) { $lMaj = false; foreach ($lAchatActuel->getProduits() as $lProduitInital) { if ($lProduitInital->getIdStock() == $lProduitMaj->getIdStock() && $lProduitInital->getIdDetailOperation() == $lProduitMaj->getIdDetailOperation() && $lProduitInital->getIdStockSolidaire() == $lProduitMaj->getIdStockSolidaire() && $lProduitInital->getIdDetailOperationSolidaire() == $lProduitMaj->getIdDetailOperationSolidaire()) { // Modification $lMaj = true; } } if (!$lMaj) { // Ajout // Stock $lIdStock = 0; $lIdDetailOperation = 0; if ($lProduitMaj->getQuantite() < 0) { $lUnite = ''; $lTestModeleLot = $lProduitMaj->getIdModeleLot(); $lTestDetailCommande = $lProduitMaj->getIdDetailCommande(); if (!empty($lTestModeleLot) && !is_null($lTestModeleLot)) { $lUnite = $lListeModeleLot[$lTestModeleLot]->getUnite(); } else { if (!empty($lTestDetailCommande) && !is_null($lTestDetailCommande)) { $lUnite = $lListeDetailCommande[$lTestDetailCommande]->getUnite(); } } $lIdStock = $lStockService->set(new StockVO(null, null, $lProduitMaj->getQuantite(), 1, $lIdCompte, $lProduitMaj->getIdDetailCommande(), $lProduitMaj->getIdModeleLot(), $lIdOperationAchat, $lProduitMaj->getIdNomProduit(), $lUnite)); // Prix $lIdDetailOperation = $lDetailOperationService->set(new DetailOperationVO(null, $lIdOperationAchat, $lIdCompte, $lProduitMaj->getMontant(), $lLibelleOperation, null, 7, $lProduitMaj->getIdDetailCommande(), $lProduitMaj->getIdModeleLot(), $lProduitMaj->getIdNomProduit(), null)); } // Stock Solidaire $lIdStockSolidaire = 0; $lIdDetailOperationSolidaire = 0; if ($lProduitMaj->getQuantiteSolidaire() < 0) { $lUniteSolidaire = ''; $lTestModeleLotSolidaire = $lProduitMaj->getIdModeleLotSolidaire(); $lTestDetailCommandeSolidaire = $lProduitMaj->getIdDetailCommandeSolidaire(); if (!empty($lTestModeleLotSolidaire) && !is_null($lTestModeleLotSolidaire)) { $lUniteSolidaire = $lListeModeleLot[$lTestModeleLotSolidaire]->getUnite(); } else { if (!empty($lTestDetailCommandeSolidaire) && !is_null($lTestDetailCommandeSolidaire)) { $lUniteSolidaire = $lListeDetailCommande[$lTestDetailCommandeSolidaire]->getUnite(); } } $lIdStockSolidaire = $lStockService->set(new StockVO(null, null, $lProduitMaj->getQuantiteSolidaire(), 2, $lIdCompte, $lProduitMaj->getIdDetailCommandeSolidaire(), $lProduitMaj->getIdModeleLotSolidaire(), $lIdOperationAchatSolidaire, $lProduitMaj->getIdNomProduit(), $lUniteSolidaire)); // Prix $lIdDetailOperationSolidaire = $lDetailOperationService->set(new DetailOperationVO(null, $lIdOperationAchatSolidaire, $lIdCompte, $lProduitMaj->getMontantSolidaire(), $lLibelleOperationSolidaire, null, 8, $lProduitMaj->getIdDetailCommandeSolidaire(), $lProduitMaj->getIdModeleLotSolidaire(), $lProduitMaj->getIdNomProduit(), null)); } if ($lProduitMaj->getQuantiteSolidaire() < 0 || $lProduitMaj->getQuantite() < 0) { // Pas d'ajout de ligne vide DetailAchatManager::insert(new DetailAchatVO($lIdOperationAchat, $lIdOperationAchatSolidaire, $lProduitMaj->getIdNomProduit(), $lIdStock, $lIdDetailOperation, $lIdStockSolidaire, $lIdDetailOperationSolidaire)); } } } // Retourne l'Id de l'achat ou à defaut celui de l'achat solidaire $lIdRetour = $lIdOperationAchat; if ($lIdRetour == 0) { if ($lIdOperationAchatSolidaire != 0) { $lIdRetour = $lIdOperationAchatSolidaire; } else { $lIdRetour = $lIdRechargement; } } return $lIdRetour; }
/** * @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); } }