feat(front) : page modification client + patch par onglet (ERP-65) #51
Reference in New Issue
Block a user
Delete Branch "feature/ERP-65-page-modification-client"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
ERP-65 — Page Modification client (1.12)
Écran d'édition client à plat
/clients/[id]/edit, pré-rempli depuisGET /clients/{id}(viauseClient), édition indépendante par onglet avec PATCH scopé au groupe de sérialisation dédié (mode strict ERP-74).Périmètre
/clients/{id}scopéclient:write:main./clients/{id}scopés à leur groupe ; Contacts / Adresses / RIBs via leurs sous-ressources (POST nouveau / PATCH existant / DELETE retiré).manage→ bloc principal + Info/Contact/Adresse éditables ; Comptabilité visible ssiaccounting.view, éditable ssiaccounting.manage. Garde de route si nimanageniaccounting.manage.loadCommon→Promise.allSettled) + options en union avec l'embed, pour que les selects comptables de Compta se chargent malgré les 403 sur/categories+/sites, et que les valeurs courantes s'affichent toujours.Tests / vérifications
clientEdit.spec.ts— scoping strict par groupe + gating par rôle + mappers) ; suite 180/180 OK, aucune régression.À signaler (hors périmètre)
Les rôles métier (Bureau/Commerciale/Compta) n'ont pas
catalog.categories.view/sites.view→ 403 sur/categories//sites. La page se dégrade proprement (valeurs courantes via embed) mais ajouter une nouvelle catégorie/site est impossible pour ces rôles (même limite que la création). Correctif = ticket RBAC backend (3 miroirs).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.