Contexte
Ce projet personnel encadré se place dans le cadre de l’évolution du système d’information du laboratoire pharmaceutique GSB.
La force de vente du laboratoire pharmaceutique GSB est représentée par les visiteurs médicaux qui visitent les professionnels de santé susceptibles de prescrire à leurs patients les produits du laboratoire GSB.
Les déplacements et les actions des visiteurs médicaux sur le terrain engendrent des frais qui doivent être pris en charge par la comptabilité. Il a été choisi de conserver le principe d’un forfait mensuel pour les visiteurs : frais de nuit d’étape, forfait kilométrique, forfait repas et nuit d’hôtel). Tout le reste représente les frais hors forfait qui doivent être justifiés auprès du service comptable par l’envoi de justificatifs.
La description du contexte du laboratoire GSB se trouve ici.
Liens utiles
- L’organisation GSB : https://site-en-vrac.com/gsb/contexte/GSB-organisation.pdf
- Le cahier des charges : https://site-en-vrac.com/gsb/contexte/GSB-cahierCharges.pdf
- Les normes de développement : https://site-en-vrac.com/gsb/contexte/GSB-normesDevlpt.pdf
- Les sources (GitHub) : https://github.com/olivieerr/gsb
- Le site : http://naseb3ef3.myqnapcloud.com/gsb
- La base de données : https://naseb3ef3.myqnapcloud.com:8081/phpMyAdmin
- La documentation générée : https://site-en-vrac.com/gsb/doc
- Lien vers une sauvegarde de la BDD : https://site-en-vrac.com/gsb/contexte/gsb_frais_v2.sql
Organisation du travail
La partie comptable a été seul, sous NetBeans et PHPStorm en PHP et MySQL. Le projet a été versionné avec Git et mis en ligne sur la forge GitHub.
Présentation rapide de l’espace des visiteurs (code fourni)
La page de connexion

La page d’accueil des visiteurs

La partie « renseigner la fiche de frais »

Et la page d’affichage des fiches de frais

Missions effectuées
Au début de ce projet, seule la partie réservée aux visiteurs était codée.
L’objectif de ce projet a été de développer la partie comptable en PHP selon le modèle MVC. Voici la liste des missions que j’ai effectuées dans le cadre de ce projet :
- Validation des fiches de frais
- Suivi du paiement des fiches de frais
- Production de la documentation
- Gestion du refus de certains frais hors forfait
Préparatifs
Avant de commencer la mission la première mission, il a fallu préparer l’espace comptable du site. J’ai ajouté dans la base de données, une table « comptable » basée sur le même schéma que la table des « visiteurs médicaux ».

Dans laquelle j’ai inséré deux comptables imaginaires. La connexion se fait sur la même page que les visiteurs. C’est en fonction de leur rôle de la personne qui se connecte que le contrôle l’aiguillera sur la partie visiteur ou comptable.
Puis un espace d’accueil des comptables.

Le CSS est géré par Bootstrap 3.3.7
Une fois connecté, le comptable se verra proposé de valider une fiche de frais ou de suivre le paiement des fiches de frais.
Mission « valider la fiche de frais »
Les fiches de frais ont quatre états définis dans la base de données .

La vue
Pour valider une fiche de frais, le comptable devra d’abord choisir un visiteur dans une liste déroulante

Puis le comptable se verra proposé de choisir parmi la liste de fiches de frais clôturées (état « CL »). Ici, c’est un choix que j’ai fait pour éviter que le comptable ne corrige une fiche de frais en cours ou déjà remboursée. (Ici, il y a un axe d’amélioration en prévenant le comptable lorsqu’il n’y a plus de fiche de frais clôturée pour un visiteur).

Une fois le mois et le visiteur choisi, le contrôleur modifie la vue et lui envoie les informations des frais forfait et de frais hors forfait.

Aux vues des éléments fournis, le comptable peut
- Soit corriger les éléments forfaitisés en cliquant sur le bouton « corriger », un bandeau l’informe du bon déroulement de l’opération

- Soit « refuser » un frais hors forfait : un popup apparait pour valider le refus :

