ordinarthur 1e2eecdeba
All checks were successful
Build & Deploy Web / build-and-deploy (push) Successful in 40s
fix(invoices): dialog facture demande l'email du client à la volée
Bug UX rapporté par Arthur : quand on crée une facture pour un nouveau
client via le combobox du dialog "+ Saisir" (option "Créer le client
« X »"), aucun champ email n'apparaissait. Au submit, l'API renvoyait
422 client_email_required mais le toast affiché était générique
("Création impossible. Vérifiez les champs.") sans guidance sur le
champ manquant. L'utilisateur se retrouvait coincé sans savoir
qu'il devait quitter le dialog et créer le client d'abord via /clients.

Friction quotidienne, jamais visible en démo (où on sélectionne un
client existant).

Fix :
  - Nouveau champ `clientEmail` (string, default "") dans FormValues
  - Validator zod email + max 254 char
  - Render conditionnel via form.Subscribe : visible UNIQUEMENT quand
    `clientId === null && clientName.trim().length >= 2` (= création
    à la volée). Disparait dès que l'user sélectionne un client
    existant ou vide le combobox.
  - Validation finale : requis seulement si clientId null
  - mutationFn envoie `clientEmail || null` au backend uniquement en
    mode création à la volée (pour client existant, l'email est déjà
    en DB)

TDD : le test E2E "client inconnu — fournit l'email" a été écrit AVANT
le fix, échouait sur `getByLabel(/email du client/i) not found` (champ
inexistant), passe maintenant en 3.9 s. Empêche la régression future.

Le test vérifie aussi la chaîne complète :
  - Facture créée + apparaît dans /factures
  - Client créé en même temps + apparaît dans /clients avec son email
    visible

État après ce commit : 27/27 tests Playwright verts.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 17:17:12 +02:00
..