Skip to content

Commit

Permalink
[14.0][IMP] add ability to set intrastat only for in_ or out_ invoice…
Browse files Browse the repository at this point in the history
…s in l10n_it_intrastat
  • Loading branch information
sergiocorato committed Nov 22, 2024
1 parent 55e4c1c commit 2a0a5fd
Show file tree
Hide file tree
Showing 9 changed files with 94 additions and 20 deletions.
5 changes: 3 additions & 2 deletions l10n_it_intrastat/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -103,9 +103,9 @@ N.B.: Il sottomenù "Intrastat" è visibile solo se vengono abilitate le funzion

**Posizione fiscale**

L'assoggettamento ad Intrastat può essere gestito anche a livello generale di singolo partner, associandogli una posizione fiscale che abbia l'apposita casella "Soggetta a Intrastat" selezionata.
L'assoggettamento ad Intrastat può essere gestito anche a livello generale di singolo partner, associandogli una posizione fiscale che abbia una o entrambe le caselle: "Soggetta a Intrastat Acquisti" o "Soggetta a Intrastat Vendite" selezionate.

Tutte le fatture create per il partner che ha una posizione fiscale marcata come soggetta ad Intrastat avranno l’apposito campo "Soggetta a Intrastat" selezionato automaticamente.
Tutte le fatture/note di credito, del tipo Acquisti per fornitori e Vendite per clienti, create per il partner che ha una posizione fiscale marcata come soggetta ad Intrastat avranno l’apposito campo "Soggetta a Intrastat" selezionato automaticamente.


**Prodotti e categorie**
Expand Down Expand Up @@ -197,6 +197,7 @@ Contributors
* Antonio Maria Vigliotti <[email protected]>
* Fabio Giovannelli <[email protected]>
* Alex Comba <[email protected]>
* Sergio Corato <https://github.com/sergiocorato>

Maintainers
~~~~~~~~~~~
Expand Down
2 changes: 1 addition & 1 deletion l10n_it_intrastat/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