Si le comptable valide le refus, le frais est retiré du tableau (reporté au mois suivant) et les informations de rais hors forfait sont mises automatiquement à jour.

- Soit mettre à jour le nombre de justificatifs à l’aide du bouton « mettre à jour », un bandeau apparait pour informer de la bonne exécution de la mise à jour et le nombre de justificatifs est mis à jour.

- Soit en cliquant sur le bouton « annuler » revenir à la vue de sélection du visiteur
- Ou si toutes les informations sont exactes, cliquer sur le bouton « valider », pour mettre la fiche de frais en attente de remboursement (état « VA »). Elle n’apparaitra plus dans la liste de mois du visiteur. Là aussi, un popup demande au comptable s’il souhaite vraiment valider la fiche de frais.

A l’issue, le contrôleur renvoie le comptable à la page d’accueil et l’informe du bon déroulement de l’opération de validation.

Le contrôleur « c_validerFicheFrais.php »
Dans la capture d’écran suivante, nous avons les différentes actions du contrôleur : la sélection du visiteur, la sélection des fiches de frais « clôturées » via la fonction getLesMoisNonValides.

On peut également voir la fonction que j’ai créée moisVersFrancais qui convertit les dates issues de la base de données au format « aaaamm » vers le format « mm/aaaa »
La fonction getLesMoisValides

Et la fonction moisVersFrancais citée plus haut.

A chaque fois, le contrôleur récupère l’identifiant du visiteur et le mois de la fiche de frais. Voici la suite des actions gérés par le contrôleur.

Modèle
Pour valider la fiche de frais, le contrôleur demande au modèle, la classe PDO, de faire les modifications dans la base de données. Notre fiche est passée de l’état clôturée (CL) à l’état validée (VA).

Ainsi dans la base de données, nous retrouvons l’état « validé » (VA) de la fiche de frais de mois d’avril 2021 du visiteur Villachane (idvisiteur = a131).

Mission : « suivi du paiement des fiches de frais«
La vue
Dans notre exemple pour le contrôle des frais, nous avons validé la fiche du mois d’avril du visiteur Villechalane. Nous la retrouvons dans un tableau regroupant toutes les fiches se trouvant dans l’état « validé » (VA). J’ai choisi de classer le tableau par ordre de date décroissant. Le bouton « consulter » permet de choisir la fiche de frais voulue.

Et la vue pour consultée une fiche de frais.

C’est dans la vue, avec les informations reçues du contrôleur que je procède aux calculs.


Le contrôleur « c_suiviPaiement.php »

Le modèle
En confirmant, le contrôleur envoie les informations au modèle pour mettre à jour la base de données, à l’aide d’une requête préparée.

Mission « Production de la documentation »
A l’aide phpDocumentor que j’ai installé sur mon serveur et avec l’aide des commentaires, j’ai pu générer la documentation des fonctions et des classes que j’ai écrites. La documentation gérée se trouve à l’adresse suivante : https://site-en-vrac.com/gsb/doc/

Mission : « Gestion du refus de certains frais hors forfait »
Il est stipulé dans le cahier des charges que lors d’un refus de frais hors forfait, il faut ajouter au libellé : « refusé » et limiter sa longueur à 100 caractères. Voici la fonction « refuserFrais » du contrôleur c_validerFicheFrais.

J’ai créé une fonction « libelleMax » qui se charge de vérifier et de couper le libellé à 100 caractères en partant de la fin.

Mais avant, grâce à la concaténation, j’ajoute le mot « REFUSE : » devant le libellé.

Ici, j’ai recours au transtypage. Comme j’additionne « 1 » au mois, PHP convertit implicitement la variable « mois » en nombre. Or pour la fonction (fournie) EstPremierFraisMois, j’ai besoin d’une chaîne et non d’un nombre.

Ce qui donne sur le mois suivant le résultat suivant

Le code source est accessible sur mon dépôt GitHub à l’adresse suivante : https://github.com/olivieerr/gsb
La rapport d’activité au format « pdf » est disponible à cette adresse : PHP : développement de la partie comptable (site-en-vrac.com)