feat(commercial) : SupplierProvider + SupplierProcessor + gating compta (ERP-87) #66
Reference in New Issue
Block a user
Delete Branch "feature/ERP-87-provider-processor-m2"
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-87 — Provider + Processor du répertoire fournisseurs (M2)
Étape 3/7 du pipeline M2. Dépend de #86, bloque #88/#91/#92. Jumelle du M1 (Client*).
Livré
includeArchived/categoryCode/siteId/search, échappatoire?pagination=false, item 404 si soft-delete (RG-2.17).companyName, archivageisArchived/archivedAt(RG-2.14/2.15), gating fin accounting/manage en mode strict (403 sur tout payload hors-permission, RG-2.16), 409 doubloncompanyName+ conflit de restauration (RG-2.11).supplier:read:accountingau contexte de lecture siaccounting.view→ gating compta + RIB par omission de clé (parade bug #4 M1). Un Provider ne pouvant pas influencer les groupes de sérialisation, c'est le point d'extension idiomatique (miroir deClientReadGroupContextBuilder).#[ApiResource](GetCollection/Get/Post/Patch) wirant Provider/Processor.Décision d'archi
La spec décrit « le Provider retire le groupe accounting » — techniquement impossible (le Provider ne touche pas les groupes de sérialisation). Implémenté via décorateur
SerializerContextBuilder(mirror M1), résultat fonctionnel identique (clé absente sans permission).Hors périmètre (ticket suivant #5)
Validators métier : RG-2.03 (complétude Information Commerciale), RG-2.07 (Virement→banque), RG-2.08 (LCR→RIB), RG-2.10 (catégorie type FOURNISSEUR). Le Processor est structuré pour les accueillir.
À noter
Les permissions
commercial.suppliers.*(référencées par lessecurity) ne sont pas encore déclarées — ticket RBAC #7. Sans elles,is_grantedrenvoiefalse(pas d'erreur de compilation).Vérifs
make test: 483/483 vertmake php-cs-fixer-allow-risky: appliqué3838473876tob6dc54d179