/** * @name getDetailReservation($pIdOperation) * @return array(DetailOperationVO) * @desc Retourne une liste d'DetailOperation */ public function getDetailReservation($pIdOperation) { return DetailOperationManager::recherche(array(DetailOperationManager::CHAMP_DETAILOPERATION_ID_OPERATION), array('='), array($pIdOperation), array(DetailOperationManager::CHAMP_DETAILOPERATION_DATE, DetailOperationManager::CHAMP_DETAILOPERATION_TYPE_PAIEMENT), array('DESC', 'ASC')); }
/** * @name recherche( $pTypeRecherche, $pTypeCritere, $pCritereRecherche, $pTypeTri, $pCritereTri ) * @param string nom de la table * @param string Le type de critère de recherche * @param array(string) champs à récupérer dans la table * @param array(array(string, object)) Dictionnaire(champ, valeur)) contenant les champs à filtrer ainsi que la valeur du filtre * @param array(array(string, string)) Dictionnaire(champ, sens) contenant les tris à appliquer * @return array(DetailOperationVO) * @desc Récupères les lignes de la table selon le critère de recherche puis trie et renvoie la liste de résultat sous forme d'une collection de DetailOperationVO */ public static function recherche($pTypeRecherche, $pTypeCritere, $pCritereRecherche, $pTypeTri, $pCritereTri) { // Initialisation du Logger $lLogger =& Log::singleton('file', CHEMIN_FICHIER_LOGS); $lLogger->setMask(Log::MAX(LOG_LEVEL)); // Préparation de la requète $lChamps = array(DetailOperationManager::CHAMP_DETAILOPERATION_ID . "," . DetailOperationManager::CHAMP_DETAILOPERATION_ID_OPERATION . "," . DetailOperationManager::CHAMP_DETAILOPERATION_ID_COMPTE . "," . DetailOperationManager::CHAMP_DETAILOPERATION_MONTANT . "," . DetailOperationManager::CHAMP_DETAILOPERATION_LIBELLE . "," . DetailOperationManager::CHAMP_DETAILOPERATION_DATE . "," . DetailOperationManager::CHAMP_DETAILOPERATION_TYPE_PAIEMENT . "," . DetailOperationManager::CHAMP_DETAILOPERATION_ID_DETAIL_COMMANDE . "," . DetailOperationManager::CHAMP_DETAILOPERATION_ID_MODELE_LOT . "," . DetailOperationManager::CHAMP_DETAILOPERATION_ID_NOM_PRODUIT . "," . DetailOperationManager::CHAMP_DETAILOPERATION_ID_CONNEXION); // Préparation de la requète de recherche $lRequete = DbUtils::prepareRequeteRecherche(DetailOperationManager::TABLE_DETAILOPERATION, $lChamps, $pTypeRecherche, $pTypeCritere, $pCritereRecherche, $pTypeTri, $pCritereTri); $lListeDetailOperation = array(); if ($lRequete !== false) { $lLogger->log("Execution de la requete : " . $lRequete, PEAR_LOG_DEBUG); // Maj des logs $lSql = Dbutils::executerRequete($lRequete); if (mysql_num_rows($lSql) > 0) { while ($lLigne = mysql_fetch_assoc($lSql)) { array_push($lListeDetailOperation, DetailOperationManager::remplirDetailOperation($lLigne[DetailOperationManager::CHAMP_DETAILOPERATION_ID], $lLigne[DetailOperationManager::CHAMP_DETAILOPERATION_ID_OPERATION], $lLigne[DetailOperationManager::CHAMP_DETAILOPERATION_ID_COMPTE], $lLigne[DetailOperationManager::CHAMP_DETAILOPERATION_MONTANT], $lLigne[DetailOperationManager::CHAMP_DETAILOPERATION_LIBELLE], $lLigne[DetailOperationManager::CHAMP_DETAILOPERATION_DATE], $lLigne[DetailOperationManager::CHAMP_DETAILOPERATION_TYPE_PAIEMENT], $lLigne[DetailOperationManager::CHAMP_DETAILOPERATION_ID_DETAIL_COMMANDE], $lLigne[DetailOperationManager::CHAMP_DETAILOPERATION_ID_MODELE_LOT], $lLigne[DetailOperationManager::CHAMP_DETAILOPERATION_ID_NOM_PRODUIT], $lLigne[DetailOperationManager::CHAMP_DETAILOPERATION_ID_CONNEXION])); } } else { $lListeDetailOperation[0] = new DetailOperationVO(); } return $lListeDetailOperation; } $lListeDetailOperation[0] = new DetailOperationVO(); return $lListeDetailOperation; }
/** * @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); } }