{
"name": "ITA - Intrastat",
"version": "14.0.1.4.2",
"version": "14.0.1.4.3",
"category": "Account",
"summary": "Riclassificazione merci e servizi per dichiarazioni Intrastat",
"author": "Openforce, Link IT srl, Agile Business Group, "
Expand Down
34 changes: 34 additions & 0 deletions l10n_it_intrastat/migrations/14.0.1.4.3/pre-migrate.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
from openupgradelib import openupgrade
from openupgradelib.openupgrade_tools import column_exists


@openupgrade.migrate()
def migrate(env, version):
for table, column in [
("account_fiscal_position", "intrastat_sale"),
("account_fiscal_position", "intrastat_purchase"),
]:
if not column_exists(env.cr, table, column):
openupgrade.add_fields(
env,
[
(
column,
".".join(table.split("_")),
False,
"boolean",
False,
"l10n_it_intrastat",
)
],
)
openupgrade.logged_query(
env.cr,
"""
UPDATE account_fiscal_position
SET
intrastat_sale = intrastat,
intrastat_purchase = intrastat
WHERE intrastat is true;
""",
)
33 changes: 25 additions & 8 deletions l10n_it_intrastat/models/account.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
class AccountFiscalPosition(models.Model):
_inherit = "account.fiscal.position"

intrastat = fields.Boolean(string="Subject to Intrastat")
intrastat_purchase = fields.Boolean(string="Subject to Intrastat (purchases)")
intrastat_sale = fields.Boolean(string="Subject to Intrastat (sales)")


class AccountMoveLine(models.Model):
Expand Down Expand Up @@ -299,7 +300,12 @@ class AccountMove(models.Model):

@api.onchange("fiscal_position_id")
def change_fiscal_position(self):
self.intrastat = self.fiscal_position_id.intrastat
self.intrastat = (
self.is_sale_document()
and self.fiscal_position_id.intrastat_sale
or self.is_purchase_document()
and self.fiscal_position_id.intrastat_purchase
)

@api.onchange("partner_id")
def _onchange_partner_id(self):
Expand All @@ -310,13 +316,24 @@ def _onchange_partner_id(self):
@api.model_create_multi
def create(self, vals_list):
for val in vals_list:
if "intrastat" not in val and "fiscal_position_id" in val:
intrastat = (
self.env["account.fiscal.position"]
.browse(val["fiscal_position_id"])
.intrastat
if "fiscal_position_id" in val:
fiscal_position = self.env["account.fiscal.position"].browse(
val["fiscal_position_id"]
)
val.update({"intrastat": intrastat})
if "intrastat" not in val:
intrastat = False
if "move_type" in val and val.get("move_type"):
if (
val.get("move_type")
in self.env["account.move"].get_sale_types()
):
intrastat = fiscal_position.intrastat_sale
elif (
val.get("move_type")
in self.env["account.move"].get_purchase_types()
):
intrastat = fiscal_position.intrastat_purchase
val.update({"intrastat": intrastat})
return super().create(vals_list)

def action_post(self):
Expand Down
4 changes: 2 additions & 2 deletions l10n_it_intrastat/readme/CONFIGURE.rst
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,9 @@ N.B.: Il sottomenù "Intrastat" è visibile solo se vengono abilitate le funzion

**Posizione fiscale**

L'assoggettamento ad Intrastat può essere gestito anche a livello generale di singolo partner, associandogli una posizione fiscale che abbia l'apposita casella "Soggetta a Intrastat" selezionata.
L'assoggettamento ad Intrastat può essere gestito anche a livello generale di singolo partner, associandogli una posizione fiscale che abbia una o entrambe le caselle: "Soggetta a Intrastat Acquisti" o "Soggetta a Intrastat Vendite" selezionate.

Tutte le fatture create per il partner che ha una posizione fiscale marcata come soggetta ad Intrastat avranno l’apposito campo "Soggetta a Intrastat" selezionato automaticamente.
Tutte le fatture/note di credito, del tipo Acquisti per fornitori e Vendite per clienti, create per il partner che ha una posizione fiscale marcata come soggetta ad Intrastat avranno l’apposito campo "Soggetta a Intrastat" selezionato automaticamente.


**Prodotti e categorie**
Expand Down
1 change: 1 addition & 0 deletions l10n_it_intrastat/readme/CONTRIBUTORS.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,4 @@
* Antonio Maria Vigliotti <[email protected]>
* Fabio Giovannelli <[email protected]>
* Alex Comba <[email protected]>
* Sergio Corato <https://github.com/sergiocorato>
6 changes: 4 additions & 2 deletions l10n_it_intrastat/static/description/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -442,8 +442,8 @@ <h1><a class="toc-backref" href="#toc-entry-1">Configuration</a></h1>
<p>Tali tabelle sono pre-popolate in fase di installazione del modulo, in base ai valori ammessi per le dichiarazioni Intrastat.</p>
<p>N.B.: Il sottomenù “Intrastat” è visibile solo se vengono abilitate le funzionalità contabili complete.</p>
<p><strong>Posizione fiscale</strong></p>
<p>L’assoggettamento ad Intrastat può essere gestito anche a livello generale di singolo partner, associandogli una posizione fiscale che abbia l’apposita casella “Soggetta a Intrastat” selezionata.</p>
<p>Tutte le fatture create per il partner che ha una posizione fiscale marcata come soggetta ad Intrastat avranno l’apposito campo “Soggetta a Intrastat” selezionato automaticamente.</p>
<p>L’assoggettamento ad Intrastat può essere gestito anche a livello generale di singolo partner, associandogli una posizione fiscale che abbia una o entrambe le caselle: “Soggetta a Intrastat Acquisti” o “Soggetta a Intrastat Vendite” selezionate.</p>
<p>Tutte le fatture/note di credito, del tipo Acquisti per fornitori e Vendite per clienti, create per il partner che ha una posizione fiscale marcata come soggetta ad Intrastat avranno l’apposito campo “Soggetta a Intrastat” selezionato automaticamente.</p>
<p><strong>Prodotti e categorie</strong></p>
<p>La classificazione Intrastat dei beni o dei servizi può essere fatta sia a livello di categoria che a livello di prodotto.</p>
<p>La priorità è data al prodotto: se su un prodotto non è configurato un codice Intrastat, il sistema tenta di ricavarlo dalla categoria a cui quel prodotto è associato.</p>
Expand Down Expand Up @@ -533,6 +533,8 @@ <h2><a class="toc-backref" href="#toc-entry-6">Contributors</a></h2>
</li>
<li><p class="first">Alex Comba &lt;<a class="reference external" href="mailto:alex.comba&#64;agilebg.com">alex.comba&#64;agilebg.com</a>&gt;</p>
</li>
<li><p class="first">Sergio Corato &lt;<a class="reference external" href="https://github.com/sergiocorato">https://github.com/sergiocorato</a>&gt;</p>
</li>
</ul>
</div>
<div class="section" id="maintainers">
Expand Down
26 changes: 22 additions & 4 deletions l10n_it_intrastat/tests/test_intrastat.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,15 +65,16 @@ def test_invoice_totals(self):
)
self.assertEqual(total_intrastat_amount, invoice.amount_untaxed)

def test_invoice_fiscal_postion(self):
def _test_invoice_fiscal_position(self, intrastat_type):
self.partner01.property_account_position_id = self.fp_model.create(
{
"name": "F.P subjected to intrastat",
"intrastat": True,
"name": "F.P subjected to intrastat on %s" % intrastat_type,
"intrastat_sale": True if intrastat_type == "sale" else False,
"intrastat_purchase": True if intrastat_type == "purchase" else False,
}
)
invoice = self.init_invoice(
"out_invoice",
"out_invoice" if intrastat_type == "sale" else "in_invoice",
partner=self.partner01,
products=self.product01,
taxes=self.tax22,
Expand All @@ -82,3 +83,20 @@ def test_invoice_fiscal_postion(self):
invoice.action_post()
invoice.compute_intrastat_lines()
self.assertEqual(invoice.intrastat, True)

invoice_purchase = self.init_invoice(
"in_invoice" if intrastat_type == "sale" else "out_invoice",
partner=self.partner01,
products=self.product01,
taxes=self.tax22,
)
# Compute intrastat lines
invoice_purchase.action_post()
invoice_purchase.compute_intrastat_lines()
self.assertEqual(invoice_purchase.intrastat, False)

def test_invoice_fiscal_position_sale(self):
self._test_invoice_fiscal_position("sale")

def test_invoice_fiscal_position_purchase(self):
self._test_invoice_fiscal_position("purchase")
3 changes: 2 additions & 1 deletion l10n_it_intrastat/views/account.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@
<xpath expr="//field[@name='note']" position="before">
<separator string="Intrastat" />
<group colspan="4">
<field name="intrastat" />
<field name="intrastat_purchase" />
<field name="intrastat_sale" />
</group>
</xpath>
</field>
Expand Down

0 comments on commit 2a0a5fd

Please sign in to comment.