Skip to content

Commit 162261d

Browse files
committed
[ADD] l10n_it_intrastat: aggiunto paese di origine su prodotto e categoria
1 parent 3234301 commit 162261d

File tree

3 files changed

+38
-11
lines changed

3 files changed

+38
-11
lines changed

l10n_it_intrastat/models/account.py

+21-10
Original file line numberDiff line numberDiff line change
@@ -143,11 +143,22 @@ def _prepare_intrastat_line_province_origin(self, company_id, res):
143143

144144
def _prepare_intrastat_line_country_good_origin(self, res):
145145
self.ensure_one()
146-
country_good_origin_id = self.env["res.country"].browse()
147-
if self.move_id.is_sale_document():
146+
if self.mapped("product_id.product_tmpl_id.intrastat_country_origin_id"):
147+
country_good_origin_id = (
148+
self.product_id.product_tmpl_id.intrastat_country_origin_id
149+
)
150+
elif self.mapped(
151+
"product_id.product_tmpl_id.categ_id.intrastat_country_origin_id"
152+
):
153+
country_good_origin_id = (
154+
self.product_id.product_tmpl_id.categ_id.intrastat_country_origin_id
155+
)
156+
elif self.move_id.is_sale_document():
148157
country_good_origin_id = self.move_id.company_id.partner_id.country_id
149158
elif self.move_id.is_purchase_document():
150159
country_good_origin_id = self.move_id.partner_id.country_id
160+
else:
161+
country_good_origin_id = self.env["res.country"].browse()
151162
res.update({"country_good_origin_id": country_good_origin_id.id})
152163

153164
def _prepare_intrastat_line_country_origin(self, res):
@@ -412,23 +423,23 @@ def _get_intrastat_lines_to_split(self):
412423
intra_line = line._prepare_intrastat_line()
413424
i_code_id = intra_line["intrastat_code_id"]
414425
i_code_type = intra_line["intrastat_code_type"]
426+
i_country_good_origin = intra_line["country_good_origin_id"]
415427

416-
if i_code_id in i_line_by_code:
417-
i_line_by_code[i_code_id]["amount_currency"] += intra_line[
418-
"amount_currency"
419-
]
420-
i_line_by_code[i_code_id]["statistic_amount_euro"] += intra_line[
428+
key = ";".join(filter(None, [str(i_code_id), str(i_country_good_origin)]))
429+
if key in i_line_by_code.keys():
430+
i_line_by_code[key]["amount_currency"] += intra_line["amount_currency"]
431+
i_line_by_code[key]["statistic_amount_euro"] += intra_line[
421432
"statistic_amount_euro"
422433
]
423-
i_line_by_code[i_code_id]["weight_kg"] += intra_line["weight_kg"]
424-
i_line_by_code[i_code_id]["additional_units"] += intra_line[
434+
i_line_by_code[key]["weight_kg"] += intra_line["weight_kg"]
435+
i_line_by_code[key]["additional_units"] += intra_line[
425436
"additional_units"
426437
]
427438
else:
428439
intra_line["statement_section"] = self.env[
429440
"account.invoice.intrastat"
430441
].compute_statement_section(i_code_type, self.move_type)
431-
i_line_by_code[i_code_id] = intra_line
442+
i_line_by_code[key] = intra_line
432443
return i_line_by_code, lines_to_split
433444

434445

l10n_it_intrastat/models/product.py

+15-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ class ProductCategory(models.Model):
1010
intrastat_code_id = fields.Many2one(
1111
"report.intrastat.code", string="Nomenclature Code"
1212
)
13+
intrastat_origin_country_id = fields.Many2one(
14+
"res.country", string="Origin Country"
15+
)
1316
intrastat_type = fields.Selection(
1417
[
1518
("good", "Goods"),
@@ -27,6 +30,9 @@ class ProductTemplate(models.Model):
2730
intrastat_code_id = fields.Many2one(
2831
comodel_name="report.intrastat.code", string="Intrastat Code"
2932
)
33+
intrastat_origin_country_id = fields.Many2one(
34+
"res.country", string="Origin Country"
35+
)
3036
intrastat_type = fields.Selection(
3137
selection=[
3238
("good", "Goods"),
@@ -44,12 +50,20 @@ def get_intrastat_data(self):
4450
- Intrastat Code on product template
4551
- Intrastat Code on product category
4652
"""
47-
res = {"intrastat_code_id": False, "intrastat_type": False}
53+
res = {
54+
"intrastat_code_id": False,
55+
"intrastat_origin_country_id": False,
56+
"intrastat_type": False,
57+
}
4858
# From Product
4959
if self.intrastat_type:
5060
res["intrastat_code_id"] = self.intrastat_code_id.id
61+
res["intrastat_origin_country_id"] = self.intrastat_origin_country_id.id
5162
res["intrastat_type"] = self.intrastat_type
5263
elif self.categ_id and self.categ_id.intrastat_code_id:
5364
res["intrastat_code_id"] = self.categ_id.intrastat_code_id.id
65+
res[
66+
"intrastat_origin_country_id"
67+
] = self.categ_id.intrastat_origin_country_id.id
5468
res["intrastat_type"] = self.categ_id.intrastat_type
5569
return res

l10n_it_intrastat/views/product.xml

+2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
attrs="{'invisible':[('intrastat_type','!=', 'good'),('intrastat_type','!=', 'service')],
1818
'required':[('intrastat_type','in', ['good', 'service'])]}"
1919
/>
20+
<field name="intrastat_origin_country_id" />
2021
</group>
2122

2223
</group>
@@ -38,6 +39,7 @@
3839
attrs="{'invisible':[('intrastat_type','!=', 'good'),('intrastat_type','!=', 'service')],
3940
'required':[('intrastat_type','in', ['good', 'service'])]}"
4041
/>
42+
<field name="intrastat_origin_country_id" />
4143
</group>
4244
</group>
4345
</xpath>

0 commit comments

Comments
 (0)