changeset 370c43645ef4 in modules/account_es:default
details: 
https://hg.tryton.org/modules/account_es?cmd=changeset;node=370c43645ef4
description:
        Add link between IVA and recargo taxes

        issue9182
        review301261002
diffstat:

 CHANGELOG                  |   1 +
 account.py                 |  59 +++++++++++++++++++++++++++++++++++++++++++++-
 tax.xml                    |  13 +++-------
 tax_normal.xml             |  13 +++-------
 tax_pyme.xml               |  13 +++-------
 view/tax_form.xml          |   4 ++-
 view/tax_template_form.xml |   4 ++-
 7 files changed, 77 insertions(+), 30 deletions(-)

diffs (343 lines):

diff -r 28a9d23dbc2b -r 370c43645ef4 CHANGELOG
--- a/CHANGELOG Thu Oct 08 00:35:34 2020 +0200
+++ b/CHANGELOG Sun Oct 11 23:38:37 2020 +0200
@@ -1,3 +1,4 @@
+* Link recargo tax with its related VAT taxes
 * Add purchase service tax group
 
 Version 5.6.0 - 2020-05-04
diff -r 28a9d23dbc2b -r 370c43645ef4 account.py
--- a/account.py        Thu Oct 08 00:35:34 2020 +0200
+++ b/account.py        Sun Oct 11 23:38:37 2020 +0200
@@ -1,7 +1,7 @@
 # This file is part of Tryton.  The COPYRIGHT file at the top level of
 # this repository contains the full copyright notices and license terms.
 from trytond.model import fields
-from trytond.pool import PoolMeta
+from trytond.pool import PoolMeta, Pool
 from trytond.pyson import Bool, Eval
 
 
@@ -42,6 +42,7 @@
 
     es_vat_list_code = fields.Char("Spanish VAT List Code")
     es_ec_purchases_list_code = fields.Char("Spanish EC Purchase List Code")
+    es_reported_with = fields.Many2One('account.tax.template', "Reported With")
 
     def _get_tax_value(self, tax=None):
         value = super()._get_tax_value(tax=tax)
@@ -50,6 +51,29 @@
                 value[name] = getattr(self, name)
         return value
 
+    @classmethod
+    def create_tax(
+            cls, account_id, company_id, template2account, template2tax=None):
+        pool = Pool()
+        Tax = pool.get('account.tax')
+        super().create_tax(
+            account_id, company_id, template2account, template2tax)
+
+        to_write = []
+
+        for template_id, tax_id in template2tax.items():
+            template = cls(template_id)
+            if not template.es_reported_with:
+                continue
+            reported_with = template2tax[template.es_reported_with.id]
+            to_write.append([Tax(tax_id)])
+            to_write.append({
+                    'es_reported_with': reported_with,
+                    })
+
+        if to_write:
+            Tax.write(*to_write)
+
 
 class Tax(metaclass=PoolMeta):
     __name__ = 'account.tax'
@@ -66,3 +90,36 @@
                 & ~Eval('template_override', False)),
             },
         depends=['template', 'template_override'])
+    es_reported_with = fields.Many2One('account.tax', "Reported with",
+        states={
+            'readonly': (Bool(Eval('template', -1))
+                & ~Eval('template_override', False)),
+            },
+        depends=['template', 'template_override'])
+
+    @classmethod
+    def update_tax(cls, company_id, template2account, template2tax=None):
+        super().update_tax(company_id, template2account, template2tax)
+
+        to_write = []
+
+        for template_id, tax_id in template2tax.items():
+            tax = cls(tax_id)
+            if not tax.template_override:
+                values = {}
+                reported_with = (tax.es_reported_with.id
+                    if tax.es_reported_with else None)
+                if (tax.template.es_reported_with
+                        and reported_with != template2tax.get(
+                                tax.template.es_reported_with.id)):
+                    values['es_reported_with'] = template2tax.get(
+                        tax.template.es_reported_with.id)
+                elif (not tax.template.es_reported_with
+                        and tax.es_reported_with):
+                    values['es_reported_with'] = None
+                if values:
+                    to_write.append([tax])
+                    to_write.append(values)
+
+        if to_write:
+            cls.write(*to_write)
diff -r 28a9d23dbc2b -r 370c43645ef4 tax.xml
--- a/tax.xml   Thu Oct 08 00:35:34 2020 +0200
+++ b/tax.xml   Sun Oct 11 23:38:37 2020 +0200
@@ -2,7 +2,7 @@
 <!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
 this repository contains the full copyright notices and license terms. -->
 <tryton>
