/** * @name update($pOperation) * @param OperationVO * @return integer * @desc Met à jour une opération */ private function update($pOperation) { $pOperation->setDateMaj(StringUtils::dateTimeAujourdhuiDb()); $pOperation->setIdLogin($_SESSION[DROIT_ID]); $this->insertHistorique($pOperation); // Ajout historique $lTypeModificationSolde = array(1, 2, 3, 4, 7, 8, 9, 10, 11, 12, 13, 14); if (in_array($pOperation->getTypePaiement(), $lTypeModificationSolde)) { $lOperationActuelle = $this->get($pOperation->getId()); // Dans le cas la réservation devient achat. La date de création doit être mise à jour. if ($lOperationActuelle->getTypePaiement() == 0 && $pOperation->getTypePaiement() == 7) { $pOperation->setDate($pOperation->getDateMaj()); } // Mise à jour du solde $lCompteService = new CompteService(); $lCompte = $lCompteService->get($pOperation->getIdCompte()); // Si l'operation actuelle impacte le solde if (in_array($lOperationActuelle->getTypePaiement(), $lTypeModificationSolde)) { $lCompte->setSolde($lCompte->getSolde() - $lOperationActuelle->getMontant() + $pOperation->getMontant()); } else { $lCompte->setSolde($lCompte->getSolde() + $pOperation->getMontant()); } $lCompteService->set($lCompte); } // Maj des champs complémentaires // Suppression des champs complementaires OperationChampComplementaireManager::deleteByIdOpe($pOperation->getId()); // Ajout des champs complementaires $lChampComplementaire = $pOperation->getChampComplementaire(); if (!empty($lChampComplementaire)) { // Vérifie si le champ est autorisé en modification $lChampAutorise = TypePaiementChampcomplementaireManager::champAutoriseMaj($pOperation->getTypePaiement()); $lChampAjout = array(); foreach ($pOperation->getChampComplementaire() as $lChamp) { if (in_array($lChamp->getChcpId(), $lChampAutorise)) { $lChamp->setOpeId($pOperation->getId()); array_push($lChampAjout, $lChamp); } } if (!empty($lChampAjout)) { OperationChampComplementaireManager::insert($lChampAjout); } } // Si c'est un paiement de facture de producteur il faut mettre à jour les paiements associés $lOperationChampComplementaireFacture = OperationChampComplementaireManager::recherche(array(OperationChampComplementaireManager::CHAMP_OPERATIONCHAMPCOMPLEMENTAIRE_CHCP_ID, OperationChampComplementaireManager::CHAMP_OPERATIONCHAMPCOMPLEMENTAIRE_VALEUR), array('=', '='), array(9, $pOperation->getId()), array(), array()); if (!is_null($lOperationChampComplementaireFacture[0]->getOpeId())) { $lMontant = $pOperation->getMontant(); // Maj de l'operation de facture $lOperationFacture = $this->getDetail($lOperationChampComplementaireFacture[0]->getOpeId()); $lOperationFacture->setMontant($lMontant); $this->set($lOperationFacture); // Maj de l'operation zeybu $lOpeFacChampComp = $lOperationFacture->getChampComplementaire(); if (isset($lOpeFacChampComp[10])) { $lOperationZeybu = $this->getDetail($lOpeFacChampComp[10]->getValeur()); $lOperationZeybu->setMontant(-1 * $lMontant); $lOperationZeybu->setTypePaiement($pOperation->getTypePaiement()); $lOperationZeybu->setChampComplementaire($pOperation->getChampComplementaire()); $this->set($lOperationZeybu); } } return OperationManager::update($pOperation); // update de l'opération }