Skip to content

Commit

Permalink
[ADD] l10n_it_intrastat: aggiunta PR OCA#4091
Browse files Browse the repository at this point in the history
  • Loading branch information
Borruso committed Apr 10, 2024
1 parent f162521 commit c371db1
Show file tree
Hide file tree
Showing 8 changed files with 228 additions and 173 deletions.
51 changes: 26 additions & 25 deletions l10n_it_intrastat/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -57,69 +57,69 @@ generali".

1. Intrastat

1. *ID utente (codice UA)*: inserire il codice identificativo
1) *ID utente (codice UA)*: inserire il codice identificativo
Intrastat dell’azienda (codice alfanumerico di 4 caratteri,
utilizzato come identificativo per l’accesso alle applicazioni
delle Dogane).
2. *Unità di misura per kg*: parametro che indica l’unità di misura
2) *Unità di misura per kg*: parametro che indica l’unità di misura
che viene verificata sulla riga fattura soggetta a Intrastat. Se
sulla riga il peso è espresso nell’unità di misura indicata nel
parametro (o in un suo multiplo), il peso che viene riportato
nella corrispondente riga Intrastat è quello preso dalla riga
fattura.
3. *Unità supplementare da*:
3) *Unità supplementare da*:

1. *peso*: da peso dei prodotti sulla riga Intrastat
2. *quantità*: da quantità dei prodotti sulla riga Intrastat
3. *nulla*

4. *Escludere righe omaggio*: esclude dalle righe Intrastat le righe
4) *Escludere righe omaggio*: esclude dalle righe Intrastat le righe
a valore 0.
5. *Delegato*: il nominativo della persona delegata alla
5) *Delegato*: il nominativo della persona delegata alla
presentazione della dichiarazione Intrastat.
6. *Partita IVA delegato*: la partita IVA della persona delegata alla
6) *Partita IVA delegato*: la partita IVA della persona delegata alla
presentazione della dichiarazione Intrastat.
7. *Nome file da esportare*: nome del file che può essere impostato
7) *Nome file da esportare*: nome del file che può essere impostato
per forzare quello predefinito (SCAMBI.CEE).
8. *Sezione doganale*: sezione doganale predefinita da proporre in
8) *Sezione doganale*: sezione doganale predefinita da proporre in
una nuova dichiarazione.
9. *Ammontare minimo*: in caso di fatture di importo inferiore usa
9) *Ammontare minimo*: in caso di fatture di importo inferiore usa
questo valore nella dichiarazione.

2. Valori predefiniti per cessioni (parametri Intrastat per le fatture
di vendita)

1. *Forzare valore statistico in euro*: casella di selezione
1) *Forzare valore statistico in euro*: casella di selezione
attualmente non gestita.
2. *Natura transazione*: indica il valore predefinito che verrà
2) *Natura transazione*: indica il valore predefinito che verrà
impostato nelle righe Intrastat di una fattura per il campo di
riferimento.
3. *Condizioni di consegna*: indica il valore predefinito che verrà
3) *Condizioni di consegna*: indica il valore predefinito che verrà
impostato nelle righe Intrastat di una fattura per il campo di
riferimento.
4. *Modalità di trasporto*: indica il valore predefinito che verrà
4) *Modalità di trasporto*: indica il valore predefinito che verrà
impostato nelle righe Intrastat di una fattura per il campo di
riferimento (Modo di trasporto).
5. *Provincia di origine*: indica il valore predefinito che verrà
5) *Provincia di origine*: indica il valore predefinito che verrà
impostato nelle righe Intrastat di una fattura per il campo di
riferimento (provincia di origine della spedizione dei beni
venduti).

3. Valori predefiniti per acquisti (parametri Intrastat per le fatture
di acquisto)