-    <data grouped="1">
+    <data>
         <record model="account.tax.template" id="iva_rep_21">
             <field name="name">IVA 21% (bienes)</field>
             <field name="description">IVA 21%</field>
@@ -87,6 +87,7 @@
             <field name="rate" eval="Decimal('0.052')"/>
             <field name="invoice_account" ref="pgc_477"/>
             <field name="credit_note_account" ref="pgc_477"/>
+            <field name="es_reported_with" ref="iva_rep_21"/>
         </record>
         <record model="account.tax.template" id="iva_rep_re_14">
             <field name="name">Recargo Equivalencia 1.4%</field>
@@ -97,6 +98,7 @@
             <field name="rate" eval="Decimal('0.014')"/>
             <field name="invoice_account" ref="pgc_477"/>
             <field name="credit_note_account" ref="pgc_477"/>
+            <field name="es_reported_with" ref="iva_rep_10"/>
         </record>
         <record model="account.tax.template" id="iva_rep_re_05">
             <field name="name">Recargo Equivalencia 0.5%</field>
@@ -107,6 +109,7 @@
             <field name="rate" eval="Decimal('0.005')"/>
             <field name="invoice_account" ref="pgc_477"/>
             <field name="credit_note_account" ref="pgc_477"/>
+            <field name="es_reported_with" ref="iva_rep_4"/>
         </record>
         <record model="account.tax.template" id="iva_rep_exportaciones">
             <field name="name">IVA Exportaciones (bienes)</field>
@@ -433,8 +436,6 @@
             <field name="update_unit_price" eval="True"/>
             <field name="sequence" eval="10"/>
         </record>
-    </data>
-    <data grouped="1">
         <record model="account.tax.template" id="iva_sop_intracomunitario_1">
             <field name="name">IVA Intracomunitario. Bienes (1)</field>
             <field name="description">IVA Intracomunitario (1)</field>
@@ -504,8 +505,6 @@
             <field name="invoice_account" ref="pgc_477"/>
             <field name="credit_note_account" ref="pgc_477"/>
         </record>
-    </data>
-    <data>
         <record model="account.tax.code.template" id="vat_code_iva">
             <field name="name">Impuesto sobre el Valor Añadido - 
Autoliquidación</field>
             <field name="code">AEAT303</field>
@@ -1864,8 +1863,6 @@
             <field name="amount">tax</field>
             <field name="type">credit</field>
         </record>
-    </data>
-    <data grouped="1">
         <record model="account.tax.rule.template" id="fp_recargo">
             <field name="name">Recargo de Equivalencia</field>
             <field name="account" ref="pgc_0"/>
@@ -1931,8 +1928,6 @@
             <field name="account" ref="pgc_0"/>
             <field name="kind">purchase</field>
         </record>
-    </data>
-    <data grouped="1">
         <record model="account.tax.rule.line.template" id="fptt_recargo_4_2">
             <field name="rule" ref="fp_recargo"/>
             <field name="origin_tax" ref="iva_rep_4"/>
diff -r 28a9d23dbc2b -r 370c43645ef4 tax_normal.xml
--- a/tax_normal.xml    Thu Oct 08 00:35:34 2020 +0200
+++ b/tax_normal.xml    Sun Oct 11 23:38:37 2020 +0200
@@ -2,7 +2,7 @@
 <!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
 this repository contains the full copyright notices and license terms. -->
 <tryton>
-    <data grouped="1">
+    <data>
         <record id="iva_rep_21_normal" model="account.tax.template">
             <field name="name">IVA 21% (bienes)</field>
             <field name="description">IVA 21%</field>
