Skip to content

Commit

Permalink
Merge PR #299 into 18.0
Browse files Browse the repository at this point in the history
Signed-off-by alexis-via
  • Loading branch information
OCA-git-bot committed Feb 11, 2025
2 parents bb918f2 + aa46077 commit 6748e6b
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 11 deletions.
49 changes: 39 additions & 10 deletions intrastat_base/models/product_template.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
),
}
)
5 changes: 4 additions & 1 deletion intrastat_base/views/product_template.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,13 @@
<field name="model">product.template</field>
<field name="inherit_id" ref="account.product_template_form_view" />
<field name="arch" type="xml">
<group name="group_general" position="inside">
<field name="intrastat_type" invisible="1" />
</group>
<group name="accounting" position="inside">
<group string="Intrastat" name="intrastat">
<!-- If you need this field, inherit this view in a
localisation module to set invisible="type != 'service'" -->
localisation module to set invisible="intrastat_type != 'service'" -->
<field name="is_accessory_cost" invisible="1" />
</group>
</group>
Expand Down

0 comments on commit 6748e6b

Please sign in to comment.