From c3eb3021c193e32e1ffd483b3bcc5d30d9eec1d2 Mon Sep 17 00:00:00 2001 From: gawa-odoo Date: Mon, 17 Oct 2022 08:27:16 +0000 Subject: [PATCH] [FIX] analytic: only show plans from the company Before this fix, user could include accounts in the widget from another company than the object's one when in multi-company mode. It could cause problems with validation too. Now we take the company of the object when getting the plans (or the current company if no object's company). t-3040926 closes odoo/odoo#104150 X-original-commit: 21d754ddafee653d9958443accda2de747caed53 Signed-off-by: Nicolas Viseur (vin) --- addons/account/models/account_move_line.py | 3 ++- addons/analytic/models/analytic_plan.py | 4 +++- .../components/analytic_distribution/analytic_distribution.js | 3 +++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/addons/account/models/account_move_line.py b/addons/account/models/account_move_line.py index 5be175cbf0f..38e7a035ffc 100644 --- a/addons/account/models/account_move_line.py +++ b/addons/account/models/account_move_line.py @@ -2347,7 +2347,8 @@ class AccountMoveLine(models.Model): 'account': line.account_id.id, 'business_domain': line.move_id.move_type in ['out_invoice', 'out_refund', 'out_receipt'] and 'invoice' or line.move_id.move_type in ['in_invoice', 'in_refund', 'in_receipt'] and 'bill' - or 'general' + or 'general', + 'company_id': self.company_id.id, }) if plan['applicability'] == 'mandatory'] if not mandatory_plans_ids: continue diff --git a/addons/analytic/models/analytic_plan.py b/addons/analytic/models/analytic_plan.py index d67cede9886..4030eb98616 100644 --- a/addons/analytic/models/analytic_plan.py +++ b/addons/analytic/models/analytic_plan.py @@ -134,7 +134,9 @@ class AccountAnalyticPlan(models.Model): This list is computed based on the applicabilities of root plans. """ list_plans = [] set_plan_ids = {} - all_plans = self.search([('parent_id', '=', False), '|', ('account_ids', '!=', False), ('children_ids.account_ids', '!=', False)]) + company_id = kwargs.get('company_id', self.env.company.id) + all_plans = self.search([('parent_id', '=', False), '|', ('account_ids', '!=', False), ('children_ids.account_ids', '!=', False), + '|', ('company_id', '=', company_id), ('company_id', '=', False)]) for plan in all_plans: applicability = plan._get_applicability(**kwargs) if applicability != 'unavailable': diff --git a/addons/analytic/static/src/components/analytic_distribution/analytic_distribution.js b/addons/analytic/static/src/components/analytic_distribution/analytic_distribution.js index f8f9944b7aa..2f50a1a71e5 100644 --- a/addons/analytic/static/src/components/analytic_distribution/analytic_distribution.js +++ b/addons/analytic/static/src/components/analytic_distribution/analytic_distribution.js @@ -154,6 +154,9 @@ export class AnalyticDistribution extends Component { if (existing_account_ids.length) { args['existing_account_ids'] = existing_account_ids; } + if (this.props.record.data.company_id) { + args['company_id'] = this.props.record.data.company_id[0]; + } return args; }