- Module FieldSales (ID field_sales, REQUIRED false) avec 2 permissions
field_sales.tours.view / .manage (scope V0.2, pas de reports.*), active
dans config/modules.php.
- Contrat partage VisitableInterface (getId/getDisplayName/getVisitableType)
implemente par Client (client) et Supplier (supplier) sans import inter-module.
Note doctrine.yaml : contrat polymorphe (2 implementations) donc resolu par
service via (tier_type, tier_id), pas via resolve_target_entities.
- 3 miroirs RBAC alignes : sidebar.php (section Tournées, item /tours, i18n
sidebar.field_sales.*), personas.ts et SeedE2ECommand.php (user-full) ;
matrice metier RbacSeeder (Commerciale = view+manage, Bureau = view, Compta
exclue, Admin bypass).