1. *Forzare valore statistico in euro*: casella di selezione
1) *Forzare valore statistico in euro*: casella di selezione
attualmente non gestita.
2. *Natura transazione*: indica il valore predefinito che verrà
2) *Natura transazione*: indica il valore predefinito che verrà
impostato nelle righe Intrastat di una fattura per il campo di
riferimento.
3. *Condizioni di consegna*: indica il valore predefinito che verrà
3) *Condizioni di consegna*: indica il valore predefinito che verrà
impostato nelle righe Intrastat di una fattura per il campo di
riferimento.
4. *Modalità di trasporto*: indica il valore predefinito che verrà
4) *Modalità di trasporto*: indica il valore predefinito che verrà
impostato nelle righe Intrastat di una fattura per il campo di
riferimento (Modo di trasporto).
5. *Provincia di destinazione*: indica il valore predefinito che
5) *Provincia di destinazione*: indica il valore predefinito che
verrà impostato nelle righe Intrastat di una fattura per il campo
di riferimento (provincia di destinazione della spedizione dei
beni acquistati).
Expand Down Expand Up @@ -237,12 +237,13 @@ dalla riga fattura.

**Note di credito**

Importante: Se si seleziona un periodo che è lo stesso della
dichiarazione, la nota di credito, per il suo importo, non confluirà
nella sezione di rettifica, ma andrà a stornare direttamente il valore
della fattura sulla quale è stata emessa. La verifica sulla fattura da
stornare viene fatta confrontando la coppia di valori
*Partner/Nomenclatura combinata*.
| Importante:
| Se si seleziona un periodo che è lo stesso della dichiarazione, la
nota di credito, per il suo importo, non confluirà nella sezione di
rettifica, ma andrà a stornare direttamente il valore della fattura
sulla quale è stata emessa. La verifica sulla fattura da stornare
viene fatta confrontando la coppia di valori *Partner/Nomenclatura
combinata*.
Bug Tracker
===========
Expand Down
43 changes: 27 additions & 16 deletions l10n_it_intrastat/models/account.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ def _prepare_intrastat_line(self):

def _prepare_intrastat_line_country_payment(self, res):
self.ensure_one()
country_payment_id = self.env["res.country"].browse()
country_payment_id = self.env["res.country"]
if self.move_id.is_sale_document():
country_payment_id = self.move_id.company_id.partner_id.country_id
if self.move_id.partner_bank_id:
Expand All @@ -105,7 +105,7 @@ def _prepare_intrastat_line_payment(self, res):

def _prepare_intrastat_line_province_dest(self, company_id, res):
self.ensure_one()
province_destination_id = self.env["res.country.state"].browse()
province_destination_id = self.env["res.country.state"]
if self.move_id.is_sale_document():
province_destination_id = self.move_id.partner_id.state_id
elif self.move_id.is_purchase_document():
Expand All @@ -117,7 +117,7 @@ def _prepare_intrastat_line_province_dest(self, company_id, res):

def _prepare_intrastat_line_country_dest(self, res):
self.ensure_one()
country_destination_id = self.env["res.country"].browse()
country_destination_id = self.env["res.country"]
if self.move_id.is_sale_document():
country_destination_id = self.move_id.partner_id.country_id
elif self.move_id.is_purchase_document():
Expand All @@ -126,7 +126,7 @@ def _prepare_intrastat_line_country_dest(self, res):

