CREATE EVENT MAJ ON SCHEDULE EVERY 1 MONTH STARTS '2013-10-10 01:00:00' DO UPDATE fichefrais SET idEtat="CL" WHERE idEtat="CR" AND right (mois,2)!=MONTH(CURRENT_DATE);
Cette requête permet la création d'un événement appelé “MAJ” qui aura lieu tout les 10 du mois à 1 heure du matin. Cet événement fera alors la modification de toutes les fiches frais à l'état “CR” et les passera à l'état “CL”.
Pour différencier un comptable d'un visiteur, cette requête a été utilisée.
function obtenirComptable() { $id=$_SESSION["idUser"]; $req = "select Comptable from visiteur where id='".$id."'"; $idCompt = mysql_query($req); $ligne = mysql_fetch_assoc($idCompt); return $ligne["Comptable"]; }
Au préalable une colonne Comptable a été ajoutée à la table visiteur. Après on l'intègre dans le code de la page _sommaire.inc.php sachant qu'un comptable possède la valeur 1.
<?php if (estVisiteurConnecte() ) { if (obtenirComptable()==1){ ?> <h3>Comptable</h3> <ul id="menuList"> <li class="smenu"> <a href="cAccueil.php" title="Page d'accueil">Accueil</a> </li> <li class="smenu"> <a href="cSeDeconnecter.php" title="Se déconnecter">Se déconnecter</a> </li> <li class="smenu"> <a href="cValiderFichesFrais.php" title="Validation fiche de frais">Validation fiche de frais</a> </li> <!--<li class="smenu"> <a href="cConsultFichesFrais.php" title="Consultation de mes fiches de frais">Mes fiches de frais</a> </li>--> </ul> <?php // affichage des éventuelles erreurs déjà détectées if ( nbErreurs($tabErreurs) > 0 ) { echo toStringErreurs($tabErreurs) ; } ?> <?php } else{ ?> <h3>Visiteur médical</h3> <ul id="menuList"> <li class="smenu"> <a href="cAccueil.php" title="Page d'accueil">Accueil</a> </li> <li class="smenu"> <a href="cSeDeconnecter.php" title="Se déconnecter">Se déconnecter</a> </li> <li class="smenu"> <a href="cSaisieFicheFrais.php" title="Saisie fiche de frais du mois courant">Saisie fiche de frais</a> </li> <li class="smenu"> <a href="cConsultFichesFrais.php" title="Consultation de mes fiches de frais">Mes fiches de frais</a> </li> </ul> <?php // affichage des éventuelles erreurs déjà détectées if ( nbErreurs($tabErreurs) > 0 ) { echo toStringErreurs($tabErreurs) ; } } } ?>
Le menu du comptable propose donc de valider des fiches de frais et de suivre les remboursements des fiches.
Tout d'abord on crée une requête pour récupérer tous les visiteurs possédants des fiches de frais.
function obtenirReqUtilisateursFicheFrais() { $req = "select id, nom, prenom from visiteur,fichefrais where Comptable=0 and idVisiteur=id and idEtat='CL' or idEtat='CR'"; return $req; }
Ensuite on l'intègre à la page cValiderFichesFrais.php pour obtenir une liste déroulante.
<label for="lstUtil">Utilisateur : </label> <select id="lstUtil" name="lstUtil" title="Sélectionner l'utilisateur souhaité"> <?php $req1 = obtenirReqUtilisateursFicheFrais(); $idUtil = mysql_query($req1); $Util = mysql_fetch_assoc($idUtil); while (is_array($Util)){ $id = $Util["id"]; $nom = $Util["nom"]; $prenom = $Util["prenom"]; ?> <option value="<?php echo $id ?>"<?php if($utilSaisi==$id){?> selected="selected" <?php } ?>> <?php echo $nom." ".$prenom; ?></option> <?php $Util = mysql_fetch_assoc($idUtil); } mysql_free_result($idUtil); ?> </select></br>
Après on utilise la liste déroulante de la page cConsulterFicheFrais.php afin de sélectionner le mois.
<label for="lstMois">Mois : </label> <select id="lstMois" name="lstMois" title="Sélectionnez le mois souhaité pour la fiche de frais"> <?php // on propose tous les mois pour lesquels le visiteur a une fiche de frais $req = obtenirReqMoisFicheFrais($id); $idJeuMois = mysql_query($req, $idConnexion); $lgMois = mysql_fetch_assoc($idJeuMois); while ( is_array($lgMois) ) { $mois = $lgMois["mois"]; $noMois = intval(substr($mois, 4, 2)); $annee = intval(substr($mois, 0, 4)); ?> <option value="<?php echo $mois; ?>"<?php if ($moisSaisi == $mois) { ?> selected="selected"<?php } ?>><?php echo obtenirLibelleMois($noMois) . " " . $annee; ?></option> <?php $lgMois = mysql_fetch_assoc($idJeuMois); } mysql_free_result($idJeuMois); ?> </select>
Une fois la sélection effectuée la fiche de frais ainsi que les liste des frais hors forfait s'affiche. Le comptable peut alors cliquer sur un lien refuser qui indiquera dans le libellé du frais hors forfait que le remboursement de ce frais est refusé. La requête modifie donc le libellé du frais en y ajoutant Refusé.
function modifierRefuser($idLigneHF) { $deb="select libelle from lignefraishorsforfait where id='".$idLigneHF."'"; $mid=mysql_query($deb); $fin=mysql_fetch_assoc($mid); $libelle=$fin["libelle"]; $refuse="Refuse - "; $req="update lignefraishorsforfait set libelle='".$refuse.$libelle."' where id='".$idLigneHF."'"; mysql_query($req); }
Il faut ensuite l'intégrer dans le tableau des frais hors forfait.
while ( is_array($lgEltHorsForfait) ) { $idLigneHF=$lgEltHorsForfait["id"]; $date=$lgEltHorsForfait["date"]; ?> <tr> <td><?php echo $lgEltHorsForfait["date"] ; ?></td> <td><?php echo filtrerChainePourNavig($lgEltHorsForfait["libelle"]) ; ?></td> <td><?php echo $lgEltHorsForfait["montant"] ; ?></td> <td><a OnClick="<?php echo modifierRefuser($idLigneHF) ; ?>">Refuser</a></td> </tr> <?php $lgEltHorsForfait = mysql_fetch_assoc($idJeuEltsHorsForfait); } mysql_free_result($idJeuEltsHorsForfait);
Le comptable a également la possibilité de valider la fiche de frais et la faire passer en demande de remboursement, c'est à dire faire passer la fiche à l'état “VA”. La requête permet donc de mettre à jour l'état de la fiche et d'enregistrer la date de modification.
function modifierFicheHF($unMois, $unIdVisiteur, $date) { $unMois=filtrerChainePourBD($unMois); $unIdVisiteur=filtrerChainePourBD($unIdVisiteur); $date=date('o--m--d'); $requete = "update FicheFrais set idEtat='VA', dateModif='".$date."' where idVisiteur = '" . $unIdVisiteur . "' and mois = '" . $unMois . "'"; mysql_query($requete); }
Pour exécuter la requête, nous l'avons mise dans un bouton Valider.
<input type="button" value="Valider" size="20" OnClick="<?php modifierFicheHF($mois, $id, $date) ?>" title="Mise en paiement de la fiche frais" />