From f08b18fab5ce2db03c66a55e137b573566873efb Mon Sep 17 00:00:00 2001 From: Pierr0 Date: Wed, 3 Jan 2024 23:59:50 +0100 Subject: [PATCH] ajout d'une fiche si non existante et test selon l'etat de la fiche courante --- Class/class.newFiche.php | 70 ++++++++++-- controleurs/c_connexion.php | 2 +- controleurs/c_etatFrais.php | 62 ----------- controleurs/c_gererFraisForfaitaire.php | 74 ------------- controleurs/c_gererFraisHorsForfait.php | 75 ------------- controleurs/c_nouvelleFiche.php | 25 +++-- index.php | 10 +- sqlFunction.txt | 24 ++++ vues/v_ajoutFraisForfaitaire.php | 75 ------------- vues/v_ajoutFraisHorsForfait.php | 39 ------- vues/v_choixMois.php | 49 --------- vues/v_choixVisiteur.php | 34 ------ vues/v_entete.php | 30 ----- vues/v_etatFrais.php | 140 ------------------------ vues/v_newFiche.php | 24 +++- 15 files changed, 122 insertions(+), 611 deletions(-) delete mode 100644 controleurs/c_etatFrais.php delete mode 100644 controleurs/c_gererFraisForfaitaire.php delete mode 100644 controleurs/c_gererFraisHorsForfait.php create mode 100644 sqlFunction.txt delete mode 100644 vues/v_ajoutFraisForfaitaire.php delete mode 100644 vues/v_ajoutFraisHorsForfait.php delete mode 100644 vues/v_choixMois.php delete mode 100644 vues/v_choixVisiteur.php delete mode 100644 vues/v_entete.php delete mode 100644 vues/v_etatFrais.php diff --git a/Class/class.newFiche.php b/Class/class.newFiche.php index c73711d..eca0ed7 100644 --- a/Class/class.newFiche.php +++ b/Class/class.newFiche.php @@ -4,11 +4,34 @@ class Class_newFiche { private $pdo = null; - public function __construct(PdoGsb $pDO) + private $month; + private $userId; + + public function __construct(PdoGsb $pDO, string $userId, string $month) { $this->pdo = $pDO->getPdoGsb(); + $this->month = $month; + $this->userId = $userId; + + $this->existingFile(); } + /** + * Test et ajoute la fiche si elle n'existe pas + */ + 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'; @@ -18,7 +41,10 @@ class Class_newFiche return $result->fetchAll(); } - public function listFraisForfaitForU(string $idUser, int $month): array + /** + * 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 @@ -27,14 +53,17 @@ class Class_newFiche WHERE "rVisiteur" = :idUser AND "rMois" = :monthF;'; $result = $this->pdo->prepare($req); - $result->bindParam('idUser', $idUser); - $result->bindParam('monthF', $month); + $result->bindParam('idUser', $this->userId); + $result->bindParam('monthF', $this->month); $result->execute(); return $result->fetchAll(); } - public function listFraisHF(string $idVisiteur, int $month): array + /** + * Liste les frais hors forfait d'un user pour 1 mois + */ + public function listFraisHF(): array { $req = 'SELECT to_char("lhDate", \'YYYY-mm-dd\') AS "lhDate", "lhLibelle", ROUND("lhMontant",2) as "lhMontant", @@ -47,24 +76,43 @@ class Class_newFiche ORDER BY "lhDate";'; $result = $this->pdo->prepare($req); - $result->bindParam(':idVisiteur', $idVisiteur); - $result->bindParam(':mois', $month); + $result->bindParam(':idVisiteur', $this->userId); + $result->bindParam(':mois', $this->month); $result->execute(); return $result->fetchAll(); } - public function getMontantValide(string $idVisiteur, int $month): float + /** + * 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', $idVisiteur); - $result->bindParam(':mois', $month); + $result->bindParam(':idVisiteur', $this->userId); + $result->bindParam(':mois', $this->month); $result->execute(); - return $result->fetchAll()[0]['rMontantValide']; + return $result->fetch()['rMontantValide']; + } + + public function getStatus(): string + { + $req = 'select etat."eId" 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()['eId']; } } \ No newline at end of file diff --git a/controleurs/c_connexion.php b/controleurs/c_connexion.php index d20b3a1..6821616 100644 --- a/controleurs/c_connexion.php +++ b/controleurs/c_connexion.php @@ -23,7 +23,7 @@ if (isset($_POST['login']) && isset($_POST['password'])) { header('location: index.php?direction=home'); } } else { - header('location: index.php'); + include('vues/v_connexion.php'); } die; /* diff --git a/controleurs/c_etatFrais.php b/controleurs/c_etatFrais.php deleted file mode 100644 index 80f8a45..0000000 --- a/controleurs/c_etatFrais.php +++ /dev/null @@ -1,62 +0,0 @@ -getNbRemboursementsAValider(); - include("vues/v_entete.php"); - - if ($_SESSION['statut']!='1') - { - $lesVisiteurs=$pdo->getLesVisiteurs(); - include("vues/v_choixVisiteur.php"); - if ($_SESSION['idVisiteur']!=$visiteurChoisi) {unset($_REQUEST['lstMois']);$_SESSION['idVisiteur']=$visiteurChoisi;} - } - $idVisiteur = $_SESSION['idVisiteur']; - $lesMois=$pdo->getLesMoisDisponibles($idVisiteur); - include("vues/v_choixMois.php"); - $_SESSION['leMois']= $moisChoisi; - - $leMois=$_SESSION['leMois']; - $lesInfosRemboursement = $pdo->getInfosRemboursement($idVisiteur,$leMois); - $libEtat = $lesInfosRemboursement['libEtat']; - $montantValide = $lesInfosRemboursement['montantValide']; - $nbJustificatifs = $lesInfosRemboursement['nbJustificatifs']; - $dateModif = $lesInfosRemboursement['dateModif']; - $etatRemboursement = $lesInfosRemboursement['rEtat']; - - $lesFraisForfait= $pdo->getLesFraisForfait($idVisiteur,$leMois); - $lesFraisHorsForfait = $pdo->getLesFraisHorsForfait($idVisiteur,$leMois); - - $ajoutFraisPossible = $pdo->getAjoutFraisPossible($idVisiteur, $leMois, $etatRemboursement); - include("vues/v_etatFrais.php"); - break; - } -case 'validerEtat': - { - // code à rédiger ici ... - /* - // il faut actualiser le code etat, la date, le nombre de justificatifs et le montant valide - $pdo->valideRemboursement($idVisiteur,$leMois); - $moisASelectionner = $leMois; - header ('location: index.php?uc=etatFrais&action=voir&lstMois='.$leMois); - break;*/ - } -default : - { - echo 'erreur d\'aiguillage !'.$action; - break; - - } -} -?> diff --git a/controleurs/c_gererFraisForfaitaire.php b/controleurs/c_gererFraisForfaitaire.php deleted file mode 100644 index 10048c6..0000000 --- a/controleurs/c_gererFraisForfaitaire.php +++ /dev/null @@ -1,74 +0,0 @@ -getLesForfaitsPossibles(); - $prixKm=$pdo->getPrixKm($idVisiteur,$leMois); - include("vues/v_ajoutFraisForfaitaire.php"); - } -if ($action=='valider') - {// enregistrement de la ligne et retour vers l'etat des frais - $qte = $_REQUEST['zQte']; - if ($qte>0) - { $forfait = $_REQUEST['zForfait']; - $montant = str_replace(",",".",$_REQUEST['zPrix']); - $montant = str_replace(" ","",$montant); - $pdo->ajoutFraisForfait($idVisiteur, $leMois, $forfait, $qte, $montant); //insertion dans la table; - } - $moisASelectionner = $leMois; - header ('location: index.php?uc=etatFrais&action=voir&lstMois='.$leMois); - } -//----------------------------------------- MODIFICATION -if ($action=='editer') - { - include("vues/v_entete.php"); - $forfait = $_REQUEST['forfait']; - $unForfait = $pdo->getUnFraisForfait($idVisiteur, $leMois, $forfait); - include("vues/v_unFraisForfaitaire.php"); - } -if ($action=='validerModifier') - {// mise à jour de la ligne et retour vers l'etat des frais - $qte = $_REQUEST['zQte']; - if ($qte>0) - { - $forfait = $_REQUEST['forfait']; - $pdo->majFraisForfait($idVisiteur, $leMois, $forfait, $qte); //mise à jour de la table; - } - $moisASelectionner = $leMois; - header ('location: index.php?uc=etatFrais&action=voir&lstMois='.$leMois); - } -//----------------------------------------- SUPPRESSION -if ($action=='supprimer') - { - include("vues/v_entete.php"); - $forfait = $_REQUEST['forfait']; - - $unForfait = $pdo->getUnFraisForfait($idVisiteur, $leMois, $forfait); - include("vues/v_unFraisForfaitaire.php"); - } - -if ($action=='validerSupprimer') - {// suppression de la ligne et retour vers l'etat des frais - $qte = $_REQUEST['zQte']; - if ($qte>0) - { - $forfait = $_REQUEST['forfait']; - $pdo->supprimerFraisForfait($idVisiteur, $leMois, $forfait); //suppession de la ligne dans la table; - } - $moisASelectionner = $leMois; - header ('location: index.php?uc=etatFrais&action=voir&lstMois='.$leMois); - } -?> \ No newline at end of file diff --git a/controleurs/c_gererFraisHorsForfait.php b/controleurs/c_gererFraisHorsForfait.php deleted file mode 100644 index 3e1a14d..0000000 --- a/controleurs/c_gererFraisHorsForfait.php +++ /dev/null @@ -1,75 +0,0 @@ -0) - { $libelle=addslashes($_REQUEST['zLibelle']); - $montant = str_replace(",",".",$_REQUEST['zMontant']); - $montant = str_replace(" ","",$montant); - $pdo->ajoutFraisHorsForfait($idVisiteur, $leMois, $date, $libelle, $montant); //insertion dans la table; - } - $moisASelectionner = $leMois; - header ('location: index.php?uc=etatFrais&action=voir&lstMois='.$leMois); - } -//----------------------------------------- MODIFICATION -if ($action=='editer') - { - include("vues/v_entete.php"); - $idFrais = $_REQUEST['idFrais']; - $unFrais = $pdo->getUnFraisHorsForfait($idFrais); - include("vues/v_unFraisHorsForfait.php"); - } -if ($action=='validerModifier') - {// mise à jour de la ligne et retour vers l'etat des frais - $montant = $_REQUEST['zMontant']; - if ($montant>0) - { - $idFrais = $_REQUEST['idFrais']; - $date = $_REQUEST['zDate']; - $libelle=addslashes($_REQUEST['zLibelle']); - $montant = str_replace(",",".",$_REQUEST['zMontant']); - $montant = str_replace(" ","",$montant); - $pdo->majFraisHorsForfait($idFrais, $date, $libelle, $montant); //mise à jour de la table; - } - $moisASelectionner = $leMois; - header ('location: index.php?uc=etatFrais&action=voir&lstMois='.$leMois); - } -//----------------------------------------- SUPPRESSION -if ($action=='supprimer') - { - - - - - } -if ($action=='validerSupprimer') - { - $montant = $_REQUEST['zMontant']; - if ($montant>0) - { - - - - } - - - } -?> \ No newline at end of file diff --git a/controleurs/c_nouvelleFiche.php b/controleurs/c_nouvelleFiche.php index 8a65768..d5db967 100644 --- a/controleurs/c_nouvelleFiche.php +++ b/controleurs/c_nouvelleFiche.php @@ -1,13 +1,9 @@ listFraisForfaitForU($userId, $date); +$listeFraisForfaitaire = $newFiche->listFraisForfaitForU(); if (count($listeFraisForfaitaire) == 0) { $listeFraisForfaitaire = $newFiche->listFraisForfaitaires(); } @@ -52,11 +52,18 @@ if (count($listeFraisForfaitaire) == 0) { /** * Listes des frais HF */ -$listeFraisHf = $newFiche->listFraisHF($userId, $date); +$listeFraisHf = $newFiche->listFraisHF(); /** * TOTAL DE LA FICHE */ -$totalFraisFiche = $newFiche->getMontantValide($userId, $date); +$totalFraisFiche = $newFiche->getMontantValide(); + +/** + * ETAT DE LA FICHE + */ +$status = $newFiche->getStatus(); +//$status = 'CR'; //créé +$disabled = ($status !== 'CR') ? 'disabled' : ''; include(__DIR__ . '/../vues/v_newFiche.php'); diff --git a/index.php b/index.php index 710a5b3..6b3297d 100644 --- a/index.php +++ b/index.php @@ -14,13 +14,11 @@ session_start(); require_once("Class/class.pdo.php"); $pdo = new PdoGsb(); -//$estConnecte = estConnecte(); $_SESSION['typeU'] = 'visiteur'; -/* -if (!isset($_SESSION['userId'])) { - $_REQUEST['direction'] = 'connexion'; -} -*/ + +/** + * Direction si non renseigné et non connecté + */ if (!isset($_REQUEST['direction']) && !isset($_SESSION['uId'])) { $_REQUEST['direction'] = 'connexion'; } elseif (!isset($_REQUEST['direction']) && isset($_SESSION['uId'])) { diff --git a/sqlFunction.txt b/sqlFunction.txt new file mode 100644 index 0000000..80f04af --- /dev/null +++ b/sqlFunction.txt @@ -0,0 +1,24 @@ + +--Fonction pour créer une fiche si celle-ci n'existe pas + +CREATE OR REPLACE FUNCTION newRemboursement(userId CHAR(10), monthFile CHAR(10)) RETURNS int AS $$ +DECLARE + returnValue INT; +BEGIN + SELECT COUNT(*) INTO returnValue + FROM remboursement + WHERE "rVisiteur" = userId AND "rMois" = monthFile; + + IF returnValue = 0 THEN + -- Ajoute une nouvelle ligne à la table remboursement + INSERT INTO remboursement + VALUES(userId, monthFile, 0, 0, CURRENT_DATE, 'CR'); + + -- Mettre à jour la valeur de returnValue après l'insertion + returnValue := 1; -- Valeur pour indiquer qu'une ligne a été insérée + END IF; + + RETURN returnValue; +END; +$$ LANGUAGE 'plpgsql'; + diff --git a/vues/v_ajoutFraisForfaitaire.php b/vues/v_ajoutFraisForfaitaire.php deleted file mode 100644 index 4e46c84..0000000 --- a/vues/v_ajoutFraisForfaitaire.php +++ /dev/null @@ -1,75 +0,0 @@ - -
-

AJOUT FRAIS FORFAITAIRE

-
- - - - - - - - - - - - - - - - - - -
QuantitéNature de la dépensePrixMontant
- -
- -

-
-
- - - \ No newline at end of file diff --git a/vues/v_ajoutFraisHorsForfait.php b/vues/v_ajoutFraisHorsForfait.php deleted file mode 100644 index 4f9173b..0000000 --- a/vues/v_ajoutFraisHorsForfait.php +++ /dev/null @@ -1,39 +0,0 @@ - -
-

AJOUT D'UN FRAIS HORS FORFAIT

-
- - - - - - - - - - - - - - - -
DateNature de la dépenseMontant
-
-

-
-
- - - \ No newline at end of file diff --git a/vues/v_choixMois.php b/vues/v_choixMois.php deleted file mode 100644 index e1c2af4..0000000 --- a/vues/v_choixMois.php +++ /dev/null @@ -1,49 +0,0 @@ - - - -
-

Etat de frais de ';} ?> - -

'; - ?> - - -
- diff --git a/vues/v_choixVisiteur.php b/vues/v_choixVisiteur.php deleted file mode 100644 index 07c76d3..0000000 --- a/vues/v_choixVisiteur.php +++ /dev/null @@ -1,34 +0,0 @@ - - - -
-

Etat de frais de - - - Mois de '; - } -?> diff --git a/vues/v_entete.php b/vues/v_entete.php deleted file mode 100644 index b46e0ad..0000000 --- a/vues/v_entete.php +++ /dev/null @@ -1,30 +0,0 @@ - - - - Intranet du Laboratoire Galaxy-Swiss Bourdin - - - - - -
-
- Laboratoire Galaxy-Swiss Bourdin - -
-
    -
  •  
  • -
  •  |
  • -
  • Bienvenue '.$_SESSION['prenom'].' '.strtoupper($_SESSION['nom']).' ('.$_SESSION['typeUtilisateur'].')'; - if ($_SESSION['statut']<>'1') {echo '
    Il y a '.$nbRemboursementsAValider.' demandes à valider';} - echo '
  • -
  • déconnexion
  • -
-
';} ?> -

ÉTAT DES FRAIS ENGAGÉS

-

'.$_SESSION['adr2'].'

';?> -
- diff --git a/vues/v_etatFrais.php b/vues/v_etatFrais.php deleted file mode 100644 index 55096c7..0000000 --- a/vues/v_etatFrais.php +++ /dev/null @@ -1,140 +0,0 @@ - - -
- - - - - - - - - -   - ';} ?> - - - - - - - - - '; - - if ($ajoutFraisPossible['horsForfait']=="oui" or $ajoutFraisPossible['modifComptable']=="oui") echo ' - - '; - - echo ' - '; - $totalFraisForfait=$totalFraisForfait + $unFraisForfait['totalLigne']; - } - echo ' - - - - - '; - - if ($ajoutFraisPossible['horsForfait']=="oui" or $ajoutFraisPossible['modifComptable']=="oui") {echo ' - - - ';} - ?> - -

 Éléments forfaitisés - - Ajouter un frais forfaitaire  - ';?>

