Correctifs écran Client (ERP-115) #76

Merged
tristan merged 13 commits from feature/ERP-115-correctifs-front into develop 2026-06-08 14:40:18 +00:00
Owner

Lot de correctifs sur l'écran Client (M1), + un retrait de règle métier et une petite fonctionnalité.

Formulaire client (création / édition)

  • Boutons « ajouter un bloc » (Adresse, RIB) désactivés tant que le dernier bloc n'est pas valide.
  • Onglet Information : bouton Valider désactivé si aucun champ rempli (création) ; onglet Contact accessible dès la création (Information facultatif).
  • Champs « Relation » (Distributeur/Courtier) et « Prestation de triage » masqués par défaut, révélés seulement si une catégorie ordinaire (≠ Distributeur/Courtier) est sélectionnée.
  • Bloc RIB affiché uniquement si le type de règlement est LCR (création, édition, consultation) ; plus de RIB fantôme soumis.
  • Alignement du bas du textarea « Description » sur les autres champs.

Recherche d'adresse (BAN)

  • Une erreur de l'API ne bloque plus définitivement la recherche : chaque frappe réessaie (le mode dégradé restait verrouillé).
  • Garde minimum 3 caractères avant l'appel à l'API.

Répertoire client

  • Titres de colonne en noir 16px, corps + tags de site en 14px.

Navigation

  • L'onglet actif est conservé au passage consultation ↔ édition (via history.state, hors URL).

Règle métier

  • Retrait de RG-1.04 : l'onglet Information n'est plus obligatoire pour le rôle Commerciale — facultatif pour tous (back + tests + docs).

Tests : suites front (Vitest) et back (PHPUnit) vertes hormis flakes d'infra connus.

Lot de correctifs sur l'écran Client (M1), + un retrait de règle métier et une petite fonctionnalité. ## Formulaire client (création / édition) - Boutons « ajouter un bloc » (Adresse, RIB) désactivés tant que le dernier bloc n'est pas valide. - Onglet Information : bouton Valider désactivé si aucun champ rempli (création) ; onglet Contact accessible dès la création (Information facultatif). - Champs « Relation » (Distributeur/Courtier) et « Prestation de triage » masqués par défaut, révélés seulement si une catégorie ordinaire (≠ Distributeur/Courtier) est sélectionnée. - Bloc RIB affiché uniquement si le type de règlement est LCR (création, édition, consultation) ; plus de RIB fantôme soumis. - Alignement du bas du textarea « Description » sur les autres champs. ## Recherche d'adresse (BAN) - Une erreur de l'API ne bloque plus définitivement la recherche : chaque frappe réessaie (le mode dégradé restait verrouillé). - Garde minimum 3 caractères avant l'appel à l'API. ## Répertoire client - Titres de colonne en noir 16px, corps + tags de site en 14px. ## Navigation - L'onglet actif est conservé au passage consultation ↔ édition (via history.state, hors URL). ## Règle métier - Retrait de RG-1.04 : l'onglet Information n'est plus obligatoire pour le rôle Commerciale — facultatif pour tous (back + tests + docs). Tests : suites front (Vitest) et back (PHPUnit) vertes hormis flakes d'infra connus.
tristan added the type/fixbackfrontM1-Client labels 2026-06-08 11:41:08 +00:00
tristan added 8 commits 2026-06-08 11:41:09 +00:00
- Boutons « ajouter » Adresse/RIB desactives tant que le dernier bloc n'est pas valide (predicats isAddressValid/isRibComplete, reutilises par la validation d'onglet).

- Onglet Information : bouton Valider desactive si aucun champ rempli (pas de validation a vide) — creation uniquement, l'edition garde la possibilite de tout vider.

- Onglet Contact accessible des la creation du client (onglet Information facultatif).
Les champs « Relation » (depend du distributeur/courtier) et « Prestation de triage » du bloc principal sont masques par defaut et reveles uniquement quand une categorie ordinaire (autre que Distributeur/Courtier) est selectionnee. Masquer ces champs reinitialise leurs valeurs (pas de relation/triage fantome soumis). Applique a la creation et a l'edition.
Les blocs RIB ne s'affichent plus que si le type de reglement est une LCR (RG-1.13).

- Creation / edition : blocs + bouton « + RIB » conditionnes a LCR (computed visibleRibs) ; basculer hors LCR vide la liste (et marque les RIB persistes pour suppression serveur en edition) pour ne pas soumettre de RIB fantome ; plus d'amorce inconditionnelle d'un bloc vide.

