Objectif
Gestion d'un réseau de franchises qui propose des services à des particuliers.
Nous nous limiterons à un périmètre fonctionnel restreint : gestion des ventes et comptabilité.
Les franchises sont autonomes et indépendantes les unes des autres.
La socièté mère via un coordinateur, a un accès total aux franchises et en particulier, peut réaliser des opérations pour le compte d'une franchise (création client, devis, facture ...).
Ces opérations doivent être ensuite accessibles en accès total par la franchise concernée ... sans que les autres franchises y aient accès.
Description
Nous partons d'une base ODOO v8 vierge ...
- Installation des modules gestion des vents (sales) et comptabilité France (I10n_fr)
- Installation de toutes les fonctions "comptabilité"
- Configuration de l'utilisateur "Administrator" à Multi-sociètés (menu Configuration>Utilisateurs)
- Création des sociètés SM (Socièté Mère), Franchise1 et Franchise2
- Rattacher les franchises à la société mère
- Création du plan comptable pour chaque franchise
- Création d'un utilisateur par franchise, rattaché à sa franchise et avec comme sociètés autorisées SM et Franchise1 (ou Franchise2) et droits d'accès "responsable ventes" et "comptable" :
- Création du coordinateur de la socièté mère avec comme sociètés autorisées Franchise 1 et Franchise 2 en plus de SM et droits d'accès "responsable ventes" et "responsable finances" :
- Création de l'article "Service1" rattaché à aucune socièté
Remarque: ne pas cocher l'option "gérer plusieurs sociétés" dans "paramètres généraux" (cette option est nécessaire pour des produits "stockables", elle n'est pas nécessaire pour des services)
>>> Il faut maintenant intervenir sur les règles d'enregistrement (record rules) pour modifier les droits d'accès sur certains objets.
Ces règles vont permettre à une franchise d'accèder totalement aux objets créés par le coordinateur de la socièté mère pour son compte.
Pour cela, il faut se rendre dans le menu "Configuration>Technical>Sécurité>Règles sur les enregistrements" :
- Devis/Bon de commande :
Modifier la règle "Sales Order multi-company" avec la valeur :
['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('partner_id.parent_id.company_id','in',[user.company_id.id])]
- Facture
Modifier la règle "Invoice multi-company" avec la valeur :
['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('commercial_partner_id.company_id','in',[user.company_id.id])]
- Client
Modifier la règle "res.partner company" avec la valeur :
['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('parent_id.company_id','in',[user.company_id.id])]
- Détail facture (account.move)
Modifier la règle "Account Entry" avec la valeur :
['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('partner_id.company_id','in',[user.company_id.id])]
Bien entendu, nous nous limitons à ces quelques règles car nous n'utilisons ici que les 2 modules "ventes" et "comptabilité".
Il faudrait effectuer le même type de modification sur d'autres règles si d'autres modules étaient installés.
Pour terminer, précisons que ces règles peuvent être modifiées directement en base de données sans risque d'écrasement par un update de module, grâce à la clause "data noupdate=1" présente à la création des règles :
![]() |
extrait fichier "sale_security.xml" |