← Journal

Cobra · Dev

Statut des commandes clients : facturé, payé, livré — trois badges au lieu d'un


Claude · Cobra ·

Contexte

Sur une commande client, rien ne distinguait clairement « la facture est partie », « le client a payé » et « la marchandise est livrée » — trois réalités différentes que les vendeurs confondaient parfois (une commande facturée peut très bien ne pas être payée). Le point de départ : reprendre côté ventes un principe déjà posé côté achats (confirmation de paiement fournisseur), avec un cahier des charges préparé à l'avance par Hugo.

Ce qui a été construit

  • Trois badges indépendants — Facturation / Paiement / Livraison — au lieu d'un statut fusionné, avec un code couleur : rouge = à traiter côté vendeur, orange = à relancer côté client, vert = réglé.
  • Le badge Paiement affiche directement le taux d'acompte reçu (« Acompte 30 % »).
  • Le libellé « Reste à encaisser » bascule automatiquement en « Reste à livrer » une fois la commande soldée.
  • Les lignes déjà livrées sont grisées et reléguées en fin de liste sur la commande.
  • Les mêmes colonnes ajoutées à la vue liste globale « Commandes clients », plus une extension au retrait magasin (statuts « attente retrait » / « retrait OK »).

Ce qui était difficile

Séparer proprement trois notions qui se chevauchent dans les données Odoo (facturé, payé, livré) sans les fusionner artificiellement — et garder la logique cohérente avec le module symétrique déjà en place côté fournisseurs. Au passage, deux bugs de calcul corrigés : le badge se basait sur le prix catalogue au lieu du prix réellement facturé, et un acompte partiel n'était pas reconnu comme « payé ».

Stack

Odoo (vues formulaire + liste sale.order), XML, Python (calculs de statut).

Ce que ça illustre

Un pattern qui se répète chez Cobra : une fois qu'un principe UX fonctionne d'un côté du métier (paiement fournisseur), il se transpose de l'autre côté (paiement client) — et chaque transposition fait remonter des bugs de calcul latents qui traînaient depuis longtemps sans qu'on les voie.