Function de validation des fiches et reversement des frais HF

This commit is contained in:
pierre renaudot 2024-01-29 14:06:39 +01:00
parent e4574d7ff4
commit 2819759da7
5 changed files with 76 additions and 4 deletions

View File

@ -70,12 +70,13 @@ class Class_gestionFiche
public function get_Page(int $nPage, string $idUtilisateur): array public function get_Page(int $nPage, string $idUtilisateur): array
{ {
$decalage = ($nPage - 1) * $this::$NB_LIGNES_PAGINATION; $decalage = ($nPage - 1) * $this::$NB_LIGNES_PAGINATION;
$req = 'SELECT "rMois", "rVisiteur", "rEtat", ROUND("rMontantValide", 2) $req = 'SELECT "rMois", "rVisiteur", "rEtat", ROUND("rMontantValide", 2)
as "rMontantValide", "eLibelle" as "rMontantValide", "eLibelle"
FROM remboursement FROM remboursement
INNER JOIN etat ON etat."eId"=remboursement."rEtat" INNER JOIN etat ON etat."eId"=remboursement."rEtat"
WHERE "rVisiteur"= :userId WHERE "rVisiteur"= :userId
ORDER BY "rDateModif" DESC LIMIT :nbLignes offset :decalage;'; ORDER BY "rMois" DESC LIMIT :nbLignes offset :decalage;';
$result = $this->pdo->prepare($req); $result = $this->pdo->prepare($req);
$result->bindParam('nbLignes', $this::$NB_LIGNES_PAGINATION); $result->bindParam('nbLignes', $this::$NB_LIGNES_PAGINATION);
$result->bindParam('decalage', $decalage); $result->bindParam('decalage', $decalage);

View File

@ -26,7 +26,27 @@ class Class_user
$result->bindParam('login', $login); $result->bindParam('login', $login);
$result->bindParam('pwd', $password); $result->bindParam('pwd', $password);
$result->execute(); $result->execute();
$result = $result->fetch();
return $result->fetch(); if ($result['pLibelle'] == 'comptable') {
$this->updateBdd();
}
return $result;
}
public function updateBdd(): void
{
$curMonth = date('Ym');
$prevMonth = DateTime::createFromFormat('Ym', $curMonth);
$prevMonth->modify('first day of last month');
$prevMonth = $prevMonth->format('Ym');
$req = 'SELECT updateEtat(:currentMonth, :previousMonth)';
$result = $this->pdo->prepare($req);
$result->bindParam('currentMonth', $curMonth);
$result->bindParam('previousMonth', $prevMonth);
$result->execute();
} }
} }

View File

@ -10,7 +10,6 @@ if (isset($_POST['login']) && isset($_POST['password'])) {
header('location: index.php'); header('location: index.php');
} }
//Si l'utilisateur existe ou pas //Si l'utilisateur existe ou pas
if (count($data) === 0) { if (count($data) === 0) {
header('location: index.php?direction=connexion&msg=errorco'); header('location: index.php?direction=connexion&msg=errorco');

View File

@ -30,7 +30,59 @@ $$ LANGUAGE 'plpgsql';
--Fonction pour passer les fiches de "créé" à "saisi cloturé" ET passe les frais HF sur la fiche suivante
--dateN -> '202403'
CREATE OR REPLACE FUNCTION updateEtat(curMonth varchar(6), prevMonth varchar(6)) RETURNS bool AS $$
DECLARE
"listeVisiteur" RECORD;
curMontantValid FLOAT;
oldMontantValid FLOAT;
BEGIN
--Update les fiches Créées en cloturé si la date est inf au mois courant
UPDATE remboursement
SET "rEtat" = 'CL'
WHERE "rEtat" = 'CR' AND "rMois" < curMonth;
--Crée une Fiche pour tous les visiteurs qui n'ont pas de fiches mais dont les frais HF doivent être reportés
FOR "listeVisiteur" IN
SELECT "rVisiteur", SUM("lhMontant") as "montant" FROM remboursement
INNER JOIN ligne_hors_forfait ON "rVisiteur" = "lhVisiteur" AND "rMois" = "lhMois"
WHERE "rMois" <= curMonth AND "rEtat" = 'CL' AND "lhJustificatif" = FALSE AND "lhRefus" = FALSE
GROUP BY "rVisiteur"
LOOP
--Crée la demande si elle n'existe pas
PERFORM newRemboursement("listeVisiteur"."rVisiteur", curMonth);
--RECUP l'ancien montant
SELECT "rMontantValide" INTO curMontantValid
FROM remboursement
WHERE "rVisiteur" = "listeVisiteur"."rVisiteur" AND "rMois" = curMonth;
SELECT "rMontantValide" INTO oldMontantValid
FROM remboursement
WHERE "rVisiteur" = "listeVisiteur"."rVisiteur" AND "rMois" = prevMonth;
--Actualise les montants totaux de remboursement
UPDATE remboursement
SET "rMontantValide" = curMontantValid + "listeVisiteur"."montant"
WHERE "rVisiteur" = "listeVisiteur"."rVisiteur" AND "rMois" = curMonth;
UPDATE remboursement
SET "rMontantValide" = oldMontantValid - "listeVisiteur"."montant"
WHERE "rVisiteur" = "listeVisiteur"."rVisiteur" AND "rMois" = prevMonth;
END LOOP;
--Passe les lignes HF non validé avec justif
UPDATE ligne_hors_forfait
SET "lhMois" = curMonth
WHERE "lhMois" <= prevMonth AND "lhJustificatif" = FALSE AND "lhRefus" = FALSE;
--Passe le remboursement en validé
UPDATE remboursement
SET "rEtat" = 'VA'
WHERE "rEtat" = 'CL' AND "rMois" < prevMonth;
RETURN true;
END;
$$ LANGUAGE 'plpgsql';

View File

@ -152,7 +152,7 @@
/** /**
* Affiche le bouton si fiche non cloturé * Affiche le bouton si fiche non cloturé
*/ */
if ($status === 'CR'): if ($status['eId'] === 'CR'):
?> ?>
<div class="col-3 d-flex mx-auto my-5 justify-content-center"> <div class="col-3 d-flex mx-auto my-5 justify-content-center">
<button type="button" class="btn btn-outline-primary btn-lg" id="sendFileBtn" data-uType="<?= $typeUser ?>">Envoyer <button type="button" class="btn btn-outline-primary btn-lg" id="sendFileBtn" data-uType="<?= $typeUser ?>">Envoyer