diff --git a/addons/account/models/account_analytic_plan.py b/addons/account/models/account_analytic_plan.py
index 005cd0bd300..05811b39442 100644
--- a/addons/account/models/account_analytic_plan.py
+++ b/addons/account/models/account_analytic_plan.py
@@ -7,6 +7,16 @@ class AccountAnalyticApplicability(models.Model):
_inherit = 'account.analytic.applicability'
_description = "Analytic Plan's Applicabilities"
+ business_domain = fields.Selection(
+ selection_add=[
+ ('invoice', 'Invoice'),
+ ('bill', 'Vendor Bill'),
+ ],
+ ondelete={
+ 'invoice': 'cascade',
+ 'bill': 'cascade',
+ },
+ )
account_prefix = fields.Char(
string='Financial Accounts Prefix',
help="Prefix that defines which accounts from the financial accounting this applicability should apply on.",
diff --git a/addons/account/views/account_move_views.xml b/addons/account/views/account_move_views.xml
index c781363897e..cfa1a262e19 100644
--- a/addons/account/views/account_move_views.xml
+++ b/addons/account/views/account_move_views.xml
@@ -886,7 +886,7 @@
groups="analytic.group_analytic_accounting"
optional="show"
options="{'product_field': 'product_id', 'account_field': 'account_id'}"
- business_domain_compute="parent.move_type in ['out_invoice', 'out_refund', 'out_receipt'] and 'sale' or parent.move_type in ['in_invoice', 'in_refund', 'in_receipt'] and 'purchase' or 'general'"/>
+ business_domain_compute="parent.move_type in ['out_invoice', 'out_refund', 'out_receipt'] and 'invoice' or parent.move_type in ['in_invoice', 'in_refund', 'in_receipt'] and 'bill' or 'general'"/>
@@ -1057,7 +1057,7 @@
groups="analytic.group_analytic_accounting"
optional="show"
options="{'account_field': 'account_id'}"
- business_domain_compute="parent.move_type in ['out_invoice', 'out_refund', 'out_receipt'] and 'sale' or parent.move_type in ['in_invoice', 'in_refund', 'in_receipt'] and 'purchase' or 'general'"/>
+ business_domain_compute="parent.move_type in ['out_invoice', 'out_refund', 'out_receipt'] and 'invoice' or parent.move_type in ['in_invoice', 'in_refund', 'in_receipt'] and 'bill' or 'general'"/>
-
-
+
@@ -247,11 +246,9 @@
widget="many2many_tags"
optional="hide"/>
-
-
+
+ groups="analytic.group_analytic_accounting"
+ options="{'product_field': 'product_id', 'business_domain': 'expense'}"/>
@@ -196,10 +197,8 @@
+ options="{'product_field': 'product_id', 'account_field': 'account_id', 'business_domain': 'expense'}"
+ attrs="{'readonly': [('is_editable', '=', False)]}"/>
@@ -758,8 +757,7 @@
+ options="{'product_field': 'product_id', 'account_field': 'account_id', 'business_domain': 'expense'}"/>
diff --git a/addons/purchase/models/__init__.py b/addons/purchase/models/__init__.py
index f738a5995c7..e9d1576b95e 100644
--- a/addons/purchase/models/__init__.py
+++ b/addons/purchase/models/__init__.py
@@ -3,6 +3,7 @@
from . import account_invoice
from . import analytic_account
+from . import analytic_applicability
from . import purchase
from . import product
from . import res_company
diff --git a/addons/purchase/models/analytic_applicability.py b/addons/purchase/models/analytic_applicability.py
new file mode 100644
index 00000000000..8dea5a8c599
--- /dev/null
+++ b/addons/purchase/models/analytic_applicability.py
@@ -0,0 +1,15 @@
+# -*- coding: utf-8 -*-
+
+from odoo import fields, models
+
+
+class AccountAnalyticApplicability(models.Model):
+ _inherit = 'account.analytic.applicability'
+ _description = "Analytic Plan's Applicabilities"
+
+ business_domain = fields.Selection(
+ selection_add=[
+ ('purchase_order', 'Purchase Order'),
+ ],
+ ondelete={'purchase_order': 'cascade'},
+ )
diff --git a/addons/purchase/views/purchase_views.xml b/addons/purchase/views/purchase_views.xml
index 4732681202e..0479b86c035 100644
--- a/addons/purchase/views/purchase_views.xml
+++ b/addons/purchase/views/purchase_views.xml
@@ -238,12 +238,10 @@
-
-
+ options="{'product_field': 'product_id', 'business_domain': 'purchase_order'}"/>
@@ -288,11 +286,9 @@
-
-
+
@@ -743,11 +739,9 @@
-
-
+
diff --git a/addons/purchase_requisition/views/purchase_requisition_views.xml b/addons/purchase_requisition/views/purchase_requisition_views.xml
index f4282c88c4a..5d4c95005f1 100644
--- a/addons/purchase_requisition/views/purchase_requisition_views.xml
+++ b/addons/purchase_requisition/views/purchase_requisition_views.xml
@@ -162,12 +162,10 @@
-
-
+ options="{'product_field': 'product_id', 'business_domain': 'purchase_order'}"/>
diff --git a/addons/sale/models/analytic.py b/addons/sale/models/analytic.py
index f64a1c1b638..1e1fc1912e3 100644
--- a/addons/sale/models/analytic.py
+++ b/addons/sale/models/analytic.py
@@ -14,3 +14,15 @@ class AccountAnalyticLine(models.Model):
return [('qty_delivered_method', '=', 'analytic')]
so_line = fields.Many2one('sale.order.line', string='Sales Order Item', domain=lambda self: self._default_sale_line_domain())
+
+
+class AccountAnalyticApplicability(models.Model):
+ _inherit = 'account.analytic.applicability'
+ _description = "Analytic Plan's Applicabilities"
+
+ business_domain = fields.Selection(
+ selection_add=[
+ ('sale_order', 'Sale Order'),
+ ],
+ ondelete={'sale_order': 'cascade'},
+ )
diff --git a/addons/sale/views/sale_order_views.xml b/addons/sale/views/sale_order_views.xml
index 99797b3215d..a072ec6ac5d 100644
--- a/addons/sale/views/sale_order_views.xml
+++ b/addons/sale/views/sale_order_views.xml
@@ -364,11 +364,9 @@
days
-
-
+
@@ -443,12 +441,11 @@
widget="sol_product_many2one"/>
-
-
+ business_domain_compute="'sale', 'business_domain': 'sale_order'}"/>