¿Is there any way to prevent the applications and settings I configure for one of my companies in a multi-company environment from being replicated in the others? For example, I have electronic invoicing for two companies in different countries, which are unrelated, yet the configurations of one are being replicated in the other.
Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:
- CRM
- e-Commerce
- Financeiro
- Inventário
- PoS
- Project
- MRP
Esta pergunta foi sinalizada
In a multi-company environment in Odoo, managing configurations and applications independently for each company can sometimes be challenging because certain settings and applications are shared across all companies by default. However, Odoo provides mechanisms to isolate configurations and prevent cross-replication of settings.
Here’s how you can achieve this:
1. Understanding Multi-Company Configuration
- Shared Data:
- Some models and settings, such as users, apps, and certain configurations, are shared globally across companies.
- Company-Specific Settings:
- Other settings, like fiscal positions, taxes, and journals, can be configured per company.
2. Steps to Prevent Cross-Replication of Settings
A. Isolate Applications Per Company
-
Activate Multi-Company Feature:
- Go to Settings > Users & Companies > Companies.
- Ensure each company is listed with the appropriate settings.
-
Assign Users to Specific Companies:
- Navigate to Settings > Users & Companies > Users.
- Assign each user to their respective company under the Allowed Companies field.
- Use the Default Company field to set the primary company for the user.
-
Restrict User Access:
- Ensure users are restricted to their assigned companies by enabling the multi-company rules:
- Go to Settings > Technical > Security > Record Rules.
- Check rules such as res.company to enforce isolation of company data.
- Ensure users are restricted to their assigned companies by enabling the multi-company rules:
B. Configure Applications Separately
Many applications, like Invoicing, Accounting, and Electronic Invoicing, need company-specific configurations. Here's how to isolate their settings:
-
Electronic Invoicing:
- Ensure separate journals, tax configurations, and fiscal positions for each company:
- Go to Accounting > Configuration > Journals and create company-specific journals.
- Set the Company field in each journal to the respective company.
- Configure electronic invoicing independently for each company:
- Go to Accounting > Configuration > Settings.
- Switch the company context (via the dropdown in the top-right corner) and configure the settings separately.
- Ensure separate journals, tax configurations, and fiscal positions for each company:
-
Company-Specific App Settings:
- For apps like Sales, Purchases, and Inventory, switch the company context and configure independently:
- For example, in Sales, create separate price lists, payment terms, and delivery methods for each company.
- For apps like Sales, Purchases, and Inventory, switch the company context and configure independently:
-
Restrict Shared Modules:
- Certain modules like HR or CRM might share configurations across companies. Use record rules to enforce isolation:
- Navigate to Settings > Technical > Security > Record Rules.
- Add a rule for the specific model (e.g., hr.employee for HR) to filter data by company:
['|', ('company_id', '=', False), ('company_id', '=', user.company_id.id)]
- Certain modules like HR or CRM might share configurations across companies. Use record rules to enforce isolation:
C. Prevent Shared Configurations in Global Settings
Some global configurations are shared by default (e.g., SMTP email servers, payment acquirers). You can isolate these by:
-
Using Company-Specific Email Servers:
- Go to Settings > Technical > Email > Outgoing Mail Servers.
- Create a separate mail server for each company.
- Assign the respective company in the Company field.
-
Company-Specific Payment Acquirers:
- Navigate to Settings > Payments > Payment Acquirers.
- Configure a separate payment acquirer (e.g., PayPal, Stripe) for each company and assign it to the correct company.
3. Advanced Techniques
A. Use Record Rules for Data Isolation
Create custom record rules for critical models to prevent cross-replication of settings and records:
- Go to Settings > Technical > Security > Record Rules.
- Add a new rule for the model you want to isolate (e.g., account.journal).
- Use a domain like this:
[('company_id', '=', user.company_id.id)]
- Assign the rule to the appropriate groups or users.
B. Custom Code for Deeper Isolation
For more complex scenarios, you can extend Odoo models or views to enforce company-specific logic programmatically.
Example: Restrict certain settings for a company
from odoo import models, api class ResConfigSettings(models.TransientModel): _inherit = 'res.config.settings' @api.model def default_get(self, fields): res = super(ResConfigSettings, self).default_get(fields) if self.env.user.company_id.name == 'Company A': res['field_x'] = 'Company A Default Value' return res
4. Switching Companies for Configuration
Ensure you always switch to the relevant company context when configuring applications:
- Use the company selector in the top-right corner of the Odoo interface to change the active company.
- Configure settings, fiscal rules, or workflows for the selected company.
5. Best Practices
- Test in a Sandbox: Always test multi-company configurations in a sandbox environment before rolling them out.
- Document Configurations: Maintain clear documentation of what settings are applied to each company.
- Train Users: Ensure users understand how to use the multi-company dropdown and their company restrictions.
By implementing these measures, you can effectively prevent the cross-replication of settings and applications in a multi-company Odoo environment. Let me know if you need further guidance or help implementing specific configurations!
Está gostando da discussão? Não fique apenas lendo, participe!
Crie uma conta hoje mesmo para aproveitar os recursos exclusivos e interagir com nossa incrível comunidade!
Inscreva-sePublicações relacionadas | Respostas | Visualizações | Atividade | |
---|---|---|---|---|
|
0
abr. 25
|
3 | ||
|
1
mai. 25
|
976 |