def _prepare_intrastat_line_province_origin(self, company_id, res):
self.ensure_one()
province_origin_id = self.env["res.country.state"].browse()
province_origin_id = self.env["res.country.state"]
if self.move_id.is_sale_document():
province_origin_id = (
company_id.intrastat_sale_province_origin_id
Expand All @@ -143,16 +143,27 @@ def _prepare_intrastat_line_province_origin(self, company_id, res):

def _prepare_intrastat_line_country_good_origin(self, res):
self.ensure_one()
country_good_origin_id = self.env["res.country"].browse()
if self.move_id.is_sale_document():
if self.mapped("product_id.product_tmpl_id.intrastat_country_origin_id"):
country_good_origin_id = (
self.product_id.product_tmpl_id.intrastat_country_origin_id
)
elif self.mapped(
"product_id.product_tmpl_id.categ_id.intrastat_country_origin_id"
):
country_good_origin_id = (
self.product_id.product_tmpl_id.categ_id.intrastat_country_origin_id
)
elif self.move_id.is_sale_document():
country_good_origin_id = self.move_id.company_id.partner_id.country_id
elif self.move_id.is_purchase_document():
country_good_origin_id = self.move_id.partner_id.country_id
else:
country_good_origin_id = self.env["res.country"]
res.update({"country_good_origin_id": country_good_origin_id.id})

def _prepare_intrastat_line_country_origin(self, res):
self.ensure_one()
country_origin_id = self.env["res.country"].browse()
country_origin_id = self.env["res.country"]
if self.move_id.is_sale_document():
country_origin_id = self.move_id.company_id.partner_id.country_id
elif self.move_id.is_purchase_document():
Expand Down Expand Up @@ -229,7 +240,7 @@ def _prepare_intrastat_line_code(self, product_template, res):
self.ensure_one()
intrastat_data = product_template.get_intrastat_data()
intrastat_code_model = self.env["report.intrastat.code"]
intrastat_code = intrastat_code_model.browse()
intrastat_code = intrastat_code_model
if intrastat_data["intrastat_code_id"]:
intrastat_code = intrastat_code_model.browse(
intrastat_data["intrastat_code_id"]
Expand Down Expand Up @@ -412,23 +423,23 @@ def _get_intrastat_lines_to_split(self):
intra_line = line._prepare_intrastat_line()
i_code_id = intra_line["intrastat_code_id"]
i_code_type = intra_line["intrastat_code_type"]
i_country_good_origin = intra_line["country_good_origin_id"]

if i_code_id in i_line_by_code:
i_line_by_code[i_code_id]["amount_currency"] += intra_line[
"amount_currency"
]
i_line_by_code[i_code_id]["statistic_amount_euro"] += intra_line[
key = ";".join(filter(None, [str(i_code_id), str(i_country_good_origin)]))
if key in i_line_by_code.keys():
i_line_by_code[key]["amount_currency"] += intra_line["amount_currency"]
i_line_by_code[key]["statistic_amount_euro"] += intra_line[
"statistic_amount_euro"
]
i_line_by_code[i_code_id]["weight_kg"] += intra_line["weight_kg"]
i_line_by_code[i_code_id]["additional_units"] += intra_line[
i_line_by_code[key]["weight_kg"] += intra_line["weight_kg"]
i_line_by_code[key]["additional_units"] += intra_line[
"additional_units"
]
else:
intra_line["statement_section"] = self.env[
"account.invoice.intrastat"
].compute_statement_section(i_code_type, self.move_type)
i_line_by_code[i_code_id] = intra_line
i_line_by_code[key] = intra_line
return i_line_by_code, lines_to_split


Expand Down
16 changes: 15 additions & 1 deletion l10n_it_intrastat/models/product.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ class ProductCategory(models.Model):
intrastat_code_id = fields.Many2one(
"report.intrastat.code", string="Nomenclature Code"
)
intrastat_country_origin_id = fields.Many2one(
"res.country", string="Origin Country"
)
intrastat_type = fields.Selection(
[
("good", "Goods"),
Expand All @@ -26,6 +29,9 @@ class ProductTemplate(models.Model):
intrastat_code_id = fields.Many2one(
comodel_name="report.intrastat.code", string="Intrastat Code"
)
intrastat_country_origin_id = fields.Many2one(
"res.country", string="Origin Country"
)
intrastat_type = fields.Selection(
selection=[
("good", "Goods"),
Expand All @@ -42,12 +48,20 @@ def get_intrastat_data(self):
- Intrastat Code on product template
- Intrastat Code on product category
"""
res = {"intrastat_code_id": False, "intrastat_type": False}
res = {
"intrastat_code_id": False,
"intrastat_country_origin_id": False,
"intrastat_type": False,
}
# From Product
if self.intrastat_type:
res["intrastat_code_id"] = self.intrastat_code_id.id
res["intrastat_country_origin_id"] = self.intrastat_country_origin_id.id
res["intrastat_type"] = self.intrastat_type
elif self.categ_id and self.categ_id.intrastat_code_id:
res["intrastat_code_id"] = self.categ_id.intrastat_code_id.id
res[
"intrastat_country_origin_id"
] = self.categ_id.intrastat_country_origin_id.id
res["intrastat_type"] = self.categ_id.intrastat_type
return res
Loading

0 comments on commit c371db1

Please sign in to comment.