/** * @name update($pReservation) * @param ReservationVO * @return integer * @desc Met à jour une réservation */ private function update($pReservation) { $lTestDetailReservation = $pReservation->getDetailReservation(); if (!empty($lTestDetailReservation)) { // Si il y a encore des produits dans la réservation $lReservationsActuelle = $this->get($pReservation->getId()); $lOpeReservations = $this->selectOperationReservation($pReservation->getId()); $lIdOperation = $lOpeReservations[0]->getId(); /*$lOperation = $lOperations[0]; $lIdOperation = $lOperation->getId();*/ $lOperationService = new OperationService(); $lOperation = $lOperationService->getDetail($lIdOperation); $lTotal = 0; $lStockService = new StockService(); $lDetailOperationService = new DetailOperationService(); $lListeIdDetailCommande = array(); foreach ($pReservation->getDetailReservation() as $lProduit) { array_push($lListeIdDetailCommande, $lProduit->getIdDetailCommande()); } $lDetailMarche = DetailMarcheViewManager::selectByIdDetailCommande($lListeIdDetailCommande); foreach ($lReservationsActuelle->getDetailReservation() as $lReservationActuelle) { $lTestUpdate = false; foreach ($pReservation->getDetailReservation() as $lReservationNouvelle) { if ($lReservationActuelle->getIdDetailCommande() == $lReservationNouvelle->getIdDetailCommande()) { $lTotal += $lReservationNouvelle->getMontant(); // Maj du stock $lStock = new StockVO(); $lStock->setId($lReservationActuelle->getId()->getIdStock()); $lStock->setQuantite($lReservationNouvelle->getQuantite()); $lStock->setType(0); $lStock->setIdCompte($pReservation->getId()->getIdCompte()); $lStock->setIdDetailCommande($lReservationActuelle->getIdDetailCommande()); $lStock->setIdOperation($lIdOperation); $lStock->setIdNomProduit($lDetailMarche[$lReservationActuelle->getIdDetailCommande()]->getProIdNomProduit()); $lStock->setUnite($lDetailMarche[$lReservationActuelle->getIdDetailCommande()]->getProUniteMesure()); $lStockService->set($lStock); // Maj du détail Opération $lDetailOperation = new DetailOperationVO(); $lDetailOperation->setId($lReservationActuelle->getId()->getIdDetailOperation()); $lDetailOperation->setIdOperation($lIdOperation); $lDetailOperation->setIdCompte($pReservation->getId()->getIdCompte()); $lDetailOperation->setMontant($lReservationNouvelle->getMontant()); $lDetailOperation->setLibelle("Marché N°" . $pReservation->getId()->getIdCommande()); $lDetailOperation->setTypePaiement(0); $lDetailOperation->setIdDetailCommande($lReservationActuelle->getIdDetailCommande()); $lDetailOperation->setIdNomProduit($lDetailMarche[$lReservationActuelle->getIdDetailCommande()]->getProIdNomProduit()); $lDetailOperationService->set($lDetailOperation); $lTestUpdate = true; } } if (!$lTestUpdate) { // Suppression du stock et du detail operation $lStockService->delete($lReservationActuelle->getId()->getIdStock()); $lDetailOperationService->delete($lReservationActuelle->getId()->getIdDetailOperation()); } } foreach ($pReservation->getDetailReservation() as $lReservationNouvelle) { $lTestInsert = true; foreach ($lReservationsActuelle->getDetailReservation() as $lReservationActuelle) { if ($lReservationActuelle->getIdDetailCommande() == $lReservationNouvelle->getIdDetailCommande()) { $lTestInsert = false; } } if ($lTestInsert) { $lTotal += $lReservationNouvelle->getMontant(); // Ajout du stock $lStock = new StockVO(); $lStock->setQuantite($lReservationNouvelle->getQuantite()); $lStock->setType(0); $lStock->setIdCompte($pReservation->getId()->getIdCompte()); $lStock->setIdDetailCommande($lReservationNouvelle->getIdDetailCommande()); $lStock->setIdOperation($lIdOperation); $lStock->setIdNomProduit($lDetailMarche[$lReservationNouvelle->getIdDetailCommande()]->getProIdNomProduit()); $lStock->setUnite($lDetailMarche[$lReservationNouvelle->getIdDetailCommande()]->getProUniteMesure()); $lStockService->set($lStock); // Ajout du détail Opération $lDetailOperation = new DetailOperationVO(); $lDetailOperation->setIdOperation($lIdOperation); $lDetailOperation->setIdCompte($pReservation->getId()->getIdCompte()); $lDetailOperation->setMontant($lReservationNouvelle->getMontant()); $lDetailOperation->setLibelle("Marché N°" . $pReservation->getId()->getIdCommande()); $lDetailOperation->setTypePaiement(0); $lDetailOperation->setIdDetailCommande($lReservationNouvelle->getIdDetailCommande()); $lDetailOperation->setIdNomProduit($lDetailMarche[$lReservationNouvelle->getIdDetailCommande()]->getProIdNomProduit()); $lDetailOperationService->set($lDetailOperation); } } // Maj de l'opération $lOperation->setMontant($lTotal); $lOperationService->set($lOperation); } else { // La réservation est vide on la supprime $this->delete($pReservation->getId()); } }
/** * @name remplirDetailOperation($pId, $pIdOperation, $pIdCompte, $pMontant, $pLibelle, $pDate, $pTypePaiement, $pIdDetailCommande, $pIdModeleLot, $pIdNomProduit, $pIdConnexion) * @param int(11) * @param int(11) * @param int(11) * @param decimal(10,2) * @param varchar(100) * @param datetime * @param int(11) * @param int(11) * @param int(11) * @param int(11) * @param int(11) * @return DetailOperationVO * @desc Retourne une DetailOperationVO remplie */ private static function remplirDetailOperation($pId, $pIdOperation, $pIdCompte, $pMontant, $pLibelle, $pDate, $pTypePaiement, $pIdDetailCommande, $pIdModeleLot, $pIdNomProduit, $pIdConnexion) { $lDetailOperation = new DetailOperationVO(); $lDetailOperation->setId($pId); $lDetailOperation->setIdOperation($pIdOperation); $lDetailOperation->setIdCompte($pIdCompte); $lDetailOperation->setMontant($pMontant); $lDetailOperation->setLibelle($pLibelle); $lDetailOperation->setDate($pDate); $lDetailOperation->setTypePaiement($pTypePaiement); $lDetailOperation->setIdDetailCommande($pIdDetailCommande); $lDetailOperation->setIdModeleLot($pIdModeleLot); $lDetailOperation->setIdNomProduit($pIdNomProduit); $lDetailOperation->setIdConnexion($pIdConnexion); return $lDetailOperation; }