-
QuantitéNature de la dépensePrixMontant 
'.$unFraisForfait['lfQuantite'].''.$unFraisForfait['fLibelle'].''.number_format($unFraisForfait['lfMontant'],2,',','.').''.number_format($unFraisForfait['totalLigne'],2,',','.').'modifiersupprimer
  Total'.number_format($totalFraisForfait,2,',','.').'  
- - - - - - - - - - - - - -   - ';} - if ($ajoutFraisPossible['modifComptable']=="oui") {echo ' - ';} - ?> - - - - 'REFUSE') {$td=''. - $td.'>'.$unFraisHorsForfait['lhLibelle'].''. - $td.' align="right">'.number_format($unFraisHorsForfait['lhMontant'],2,',','.').''; - - if ($ajoutFraisPossible['horsForfait']=="oui" or $ajoutFraisPossible['modifComptable']=="oui") - {echo ' - - '; - } - if ($ajoutFraisPossible['modifComptable']=="oui") - {if (substr($unFraisHorsForfait['lhLibelle'],0,6)<>'REFUSE') - {echo '';} - else - {echo '';} - } - $totalFraisHorsForfait=$totalFraisHorsForfait + $unFraisHorsForfait['lhMontant']; echo ' - '; - } - echo ' - - - - '; - if ($ajoutFraisPossible['horsForfait']=="oui" or $ajoutFraisPossible['modifComptable']=="oui") {echo ' - - ';} - if ($ajoutFraisPossible['modifComptable']=="oui") {echo ' - ';} echo ' - - -

 Autres dépenses (hors forfaits) - - Ajouter un frais hors forfait  - ';?>

-
DateNature de la dépenseMontant valider tous les justificatifs -
'. - $td.'>'.$unFraisHorsForfait['lhDate'].'modifiersupprimer 
 Total'.number_format($totalFraisHorsForfait,2,',','.').'   
-
-

Total de la demande de remboursement de frais : '.number_format($totalFraisForfait + $totalFraisHorsForfait,2,',','.').' €

- - -
'; ?> \ No newline at end of file diff --git a/vues/v_newFiche.php b/vues/v_newFiche.php index 3e5ae76..deca165 100644 --- a/vues/v_newFiche.php +++ b/vues/v_newFiche.php @@ -30,7 +30,7 @@ + id="" value="" > € @@ -86,11 +86,11 @@ - - @@ -102,6 +102,9 @@ + @@ -115,6 +118,7 @@ + TOTAL: 0€ @@ -137,7 +141,15 @@ --> -
- -
+ +
+ +
+ \ No newline at end of file