@@ -87,6 +87,7 @@
             <field name="rate" eval="Decimal('0.052')"/>
             <field name="invoice_account" ref="pgc_477_normal"/>
             <field name="credit_note_account" ref="pgc_477_normal"/>
+            <field name="es_reported_with" ref="iva_rep_21_normal"/>
         </record>
         <record id="iva_rep_re_14_normal" model="account.tax.template">
             <field name="name">Recargo Equivalencia 1.4%</field>
@@ -97,6 +98,7 @@
             <field name="rate" eval="Decimal('0.014')"/>
             <field name="invoice_account" ref="pgc_477_normal"/>
             <field name="credit_note_account" ref="pgc_477_normal"/>
+            <field name="es_reported_with" ref="iva_rep_10_normal"/>
         </record>
         <record id="iva_rep_re_05_normal" model="account.tax.template">
             <field name="name">Recargo Equivalencia 0.5%</field>
@@ -107,6 +109,7 @@
             <field name="rate" eval="Decimal('0.005')"/>
             <field name="invoice_account" ref="pgc_477_normal"/>
             <field name="credit_note_account" ref="pgc_477_normal"/>
+            <field name="es_reported_with" ref="iva_rep_4_normal"/>
         </record>
         <record id="iva_rep_exportaciones_normal" model="account.tax.template">
             <field name="name">IVA Exportaciones (bienes)</field>
@@ -433,8 +436,6 @@
             <field name="update_unit_price" eval="True"/>
             <field name="sequence" eval="10"/>
         </record>
-    </data>
-    <data grouped="1">
         <record id="iva_sop_intracomunitario_1_normal" 
model="account.tax.template">
             <field name="name">IVA Intracomunitario. Bienes (1)</field>
             <field name="description">IVA Intracomunitario (1)</field>
@@ -504,8 +505,6 @@
             <field name="invoice_account" ref="pgc_477_normal"/>
             <field name="credit_note_account" ref="pgc_477_normal"/>
         </record>
-    </data>
-    <data>
         <record id="vat_code_iva_normal" model="account.tax.code.template">
             <field name="name">Impuesto sobre el Valor Añadido - 
Autoliquidación</field>
             <field name="code">AEAT303</field>
@@ -1864,8 +1863,6 @@
             <field name="amount">tax</field>
             <field name="type">credit</field>
         </record>
-    </data>
-    <data grouped="1">
         <record id="fp_recargo_normal" model="account.tax.rule.template">
             <field name="name">Recargo de Equivalencia</field>
             <field name="account" ref="pgc_0_normal"/>
@@ -1931,8 +1928,6 @@
             <field name="account" ref="pgc_0_normal"/>
             <field name="kind">purchase</field>
         </record>
-    </data>
-    <data grouped="1">
         <record id="fptt_recargo_4_2_normal" 
model="account.tax.rule.line.template">
             <field name="rule" ref="fp_recargo_normal"/>
             <field name="origin_tax" ref="iva_rep_4_normal"/>
diff -r 28a9d23dbc2b -r 370c43645ef4 tax_pyme.xml
--- a/tax_pyme.xml      Thu Oct 08 00:35:34 2020 +0200
+++ b/tax_pyme.xml      Sun Oct 11 23:38:37 2020 +0200
@@ -2,7 +2,7 @@
 <!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
 this repository contains the full copyright notices and license terms. -->
 <tryton>
-    <data grouped="1">
+    <data>
         <record id="iva_rep_21_pyme" model="account.tax.template">
             <field name="name">IVA 21% (bienes)</field>
             <field name="description">IVA 21%</field>
@@ -87,6 +87,7 @@
             <field name="rate" eval="Decimal('0.052')"/>
             <field name="invoice_account" ref="pgc_477_pyme"/>
             <field name="credit_note_account" ref="pgc_477_pyme"/>
+            <field name="es_reported_with" ref="iva_rep_21_pyme"/>
         </record>
         <record id="iva_rep_re_14_pyme" model="account.tax.template">
             <field name="name">Recargo Equivalencia 1.4%</field>
@@ -97,6 +98,7 @@
             <field name="rate" eval="Decimal('0.014')"/>
             <field name="invoice_account" ref="pgc_477_pyme"/>
             <field name="credit_note_account" ref="pgc_477_pyme"/>
