diff --git a/checklog-odoo.cfg b/checklog-odoo.cfg
index af8883684..0b55b7bf6 100644
--- a/checklog-odoo.cfg
+++ b/checklog-odoo.cfg
@@ -1,7 +1,3 @@
[checklog-odoo]
ignore=
-<<<<<<< before updating
- WARNING.* 0 failed, 0 error\(s\).*
-=======
WARNING.* 0 failed, 0 error\(s\).*
->>>>>>> after updating
diff --git a/intrastat_base/models/product_template.py b/intrastat_base/models/product_template.py
index f4c3ae8db..a09791942 100644
--- a/intrastat_base/models/product_template.py
+++ b/intrastat_base/models/product_template.py
@@ -9,27 +9,56 @@
class ProductTemplate(models.Model):
_inherit = "product.template"
+ intrastat_type = fields.Selection(
+ [
+ ("product", "Product"),
+ ("service", "Service"),
+ ],
+ compute="_compute_intrastat_type",
+ store=True,
+ precompute=True,
+ help="Type of product used for the intrastat declarations.",
+ )
is_accessory_cost = fields.Boolean(
+ compute="_compute_is_accessory_cost",
+ store=True,
+ precompute=True,
+ readonly=False,
help="Activate this option for shipping costs, packaging "
"costs and all services related to the sale of products. "
"This option is used for Intrastat reports.",
)
- @api.constrains("type", "is_accessory_cost")
+ @api.depends("type", "combo_ids.combo_item_ids.product_id.type")
+ def _compute_intrastat_type(self):
+ for this in self:
+ intrastat_type = "service"
+ if this.type == "consu":
+ intrastat_type = "product"
+ elif this.type == "combo":
+ for combo in this.combo_ids:
+ for item in combo.combo_item_ids:
+ if item.product_id.type == "consu":
+ intrastat_type = "product"
+ break
+ this.intrastat_type = intrastat_type
+
+ @api.depends("intrastat_type")
+ def _compute_is_accessory_cost(self):
+ for this in self:
+ if this.intrastat_type != "service":
+ this.is_accessory_cost = False
+
+ @api.constrains("intrastat_type", "is_accessory_cost")
def _check_accessory_cost(self):
for this in self:
- if this.is_accessory_cost and this.type != "service":
+ if this.is_accessory_cost and this.intrastat_type != "service":
raise ValidationError(
_(
- "The option 'Is accessory cost?' should only be "
+ "The option 'Is accessory cost?' can only be "
"activated on 'Service' products. You have activated "
"this option for the product '%(product_name)s' which is "
- "configured with type '%(product_type)s'."
+ "not a service product.",
+ product_name=this.display_name,
)
- % {
- "product_name": this.display_name,
- "product_type": this._fields["type"].convert_to_export(
- this.type, this
- ),
- }
)
diff --git a/intrastat_base/views/product_template.xml b/intrastat_base/views/product_template.xml
index be100a5c0..7ad057735 100644
--- a/intrastat_base/views/product_template.xml
+++ b/intrastat_base/views/product_template.xml
@@ -10,10 +10,13 @@
product.template
+
+
+
+ localisation module to set invisible="intrastat_type != 'service'" -->