pdo = $pDO->getPdoGsb(); $this->month = $month; $this->userId = $userId; $this->existingFile(); } /** * Test et ajoute la fiche si elle n'existe pas dans remboursement * et les ligneForfaitaires nulles liées */ private function existingFile(): void { $req = 'SELECT newremboursement(:idUser, :month); '; $result = $this->pdo->prepare($req); $result->bindParam('idUser', $this->userId); $result->bindParam('month', $this->month); $result->execute(); } /** * Liste les frais forfaitaires */ public function listFraisForfaitaires(): array { $req = 'SELECT "fLibelle", NULL AS "lfQuantite", round("fMontant", 2) AS "fMontant", 0 AS "fTotal", "fId" FROM forfait'; $result = $this->pdo->prepare($req); $result->execute(); return $result->fetchAll(); } /** * Liste les frais Forfetaires d'un user pour 1 mois */ public function listFraisForfaitForU(): array { $req = 'SELECT "fLibelle", "lfQuantite", ROUND("fMontant", 2) AS "fMontant", ROUND("lfQuantite" * "fMontant", 2) AS "fTotal", "fId" FROM remboursement INNER JOIN "ligne_forfait" ON "rVisiteur" = "lfVisiteur" AND "rMois" = "lfMois" INNER JOIN "forfait" ON "fId" = "lfForfait" WHERE "rVisiteur" = :idUser AND "rMois" = :monthF;'; $result = $this->pdo->prepare($req); $result->bindParam('idUser', $this->userId); $result->bindParam('monthF', $this->month); $result->execute(); return $result->fetchAll(); } /** * Liste les frais hors forfait d'un user pour 1 mois */ public function listFraisHF(): array { $req = 'SELECT "lhId", to_char("lhDate", \'YYYY-mm-dd\') AS "lhDate", "lhLibelle", ROUND("lhMontant",2) as "lhMontant", "lhJustificatif", "lhRefus" FROM remboursement inner join "ligne_hors_forfait" on "rVisiteur" = "lhVisiteur" AND "rMois" = "lhMois" WHERE "rVisiteur" = :idVisiteur AND "rMois" = :mois ORDER BY "lhDate";'; $result = $this->pdo->prepare($req); $result->bindParam(':idVisiteur', $this->userId); $result->bindParam(':mois', $this->month); $result->execute(); return $result->fetchAll(); } /** * Fonction qui renvoie le prix total validé d'une fiche de frais * * AJOUTER UNE FONCTION QUI CREE LA FICHE DE FRAIS LORS DU SELECT SI CELLE CI N'EXISTE PAS */ public function getMontantValide(): float { $req = 'SELECT "rMontantValide" FROM remboursement WHERE "rVisiteur" = :idVisiteur AND "rMois" = :mois ;'; $result = $this->pdo->prepare($req); $result->bindParam(':idVisiteur', $this->userId); $result->bindParam(':mois', $this->month); $result->execute(); return $result->fetch()['rMontantValide']; } /** * RETOURNE LE STATUS DE LA FICHE */ public function getStatus(): array { $req = 'SELECT etat."eId" , etat."eLibelle" from remboursement INNER JOIN etat on etat."eId" = remboursement."rEtat" WHERE "rVisiteur" = :idVisiteur AND "rMois" = :mois;'; $result = $this->pdo->prepare($req); $result->bindParam(':idVisiteur', $this->userId); $result->bindParam(':mois', $this->month); $result->execute(); return $result->fetch(); } /** * UPDATE LES INFOS DE LA FICHE */ public function updateRemboursement(int $nbJustif, float $mttValid): bool { $req = 'UPDATE remboursement SET "rNbJustificatifs" = :nbJustif, "rMontantValide" = :mttValid, "rDateModif" = NOW() WHERE "rVisiteur" = :idVisiteur AND "rMois" = :mois;'; $result = $this->pdo->prepare($req); $result->bindParam(':nbJustif', $nbJustif); $result->bindParam(':mttValid', $mttValid); $result->bindParam(':idVisiteur', $this->userId); $result->bindParam(':mois', $this->month); return $result->execute(); } /** * AJOUTE LES LIGNES HF */ public function addFraisHF(string $libelle, string $date, float $montant): bool { $req = 'SELECT MAX("lhId")+1 FROM ligne_hors_forfait'; $result = $this->pdo->prepare($req); $result->execute(); $idLigne = $result->fetch()[0]; $req = 'INSERT INTO ligne_hors_forfait VALUES (:idLigne, :userId, :monthF, :libelle, :dateL, :mttF, \'true\', \'false\');'; $result = $this->pdo->prepare($req); $result->bindParam(':idLigne', $idLigne); $result->bindParam(':libelle', $libelle); $result->bindParam(':dateL', $date); $result->bindParam(':mttF', $montant); $result->bindParam(':userId', $this->userId); $result->bindParam(':monthF', $this->month); return $result->execute(); } /** * Refuse ou accepte un frais HF */ public function accceptFrais(int $idFrais, bool $state) { $req = 'UPDATE ligne_hors_forfait SET "lhRefus" = :stateF WHERE "lhId" = :idFrais;'; $result = $this->pdo->prepare($req); $state = ($state) ? 'false' : 'true'; $result->bindParam(':stateF', $state); $result->bindParam(':idFrais', $idFrais); return $result->execute(); } /** * UPDATE LA LIGNE FRAIS FORFAITAIRES */ public function updateFraisF(int $qttF, int $montant, string $idForfait): bool { $req = 'UPDATE ligne_forfait SET "lfQuantite" = :qttF, "lfMontant" = :mttF WHERE "lfVisiteur" = :userId AND "lfMois" = :monthF AND "lfForfait" = :idForfait;'; $result = $this->pdo->prepare($req); $result->bindParam(':qttF', $qttF); $result->bindParam(':mttF', $montant); $result->bindParam(':idForfait', $idForfait); $result->bindParam(':userId', $this->userId); $result->bindParam(':monthF', $this->month); return $result->execute(); } /** * SUPPRIME LA LIGNE HF */ public function suprLigneHF(int $idLine): bool { $req = 'DELETE FROM ligne_hors_forfait WHERE "lhId" = :idLine'; $result = $this->pdo->prepare($req); $result->bindParam(':idLine', $idLine); return $result->execute(); } /** * Passe la */ public function validSheet(): bool { $req = 'UPDATE remboursement SET "rEtat" = \'RB\' WHERE "rVisiteur" = :visiteur AND "rMois" = :mois; '; $result = $this->pdo->prepare($req); $result->bindParam('visiteur', $this->userId); $result->bindParam('mois', $this->month); return $result->execute(); } }