- Consultation : plus de bloc RIB vide affiche quand le client n'a aucun RIB (la collection vraie est rendue, sans placeholder).
L'onglet Information n'est plus obligatoire pour le role metier Commerciale : il devient facultatif pour tous les roles, cote back comme cote front (le front l'etait deja).

- Suppression du validateur ClientInformationCompletenessValidator et de son gating (validateInformationCompleteness / currentUserIsCommerciale) dans ClientProcessor. Security conserve (gating accounting/archive/manage).

- Tests : retrait des 3 tests RG-1.04 (ClientProcessorTest) ; POST Commerciale attendu en 201 et suppression du test dedie (ClientRBACMatrixTest).

- Coherence : commentaires de colonnes BDD (catalogue + migration d'init) passes a « Facultatif », nettoyage des references RG-1.04 (BusinessRoles, RbacSeeder, User, fixtures, front, specs M1, README). Le role metier Commerciale et ses permissions RBAC restent inchanges.

- Pas de migration de schema (colonnes Information deja nullable).
Une erreur de l'API d'autocompletion (BAN) ne bascule plus le champ Adresse en saisie libre de maniere definitive : l'autocompletion reste montee et chaque frappe relance la recherche (le flag degrade etait verrouille a true sans jamais etre reinitialise).

- Garde min. 3 caracteres avant l'appel BAN (evite le 400 de l'API).

- Ville : repli saisie libre conserve mais recuperable (re-saisir le code postal repasse en select au succes).

- Avertissement « service indisponible » emis une seule fois.

- Tests Vitest : pas d'appel < 3 car., relance apres erreur, emission unique de l'evenement.
Le textarea (h-full) remplissait toute la cellule alors que les inputs ont un champ de 40px centre dans un conteneur h-12 (~4px de coussin haut ET bas). Le composant n'appliquait qu'un pt-1 (haut) : ajout d'un pb-1 symetrique pour aligner le bord bas. Applique aux 3 ecrans client (creation / edition / consultation).
Surcharge du style par defaut de MalioDataTable (titres et corps en bleu m-primary, 20px/18px) via un style scoped + classe marqueur clients-table : titres de colonne noirs 16px, texte du corps noir 14px. Tags de site passes de text-xs (12px) a text-sm (14px).
feat(commercial) : conserve l'onglet actif entre consultation et edition client
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 1m42s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m10s
ebcc5e0cea
Au passage consultation <-> edition d'un client, l'onglet courant (Information / Contact / Adresse / Comptabilite...) est conserve dans les deux sens, transmis via history.state (l'URL ne change pas — etat d'UI hors URL).

- Nouveau util shared readHistoryTab : lit history.state.tab et le valide contre les onglets autorises (fallback Information : navigation directe, refresh, onglet hors role).

- Consultation goEdit et edition goBack posent l'onglet courant ; chaque page initialise activeTab depuis l'historique.

- Test unitaire du util (present/valide, hors-cles, absent, valeur non-string).
tristan added 1 commit 2026-06-08 11:46:53 +00:00
Merge branch 'develop' into feature/ERP-115-correctifs-front
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 2m4s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m11s
eb09bff499
Conflit modify/delete sur ClientInformationCompletenessValidator resolu en gardant la SUPPRESSION (RG-1.04 retiree). Le commentaire de SupplierInformationCompletenessValidator (M2) ne reference plus la classe M1 supprimee. develop integre jusqu'a v0.1.96 (M2 fournisseurs). Suites back (578) + front (256) vertes apres test-db-setup.
tristan added 1 commit 2026-06-08 13:39:16 +00:00
chore(front) : bump @malio/layer-ui en 1.7.6
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 2m5s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Failing after 10s
bfcb605f2c
tristan added 1 commit 2026-06-08 13:56:47 +00:00
fix : layout style
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 2m4s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Failing after 10s
5c35f4b8f0
tristan added 1 commit 2026-06-08 14:23:54 +00:00
fix : layout style client + admin
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 2m3s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Failing after 10s
51676ca195
tristan added 1 commit 2026-06-08 14:36:53 +00:00
fix : client filter, package-lock.json, site tag
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 2m3s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m11s
7c9f47af23
tristan merged commit b8dc3cb696 into develop 2026-06-08 14:40:18 +00:00
tristan deleted branch feature/ERP-115-correctifs-front 2026-06-08 14:40:19 +00:00
Sign in to join this conversation.