+            <field name="es_reported_with" ref="iva_rep_10_pyme"/>
         </record>
         <record id="iva_rep_re_05_pyme" model="account.tax.template">
             <field name="name">Recargo Equivalencia 0.5%</field>
@@ -107,6 +109,7 @@
             <field name="rate" eval="Decimal('0.005')"/>
             <field name="invoice_account" ref="pgc_477_pyme"/>
             <field name="credit_note_account" ref="pgc_477_pyme"/>
+            <field name="es_reported_with" ref="iva_rep_4_pyme"/>
         </record>
         <record id="iva_rep_exportaciones_pyme" model="account.tax.template">
             <field name="name">IVA Exportaciones (bienes)</field>
@@ -433,8 +436,6 @@
             <field name="update_unit_price" eval="True"/>
             <field name="sequence" eval="10"/>
         </record>
-    </data>
-    <data grouped="1">
         <record id="iva_sop_intracomunitario_1_pyme" 
model="account.tax.template">
             <field name="name">IVA Intracomunitario. Bienes (1)</field>
             <field name="description">IVA Intracomunitario (1)</field>
@@ -504,8 +505,6 @@
             <field name="invoice_account" ref="pgc_477_pyme"/>
             <field name="credit_note_account" ref="pgc_477_pyme"/>
         </record>
-    </data>
-    <data>
         <record id="vat_code_iva_pyme" model="account.tax.code.template">
             <field name="name">Impuesto sobre el Valor Añadido - 
Autoliquidación</field>
             <field name="code">AEAT303</field>
@@ -1864,8 +1863,6 @@
             <field name="amount">tax</field>
             <field name="type">credit</field>
         </record>
-    </data>
-    <data grouped="1">
         <record id="fp_recargo_pyme" model="account.tax.rule.template">
             <field name="name">Recargo de Equivalencia</field>
             <field name="account" ref="pgc_0_pyme"/>
@@ -1931,8 +1928,6 @@
             <field name="account" ref="pgc_0_pyme"/>
             <field name="kind">purchase</field>
         </record>
-    </data>
-    <data grouped="1">
         <record id="fptt_recargo_4_2_pyme" 
model="account.tax.rule.line.template">
             <field name="rule" ref="fp_recargo_pyme"/>
             <field name="origin_tax" ref="iva_rep_4_pyme"/>
diff -r 28a9d23dbc2b -r 370c43645ef4 view/tax_form.xml
--- a/view/tax_form.xml Thu Oct 08 00:35:34 2020 +0200
+++ b/view/tax_form.xml Sun Oct 11 23:38:37 2020 +0200
@@ -3,9 +3,11 @@
 this repository contains the full copyright notices and license terms. -->
 <data>
     <xpath expr="/form/notebook" position="inside">
-        <page id="es_vat_list" string="Spanish VAT List">
+        <page id="es_vat" string="Spanish VAT">
             <label name="es_vat_list_code"/>
             <field name="es_vat_list_code"/>
+            <label name="es_reported_with"/>
+            <field name="es_reported_with"/>
         </page>
     </xpath>
     <xpath expr="/form//field[@name='ec_sales_list_code']" position="after">
diff -r 28a9d23dbc2b -r 370c43645ef4 view/tax_template_form.xml
--- a/view/tax_template_form.xml        Thu Oct 08 00:35:34 2020 +0200
+++ b/view/tax_template_form.xml        Sun Oct 11 23:38:37 2020 +0200
@@ -3,9 +3,11 @@
 this repository contains the full copyright notices and license terms. -->
 <data>
     <xpath expr="/form/notebook" position="inside">
-        <page id="es_vat_list" string="Spanish VAT List">
+        <page id="es_vat" string="Spanish VAT">
             <label name="es_vat_list_code"/>
             <field name="es_vat_list_code"/>
+            <label name="es_reported_with"/>
+            <field name="es_reported_with"/>
         </page>
     </xpath>
     <xpath expr="/form//field[@name='ec_sales_list_code']" position="after">

Reply via email to