feat(front) : page modification client + patch par onglet (ERP-65)
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 1m52s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m13s

Ecran d'edition client a plat (/clients/[id]/edit), pre-rempli depuis
GET /clients/{id}, edition independante par onglet avec PATCH scope au
groupe de serialisation dedie (mode strict ERP-74) :
- bloc principal conserve (groupe client:write:main)
- onglets Information / Comptabilite via PATCH /clients/{id} scopes
- Contacts / Adresses / RIBs via leurs sous-ressources (POST/PATCH/DELETE)
- gating readonly par permission (manage vs accounting.manage)
- chargement resilient des referentiels (allSettled) + options en union
  avec l'embed pour les roles sans categories/sites.view (403)

Logique pure testee (clientEdit.ts) ; 22 tests Vitest.
This commit is contained in:
2026-06-03 12:45:35 +02:00
parent 7833ff32e6
commit 30c7b6de78
5 changed files with 1462 additions and 17 deletions
+9
View File
@@ -106,6 +106,15 @@
"message": "Ce client réapparaîtra dans le répertoire actif. Confirmer la restauration ?"
}
},
"edit": {
"title": "Modifier le client",
"back": "Retour au répertoire",
"loading": "Chargement du client…",
"notFound": "Client introuvable.",
"emptyContacts": "Aucun contact enregistré.",
"emptyAddresses": "Aucune adresse enregistrée.",
"save": "Valider"
},
"validation": {
"informationRequiredForCommercial": "Les informations de l'entreprise sont obligatoires pour le rôle Commerciale.",
"contactRequired": "Au moins un contact (nom ou prénom) est obligatoire.",