Écran unique « Synthèse Kms » fusionnant résumés et montants réglés
- Nouvelle page Synthèse Kms (/synthese-kms) : sélecteur temporel en mode année seule + véhicule + Afficher, barème appliqué, tableau 12 mois (km, remb. réel du mois, indication 80%, montant réglé saisissable, export PDF mensuel), ligne TOTAL (km annuel, montant réel, total réglé, export PDF annuel), bouton Enregistrer global (seuls les montants modifiés), auto-affichage à l'arrivée. Aucun nouvel endpoint (composition d'endpoints existants). - Suppression des écrans « Résumé mensuel », « Résumé annuel » et « Montants réglés » (routes et liens de menu retirés). - SelecteurTemporelComponent : mode « année seule » (Input/Output dédiés) et repli automatique au clic sur le niveau le plus bas. - Pleine largeur des écrans Trajets, Carnet d'adresses et Synthèse Kms (Specs conserve sa largeur de lecture). - Liste des trajets : boutons d'action déplacés en début de ligne (après la poignée, avant A/R), alignés à droite. - Specs (requirements/design-requirements/design) synchronisées : glossaire Synthèse_Kms, Exigences 3/4/13/14 adaptées, critères 12.25-27.
This commit is contained in:
@@ -35,11 +35,12 @@ L'application permet de gérer un profil (identité, matricule, adresse de domic
|
||||
- **Profil_Configure** : L'état du Profil considéré comme configuré lorsqu'un Profil est enregistré avec un nom et un prénom non vides ET qu'au moins un Véhicule (plaque, Puissance_Fiscale, Date_Effet) est enregistré. À l'inverse, le Profil est dit « non configuré » lorsqu'aucun Profil n'est enregistré avec un nom et un prénom non vides, ou lorsqu'aucun Véhicule n'est enregistré.
|
||||
- **Onboarding** : Le parcours d'initialisation présenté à la première utilisation de l'Application lorsque le Profil est non configuré, invitant l'utilisateur à renseigner son identité (nom, prénom, matricule), éventuellement son Adresse_Domicile, et au moins un Véhicule avant d'accéder aux fonctionnalités de saisie et de consultation des Trajets.
|
||||
- **Vue_Consultation** : La vue principale de l'Application permettant la saisie et la consultation des Trajets (Sélecteur_Temporel, zone des Trajets, Panneau_Totaux, Carte).
|
||||
- **Synthèse_Kms** : L'écran unique (lien de menu « Synthèse Kms ») regroupant la consultation annuelle agrégée par mois, la saisie des Montant_Regle et les exports PDF. Il fusionne et remplace les trois anciens écrans distincts « Résumé mensuel », « Résumé annuel » et « Montants réglés ». Il présente, pour une année et un Véhicule sélectionnés, le Bareme_Kilometrique appliqué puis un tableau d'une ligne par mois (kilomètres du mois, Frais_Reel_Mensuel, Montant_Previsionnel_Mensuel, Montant_Regle saisissable, Export_PDF mensuel) et une ligne TOTAL (total kilométrique annuel, Montant_Reel, total réglé, Export_PDF annuel). La Synthèse_Kms n'affiche pas le détail des Trajets un par un ; ce détail reste disponible sur la Vue_Consultation.
|
||||
- **Commentaire** : Un texte optionnel associé à un Trajet, permettant à l'utilisateur d'annoter un déplacement (0 à 500 caractères).
|
||||
- **Trajet_Précédent** : Le Trajet immédiatement antérieur dans la liste chronologique d'une journée, dont l'adresse d'arrivée peut servir de départ lors d'une insertion.
|
||||
- **Trajet_Suivant** : Le Trajet immédiatement postérieur dans la liste chronologique d'une journée, dont l'adresse de départ peut servir d'arrivée lors d'une insertion.
|
||||
- **Position** : Un entier positif associé à chaque Trajet au sein d'une même journée, déterminant son rang dans la liste affichée. L'ordre d'affichage est toujours trié par Position croissante, indépendamment de l'heure de création du Trajet.
|
||||
- **Sélecteur_Temporel** : Le composant de navigation (repliable) permettant de choisir successivement une année puis un mois pour consulter les Trajets correspondants. La journée affichée sur la Carte n'est pas choisie par des boutons de navigation mais suit le survol des Trajets dans la liste.
|
||||
- **Sélecteur_Temporel** : Le composant de navigation (repliable) permettant de choisir une période pour consulter les Trajets correspondants. Il fonctionne selon deux modes : un mode « année + mois » (choix successif d'une année puis d'un mois, utilisé sur la Vue_Consultation) et un mode « année seule » (choix d'une année uniquement, sans grille de mois, utilisé par la Synthèse_Kms). Dans les deux modes, la liste des années proposées se limite à l'année courante et aux années comportant au moins un Trajet. Il se referme automatiquement (repli) dès que l'utilisateur sélectionne son niveau le plus bas (le mois en mode « année + mois », l'année en mode « année seule »). La journée affichée sur la Carte n'est pas choisie par des boutons de navigation mais suit le survol des Trajets dans la liste.
|
||||
- **Panneau_Totaux** : La zone latérale, toujours visible, affichant les totaux kilométriques du jour, du mois sélectionné et de l'année sélectionnée (cumul jusqu'au mois sélectionné inclus).
|
||||
- **Total_Annuel_Partiel** : Le total kilométrique de l'année sélectionnée cumulant uniquement les Trajets jusqu'au mois sélectionné inclus, sans inclure les mois postérieurs.
|
||||
- **Véhicule** : Un véhicule de l'utilisateur, caractérisé par une plaque d'immatriculation et une puissance fiscale, avec une date d'effet à partir de laquelle il devient le véhicule courant. L'historique des Véhicules est conservé.
|
||||
@@ -120,24 +121,23 @@ L'application permet de gérer un profil (identité, matricule, adresse de domic
|
||||
|
||||
---
|
||||
|
||||
### Requirement 3: Consultation du résumé mensuel
|
||||
### Requirement 3: Consultation du total kilométrique mensuel
|
||||
|
||||
**User Story:** En tant qu'utilisateur, je veux consulter le total des kilomètres parcourus pour un mois donné, afin de suivre mes déplacements mensuels.
|
||||
|
||||
> **Évolution de navigation** : la consultation mensuelle agrégée ne dispose plus d'un écran dédié « Résumé mensuel » (écran supprimé). Le total kilométrique mensuel est désormais présenté, agrégé par mois, dans l'écran unique Synthèse_Kms (voir Exigences 13 et 14). Le détail des Trajets d'un mois (liste trajet par trajet) n'est plus présenté dans un écran de synthèse : il reste consultable sur la Vue_Consultation (écran « Trajets »). Les règles de calcul du Backend ci-dessous restent inchangées et continuent d'alimenter la Synthèse_Kms comme la Vue_Consultation.
|
||||
>
|
||||
> Les exigences techniques associées (codes HTTP) sont décrites dans `design-requirements.md`, Requirement 3.
|
||||
|
||||
#### Acceptance Criteria
|
||||
|
||||
1. WHEN l'utilisateur sélectionne un mois (valeur entre 1 et 12 inclus) et une année (valeur entre 2000 et 2100 inclus), THE Frontend SHALL afficher la liste des Trajets enregistrés pour ce mois ainsi que le Résumé_Mensuel correspondant.
|
||||
2. WHEN le Backend reçoit une requête de Résumé_Mensuel pour un mois (entre 1 et 12 inclus) et une année (entre 2000 et 2100 inclus) donnés, THE Backend SHALL retourner la liste des Trajets de ce mois triés par date croissante puis par Position croissante au sein de chaque journée, avec leur Distance respective, leur Commentaire et le total kilométrique du mois.
|
||||
3. WHEN le Backend reçoit une requête de Résumé_Mensuel, THE Backend SHALL calculer le total kilométrique du Résumé_Mensuel en additionnant les Distances, arrondies selon Precision_Distance (voir spec `precision-distances-km`, Requirement 6), de tous les Trajets du mois concerné.
|
||||
4. IF aucun Trajet n'est enregistré pour le mois sélectionné, THEN THE Backend SHALL retourner un Résumé_Mensuel avec une liste vide et un total kilométrique de zéro.
|
||||
5. WHEN le Frontend affiche le Résumé_Mensuel, THE Frontend SHALL afficher la Distance de chaque Trajet et le total kilométrique mensuel avec le nombre de décimales défini par Precision_Distance (voir spec `precision-distances-km`, Requirements 1, 3, 4, 5).
|
||||
6. IF le Backend reçoit une requête de Résumé_Mensuel avec un mois hors de la plage 1–12 ou une année hors de la plage 2000–2100, THEN THE Backend SHALL refuser la requête et retourner un message descriptif.
|
||||
7. IF le Backend retourne une erreur lors d'une requête de Résumé_Mensuel, THEN THE Frontend SHALL afficher un message d'erreur indiquant que le chargement des données a échoué et ne pas afficher de données kilométriques partielles.
|
||||
8. THE Frontend SHALL afficher, dans la liste des Trajets du Résumé_Mensuel, une colonne "Commentaire" positionnée entre la colonne "Date" et la colonne "Départ", affichant le Commentaire du Trajet ou « — » lorsqu'il est absent.
|
||||
9. THE Frontend SHALL utiliser le Sélecteur_Temporel (défini à l'Exigence 12) pour choisir l'année puis le mois du Résumé_Mensuel, au lieu de sélecteurs distincts de mois et d'année et d'un bouton de validation séparé.
|
||||
10. WHEN l'utilisateur sélectionne un mois via le Sélecteur_Temporel sur l'écran de Résumé_Mensuel, THE Frontend SHALL charger et afficher automatiquement le Résumé_Mensuel correspondant, sans action supplémentaire de l'utilisateur.
|
||||
1. WHEN le Backend reçoit une requête de Résumé_Mensuel pour un mois (entre 1 et 12 inclus) et une année (entre 2000 et 2100 inclus) donnés, THE Backend SHALL retourner la liste des Trajets de ce mois triés par date croissante puis par Position croissante au sein de chaque journée, avec leur Distance respective, leur Commentaire et le total kilométrique du mois.
|
||||
2. WHEN le Backend reçoit une requête de Résumé_Mensuel, THE Backend SHALL calculer le total kilométrique du Résumé_Mensuel en additionnant les Distances, arrondies selon Precision_Distance (voir spec `precision-distances-km`, Requirement 6), de tous les Trajets du mois concerné.
|
||||
3. IF aucun Trajet n'est enregistré pour le mois sélectionné, THEN THE Backend SHALL retourner un Résumé_Mensuel avec une liste vide et un total kilométrique de zéro.
|
||||
4. IF le Backend reçoit une requête de Résumé_Mensuel avec un mois hors de la plage 1–12 ou une année hors de la plage 2000–2100, THEN THE Backend SHALL refuser la requête et retourner un message descriptif.
|
||||
5. IF le Backend retourne une erreur lors d'une requête de Résumé_Mensuel, THEN THE Frontend SHALL afficher un message d'erreur indiquant que le chargement des données a échoué et ne pas afficher de données kilométriques partielles.
|
||||
6. WHEN le Frontend affiche le total kilométrique d'un mois dans la Synthèse_Kms, THE Frontend SHALL afficher ce total avec le nombre de décimales défini par Precision_Distance (voir spec `precision-distances-km`, Requirements 1, 3, 4, 5).
|
||||
7. WHEN l'utilisateur consulte le détail des Trajets d'un mois sur la Vue_Consultation, THE Frontend SHALL afficher, dans la liste des Trajets, une colonne "Commentaire" positionnée entre la colonne "Date" et la colonne "Départ", affichant le Commentaire du Trajet ou « — » lorsqu'il est absent.
|
||||
|
||||
---
|
||||
|
||||
@@ -145,13 +145,15 @@ L'application permet de gérer un profil (identité, matricule, adresse de domic
|
||||
|
||||
**User Story:** En tant qu'utilisateur, je veux consulter le total des kilomètres parcourus pour une année entière, afin d'avoir une vision globale de mes déplacements annuels.
|
||||
|
||||
> **Évolution de navigation** : la consultation annuelle ne dispose plus d'un écran dédié « Résumé annuel » (écran supprimé). La vision annuelle (12 mois + total) est désormais présentée dans l'écran unique Synthèse_Kms (voir Exigence 14), via sa ligne par mois et sa ligne TOTAL. Les règles de calcul du Backend ci-dessous restent inchangées.
|
||||
|
||||
#### Acceptance Criteria
|
||||
|
||||
1. WHEN l'utilisateur sélectionne une année comprise entre 2000 et 2100 inclus, THE Frontend SHALL afficher le Résumé_Annuel présentant le total kilométrique de chaque mois et le total annuel.
|
||||
1. WHEN l'utilisateur sélectionne une année comprise entre 2000 et 2100 inclus dans la Synthèse_Kms, THE Frontend SHALL afficher le total kilométrique de chaque mois et le total annuel.
|
||||
2. WHEN le Backend reçoit une requête de Résumé_Annuel pour une année donnée, THE Backend SHALL retourner les douze Résumés_Mensuels de cette année, chacun avec son total kilométrique.
|
||||
3. WHEN le Backend reçoit une requête de Résumé_Annuel pour une année donnée, THE Backend SHALL calculer le total kilométrique annuel en additionnant les totaux kilométriques des douze Résumés_Mensuels de l'année concernée.
|
||||
4. IF aucun Trajet n'est enregistré pour un mois d'une année, THEN THE Backend SHALL inclure ce mois dans le Résumé_Annuel avec un total kilométrique de zéro.
|
||||
5. WHEN le Frontend affiche le Résumé_Annuel, THE Frontend SHALL afficher chaque total kilométrique mensuel et le total annuel avec le nombre de décimales défini par Precision_Distance (voir spec `precision-distances-km`, Requirements 1, 3, 4, 5) et une valeur maximale affichable de 999 999,99 km.
|
||||
5. WHEN le Frontend affiche la vision annuelle dans la Synthèse_Kms, THE Frontend SHALL afficher chaque total kilométrique mensuel et le total annuel avec le nombre de décimales défini par Precision_Distance (voir spec `precision-distances-km`, Requirements 1, 3, 4, 5) et une valeur maximale affichable de 999 999,99 km.
|
||||
6. IF le Backend retourne une erreur lors d'une requête de Résumé_Annuel, THEN THE Frontend SHALL afficher un message d'erreur indiquant que le chargement des données a échoué et ne pas afficher de données kilométriques partielles.
|
||||
7. THE Backend SHALL calculer le total kilométrique annuel exclusivement en additionnant les totaux kilométriques des douze Résumés_Mensuels de l'année concernée ; aucun kilométrage non rattaché à un mois ne peut être inclus dans le total annuel.
|
||||
|
||||
@@ -342,6 +344,9 @@ L'application permet de gérer un profil (identité, matricule, adresse de domic
|
||||
22. WHEN l'utilisateur change de Véhicule sélectionné, THE Frontend SHALL mettre à jour la liste mensuelle des Trajets, le Panneau_Totaux et la Carte sans rechargement complet de la page.
|
||||
23. WHEN un Trajet est créé ou modifié avec une date appartenant à un mois différent du mois affiché, THE Frontend SHALL se repositionner automatiquement sur le mois de ce Trajet, cibler sa journée sur la Carte, et déplier le groupe de cette journée dans la liste afin que le Trajet ajouté soit visible.
|
||||
24. THE Frontend SHALL afficher, à l'extrémité droite de l'en-tête de chaque journée, un bouton dédié « Ajouter un trajet sur cette journée » qui ouvre le formulaire de création avec la date de CETTE journée pré-remplie, indépendamment de la journée actuellement affichée sur la Carte (afin d'éviter qu'un survol traversant plusieurs journées ouvertes ne fasse dériver la date visée par l'utilisateur).
|
||||
25. THE Sélecteur_Temporel SHALL proposer un mode « année seule » limitant la sélection au choix d'une année (sans afficher la grille des mois) et émettant l'année choisie, utilisé par la Synthèse_Kms ; sur la Vue_Consultation, le Sélecteur_Temporel SHALL conserver son mode « année + mois ». Dans les deux modes, la liste des années proposées se limite à l'année courante et aux années comportant au moins un Trajet.
|
||||
26. WHEN l'utilisateur sélectionne le niveau le plus bas du Sélecteur_Temporel (le mois en mode « année + mois », l'année en mode « année seule »), THE Sélecteur_Temporel SHALL se replier automatiquement.
|
||||
27. THE Frontend SHALL afficher les écrans « Trajets » (Vue_Consultation), « Carnet d'adresses » et Synthèse_Kms en occupant toute la largeur disponible, tandis que l'écran de consultation des Documents_Specification SHALL conserver une largeur de lecture limitée.
|
||||
|
||||
---
|
||||
|
||||
@@ -363,6 +368,7 @@ L'application permet de gérer un profil (identité, matricule, adresse de domic
|
||||
7. THE Frontend SHALL afficher tous les montants en euros avec une précision de deux décimales.
|
||||
8. THE Frontend SHALL afficher, dans l'en-tête de chaque feuille mensuelle, le Coefficient_Base_Vehicule (coefficient et base de la tranche applicable selon la puissance fiscale du Véhicule et le total kilométrique annuel).
|
||||
9. THE Frontend SHALL proposer un bouton « Recopier le dernier barème connu » qui, pour l'année affichée, recopie l'intégralité des Tranches_Bareme de l'année la plus récente antérieure comportant un barème. IF des Tranches_Bareme existent déjà pour l'année affichée, THEN THE Frontend SHALL demander une confirmation avant de les remplacer intégralement (annule et remplace). THE Frontend SHALL rendre ce bouton inaccessible lorsque l'année affichée est celle du dernier barème connu (aucune année antérieure à recopier).
|
||||
10. WHEN l'utilisateur consulte la Synthèse_Kms, THE Frontend SHALL afficher le Bareme_Kilometrique appliqué (tranche, Puissance_Fiscale, coefficient, base) au-dessus du tableau mensuel, puis présenter pour chaque mois une colonne affichant le Montant_Previsionnel_Mensuel (indication 80%) ; la ligne TOTAL SHALL laisser cette colonne « indication 80% » vide (aucune indication 80% au niveau annuel).
|
||||
|
||||
---
|
||||
|
||||
@@ -370,11 +376,13 @@ L'application permet de gérer un profil (identité, matricule, adresse de domic
|
||||
|
||||
**User Story:** En tant qu'utilisateur, je veux saisir le montant réellement versé chaque mois et voir la régularisation annuelle, afin de connaître le solde restant à verser en fin d'année.
|
||||
|
||||
> Les exigences techniques associées (code HTTP de rejet d'un montant négatif) sont décrites dans `design-requirements.md`, Requirement 14.
|
||||
> **Évolution de navigation** : la saisie des Montant_Regle ne dispose plus d'un écran dédié « Montants réglés » (écran supprimé). Elle se fait désormais dans l'écran unique Synthèse_Kms, directement dans le tableau mensuel, aux côtés de la consultation annuelle (ex-« Résumé annuel ») et du total mensuel (ex-« Résumé mensuel »).
|
||||
>
|
||||
> Les exigences techniques associées (code HTTP de rejet d'un montant négatif, composition d'endpoints, enregistrement multiple) sont décrites dans `design-requirements.md`, Requirement 14.
|
||||
|
||||
#### Acceptance Criteria
|
||||
|
||||
1. THE Frontend SHALL permettre à l'utilisateur de saisir un Montant_Regle (valeur numérique positive en euros, deux décimales) pour un mois et une année donnés, associé à un Véhicule ; ce montant est saisi librement et peut différer d'un mois à l'autre.
|
||||
1. THE Frontend SHALL permettre à l'utilisateur de saisir, dans le tableau mensuel de la Synthèse_Kms, un Montant_Regle (valeur numérique positive en euros, deux décimales) pour chaque mois de l'année et du Véhicule sélectionnés ; ce montant est saisi librement et peut différer d'un mois à l'autre.
|
||||
2. WHEN l'utilisateur enregistre un Montant_Regle, THE Backend SHALL persister ce montant associé au mois, à l'année et au Véhicule concernés.
|
||||
3. IF un Montant_Regle existe déjà pour le même mois, la même année et le même Véhicule, THEN THE Backend SHALL mettre à jour le montant existant plutôt que d'en créer un nouveau.
|
||||
4. IF l'utilisateur saisit un Montant_Regle négatif, THEN THE Backend SHALL rejeter la saisie.
|
||||
@@ -382,6 +390,12 @@ L'application permet de gérer un profil (identité, matricule, adresse de domic
|
||||
6. WHEN le Backend calcule le Frais_Reel_Mensuel de chaque mois, THE Backend SHALL multiplier les kilomètres du mois par le coefficient de la tranche annuelle applicable, de sorte que la somme des douze Frais_Reel_Mensuel plus la base de la tranche annuelle soit égale au Montant_Reel annuel ; les kilomètres du mois sont également des distances déjà arrondies selon Precision_Distance (spec `precision-distances-km`, Requirement 6).
|
||||
7. WHEN le Backend calcule la Regularisation d'un Véhicule pour une année, THE Backend SHALL soustraire le total des Montant_Regle de l'année du Montant_Reel annuel : `Regularisation = Montant_Reel − Total_Regle`.
|
||||
8. THE Frontend SHALL afficher le Montant_Regle, le Frais_Reel_Mensuel, le Montant_Reel annuel, le total réglé et la Regularisation avec une précision de deux décimales.
|
||||
9. THE Frontend SHALL afficher la Synthèse_Kms avec, en en-tête sur une même ligne, le titre « Synthèse Kms » et une zone de critères comportant un Sélecteur_Temporel en mode « année seule », un sélecteur de Véhicule, puis un bouton « Afficher ».
|
||||
10. WHEN l'utilisateur ouvre la Synthèse_Kms, THE Frontend SHALL afficher automatiquement la synthèse pour la pré-sélection (Véhicule_Courant et année courante), sans action supplémentaire de l'utilisateur.
|
||||
11. THE Frontend SHALL présenter dans la Synthèse_Kms un tableau d'une ligne par mois affichant : le libellé du mois, les kilomètres parcourus du mois, le Frais_Reel_Mensuel (remboursement réel propre au mois), le Montant_Previsionnel_Mensuel (indication 80%), le Montant_Regle saisissable, et une colonne « Action » comportant un bouton « Export PDF » déclenchant l'export du rapport mensuel de ce mois.
|
||||
12. THE Frontend SHALL présenter dans la Synthèse_Kms une ligne TOTAL affichant : le total kilométrique annuel, le Montant_Reel (total du remboursement réel), une cellule « indication 80% » vide, le total réglé (somme des Montant_Regle, non modifiable), et un bouton « Export PDF » déclenchant l'export du rapport annuel ; la ligne TOTAL SHALL ne comporter aucun bouton d'enregistrement.
|
||||
13. THE Frontend SHALL afficher, au-dessus du tableau de la Synthèse_Kms, une barre d'action comportant un unique bouton « Enregistrer » ; il n'y a pas de bouton d'enregistrement par ligne.
|
||||
14. WHEN l'utilisateur active le bouton « Enregistrer » de la Synthèse_Kms, THE Frontend SHALL enregistrer uniquement les Montant_Regle modifiés depuis le dernier chargement (plusieurs mois en une seule action), sans réenregistrer les montants inchangés.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user