[ERP-63] Page Ajouter un client (formulaire principal + onglets) #46

Merged
tristan merged 6 commits from feature/ERP-63-page-ajouter-client into develop 2026-06-03 08:49:27 +00:00

6 Commits

Author SHA1 Message Date
tristan bc2ee7aac0 style(front) : ajustements layout blocs contact/adresse (ERP-63)
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 1m40s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m2s
- Bloc Contact aligne sur le bloc Adresse : carte ombree en grille, bouton
  supprimer en absolute haut-droite (mdi:delete-outline).
- Bloc Adresse : champs Adresse et Adresse complementaire sur 2 colonnes
  (col-span-2 via wrapper, car les inputs Malio renvoient class sur l'input
  interne) ; cellule vide pour renvoyer Categorie a la ligne suivante.
- Grilles alignees (grid-cols-4, gaps homogenes).
2026-06-03 10:47:15 +02:00
tristan b3cc7e4ced fix(front) : corrections review ecran ajouter client (ERP-63)
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 2m2s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m17s
- Relation Distributeur/Courtier : libelles « Depend du distributeur/courtier »,
  select optionnel ; le nom (distributeur ou courtier) devient requis quand la
  relation correspondante est choisie.
- Categorie : au moins 1 obligatoire dans le formulaire principal (aligne sur
  Assert\Count(min:1) du back).
- Bouton « Valider » de l'onglet Information desactive tant que le client n'est
  pas cree (l'onglet est actif par defaut) : evite tout PATCH premature.
- Gestion d'erreur : les toasts d'erreur passent toujours une chaine (corrige un
  crash izitoast sur message undefined) et remontent le message de validation du
  serveur (violations 422) sur tous les onglets.
2026-06-03 10:17:06 +02:00
tristan 955f9a436f refactor(front) : aligne l'ecran ajouter client sur la maquette (ERP-63)
- Layout maquette : en-tete avec retour, grille 3 colonnes (gap-x-[80px]),
  cartes ombrees pour les onglets, boutons Valider centres, libelles ajustes.
- Telephones du formulaire principal en tableau (1 par defaut, + revele le 2e).
- Information : Description en row-span-2 (alignement corrige via pt-1),
  Nombre de salaries en MalioInputText masque chiffres.
- Adresse : carte ombree, suppression en absolute, sites en cases a cocher
  inline, pays France/Espagne, exclusivite Prospect appliquee au toggle.
- Onglets : icones par onglet (TAB_ICONS) ; Statistiques / Rapports / Echanges
  passent en edit-only (absents a la creation, option includeEditOnlyTabs pour
  la modification).
2026-06-02 18:01:18 +02:00
tristan 29ee4e9fd0 feat(front) : page ajouter un client (formulaire principal + onglets) (ERP-63)
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Failing after 2m37s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m11s
- pages/clients/new.vue : route /clients/new gatee par commercial.clients.manage.
  Formulaire principal (POST /clients) puis validation incrementale des onglets
  via MalioTabList ; un onglet valide passe en lecture seule, passage automatique
  au suivant. Information (PATCH groupe information), Contact/Adresse (sous-ressources
  contacts/addresses), Comptabilite (PATCH scalaires accounting + POST ribs, gate
  accounting.view/manage), onglets coquille auto-avances. Mode strict RG-1.28 :
  chaque requete ne porte que les champs de son groupe.
- i18n : cles commercial.clients.form.* (formulaire, onglets, confirmation, toasts).

RG-1.04 (Information obligatoire pour la Commerciale) : non miroitee cote front
(roles = IRIs dans /api/me, Bureau == Commerciale en permissions) ; appliquee de
maniere fiable par le back. A rebrancher quand un code de role sera expose.
2026-06-02 17:25:09 +02:00
tristan 1bc432e8fa feat(front) : referentiels + blocs reutilisables contact/adresse/placeholder (ERP-63)
- useClientReferentials : chargement des selects (categories, sites, modes TVA,
  delais/types de reglement, banques) en ?pagination=false + listes
  distributeurs/courtiers via ?categoryCode=DISTRIBUTEUR|COURTIER.
- ClientContactBlock / ClientAddressBlock : blocs reutilises par 1.11/1.12.
  L'adresse gere la saisie assistee BAN (via le stub) avec bascule en mode
  degrade (ville/adresse en saisie libre).
- TabPlaceholderBlank : frame vide des onglets non implementes.
2026-06-02 17:25:09 +02:00
tristan 1193832505 feat(front) : regles metier + types + stub autocomplete creation client (ERP-63)
- clientFormRules : RG-1.05/1.14 (contacts), RG-1.06/07/08/11 (exclusivite
  adresse + email facturation), RG-1.12/1.13 (banque/RIB selon type de
  reglement), construction des onglets (gating Comptabilite). 18 tests Vitest.
- types/clientForm : brouillons locaux (contact/adresse/RIB) + fabriques.
- useAddressAutocomplete : STUB ERP-63 conforme a la signature ERP-66 (mode
  degrade), a remplacer par l'implementation BAN d'ERP-66.

Note : RG-1.04 (Information obligatoire pour la Commerciale) volontairement non
miroitee cote front (le payload /api/me ne porte pas le code de role ; Bureau et
Commerciale partagent les memes permissions). Le back l'applique de maniere fiable.
2026-06-02 17:20:19 +02:00