Skip to content

feat(VSN-2757): module Avance — gestion des avances clients sur BDC

yahya.elmokhtari a demandé de fusionner VSN-2757 vers develop

Contexte

Implémentation du module Avance pour la gestion des avances versées par les clients dans le cadre d'un BDC ou d'un marché : enregistrement, suivi du restant à récupérer, déduction lors de la facturation et historique complet des actions.

Lié à VSN-2757.

Périmètre fonctionnel livré

Création d'une avance

  • Création automatique depuis un BDC : la section Avance du BDC permet d'activer la gestion d'avance. À l'enregistrement, une avance liée est créée dans le module dédié (origin: auto_from_bdc).
  • Création directe : depuis /dashboard/facturation-paiement/avances, bouton Nouvelle avance avec sélecteurs cascadés Client → Département → BDC. Type d'avance fixe ou pourcentage (calcul auto sur la base du montant BDC).

Fiche avance

Trois onglets :

  • Détail avance : informations générales, paramètres financiers (type, montant ou pourcentage avec calcul automatique), mode de récupération (progressive / totale 1ère facture / montant fixe par facture), conditions de retenue et suivi initial / récupéré / restant. Bouton Enregistrer les modifications qui persiste via le store et historise l'action.
  • Historique des déductions : référence, n° facture, date, montant facture, montant déduit, restant après déduction, total cumulé.
  • Historique des actions : création (auto/manuelle), modification, déduction et clôture — tout est tracé date / utilisateur / action / détail.

Clôture

Bouton Clôturer l'avance dans l'en-tête de la fiche, visible uniquement quand le statut est Active. Passe l'avance en Soldée et historise.

Synchronisation BDC Avance

La section Avance du BDC affiche en temps réel les montants déclarée / récupérée / restante issus du module Avance via getAvanceByBdc.

Améliorations BDC

  • Champs Informations générales (Client, Département, N° Accord-cadre, N° Bon de commande, Marché, Lot, Année scolaire) maintenant éditables.
  • Début / Fin utilisent DatePillField pour la cohérence avec la section administrative.
  • Tous les inputs des cartes BDC et Avance utilisent un nouveau composant partagé <NeoInput> (fond blanc, neo-shadow, hover) — cohérence visuelle avec DatePillField.

Couverture de la spec

Exigence ticket Statut
Création auto depuis un BDC + évènement historique
Création manuelle (Client → Dept → BDC) + évènement historique
Modification de l'avance persistée + évènement
Clôture + évènement
Suivi initial / récupéré / restant
Sync BDC Avance
Historique des déductions (réf, facture, date, montants)
Historique des actions
Déduction lors de la facturation à brancher dans le module Facture

La déduction lors de la facturation reste hors périmètre de ce MR car elle dépend du module Facture (à venir). Toute la mécanique côté Avance est prête : les évènements deduction sont déjà gérés par le data source.

Architecture

  • Store Zustand useAvanceStore avec compteur de requêtes pour le loading.
  • Data source abstrait (AvanceDataSource) avec implémentation mockée + stub apiDataSource qui jette not implemented yet — branchement backend en un seul flag isMock.
  • Ledger d'historique mutable côté mock : pousse automatiquement les évènements creation_auto, creation_manuelle, modification (avec résumé des champs modifiés) et cloture.
  • NeoInput dans src/shared/components/shadcn/ — réutilisable hors Facturation pour les futurs formulaires "neo".

Closes VSN-2757

Rapports de requête de fusion