4 Commits
Author SHA1 Message Date
José Arturo García c3ba620b74 Harden localization data and validation 2026-08-10 08:42:52 -04:00
José Arturo García 6581a4b8af Update foreign withholding and tax rules 2026-08-10 08:18:26 -04:00
José Arturo García 22281ed4a6 Classify foreign ISR withholdings separately
Assign payments to non-residents to the dedicated ISREXT group in both localization datasets and tax rules. Add regression checks for national and foreign ISR groups.
2026-08-10 02:23:01 -04:00
José Arturo García d708024c58 Start account_do 8.1 series 2026-08-10 00:12:02 -04:00
19 changed files with 399 additions and 166 deletions
+7 -1
View File
@@ -1,4 +1,4 @@
Version 8.0.1 - 2026-08-09 Version 8.1.0 - 2026-08-10
-------------------------- --------------------------
* Initial release. * Initial release.
* Document tax requirements and official source provenance. * Document tax requirements and official source provenance.
@@ -8,3 +8,9 @@ Version 8.0.1 - 2026-08-09
(``es_419``) accounting charts, pending availability of ``es_DO``. (``es_419``) accounting charts, pending availability of ``es_DO``.
* Preserve 8.0.0 chart records when migrating to language-scoped identifiers. * Preserve 8.0.0 chart records when migrating to language-scoped identifiers.
* Normalize the English chart to standard accounting terminology. * Normalize the English chart to standard accounting terminology.
* Add the 15% foreign-payment withholding introduced by Law 30-26 and keep
technical assistance out of the 10% interest category.
* Split tax rules whose duplicate match patterns made later alternatives
unreachable.
* Remove unused tax-group and tax-code records from the initial data set.
* Translate every user-visible legal notice in the English tax catalog.
+10 -8
View File
@@ -3,6 +3,15 @@
from trytond.pool import Pool, PoolMeta from trytond.pool import Pool, PoolMeta
CHART_DEFAULT_ACCOUNTS = {
'account_do.do_account_root_en': (
'account_do.do_account_110201_en',
'account_do.do_account_210101_en'),
'account_do.do_account_root_es_419': (
'account_do.do_account_110201_es_419',
'account_do.do_account_210101_es_419'),
}
class CreateChart(metaclass=PoolMeta): class CreateChart(metaclass=PoolMeta):
__name__ = 'account.create_chart' __name__ = 'account.create_chart'
@@ -12,14 +21,7 @@ class CreateChart(metaclass=PoolMeta):
ModelData = pool.get('ir.model.data') ModelData = pool.get('ir.model.data')
defaults = super().default_properties(fields) defaults = super().default_properties(fields)
chart_defaults = {} chart_defaults = {}
for root, accounts in [ for root, accounts in CHART_DEFAULT_ACCOUNTS.items():
('account_do.do_account_root_en', (
'account_do.do_account_110201_en',
'account_do.do_account_210101_en')),
('account_do.do_account_root_es_419', (
'account_do.do_account_110201_es_419',
'account_do.do_account_210101_es_419')),
]:
try: try:
chart_defaults[ModelData.get_id(root)] = accounts chart_defaults[ModelData.get_id(root)] = accounts
except KeyError: except KeyError:
+8 -2
View File
@@ -1716,13 +1716,19 @@
<data language="en" grouped="1"> <data language="en" grouped="1">
<record id="do_account_21020701_en" model="account.account.template"> <record id="do_account_21020701_en" model="account.account.template">
<field name="code">21020701</field> <field name="code">21020701</field>
<field name="name">Foreign ISR services and royalties 27% payable</field> <field name="name">Foreign ISR other taxable payments 27% payable</field>
<field name="parent" ref="do_account_210207_en"/> <field name="parent" ref="do_account_210207_en"/>
<field name="type" ref="do_type_tax_payable_en"/> <field name="type" ref="do_type_tax_payable_en"/>
</record> </record>
<record id="do_account_21020702_en" model="account.account.template"> <record id="do_account_21020702_en" model="account.account.template">
<field name="code">21020702</field> <field name="code">21020702</field>
<field name="name">Foreign ISR interest and assistance 10% payable</field> <field name="name">Foreign ISR interest 10% payable</field>
<field name="parent" ref="do_account_210207_en"/>
<field name="type" ref="do_type_tax_payable_en"/>
</record>
<record id="do_account_21020703_en" model="account.account.template">
<field name="code">21020703</field>
<field name="name">Foreign ISR royalties, software and online services 15% payable</field>
<field name="parent" ref="do_account_210207_en"/> <field name="parent" ref="do_account_210207_en"/>
<field name="type" ref="do_type_tax_payable_en"/> <field name="type" ref="do_type_tax_payable_en"/>
</record> </record>
+8 -2
View File
@@ -1708,13 +1708,19 @@
<data language="es_419" grouped="1"> <data language="es_419" grouped="1">
<record id="do_account_21020701_es_419" model="account.account.template"> <record id="do_account_21020701_es_419" model="account.account.template">
<field name="code">21020701</field> <field name="code">21020701</field>
<field name="name">ISR exterior servicios y regalías 27% por pagar</field> <field name="name">ISR exterior otros pagos gravados 27% por pagar</field>
<field name="parent" ref="do_account_210207_es_419" /> <field name="parent" ref="do_account_210207_es_419" />
<field name="type" ref="do_type_tax_payable_es_419" /> <field name="type" ref="do_type_tax_payable_es_419" />
</record> </record>
<record id="do_account_21020702_es_419" model="account.account.template"> <record id="do_account_21020702_es_419" model="account.account.template">
<field name="code">21020702</field> <field name="code">21020702</field>
<field name="name">ISR exterior intereses y asistencia 10% por pagar</field> <field name="name">ISR exterior intereses 10% por pagar</field>
<field name="parent" ref="do_account_210207_es_419" />
<field name="type" ref="do_type_tax_payable_es_419" />
</record>
<record id="do_account_21020703_es_419" model="account.account.template">
<field name="code">21020703</field>
<field name="name">ISR exterior regalías, software y servicios en línea 15% por pagar</field>
<field name="parent" ref="do_account_210207_es_419" /> <field name="parent" ref="do_account_210207_es_419" />
<field name="type" ref="do_type_tax_payable_es_419" /> <field name="type" ref="do_type_tax_payable_es_419" />
</record> </record>
+3 -3
View File
@@ -19,7 +19,7 @@ the reviewer and review date rather than claiming certification in module data.
Chart Size and Provenance Chart Size and Provenance
------------------------- -------------------------
The chart has 281 templates: 70 grouping nodes and 211 posting leaves. Of the The chart has 282 templates: 70 grouping nodes and 212 posting leaves. Of the
posting leaves, 61 are tax control accounts (45 payable and 16 recoverable). posting leaves, 61 are tax control accounts (45 payable and 16 recoverable).
Those controls deliberately provide stable identifiers for accounting and Those controls deliberately provide stable identifiers for accounting and
reporting modules. The remaining leaves cover cash, receivables, payables, reporting modules. The remaining leaves cover cash, receivables, payables,
@@ -36,7 +36,7 @@ designed Tryton baseline using these objective inclusion rules:
* separate presentation is needed for a documented IFRS accounting policy. * separate presentation is needed for a documented IFRS accounting policy.
Grouping nodes are closed and cannot receive postings. The test suite checks Grouping nodes are closed and cannot receive postings. The test suite checks
281 unique templates, required optional-module accounts, account types and the 282 unique templates, required optional-module accounts, account types and the
IFRS policy coverage map. This is a transparent functional justification, IFRS policy coverage map. This is a transparent functional justification,
which is the appropriate evidence where no official general chart exists. which is the appropriate evidence where no official general chart exists.
@@ -45,7 +45,7 @@ accounts. That is not decidable from Dominican law because no mandatory
general catalogue supplies a target count. If requested during review, the general catalogue supplies a target count. If requested during review, the
safe reduction is to merge control accounts only after confirming that safe reduction is to merge control accounts only after confirming that
``dgii_reports`` does not depend on their stable identifiers; claiming that ``dgii_reports`` does not depend on their stable identifiers; claiming that
281 codes are official would be incorrect. 282 codes are official would be incorrect.
Upstream Repository Upstream Repository
------------------- -------------------
+1 -1
View File
@@ -1,7 +1,7 @@
Releases Releases
======== ========
8.0.1 8.1.0
----- -----
Initial release with the Dominican chart of accounts, fiscal accounts, taxes, Initial release with the Dominican chart of accounts, fiscal accounts, taxes,
+3 -1
View File
@@ -56,8 +56,10 @@ Official References
<https://dgii.gov.do/legislacion/normasGenerales/Documents/NG%20sobre%20Veh%C3%ADculos%20de%20Motor/norma06-12.pdf>`_ <https://dgii.gov.do/legislacion/normasGenerales/Documents/NG%20sobre%20Veh%C3%ADculos%20de%20Motor/norma06-12.pdf>`_
* `General Rule 04-2025 (bovine subsector withholding) * `General Rule 04-2025 (bovine subsector withholding)
<https://dgii.gov.do/legislacion/normasGenerales/Documents/Normas%20Sectoriales/Norma04-25.pdf>`_ <https://dgii.gov.do/legislacion/normasGenerales/Documents/Normas%20Sectoriales/Norma04-25.pdf>`_
* `Law 30-26 (bank checks and electronic transfers) * `Law 30-26 (foreign payments, bank checks and electronic transfers)
<https://dgii.gov.do/transparencia/baseLegal/Documents/Leyes/30-26.pdf>`_ <https://dgii.gov.do/transparencia/baseLegal/Documents/Leyes/30-26.pdf>`_
* `DGII implementation calendar for Law 30-26
<https://dgii.gov.do/publicacionesOficiales/avisosInformativos/Documents/2026/10-26.pdf>`_
Review Record Review Record
------------- -------------
+7
View File
@@ -87,6 +87,13 @@ The check and electronic-transfer templates preserve 0.15% through 2 July
2026 and 0.20% from 3 July 2026 under Law 30-26. Their tax rule switches rates 2026 and 0.20% from 3 July 2026 under Law 30-26. Their tax rule switches rates
by accounting date. by accounting date.
Law 30-26 also introduced articles 305-1 and 305-2 of the Tax Code. From
1 July 2026, royalties or rights, software licences, online advertising and
the right to use or store data paid abroad are subject to a distinct 15%
withholding. Other taxable payments abroad remain at 27%, while article 306
interest remains at 10%. Technical assistance must therefore not be
classified as article 306 interest.
Validation Boundary Validation Boundary
------------------- -------------------
+2 -1
View File
@@ -62,7 +62,8 @@ ISR Withholdings
* ``do_tax_ret_isr_premios_15`` — 15% qualifying prize band. * ``do_tax_ret_isr_premios_15`` — 15% qualifying prize band.
* ``do_tax_ret_isr_tragamonedas_10`` — 10% slot-machine prize case. * ``do_tax_ret_isr_tragamonedas_10`` — 10% slot-machine prize case.
* ``do_tax_ret_isr_other_income_10`` — 10% residual income case under article 309. * ``do_tax_ret_isr_other_income_10`` — 10% residual income case under article 309.
* ``do_tax_ret_isr_ext_27`` — 27% qualifying service or royalty paid abroad. * ``do_tax_ret_isr_ext_27`` — 27% qualifying payment abroad not governed by a special rate.
* ``do_tax_ret_isr_ext_15`` — 15% royalties or rights, software licences, online advertising and data use or storage paid abroad from 1 July 2026.
* ``do_tax_ret_isr_ext_10`` — 10% qualifying interest paid abroad. * ``do_tax_ret_isr_ext_10`` — 10% qualifying interest paid abroad.
Selective and Sector Charges Selective and Sector Charges
-2
View File
@@ -2,11 +2,9 @@
# this repository contains the full copyright notices and license terms. # this repository contains the full copyright notices and license terms.
from sql import Table from sql import Table
from trytond.pool import PoolMeta from trytond.pool import PoolMeta
from trytond.transaction import Transaction from trytond.transaction import Transaction
LEGACY_OBSOLETE_IDS = { LEGACY_OBSOLETE_IDS = {
'do_tax_itbis_8_compra', 'do_tax_itbis_8_venta', 'do_tax_itbis_8_compra', 'do_tax_itbis_8_venta',
'do_tax_itbis_9_compra', 'do_tax_itbis_9_venta', 'do_tax_itbis_9_compra', 'do_tax_itbis_9_venta',
+16 -5
View File
@@ -14,11 +14,6 @@
<tryton> <tryton>
<data language="en"> <data language="en">
<!-- ===== Árbol de códigos de impuesto ===== --> <!-- ===== Árbol de códigos de impuesto ===== -->
<record id="do_tc_root_en" model="account.tax.code.template">
<field name="name">Dominican Republic Taxes</field>
<field name="account" ref="do_account_root_en"/>
</record>
<!-- ── ITBIS ───────────────────────────────────────────── --> <!-- ── ITBIS ───────────────────────────────────────────── -->
<record id="do_tc_itbis_en" model="account.tax.code.template"> <record id="do_tc_itbis_en" model="account.tax.code.template">
<field name="name">ITBIS — Net Balance (Debit Credit)</field> <field name="name">ITBIS — Net Balance (Debit Credit)</field>
@@ -740,6 +735,22 @@
<field name="type">credit</field> <field name="type">credit</field>
</record> </record>
<!-- ISR Exterior 15% -->
<record id="do_tcl_isr_ext15_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_ext_en"/>
<field name="operator">-</field>
<field name="tax" ref="do_tax_ret_isr_ext_15_en"/>
<field name="amount">tax</field>
<field name="type">invoice</field>
</record>
<record id="do_tcl_isr_ext15_cr_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_ext_en"/>
<field name="operator">+</field>
<field name="tax" ref="do_tax_ret_isr_ext_15_en"/>
<field name="amount">tax</field>
<field name="type">credit</field>
</record>
<!-- ISR Exterior 10% --> <!-- ISR Exterior 10% -->
<record id="do_tcl_isr_ext10_inv_en" model="account.tax.code.line.template"> <record id="do_tcl_isr_ext10_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_ext_en"/> <field name="code" ref="do_tc_isr_ext_en"/>
+14 -4
View File
@@ -1,10 +1,6 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<tryton> <tryton>
<data language="es_419"> <data language="es_419">
<record id="do_tc_root_es_419" model="account.tax.code.template">
<field name="name">Impuestos República Dominicana</field>
<field name="account" ref="do_account_root_es_419" />
</record>
<record id="do_tc_itbis_es_419" model="account.tax.code.template"> <record id="do_tc_itbis_es_419" model="account.tax.code.template">
<field name="name">ITBIS — Balance Neto (Débito Crédito)</field> <field name="name">ITBIS — Balance Neto (Débito Crédito)</field>
<field name="account" ref="do_account_root_es_419" /> <field name="account" ref="do_account_root_es_419" />
@@ -661,6 +657,20 @@
<field name="amount">tax</field> <field name="amount">tax</field>
<field name="type">credit</field> <field name="type">credit</field>
</record> </record>
<record id="do_tcl_isr_ext15_inv_es_419" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_ext_es_419" />
<field name="operator">-</field>
<field name="tax" ref="do_tax_ret_isr_ext_15_es_419" />
<field name="amount">tax</field>
<field name="type">invoice</field>
</record>
<record id="do_tcl_isr_ext15_cr_es_419" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_ext_es_419" />
<field name="operator">+</field>
<field name="tax" ref="do_tax_ret_isr_ext_15_es_419" />
<field name="amount">tax</field>
<field name="type">credit</field>
</record>
<record id="do_tcl_isr_ext10_inv_es_419" model="account.tax.code.line.template"> <record id="do_tcl_isr_ext10_inv_es_419" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_ext_es_419" /> <field name="code" ref="do_tc_isr_ext_es_419" />
<field name="operator">-</field> <field name="operator">-</field>
+66 -59
View File
@@ -12,11 +12,6 @@
<field name="code">ISR</field> <field name="code">ISR</field>
<field name="kind">both</field> <field name="kind">both</field>
</record> </record>
<record id="do_tax_group_exempt_en" model="account.tax.group">
<field name="name">Exempt / Zero Rate</field>
<field name="code">EX0</field>
<field name="kind">both</field>
</record>
<record id="do_tax_group_isc_en" model="account.tax.group"> <record id="do_tax_group_isc_en" model="account.tax.group">
<field name="name">ISC - Selective Consumer</field> <field name="name">ISC - Selective Consumer</field>
<field name="code">ISC</field> <field name="code">ISC</field>
@@ -53,7 +48,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020101_en" /> <field name="invoice_account" ref="do_account_21020101_en" />
<field name="credit_note_account" ref="do_account_21020101_en" /> <field name="credit_note_account" ref="do_account_21020101_en" />
<field name="legal_notice">Arts. 335-392 CT Ley 11-92; Ley 253-12 Art. 10; Decreto 293-11</field> <field name="legal_notice">Tax Code Arts. 335-392; Law 253-12 Art. 10; Decree 293-11</field>
</record> </record>
<record id="do_tax_itbis_16_venta_en" model="account.tax.template"> <record id="do_tax_itbis_16_venta_en" model="account.tax.template">
<field name="name">ITBIS 16% — Special Rate Sales (Legal and Natural Persons)</field> <field name="name">ITBIS 16% — Special Rate Sales (Legal and Natural Persons)</field>
@@ -64,7 +59,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020102_en" /> <field name="invoice_account" ref="do_account_21020102_en" />
<field name="credit_note_account" ref="do_account_21020102_en" /> <field name="credit_note_account" ref="do_account_21020102_en" />
<field name="legal_notice">Art. 345 CT Ley 11-92 mod. Ley 253-12 — tasa especial 16%</field> <field name="legal_notice">Tax Code Art. 345, amended by Law 253-12 — special 16% rate</field>
</record> </record>
<record id="do_tax_itbis_18_compra_en" model="account.tax.template"> <record id="do_tax_itbis_18_compra_en" model="account.tax.template">
<field name="name">ITBIS 18% — Purchases / Tax Credit (Legal and Natural Persons)</field> <field name="name">ITBIS 18% — Purchases / Tax Credit (Legal and Natural Persons)</field>
@@ -75,7 +70,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_11040101_en" /> <field name="invoice_account" ref="do_account_11040101_en" />
<field name="credit_note_account" ref="do_account_11040101_en" /> <field name="credit_note_account" ref="do_account_11040101_en" />
<field name="legal_notice">Arts. 349-357 CT Ley 11-92 — Crédito fiscal ITBIS; Decreto 293-11</field> <field name="legal_notice">Tax Code Arts. 349-357 — ITBIS input tax credit; Decree 293-11</field>
</record> </record>
<record id="do_tax_itbis_16_compra_en" model="account.tax.template"> <record id="do_tax_itbis_16_compra_en" model="account.tax.template">
<field name="name">ITBIS 16% — Purchases / Tax Credit Special Rate</field> <field name="name">ITBIS 16% — Purchases / Tax Credit Special Rate</field>
@@ -86,7 +81,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_11040102_en" /> <field name="invoice_account" ref="do_account_11040102_en" />
<field name="credit_note_account" ref="do_account_11040102_en" /> <field name="credit_note_account" ref="do_account_11040102_en" />
<field name="legal_notice">Art. 345 CT Ley 11-92 — Crédito fiscal tasa especial 16%</field> <field name="legal_notice">Tax Code Art. 345 — input tax credit at the special 16% rate</field>
</record> </record>
<record id="do_tax_itbis_exento_en" model="account.tax.template"> <record id="do_tax_itbis_exento_en" model="account.tax.template">
<field name="name">Exempt ITBIS — Exempt Goods and Services (Legal and Natural Persons)</field> <field name="name">Exempt ITBIS — Exempt Goods and Services (Legal and Natural Persons)</field>
@@ -94,7 +89,7 @@
<field name="type">none</field> <field name="type">none</field>
<field name="group" ref="do_tax_group_itbis_en" /> <field name="group" ref="do_tax_group_itbis_en" />
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="legal_notice">Arts. 343-344 CT Ley 11-92; Ley 288-04; NG 12-22 DGII</field> <field name="legal_notice">Tax Code Arts. 343-344; Law 288-04; DGII General Rule 12-22</field>
</record> </record>
<record id="do_tax_itbis_tasa_cero_en" model="account.tax.template"> <record id="do_tax_itbis_tasa_cero_en" model="account.tax.template">
<field name="name">ITBIS Zero Rate — Exports and Free Zone (Legal and Natural Persons)</field> <field name="name">ITBIS Zero Rate — Exports and Free Zone (Legal and Natural Persons)</field>
@@ -105,7 +100,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020105_en" /> <field name="invoice_account" ref="do_account_21020105_en" />
<field name="credit_note_account" ref="do_account_21020105_en" /> <field name="credit_note_account" ref="do_account_21020105_en" />
<field name="legal_notice">Art. 342 CT; Ley 557-05; Ley 8-90 Zonas Francas; NG 05-19 DGII</field> <field name="legal_notice">Tax Code Art. 342; Laws 557-05 and 8-90; DGII General Rule 05-19</field>
</record> </record>
<!-- Retención ITBIS 30% Gran Contribuyente: tasa negativa (-5.4%) = 30% × 18% sobre la base --> <!-- Retención ITBIS 30% Gran Contribuyente: tasa negativa (-5.4%) = 30% × 18% sobre la base -->
<record id="do_tax_ret_itbis_30_en" model="account.tax.template"> <record id="do_tax_ret_itbis_30_en" model="account.tax.template">
@@ -117,7 +112,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021101_en" /> <field name="invoice_account" ref="do_account_21021101_en" />
<field name="credit_note_account" ref="do_account_21021101_en" /> <field name="credit_note_account" ref="do_account_21021101_en" />
<field name="legal_notice">NG 01-11 DGII 2011; Arts. 309 y 337 CT — Grandes Contribuyentes</field> <field name="legal_notice">DGII General Rule 01-11; Tax Code Arts. 309 and 337 — large taxpayers</field>
</record> </record>
<!-- ══════ ISR RETENCIONES — Arts. 307-309 CT Ley 11-92; Decreto 95-12 ══════ --> <!-- ══════ ISR RETENCIONES — Arts. 307-309 CT Ley 11-92; Decreto 95-12 ══════ -->
<record id="do_tax_ret_isr_hon_5_en" model="account.tax.template"> <record id="do_tax_ret_isr_hon_5_en" model="account.tax.template">
@@ -129,7 +124,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021301_en" /> <field name="invoice_account" ref="do_account_21021301_en" />
<field name="credit_note_account" ref="do_account_21021301_en" /> <field name="credit_note_account" ref="do_account_21021301_en" />
<field name="legal_notice">Art. 309 CT Ley 11-92; Decreto 95-12 — Honorarios personas jurídicas</field> <field name="legal_notice">Tax Code Art. 309; Decree 95-12 — fees paid to legal entities</field>
</record> </record>
<record id="do_tax_ret_isr_serv_10_en" model="account.tax.template"> <record id="do_tax_ret_isr_serv_10_en" model="account.tax.template">
<field name="name">ISR Withholding 10% — Fees and Services to Individuals</field> <field name="name">ISR Withholding 10% — Fees and Services to Individuals</field>
@@ -140,7 +135,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021302_en" /> <field name="invoice_account" ref="do_account_21021302_en" />
<field name="credit_note_account" ref="do_account_21021302_en" /> <field name="credit_note_account" ref="do_account_21021302_en" />
<field name="legal_notice">Art. 309 CT Ley 11-92; Decreto 95-12 — Honorarios personas físicas</field> <field name="legal_notice">Tax Code Art. 309; Decree 95-12 — fees paid to individuals</field>
</record> </record>
<record id="do_tax_ret_isr_div_10_en" model="account.tax.template"> <record id="do_tax_ret_isr_div_10_en" model="account.tax.template">
<field name="name">ISR Withholding 10% — Dividends and Distributed Profits (Individuals and Legal Entities)</field> <field name="name">ISR Withholding 10% — Dividends and Distributed Profits (Individuals and Legal Entities)</field>
@@ -151,7 +146,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020601_en" /> <field name="invoice_account" ref="do_account_21020601_en" />
<field name="credit_note_account" ref="do_account_21020601_en" /> <field name="credit_note_account" ref="do_account_21020601_en" />
<field name="legal_notice">Art. 308 CT Ley 11-92; Decreto 95-12; Formulario IR-18</field> <field name="legal_notice">Tax Code Art. 308; Decree 95-12; DGII Form IR-18</field>
</record> </record>
<record id="do_tax_ret_isr_int_10_en" model="account.tax.template"> <record id="do_tax_ret_isr_int_10_en" model="account.tax.template">
<field name="name">ISR Withholding 10% — Interest to Individuals (NG 07-19)</field> <field name="name">ISR Withholding 10% — Interest to Individuals (NG 07-19)</field>
@@ -162,7 +157,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021501_en" /> <field name="invoice_account" ref="do_account_21021501_en" />
<field name="credit_note_account" ref="do_account_21021501_en" /> <field name="credit_note_account" ref="do_account_21021501_en" />
<field name="legal_notice">NG 07-19 DGII; Art. 306 bis CT Intereses personas físicas, definitivo</field> <field name="legal_notice">DGII General Rule 07-19; Tax Code Art. 306 bis — interest paid to individuals</field>
</record> </record>
<record id="do_tax_ret_isr_alq_10_en" model="account.tax.template"> <record id="do_tax_ret_isr_alq_10_en" model="account.tax.template">
<field name="name">ISR Withholding 10% — Rentals and Leases (Natural and Legal Persons)</field> <field name="name">ISR Withholding 10% — Rentals and Leases (Natural and Legal Persons)</field>
@@ -173,7 +168,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021401_en" /> <field name="invoice_account" ref="do_account_21021401_en" />
<field name="credit_note_account" ref="do_account_21021401_en" /> <field name="credit_note_account" ref="do_account_21021401_en" />
<field name="legal_notice">Art. 309 CT; NG 08-11 DGII — Alquileres personas físicas y jurídicas</field> <field name="legal_notice">Tax Code Art. 309; DGII General Rule 08-11 — rentals and leases</field>
</record> </record>
<record id="do_tax_ret_isr_est_15_en" model="account.tax.template"> <record id="do_tax_ret_isr_est_15_en" model="account.tax.template">
<field name="name">ISR Withholding 1.5% — State/Public Sector Payments (Natural and Legal Persons)</field> <field name="name">ISR Withholding 1.5% — State/Public Sector Payments (Natural and Legal Persons)</field>
@@ -184,7 +179,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_11040801_en" /> <field name="invoice_account" ref="do_account_11040801_en" />
<field name="credit_note_account" ref="do_account_11040801_en" /> <field name="credit_note_account" ref="do_account_11040801_en" />
<field name="legal_notice">Art. 309 CT; Decreto 95-12; Formulario 623 DGII — Sector público</field> <field name="legal_notice">Tax Code Art. 309; Decree 95-12; DGII Form 623 — public sector</field>
</record> </record>
<record id="do_tax_ret_isr_est_5_en" model="account.tax.template"> <record id="do_tax_ret_isr_est_5_en" model="account.tax.template">
<field name="name">ISR Withholding 5% — State/Public Sector Payments (Natural and Legal Persons)</field> <field name="name">ISR Withholding 5% — State/Public Sector Payments (Natural and Legal Persons)</field>
@@ -195,7 +190,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_11040802_en" /> <field name="invoice_account" ref="do_account_11040802_en" />
<field name="credit_note_account" ref="do_account_11040802_en" /> <field name="credit_note_account" ref="do_account_11040802_en" />
<field name="legal_notice">Art. 309 CT mod. Ley 253-12 — retención pagos del Estado 5%</field> <field name="legal_notice">Tax Code Art. 309, amended by Law 253-12 — 5% on state payments</field>
</record> </record>
<record id="do_tax_ret_isr_bovine_1_en" model="account.tax.template"> <record id="do_tax_ret_isr_bovine_1_en" model="account.tax.template">
<field name="name">ISR Withholding 1% — Bovine Purchases from Unregistered Individuals</field> <field name="name">ISR Withholding 1% — Bovine Purchases from Unregistered Individuals</field>
@@ -207,7 +202,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021801_en" /> <field name="invoice_account" ref="do_account_21021801_en" />
<field name="credit_note_account" ref="do_account_21021801_en" /> <field name="credit_note_account" ref="do_account_21021801_en" />
<field name="legal_notice">NG 04-2025 arts. 2, 4, 5 y 11 — 1% del monto facturado</field> <field name="legal_notice">DGII General Rule 04-2025 Arts. 2, 4, 5 and 11 — 1% of billed amount</field>
</record> </record>
<record id="do_tax_ret_isr_exporter_25_en" model="account.tax.template"> <record id="do_tax_ret_isr_exporter_25_en" model="account.tax.template">
<field name="name">ISR Withholding 2.5% — Exporters in Sales to the Local Market</field> <field name="name">ISR Withholding 2.5% — Exporters in Sales to the Local Market</field>
@@ -218,7 +213,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_11040803_en" /> <field name="invoice_account" ref="do_account_11040803_en" />
<field name="credit_note_account" ref="do_account_11040803_en" /> <field name="credit_note_account" ref="do_account_11040803_en" />
<field name="legal_notice">NG 15-07 DGII — retención 2.5% ventas locales de exportadores</field> <field name="legal_notice">DGII General Rule 15-07 — 2.5% on exporters' domestic sales</field>
</record> </record>
<record id="do_tax_ret_isr_int_pj_1_en" model="account.tax.template"> <record id="do_tax_ret_isr_int_pj_1_en" model="account.tax.template">
<field name="name">ISR Withholding 1% — Interest to Legal Entities (NG 07-19)</field> <field name="name">ISR Withholding 1% — Interest to Legal Entities (NG 07-19)</field>
@@ -229,7 +224,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021502_en" /> <field name="invoice_account" ref="do_account_21021502_en" />
<field name="credit_note_account" ref="do_account_21021502_en" /> <field name="credit_note_account" ref="do_account_21021502_en" />
<field name="legal_notice">NG 07-19 DGII 2019; Art. 306 bis CT Intereses personas jurídicas</field> <field name="legal_notice">DGII General Rule 07-19; Tax Code Art. 306 bis — interest paid to legal entities</field>
</record> </record>
<record id="do_tax_ret_isr_premios_25_en" model="account.tax.template"> <record id="do_tax_ret_isr_premios_25_en" model="account.tax.template">
<field name="name">ISR Withholding 25% — Lottery Prizes, Draws and Raffles (Natural and Legal Persons)</field> <field name="name">ISR Withholding 25% — Lottery Prizes, Draws and Raffles (Natural and Legal Persons)</field>
@@ -240,7 +235,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021701_en" /> <field name="invoice_account" ref="do_account_21021701_en" />
<field name="credit_note_account" ref="do_account_21021701_en" /> <field name="credit_note_account" ref="do_account_21021701_en" />
<field name="legal_notice">Art. 321 CT Ley 11-92; Decreto 95-12 — Premios y loterías, definitivo</field> <field name="legal_notice">Tax Code Art. 321; Decree 95-12 — prizes and lotteries, final payment</field>
</record> </record>
<record id="do_tax_ret_isr_premios_10_en" model="account.tax.template"> <record id="do_tax_ret_isr_premios_10_en" model="account.tax.template">
<field name="name">ISR Withholding 10% — Awards RD$100,001 to RD$500,000</field> <field name="name">ISR Withholding 10% — Awards RD$100,001 to RD$500,000</field>
@@ -251,7 +246,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021702_en" /> <field name="invoice_account" ref="do_account_21021702_en" />
<field name="credit_note_account" ref="do_account_21021702_en" /> <field name="credit_note_account" ref="do_account_21021702_en" />
<field name="legal_notice">Art. 309 CT mod. Ley 253-12 — premios RD$100,001 a RD$500,000 10%</field> <field name="legal_notice">Tax Code Art. 309, amended by Law 253-12 — prizes from RD$100,001 to RD$500,000</field>
</record> </record>
<record id="do_tax_ret_isr_premios_15_en" model="account.tax.template"> <record id="do_tax_ret_isr_premios_15_en" model="account.tax.template">
<field name="name">ISR Withholding 15% — Awards RD$500,001 to RD$1,000,000</field> <field name="name">ISR Withholding 15% — Awards RD$500,001 to RD$1,000,000</field>
@@ -262,7 +257,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021703_en" /> <field name="invoice_account" ref="do_account_21021703_en" />
<field name="credit_note_account" ref="do_account_21021703_en" /> <field name="credit_note_account" ref="do_account_21021703_en" />
<field name="legal_notice">Art. 309 CT mod. Ley 253-12 — premios RD$500,001 a RD$1,000,000 15%</field> <field name="legal_notice">Tax Code Art. 309, amended by Law 253-12 — prizes from RD$500,001 to RD$1,000,000</field>
</record> </record>
<record id="do_tax_ret_isr_tragamonedas_10_en" model="account.tax.template"> <record id="do_tax_ret_isr_tragamonedas_10_en" model="account.tax.template">
<field name="name">ISR Withholding 10% — Slot Machine Prizes</field> <field name="name">ISR Withholding 10% — Slot Machine Prizes</field>
@@ -273,7 +268,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021704_en" /> <field name="invoice_account" ref="do_account_21021704_en" />
<field name="credit_note_account" ref="do_account_21021704_en" /> <field name="credit_note_account" ref="do_account_21021704_en" />
<field name="legal_notice">Art. 309 CT mod. Ley 253-12 — premios máquinas tragamonedas 10%</field> <field name="legal_notice">Tax Code Art. 309, amended by Law 253-12 — slot-machine prizes</field>
</record> </record>
<record id="do_tax_ret_isr_other_income_10_en" model="account.tax.template"> <record id="do_tax_ret_isr_other_income_10_en" model="account.tax.template">
<field name="name">ISR Withholding 10% — Other Income Not Covered</field> <field name="name">ISR Withholding 10% — Other Income Not Covered</field>
@@ -284,30 +279,42 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020301_en" /> <field name="invoice_account" ref="do_account_21020301_en" />
<field name="credit_note_account" ref="do_account_21020301_en" /> <field name="credit_note_account" ref="do_account_21020301_en" />
<field name="legal_notice">Art. 309 CT mod. Ley 253-12 — otras rentas no contempladas 10%</field> <field name="legal_notice">Tax Code Art. 309, amended by Law 253-12 — other income not covered</field>
</record> </record>
<!-- ══════ ISR PAGOS AL EXTERIOR — Arts. 305-306 CT Ley 11-92 ══════ --> <!-- ══════ ISR PAGOS AL EXTERIOR — Arts. 305-306 CT Ley 11-92 ══════ -->
<record id="do_tax_ret_isr_ext_27_en" model="account.tax.template"> <record id="do_tax_ret_isr_ext_27_en" model="account.tax.template">
<field name="name">ISR Withholding 27% — Payments Abroad: Services and Royalties (Non-Residents)</field> <field name="name">ISR Withholding 27% — Other Taxable Payments Abroad (Non-Residents)</field>
<field name="description">Foreign ISR Withholding 27%</field> <field name="description">Foreign ISR Withholding 27%</field>
<field name="type">percentage</field> <field name="type">percentage</field>
<field name="rate" eval="Decimal('-27')/100" /> <field name="rate" eval="Decimal('-27')/100" />
<field name="group" ref="do_tax_group_isr_en" /> <field name="group" ref="do_tax_group_isr_ext_en" />
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020701_en" /> <field name="invoice_account" ref="do_account_21020701_en" />
<field name="credit_note_account" ref="do_account_21020701_en" /> <field name="credit_note_account" ref="do_account_21020701_en" />
<field name="legal_notice">Art. 305 CT Ley 11-92 — Servicios y regalías a no residentes 27%</field> <field name="legal_notice">Tax Code Art. 305 — taxable payments not subject to a special rate</field>
</record>
<record id="do_tax_ret_isr_ext_15_en" model="account.tax.template">
<field name="name">ISR Withholding 15% — Foreign Royalties, Software and Online Services</field>
<field name="description">Foreign ISR Withholding 15%</field>
<field name="type">percentage</field>
<field name="rate" eval="Decimal('-15')/100" />
<field name="start_date" eval="datetime.date(2026, 7, 1)" />
<field name="group" ref="do_tax_group_isr_ext_en" />
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020703_en" />
<field name="credit_note_account" ref="do_account_21020703_en" />
<field name="legal_notice">Arts. 305-1 and 305-2 CT, introduced by Law 30-26 — royalties or rights, software licences, online advertising and data use or storage</field>
</record> </record>
<record id="do_tax_ret_isr_ext_10_en" model="account.tax.template"> <record id="do_tax_ret_isr_ext_10_en" model="account.tax.template">
<field name="name">ISR Withholding 10% — Payments Abroad: Interest and Technical Assistance (Non-Residents)</field> <field name="name">ISR Withholding 10% — Interest Paid Abroad (Non-Residents)</field>
<field name="description">Foreign ISR Withholding 10%</field> <field name="description">Foreign ISR Withholding 10%</field>
<field name="type">percentage</field> <field name="type">percentage</field>
<field name="rate" eval="Decimal('-10')/100" /> <field name="rate" eval="Decimal('-10')/100" />
<field name="group" ref="do_tax_group_isr_en" /> <field name="group" ref="do_tax_group_isr_ext_en" />
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020702_en" /> <field name="invoice_account" ref="do_account_21020702_en" />
<field name="credit_note_account" ref="do_account_21020702_en" /> <field name="credit_note_account" ref="do_account_21020702_en" />
<field name="legal_notice">Arts. 305-306 CT — Intereses y asistencia técnica a no residentes</field> <field name="legal_notice">Art. 306 CT — interest paid or credited abroad</field>
</record> </record>
<!-- ══════ ITBIS ADICIONAL — Retenciones especiales DGII ══════ --> <!-- ══════ ITBIS ADICIONAL — Retenciones especiales DGII ══════ -->
<!-- Servicios gravados con retención del 100% del ITBIS según NG 01-11. --> <!-- Servicios gravados con retención del 100% del ITBIS según NG 01-11. -->
@@ -320,7 +327,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020201_en" /> <field name="invoice_account" ref="do_account_21020201_en" />
<field name="credit_note_account" ref="do_account_21020201_en" /> <field name="credit_note_account" ref="do_account_21020201_en" />
<field name="legal_notice">NG 01-11 DGII — Retención 100% ITBIS en servicios gravados</field> <field name="legal_notice">DGII General Rule 01-11 — 100% of ITBIS on taxable services</field>
</record> </record>
<!-- Proveedor informal de bienes gravados: la NG 08-10 establece retención <!-- Proveedor informal de bienes gravados: la NG 08-10 establece retención
del 75% del ITBIS. La tasa contable es -13.5% = 75% × 18%. --> del 75% del ITBIS. La tasa contable es -13.5% = 75% × 18%. -->
@@ -333,7 +340,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021201_en" /> <field name="invoice_account" ref="do_account_21021201_en" />
<field name="credit_note_account" ref="do_account_21021201_en" /> <field name="credit_note_account" ref="do_account_21021201_en" />
<field name="legal_notice">NG 08-10 DGII — Retención 75% ITBIS compras a proveedores informales</field> <field name="legal_notice">DGII General Rule 08-10 — 75% of ITBIS on informal-supplier purchases</field>
</record> </record>
<record id="do_tax_ret_itbis_75_inf_16_en" model="account.tax.template"> <record id="do_tax_ret_itbis_75_inf_16_en" model="account.tax.template">
<field name="name">ITBIS Withholding 75% — Goods Informal Supplier Rate 16%</field> <field name="name">ITBIS Withholding 75% — Goods Informal Supplier Rate 16%</field>
@@ -344,7 +351,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021202_en" /> <field name="invoice_account" ref="do_account_21021202_en" />
<field name="credit_note_account" ref="do_account_21021202_en" /> <field name="credit_note_account" ref="do_account_21021202_en" />
<field name="legal_notice">IT-1 DGII casilla 57; NG 08-10/05-19 — 75% de ITBIS tasa 16%</field> <field name="legal_notice">DGII Form IT-1 box 57; General Rules 08-10 and 05-19 — 75% at the 16% rate</field>
</record> </record>
<record id="do_tax_ret_itbis_100_goods_18_en" model="account.tax.template"> <record id="do_tax_ret_itbis_100_goods_18_en" model="account.tax.template">
<field name="name">ITBIS Withholding 100% — Goods Informal Supplier Rate 18%</field> <field name="name">ITBIS Withholding 100% — Goods Informal Supplier Rate 18%</field>
@@ -355,7 +362,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021203_en" /> <field name="invoice_account" ref="do_account_21021203_en" />
<field name="credit_note_account" ref="do_account_21021203_en" /> <field name="credit_note_account" ref="do_account_21021203_en" />
<field name="legal_notice">IT-1 DGII casilla 56 — bienes comprobante de compras, retención 100%</field> <field name="legal_notice">DGII Form IT-1 box 56 — goods supported by a purchase receipt, 100% withholding</field>
</record> </record>
<record id="do_tax_ret_itbis_100_goods_16_en" model="account.tax.template"> <record id="do_tax_ret_itbis_100_goods_16_en" model="account.tax.template">
<field name="name">ITBIS Withholding 100% — Goods Informal Supplier Rate 16%</field> <field name="name">ITBIS Withholding 100% — Goods Informal Supplier Rate 16%</field>
@@ -366,7 +373,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021204_en" /> <field name="invoice_account" ref="do_account_21021204_en" />
<field name="credit_note_account" ref="do_account_21021204_en" /> <field name="credit_note_account" ref="do_account_21021204_en" />
<field name="legal_notice">IT-1 DGII casilla 57 — bienes comprobante de compras, retención 100%</field> <field name="legal_notice">DGII Form IT-1 box 57 — goods supported by a purchase receipt, 100% withholding</field>
</record> </record>
<record id="do_tax_ret_itbis_rst_18_en" model="account.tax.template"> <record id="do_tax_ret_itbis_rst_18_en" model="account.tax.template">
<field name="name">ITBIS Withholding 100% — RST Taxpayers Rate 18%</field> <field name="name">ITBIS Withholding 100% — RST Taxpayers Rate 18%</field>
@@ -377,7 +384,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020202_en" /> <field name="invoice_account" ref="do_account_21020202_en" />
<field name="credit_note_account" ref="do_account_21020202_en" /> <field name="credit_note_account" ref="do_account_21020202_en" />
<field name="legal_notice">IT-1 DGII casilla 53 — ITBIS retenido RST operaciones gravadas 18%</field> <field name="legal_notice">DGII Form IT-1 box 53 — ITBIS withheld from RST taxable transactions at 18%</field>
</record> </record>
<record id="do_tax_ret_itbis_rst_16_en" model="account.tax.template"> <record id="do_tax_ret_itbis_rst_16_en" model="account.tax.template">
<field name="name">ITBIS Withholding 100% — RST Taxpayers Rate 16%</field> <field name="name">ITBIS Withholding 100% — RST Taxpayers Rate 16%</field>
@@ -388,7 +395,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020203_en" /> <field name="invoice_account" ref="do_account_21020203_en" />
<field name="credit_note_account" ref="do_account_21020203_en" /> <field name="credit_note_account" ref="do_account_21020203_en" />
<field name="legal_notice">IT-1 DGII casilla 54 — ITBIS retenido RST operaciones gravadas 16%</field> <field name="legal_notice">DGII Form IT-1 box 54 — ITBIS withheld from RST taxable transactions at 16%</field>
</record> </record>
<record id="do_tax_ret_itbis_insurance_100_en" model="account.tax.template"> <record id="do_tax_ret_itbis_insurance_100_en" model="account.tax.template">
<field name="name">ITBIS Withholding 100% — Insurance Companies</field> <field name="name">ITBIS Withholding 100% — Insurance Companies</field>
@@ -399,7 +406,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020204_en" /> <field name="invoice_account" ref="do_account_21020204_en" />
<field name="credit_note_account" ref="do_account_21020204_en" /> <field name="credit_note_account" ref="do_account_21020204_en" />
<field name="legal_notice">NG 04-13 DGII — aseguradoras retienen 100% del ITBIS facturado</field> <field name="legal_notice">DGII General Rule 04-13 — insurers withhold 100% of billed ITBIS</field>
</record> </record>
<record id="do_tax_ret_itbis_airline_100_en" model="account.tax.template"> <record id="do_tax_ret_itbis_airline_100_en" model="account.tax.template">
<field name="name">ITBIS Withheld by Airlines 100% — BSP/IATA</field> <field name="name">ITBIS Withheld by Airlines 100% — BSP/IATA</field>
@@ -410,7 +417,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_11040701_en" /> <field name="invoice_account" ref="do_account_11040701_en" />
<field name="credit_note_account" ref="do_account_11040701_en" /> <field name="credit_note_account" ref="do_account_11040701_en" />
<field name="legal_notice">IT-1 DGII casilla 28; NG 02-05 — ITBIS retenido por aerolíneas</field> <field name="legal_notice">DGII Form IT-1 box 28; General Rule 02-05 — ITBIS withheld by airlines</field>
</record> </record>
<record id="do_tax_ret_itbis_society_30_suf_en" model="account.tax.template"> <record id="do_tax_ret_itbis_society_30_suf_en" model="account.tax.template">
<field name="name">ITBIS Withheld by Companies 30% — Withholding Suffered</field> <field name="name">ITBIS Withheld by Companies 30% — Withholding Suffered</field>
@@ -421,7 +428,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_11040702_en" /> <field name="invoice_account" ref="do_account_11040702_en" />
<field name="credit_note_account" ref="do_account_11040702_en" /> <field name="credit_note_account" ref="do_account_11040702_en" />
<field name="legal_notice">IT-1 DGII casilla 29; NG 02-05/07-09 — sociedades retienen ITBIS</field> <field name="legal_notice">DGII Form IT-1 box 29; General Rules 02-05 and 07-09 — ITBIS withheld by companies</field>
</record> </record>
<record id="do_tax_ret_itbis_hotel_100_en" model="account.tax.template"> <record id="do_tax_ret_itbis_hotel_100_en" model="account.tax.template">
<field name="name">ITBIS Withheld by Hotels 100% — Package Commissions</field> <field name="name">ITBIS Withheld by Hotels 100% — Package Commissions</field>
@@ -432,7 +439,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_11040703_en" /> <field name="invoice_account" ref="do_account_11040703_en" />
<field name="credit_note_account" ref="do_account_11040703_en" /> <field name="credit_note_account" ref="do_account_11040703_en" />
<field name="legal_notice">IT-1 DGII casilla 30; NG 02-05 — hoteles retienen ITBIS en comisiones</field> <field name="legal_notice">DGII Form IT-1 box 30; General Rule 02-05 — ITBIS withheld by hotels on commissions</field>
</record> </record>
<record id="do_tax_ret_itbis_state_100_en" model="account.tax.template"> <record id="do_tax_ret_itbis_state_100_en" model="account.tax.template">
<field name="name">ITBIS Withheld by State Entities 100%</field> <field name="name">ITBIS Withheld by State Entities 100%</field>
@@ -443,7 +450,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_11040704_en" /> <field name="invoice_account" ref="do_account_11040704_en" />
<field name="credit_note_account" ref="do_account_11040704_en" /> <field name="credit_note_account" ref="do_account_11040704_en" />
<field name="legal_notice">IT-1 DGII casilla 31 — ITBIS retenido por instituciones del Estado</field> <field name="legal_notice">DGII Form IT-1 box 31 — ITBIS withheld by state institutions</field>
</record> </record>
<!-- ══════ ISC — IMPUESTO SELECTIVO AL CONSUMO — Arts. 393-441 CT ══════ --> <!-- ══════ ISC — IMPUESTO SELECTIVO AL CONSUMO — Arts. 393-441 CT ══════ -->
<record id="do_tax_isc_bebidas_alc_en" model="account.tax.template"> <record id="do_tax_isc_bebidas_alc_en" model="account.tax.template">
@@ -455,7 +462,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020801_en" /> <field name="invoice_account" ref="do_account_21020801_en" />
<field name="credit_note_account" ref="do_account_21020801_en" /> <field name="credit_note_account" ref="do_account_21020801_en" />
<field name="legal_notice">Ley 253-12 mod. Art. 375 CT — ISC bebidas alcohólicas ad valorem 10%</field> <field name="legal_notice">Law 253-12, amending Tax Code Art. 375 — 10% ad valorem ISC on alcoholic beverages</field>
</record> </record>
<record id="do_tax_isc_tabaco_en" model="account.tax.template"> <record id="do_tax_isc_tabaco_en" model="account.tax.template">
<field name="name">ISC 20% — Tobacco, Cigarettes and Derivatives</field> <field name="name">ISC 20% — Tobacco, Cigarettes and Derivatives</field>
@@ -466,7 +473,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020802_en" /> <field name="invoice_account" ref="do_account_21020802_en" />
<field name="credit_note_account" ref="do_account_21020802_en" /> <field name="credit_note_account" ref="do_account_21020802_en" />
<field name="legal_notice">Arts. 393-441 CT Ley 11-92 — ISC tabaco y cigarrillos, ad valorem 20%</field> <field name="legal_notice">Tax Code Arts. 393-441 — 20% ad valorem ISC on tobacco and cigarettes</field>
</record> </record>
<record id="do_tax_isc_telecom_en" model="account.tax.template"> <record id="do_tax_isc_telecom_en" model="account.tax.template">
<field name="name">ISC 10% — Telecommunications Services</field> <field name="name">ISC 10% — Telecommunications Services</field>
@@ -477,7 +484,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020803_en" /> <field name="invoice_account" ref="do_account_21020803_en" />
<field name="credit_note_account" ref="do_account_21020803_en" /> <field name="credit_note_account" ref="do_account_21020803_en" />
<field name="legal_notice">Arts. 393-441 CT; Ley 253-12 — ISC servicios telecomunicaciones 10%</field> <field name="legal_notice">Tax Code Arts. 393-441; Law 253-12 — 10% ISC on telecommunications services</field>
</record> </record>
<record id="do_tax_isc_combustibles_16_en" model="account.tax.template"> <record id="do_tax_isc_combustibles_16_en" model="account.tax.template">
<field name="name">ISC 16% — Fossil Fuels and Petroleum Derivatives</field> <field name="name">ISC 16% — Fossil Fuels and Petroleum Derivatives</field>
@@ -488,7 +495,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020804_en" /> <field name="invoice_account" ref="do_account_21020804_en" />
<field name="credit_note_account" ref="do_account_21020804_en" /> <field name="credit_note_account" ref="do_account_21020804_en" />
<field name="legal_notice">Ley 253-12 mod. Art. 367 CT — ISC combustibles fósiles 16%</field> <field name="legal_notice">Law 253-12, amending Tax Code Art. 367 — 16% ISC on fossil fuels</field>
</record> </record>
<record id="do_tax_isc_avtur_65_en" model="account.tax.template"> <record id="do_tax_isc_avtur_65_en" model="account.tax.template">
<field name="name">ISC 6.5% — Avtur Reduced Rate</field> <field name="name">ISC 6.5% — Avtur Reduced Rate</field>
@@ -499,7 +506,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020807_en" /> <field name="invoice_account" ref="do_account_21020807_en" />
<field name="credit_note_account" ref="do_account_21020807_en" /> <field name="credit_note_account" ref="do_account_21020807_en" />
<field name="legal_notice">Ley 253-12 Art. 23 — tasa reducida Avtur 6.5% ad valorem</field> <field name="legal_notice">Law 253-12 Art. 23 — reduced 6.5% ad valorem rate for Avtur</field>
</record> </record>
<record id="do_tax_isc_fuel_rd2_gallon_en" model="account.tax.template"> <record id="do_tax_isc_fuel_rd2_gallon_en" model="account.tax.template">
<field name="name">ISC RD$2.00 — Additional per Gallon Gasoline/Diesel</field> <field name="name">ISC RD$2.00 — Additional per Gallon Gasoline/Diesel</field>
@@ -510,7 +517,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020808_en" /> <field name="invoice_account" ref="do_account_21020808_en" />
<field name="credit_note_account" ref="do_account_21020808_en" /> <field name="credit_note_account" ref="do_account_21020808_en" />
<field name="legal_notice">Ley 253-12 Art. 20 — adicional RD$2.00 por galón gasolina/gasoil</field> <field name="legal_notice">Law 253-12 Art. 20 — additional RD$2.00 per gallon of gasoline or diesel</field>
</record> </record>
<record id="do_tax_ret_isc_insurance_100_en" model="account.tax.template"> <record id="do_tax_ret_isc_insurance_100_en" model="account.tax.template">
<field name="name">ISC Withholding 100% — Insurance Companies</field> <field name="name">ISC Withholding 100% — Insurance Companies</field>
@@ -521,7 +528,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020806_en" /> <field name="invoice_account" ref="do_account_21020806_en" />
<field name="credit_note_account" ref="do_account_21020806_en" /> <field name="credit_note_account" ref="do_account_21020806_en" />
<field name="legal_notice">NG 04-13 DGII — aseguradoras retienen 100% del ISC facturado</field> <field name="legal_notice">DGII General Rule 04-13 — insurers withhold 100% of billed ISC</field>
</record> </record>
<!-- Impuesto de primera placa. El impuesto por emisiones de CO2 es distinto y <!-- Impuesto de primera placa. El impuesto por emisiones de CO2 es distinto y
no se modela aquí porque su tasa depende de las emisiones del vehículo. --> no se modela aquí porque su tasa depende de las emisiones del vehículo. -->
@@ -534,7 +541,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020805_en" /> <field name="invoice_account" ref="do_account_21020805_en" />
<field name="credit_note_account" ref="do_account_21020805_en" /> <field name="credit_note_account" ref="do_account_21020805_en" />
<field name="legal_notice">Art. 22 Ley 557-05 — 17% sobre valor CIF para primera placa</field> <field name="legal_notice">Law 557-05 Art. 22 — 17% of CIF value on first registration</field>
</record> </record>
<!-- ══════ CDT — CONTRIBUCIÓN INDOTEL (LEY 153-98) ══════ --> <!-- ══════ CDT — CONTRIBUCIÓN INDOTEL (LEY 153-98) ══════ -->
<!-- CDT: Contribución para el Desarrollo de las Telecomunicaciones. <!-- CDT: Contribución para el Desarrollo de las Telecomunicaciones.
@@ -549,7 +556,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020901_en" /> <field name="invoice_account" ref="do_account_21020901_en" />
<field name="credit_note_account" ref="do_account_21020901_en" /> <field name="credit_note_account" ref="do_account_21020901_en" />
<field name="legal_notice">Art. 26 Ley 153-98 Telecomunicaciones — CDT INDOTEL 2% ingresos brutos</field> <field name="legal_notice">Telecommunications Law 153-98 Art. 26 — INDOTEL CDT at 2% of gross revenue</field>
</record> </record>
<!-- ══════ OTROS IMPUESTOS Y CONTRIBUCIONES ══════ --> <!-- ══════ OTROS IMPUESTOS Y CONTRIBUCIONES ══════ -->
<!-- Propina legal: cargo obligatorio para hoteles, restaurantes, cafés, barras <!-- Propina legal: cargo obligatorio para hoteles, restaurantes, cafés, barras
@@ -563,7 +570,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020501_en" /> <field name="invoice_account" ref="do_account_21020501_en" />
<field name="credit_note_account" ref="do_account_21020501_en" /> <field name="credit_note_account" ref="do_account_21020501_en" />
<field name="legal_notice">Código de Trabajo, Ley 16-92, art. 228 — propina obligatoria 10%</field> <field name="legal_notice">Labour Code, Law 16-92 Art. 228 — mandatory 10% service charge</field>
</record> </record>
<!-- 0.15% sobre valor de cheques y débitos bancarios electrónicos. <!-- 0.15% sobre valor de cheques y débitos bancarios electrónicos.
Lo recauda el banco automáticamente; es un costo financiero para la empresa. --> Lo recauda el banco automáticamente; es un costo financiero para la empresa. -->
@@ -577,7 +584,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021901_en" /> <field name="invoice_account" ref="do_account_21021901_en" />
<field name="credit_note_account" ref="do_account_21021901_en" /> <field name="credit_note_account" ref="do_account_21021901_en" />
<field name="legal_notice">Art. 382-D CT Ley 11-92 mod. Ley 288-04 — 1.5 por mil cheques/débitos</field> <field name="legal_notice">Tax Code Art. 382-D, amended by Law 288-04 — 1.5 per thousand on checks and debits</field>
</record> </record>
<!-- 0.20% sobre valor de cheques y transferencias bancarias desde <!-- 0.20% sobre valor de cheques y transferencias bancarias desde
2026-07-03. Se mantiene separado del 0.15% histórico. --> 2026-07-03. Se mantiene separado del 0.15% histórico. -->
@@ -591,7 +598,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021902_en" /> <field name="invoice_account" ref="do_account_21021902_en" />
<field name="credit_note_account" ref="do_account_21021902_en" /> <field name="credit_note_account" ref="do_account_21021902_en" />
<field name="legal_notice">Ley 30-26, vig. 2026-07-03 — 2.0 por mil cheques/transferencias</field> <field name="legal_notice">Law 30-26, effective 2026-07-03 — 2.0 per thousand on checks and transfers</field>
</record> </record>
<!-- Impuesto anual sobre los activos imponibles. Su liquidación y crédito <!-- Impuesto anual sobre los activos imponibles. Su liquidación y crédito
contra ISR no se automatizan mediante esta plantilla contable. --> contra ISR no se automatizan mediante esta plantilla contable. -->
@@ -604,7 +611,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020502_en" /> <field name="invoice_account" ref="do_account_21020502_en" />
<field name="credit_note_account" ref="do_account_21020502_en" /> <field name="credit_note_account" ref="do_account_21020502_en" />
<field name="legal_notice">Código Tributario, arts. 401-405; art. 404 — 1% anual</field> <field name="legal_notice">Tax Code Arts. 401-405; Art. 404 — 1% annually</field>
</record> </record>
<!-- ITI: aplica a transferencias de bienes inmuebles. Las exenciones y la <!-- ITI: aplica a transferencias de bienes inmuebles. Las exenciones y la
valoración deben revisarse al liquidar cada operación. --> valoración deben revisarse al liquidar cada operación. -->
@@ -617,7 +624,7 @@
<field name="account" ref="do_account_root_en" /> <field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021001_en" /> <field name="invoice_account" ref="do_account_21021001_en" />
<field name="credit_note_account" ref="do_account_21021001_en" /> <field name="credit_note_account" ref="do_account_21021001_en" />
<field name="legal_notice">Art. 20 Ley 288-04, mod. art. 7 Ley 173-07 — tasa 3%</field> <field name="legal_notice">Law 288-04 Art. 20, amended by Law 173-07 Art. 7 — 3% rate</field>
</record> </record>
</data> </data>
</tryton> </tryton>
+18 -11
View File
@@ -11,11 +11,6 @@
<field name="code">ISR</field> <field name="code">ISR</field>
<field name="kind">both</field> <field name="kind">both</field>
</record> </record>
<record id="do_tax_group_exempt_es_419" model="account.tax.group">
<field name="name">Exento / Tasa Cero</field>
<field name="code">EX0</field>
<field name="kind">both</field>
</record>
<record id="do_tax_group_isc_es_419" model="account.tax.group"> <record id="do_tax_group_isc_es_419" model="account.tax.group">
<field name="name">ISC - Selectivo al Consumo</field> <field name="name">ISC - Selectivo al Consumo</field>
<field name="code">ISC</field> <field name="code">ISC</field>
@@ -279,26 +274,38 @@
<field name="legal_notice">Art. 309 CT mod. Ley 253-12 — otras rentas no contempladas 10%</field> <field name="legal_notice">Art. 309 CT mod. Ley 253-12 — otras rentas no contempladas 10%</field>
</record> </record>
<record id="do_tax_ret_isr_ext_27_es_419" model="account.tax.template"> <record id="do_tax_ret_isr_ext_27_es_419" model="account.tax.template">
<field name="name">Retención ISR 27% — Pagos al Exterior: Servicios y Regalías (No Residentes)</field> <field name="name">Retención ISR 27% — Otros Pagos Gravados al Exterior (No Residentes)</field>
<field name="description">Retención ISR Exterior 27%</field> <field name="description">Retención ISR Exterior 27%</field>
<field name="type">percentage</field> <field name="type">percentage</field>
<field name="rate" eval="Decimal('-27')/100" /> <field name="rate" eval="Decimal('-27')/100" />
<field name="group" ref="do_tax_group_isr_es_419" /> <field name="group" ref="do_tax_group_isr_ext_es_419" />
<field name="account" ref="do_account_root_es_419" /> <field name="account" ref="do_account_root_es_419" />
<field name="invoice_account" ref="do_account_21020701_es_419" /> <field name="invoice_account" ref="do_account_21020701_es_419" />
<field name="credit_note_account" ref="do_account_21020701_es_419" /> <field name="credit_note_account" ref="do_account_21020701_es_419" />
<field name="legal_notice">Art. 305 CT Ley 11-92 — Servicios y regalías a no residentes 27%</field> <field name="legal_notice">Art. 305 CT Ley 11-92 — pagos gravados no sujetos a una tasa especial</field>
</record>
<record id="do_tax_ret_isr_ext_15_es_419" model="account.tax.template">
<field name="name">Retención ISR 15% — Regalías, Software y Servicios en Línea al Exterior</field>
<field name="description">Retención ISR Exterior 15%</field>
<field name="type">percentage</field>
<field name="rate" eval="Decimal('-15')/100" />
<field name="start_date" eval="datetime.date(2026, 7, 1)" />
<field name="group" ref="do_tax_group_isr_ext_es_419" />
<field name="account" ref="do_account_root_es_419" />
<field name="invoice_account" ref="do_account_21020703_es_419" />
<field name="credit_note_account" ref="do_account_21020703_es_419" />
<field name="legal_notice">Arts. 305-1 y 305-2 CT, introducidos por Ley 30-26 — regalías o derechos, licencias de software, publicidad en línea y uso o almacenamiento de datos</field>
</record> </record>
<record id="do_tax_ret_isr_ext_10_es_419" model="account.tax.template"> <record id="do_tax_ret_isr_ext_10_es_419" model="account.tax.template">
<field name="name">Retención ISR 10% — Pagos al Exterior: Intereses y Asistencia Técnica (No Residentes)</field> <field name="name">Retención ISR 10% — Intereses Pagados al Exterior (No Residentes)</field>
<field name="description">Retención ISR Exterior 10%</field> <field name="description">Retención ISR Exterior 10%</field>
<field name="type">percentage</field> <field name="type">percentage</field>
<field name="rate" eval="Decimal('-10')/100" /> <field name="rate" eval="Decimal('-10')/100" />
<field name="group" ref="do_tax_group_isr_es_419" /> <field name="group" ref="do_tax_group_isr_ext_es_419" />
<field name="account" ref="do_account_root_es_419" /> <field name="account" ref="do_account_root_es_419" />
<field name="invoice_account" ref="do_account_21020702_es_419" /> <field name="invoice_account" ref="do_account_21020702_es_419" />
<field name="credit_note_account" ref="do_account_21020702_es_419" /> <field name="credit_note_account" ref="do_account_21020702_es_419" />
<field name="legal_notice">Arts. 305-306 CT — Intereses y asistencia técnica a no residentes</field> <field name="legal_notice">Art. 306 CT — intereses pagados o acreditados al exterior</field>
</record> </record>
<record id="do_tax_ret_itbis_100_inf_es_419" model="account.tax.template"> <record id="do_tax_ret_itbis_100_inf_es_419" model="account.tax.template">
<field name="name">Retención ITBIS 100% — Servicios Gravados Sujetos a Retención</field> <field name="name">Retención ITBIS 100% — Servicios Gravados Sujetos a Retención</field>
+44 -12
View File
@@ -63,10 +63,22 @@
</record> </record>
<record id="do_trline_supp_ext_isr27_en" model="account.tax.rule.line.template"> <record id="do_trline_supp_ext_isr27_en" model="account.tax.rule.line.template">
<field name="rule" ref="do_tax_rule_supplier_ext_en"/> <field name="rule" ref="do_tax_rule_supplier_ext_en"/>
<field name="group" ref="do_tax_group_isr_en"/> <field name="group" ref="do_tax_group_isr_ext_en"/>
<field name="tax" ref="do_tax_ret_isr_ext_27_en"/> <field name="tax" ref="do_tax_ret_isr_ext_27_en"/>
<field name="sequence" eval="10"/> <field name="sequence" eval="10"/>
</record> </record>
<record id="do_tax_rule_supplier_ext_digital_en" model="account.tax.rule.template">
<field name="name">Foreign Royalties, Software and Online Services 15% Rule (RD)</field>
<field name="kind">purchase</field>
<field name="account" ref="do_account_root_en"/>
</record>
<record id="do_trline_supp_ext_isr15_en" model="account.tax.rule.line.template">
<field name="rule" ref="do_tax_rule_supplier_ext_digital_en"/>
<field name="group" ref="do_tax_group_isr_ext_en"/>
<field name="tax" ref="do_tax_ret_isr_ext_15_en"/>
<field name="start_date" eval="datetime.date(2026, 7, 1)"/>
<field name="sequence" eval="10"/>
</record>
<!-- Tasas especiales ITBIS --> <!-- Tasas especiales ITBIS -->
<record id="do_tax_rule_customer_itbis16_en" model="account.tax.rule.template"> <record id="do_tax_rule_customer_itbis16_en" model="account.tax.rule.template">
@@ -219,11 +231,16 @@
<field name="tax" ref="do_tax_isc_combustibles_16_en"/> <field name="tax" ref="do_tax_isc_combustibles_16_en"/>
<field name="sequence" eval="10"/> <field name="sequence" eval="10"/>
</record> </record>
<record id="do_tax_rule_customer_isc_fuel_rd2_en" model="account.tax.rule.template">
<field name="name">ISC Rule Additional RD$2 per Gallon of Fuel (RD)</field>
<field name="kind">sale</field>
<field name="account" ref="do_account_root_en"/>
</record>
<record id="do_trline_cust_isc_fuel_rd2_en" model="account.tax.rule.line.template"> <record id="do_trline_cust_isc_fuel_rd2_en" model="account.tax.rule.line.template">
<field name="rule" ref="do_tax_rule_customer_isc_fuel_en"/> <field name="rule" ref="do_tax_rule_customer_isc_fuel_rd2_en"/>
<field name="group" ref="do_tax_group_isc_en"/> <field name="group" ref="do_tax_group_isc_en"/>
<field name="tax" ref="do_tax_isc_fuel_rd2_gallon_en"/> <field name="tax" ref="do_tax_isc_fuel_rd2_gallon_en"/>
<field name="sequence" eval="20"/> <field name="sequence" eval="10"/>
</record> </record>
<record id="do_tax_rule_bank_check_transfer_en" model="account.tax.rule.template"> <record id="do_tax_rule_bank_check_transfer_en" model="account.tax.rule.template">
@@ -299,38 +316,53 @@
<field name="sequence" eval="20"/> <field name="sequence" eval="20"/>
</record> </record>
<record id="do_tax_rule_customer_sectorial_retention_en" model="account.tax.rule.template"> <record id="do_tax_rule_customer_sectorial_society_en" model="account.tax.rule.template">
<field name="name">Customer Rule with ITBIS Sectoral Withholding (RD)</field> <field name="name">ITBIS Withheld by Companies 30% Customer Rule (RD)</field>
<field name="kind">sale</field> <field name="kind">sale</field>
<field name="account" ref="do_account_root_en"/> <field name="account" ref="do_account_root_en"/>
</record> </record>
<record id="do_trline_cust_sectorial_society_en" model="account.tax.rule.line.template"> <record id="do_trline_cust_sectorial_society_en" model="account.tax.rule.line.template">
<field name="rule" ref="do_tax_rule_customer_sectorial_retention_en"/> <field name="rule" ref="do_tax_rule_customer_sectorial_society_en"/>
<field name="group" ref="do_tax_group_itbis_en"/> <field name="group" ref="do_tax_group_itbis_en"/>
<field name="tax" ref="do_tax_ret_itbis_society_30_suf_en"/> <field name="tax" ref="do_tax_ret_itbis_society_30_suf_en"/>
<field name="keep_origin" eval="True"/> <field name="keep_origin" eval="True"/>
<field name="sequence" eval="10"/> <field name="sequence" eval="10"/>
</record> </record>
<record id="do_tax_rule_customer_sectorial_airline_en" model="account.tax.rule.template">
<field name="name">ITBIS Withheld by Airlines Customer Rule (RD)</field>
<field name="kind">sale</field>
<field name="account" ref="do_account_root_en"/>
</record>
<record id="do_trline_cust_sectorial_airline_en" model="account.tax.rule.line.template"> <record id="do_trline_cust_sectorial_airline_en" model="account.tax.rule.line.template">
<field name="rule" ref="do_tax_rule_customer_sectorial_retention_en"/> <field name="rule" ref="do_tax_rule_customer_sectorial_airline_en"/>
<field name="group" ref="do_tax_group_itbis_en"/> <field name="group" ref="do_tax_group_itbis_en"/>
<field name="tax" ref="do_tax_ret_itbis_airline_100_en"/> <field name="tax" ref="do_tax_ret_itbis_airline_100_en"/>
<field name="keep_origin" eval="True"/> <field name="keep_origin" eval="True"/>
<field name="sequence" eval="20"/> <field name="sequence" eval="10"/>
</record>
<record id="do_tax_rule_customer_sectorial_hotel_en" model="account.tax.rule.template">
<field name="name">ITBIS Withheld by Hotels Customer Rule (RD)</field>
<field name="kind">sale</field>
<field name="account" ref="do_account_root_en"/>
</record> </record>
<record id="do_trline_cust_sectorial_hotel_en" model="account.tax.rule.line.template"> <record id="do_trline_cust_sectorial_hotel_en" model="account.tax.rule.line.template">
<field name="rule" ref="do_tax_rule_customer_sectorial_retention_en"/> <field name="rule" ref="do_tax_rule_customer_sectorial_hotel_en"/>
<field name="group" ref="do_tax_group_itbis_en"/> <field name="group" ref="do_tax_group_itbis_en"/>
<field name="tax" ref="do_tax_ret_itbis_hotel_100_en"/> <field name="tax" ref="do_tax_ret_itbis_hotel_100_en"/>
<field name="keep_origin" eval="True"/> <field name="keep_origin" eval="True"/>
<field name="sequence" eval="30"/> <field name="sequence" eval="10"/>
</record>
<record id="do_tax_rule_customer_sectorial_state_en" model="account.tax.rule.template">
<field name="name">ITBIS Withheld by State Entities Customer Rule (RD)</field>
<field name="kind">sale</field>
<field name="account" ref="do_account_root_en"/>
</record> </record>
<record id="do_trline_cust_sectorial_state_en" model="account.tax.rule.line.template"> <record id="do_trline_cust_sectorial_state_en" model="account.tax.rule.line.template">
<field name="rule" ref="do_tax_rule_customer_sectorial_retention_en"/> <field name="rule" ref="do_tax_rule_customer_sectorial_state_en"/>
<field name="group" ref="do_tax_group_itbis_en"/> <field name="group" ref="do_tax_group_itbis_en"/>
<field name="tax" ref="do_tax_ret_itbis_state_100_en"/> <field name="tax" ref="do_tax_ret_itbis_state_100_en"/>
<field name="keep_origin" eval="True"/> <field name="keep_origin" eval="True"/>
<field name="sequence" eval="40"/> <field name="sequence" eval="10"/>
</record> </record>
</data> </data>
</tryton> </tryton>
+44 -12
View File
@@ -52,10 +52,22 @@
</record> </record>
<record id="do_trline_supp_ext_isr27_es_419" model="account.tax.rule.line.template"> <record id="do_trline_supp_ext_isr27_es_419" model="account.tax.rule.line.template">
<field name="rule" ref="do_tax_rule_supplier_ext_es_419" /> <field name="rule" ref="do_tax_rule_supplier_ext_es_419" />
<field name="group" ref="do_tax_group_isr_es_419" /> <field name="group" ref="do_tax_group_isr_ext_es_419" />
<field name="tax" ref="do_tax_ret_isr_ext_27_es_419" /> <field name="tax" ref="do_tax_ret_isr_ext_27_es_419" />
<field name="sequence" eval="10" /> <field name="sequence" eval="10" />
</record> </record>
<record id="do_tax_rule_supplier_ext_digital_es_419" model="account.tax.rule.template">
<field name="name">Regla Regalías, Software y Servicios en Línea al Exterior 15% (RD)</field>
<field name="kind">purchase</field>
<field name="account" ref="do_account_root_es_419" />
</record>
<record id="do_trline_supp_ext_isr15_es_419" model="account.tax.rule.line.template">
<field name="rule" ref="do_tax_rule_supplier_ext_digital_es_419" />
<field name="group" ref="do_tax_group_isr_ext_es_419" />
<field name="tax" ref="do_tax_ret_isr_ext_15_es_419" />
<field name="start_date" eval="datetime.date(2026, 7, 1)" />
<field name="sequence" eval="10" />
</record>
<record id="do_tax_rule_customer_itbis16_es_419" model="account.tax.rule.template"> <record id="do_tax_rule_customer_itbis16_es_419" model="account.tax.rule.template">
<field name="name">Regla Clientes ITBIS 16% Tasa Especial (RD)</field> <field name="name">Regla Clientes ITBIS 16% Tasa Especial (RD)</field>
<field name="kind">sale</field> <field name="kind">sale</field>
@@ -202,11 +214,16 @@
<field name="tax" ref="do_tax_isc_combustibles_16_es_419" /> <field name="tax" ref="do_tax_isc_combustibles_16_es_419" />
<field name="sequence" eval="10" /> <field name="sequence" eval="10" />
</record> </record>
<record id="do_tax_rule_customer_isc_fuel_rd2_es_419" model="account.tax.rule.template">
<field name="name">Regla ISC Adicional RD$2 por Galón de Combustible (RD)</field>
<field name="kind">sale</field>
<field name="account" ref="do_account_root_es_419" />
</record>
<record id="do_trline_cust_isc_fuel_rd2_es_419" model="account.tax.rule.line.template"> <record id="do_trline_cust_isc_fuel_rd2_es_419" model="account.tax.rule.line.template">
<field name="rule" ref="do_tax_rule_customer_isc_fuel_es_419" /> <field name="rule" ref="do_tax_rule_customer_isc_fuel_rd2_es_419" />
<field name="group" ref="do_tax_group_isc_es_419" /> <field name="group" ref="do_tax_group_isc_es_419" />
<field name="tax" ref="do_tax_isc_fuel_rd2_gallon_es_419" /> <field name="tax" ref="do_tax_isc_fuel_rd2_gallon_es_419" />
<field name="sequence" eval="20" /> <field name="sequence" eval="10" />
</record> </record>
<record id="do_tax_rule_bank_check_transfer_es_419" model="account.tax.rule.template"> <record id="do_tax_rule_bank_check_transfer_es_419" model="account.tax.rule.template">
<field name="name">Regla Bancaria Cheques / Transferencias Electrónicas (RD)</field> <field name="name">Regla Bancaria Cheques / Transferencias Electrónicas (RD)</field>
@@ -277,38 +294,53 @@
<field name="tax" ref="do_tax_ret_isc_insurance_100_es_419" /> <field name="tax" ref="do_tax_ret_isc_insurance_100_es_419" />
<field name="sequence" eval="20" /> <field name="sequence" eval="20" />
</record> </record>
<record id="do_tax_rule_customer_sectorial_retention_es_419" model="account.tax.rule.template"> <record id="do_tax_rule_customer_sectorial_society_es_419" model="account.tax.rule.template">
<field name="name">Regla Cliente con Retención Sectorial ITBIS (RD)</field> <field name="name">Regla Cliente ITBIS Retenido por Sociedades 30% (RD)</field>
<field name="kind">sale</field> <field name="kind">sale</field>
<field name="account" ref="do_account_root_es_419" /> <field name="account" ref="do_account_root_es_419" />
</record> </record>
<record id="do_trline_cust_sectorial_society_es_419" model="account.tax.rule.line.template"> <record id="do_trline_cust_sectorial_society_es_419" model="account.tax.rule.line.template">
<field name="rule" ref="do_tax_rule_customer_sectorial_retention_es_419" /> <field name="rule" ref="do_tax_rule_customer_sectorial_society_es_419" />
<field name="group" ref="do_tax_group_itbis_es_419" /> <field name="group" ref="do_tax_group_itbis_es_419" />
<field name="tax" ref="do_tax_ret_itbis_society_30_suf_es_419" /> <field name="tax" ref="do_tax_ret_itbis_society_30_suf_es_419" />
<field name="keep_origin" eval="True" /> <field name="keep_origin" eval="True" />
<field name="sequence" eval="10" /> <field name="sequence" eval="10" />
</record> </record>
<record id="do_tax_rule_customer_sectorial_airline_es_419" model="account.tax.rule.template">
<field name="name">Regla Cliente ITBIS Retenido por Aerolíneas (RD)</field>
<field name="kind">sale</field>
<field name="account" ref="do_account_root_es_419" />
</record>
<record id="do_trline_cust_sectorial_airline_es_419" model="account.tax.rule.line.template"> <record id="do_trline_cust_sectorial_airline_es_419" model="account.tax.rule.line.template">
<field name="rule" ref="do_tax_rule_customer_sectorial_retention_es_419" /> <field name="rule" ref="do_tax_rule_customer_sectorial_airline_es_419" />
<field name="group" ref="do_tax_group_itbis_es_419" /> <field name="group" ref="do_tax_group_itbis_es_419" />
<field name="tax" ref="do_tax_ret_itbis_airline_100_es_419" /> <field name="tax" ref="do_tax_ret_itbis_airline_100_es_419" />
<field name="keep_origin" eval="True" /> <field name="keep_origin" eval="True" />
<field name="sequence" eval="20" /> <field name="sequence" eval="10" />
</record>
<record id="do_tax_rule_customer_sectorial_hotel_es_419" model="account.tax.rule.template">
<field name="name">Regla Cliente ITBIS Retenido por Hoteles (RD)</field>
<field name="kind">sale</field>
<field name="account" ref="do_account_root_es_419" />
</record> </record>
<record id="do_trline_cust_sectorial_hotel_es_419" model="account.tax.rule.line.template"> <record id="do_trline_cust_sectorial_hotel_es_419" model="account.tax.rule.line.template">
<field name="rule" ref="do_tax_rule_customer_sectorial_retention_es_419" /> <field name="rule" ref="do_tax_rule_customer_sectorial_hotel_es_419" />
<field name="group" ref="do_tax_group_itbis_es_419" /> <field name="group" ref="do_tax_group_itbis_es_419" />
<field name="tax" ref="do_tax_ret_itbis_hotel_100_es_419" /> <field name="tax" ref="do_tax_ret_itbis_hotel_100_es_419" />
<field name="keep_origin" eval="True" /> <field name="keep_origin" eval="True" />
<field name="sequence" eval="30" /> <field name="sequence" eval="10" />
</record>
<record id="do_tax_rule_customer_sectorial_state_es_419" model="account.tax.rule.template">
<field name="name">Regla Cliente ITBIS Retenido por Instituciones del Estado (RD)</field>
<field name="kind">sale</field>
<field name="account" ref="do_account_root_es_419" />
</record> </record>
<record id="do_trline_cust_sectorial_state_es_419" model="account.tax.rule.line.template"> <record id="do_trline_cust_sectorial_state_es_419" model="account.tax.rule.line.template">
<field name="rule" ref="do_tax_rule_customer_sectorial_retention_es_419" /> <field name="rule" ref="do_tax_rule_customer_sectorial_state_es_419" />
<field name="group" ref="do_tax_group_itbis_es_419" /> <field name="group" ref="do_tax_group_itbis_es_419" />
<field name="tax" ref="do_tax_ret_itbis_state_100_es_419" /> <field name="tax" ref="do_tax_ret_itbis_state_100_es_419" />
<field name="keep_origin" eval="True" /> <field name="keep_origin" eval="True" />
<field name="sequence" eval="40" /> <field name="sequence" eval="10" />
</record> </record>
</data> </data>
</tryton> </tryton>
-1
View File
@@ -1 +0,0 @@
+143 -36
View File
@@ -1,5 +1,5 @@
import unittest
import datetime import datetime
import unittest
from collections import Counter from collections import Counter
from configparser import ConfigParser from configparser import ConfigParser
from decimal import Decimal from decimal import Decimal
@@ -75,15 +75,18 @@ IFRS_ACCOUNT_TYPE_AUDIT = {
IFRS_POLICY_COVERAGE = { IFRS_POLICY_COVERAGE = {
'NIC 1': {'11', '12', '21', '23', '3106', '7101', '7102'}, 'NIC 1': {'11', '12', '21', '23', '3106', '7101', '7102'},
'NIC 2': {'1103', '110305', '5101', '5106'}, 'NIC 2': {'1103', '110305', '5101', '5106'},
'NIIF 9': {'110205', '110701', '110702', '110703', '120701', 'NIIF 9': {
'120702', '120703', '4208', '6206', '310604'}, '110205', '110701', '110702', '110703', '120701', '120702',
'120703', '4208', '6206', '310604'},
'NIIF 15': {'110601', '210501', '4101', '4102', '4103', '4104'}, 'NIIF 15': {'110601', '210501', '4101', '4102', '4103', '4104'},
'NIIF 16': {'120501', '120591', '120592', '230201', '230202', 'NIIF 16': {
'6112', '6203'}, '120501', '120591', '120592', '230201', '230202', '6112',
'6203'},
'NIC 12': {'120601', '230301', '6301', '6302', '6303'}, 'NIC 12': {'120601', '230301', '6301', '6302', '6303'},
'NIC 16': {'120101', '120191', '120192', '6110', '6116'}, 'NIC 16': {'120101', '120191', '120192', '6110', '6116'},
'NIC 36': {'111002', '120192', '120292', '120392', '120592', 'NIC 36': {
'120892', '120992', '6116', '6117', '4206'}, '111002', '120192', '120292', '120392', '120592', '120892',
'120992', '6116', '6117', '4206'},
'NIC 37': {'220101', '230401', '6118', '4207'}, 'NIC 37': {'220101', '230401', '6118', '4207'},
'NIC 38': {'120901', '120991', '120992', '6111', '6117'}, 'NIC 38': {'120901', '120991', '120992', '6111', '6117'},
'NIC 40': {'120801', '120891', '120892', '4209', '6207'}, 'NIC 40': {'120801', '120891', '120892', '4209', '6207'},
@@ -198,7 +201,8 @@ class AccountDoTestCase(ModuleTestCase):
template_id = ModelData.get_id( template_id = ModelData.get_id(
'account_do', 'do_account_root_es_419') 'account_do', 'do_account_root_es_419')
except KeyError: except KeyError:
self.skipTest('The es_419 chart is loaded only for es_419 databases') self.skipTest(
'The es_419 chart is loaded only for es_419 databases')
template = AccountTemplate(template_id) template = AccountTemplate(template_id)
session_id, _start, _end = CreateChart.create() session_id, _start, _end = CreateChart.create()
@@ -302,7 +306,8 @@ class AccountDoTestCase(ModuleTestCase):
'210218', '210219', '210218', '210219',
'21020101', '21020102', '21020103', '21020104', '21020101', '21020102', '21020103', '21020104',
'21020105', '21020201', '21020501', '21020502', '21020105', '21020201', '21020501', '21020502',
'21020601', '21020701', '21020702', '21020801', '21020601', '21020701', '21020702', '21020703',
'21020801',
'21020802', '21020803', '21020804', '21020805', '21020802', '21020803', '21020804', '21020805',
'21020901', '21021001', '21021101', '21021201', '21020901', '21021001', '21021101', '21021201',
'21021301', '21021302', '21021401', '21021501', '21021301', '21021302', '21021401', '21021501',
@@ -358,14 +363,23 @@ class AccountDoTestCase(ModuleTestCase):
], limit=1)) ], limit=1))
self.assertTrue(Tax.search([ self.assertTrue(Tax.search([
('company', '=', company.id), ('company', '=', company.id),
('description', '=', 'ITBIS Withholding Large Taxpayer 30%'), ('description', '=',
'ITBIS Withholding Large Taxpayer 30%'),
('rate', '=', Decimal('-0.054')), ('rate', '=', Decimal('-0.054')),
], limit=1)) ], limit=1))
self.assertTrue(Tax.search([ self.assertTrue(Tax.search([
('company', '=', company.id), ('company', '=', company.id),
('description', '=', 'ITBIS Withholding Informal Supplier 75%'), ('description', '=',
'ITBIS Withholding Informal Supplier 75%'),
('rate', '=', Decimal('-0.135')), ('rate', '=', Decimal('-0.135')),
], limit=1)) ], limit=1))
foreign_15, = Tax.search([
('company', '=', company.id),
('description', '=', 'Foreign ISR Withholding 15%'),
], limit=1)
self.assertEqual(foreign_15.rate, Decimal('-0.15'))
self.assertEqual(
foreign_15.start_date, datetime.date(2026, 7, 1))
check_015, = Tax.search([ check_015, = Tax.search([
('company', '=', company.id), ('company', '=', company.id),
('description', '=', 'Checks and Transfers Tax 0.15%'), ('description', '=', 'Checks and Transfers Tax 0.15%'),
@@ -392,6 +406,43 @@ class AccountDoTestCase(ModuleTestCase):
'date': datetime.date(2026, 7, 3), 'date': datetime.date(2026, 7, 3),
}), }),
[check_020.id]) [check_020.id])
foreign_27, = Tax.search([
('company', '=', company.id),
('description', '=', 'Foreign ISR Withholding 27%'),
], limit=1)
foreign_rule, = TaxRule.search([
('company', '=', company.id),
('name', '=', (
'Foreign Royalties, Software and Online '
'Services 15% Rule (RD)')),
], limit=1)
self.assertEqual(
foreign_rule.apply(foreign_27, {
'date': datetime.date(2026, 6, 30),
}),
[foreign_27.id])
self.assertEqual(
foreign_rule.apply(foreign_27, {
'date': datetime.date(2026, 7, 1),
}),
[foreign_15.id])
itbis_sale, = Tax.search([
('company', '=', company.id),
('description', '=', 'ITBIS 18% Sales'),
], limit=1)
society_withholding, = Tax.search([
('company', '=', company.id),
('description', '=', 'ITBIS Withheld Companies 30%'),
], limit=1)
society_rule, = TaxRule.search([
('company', '=', company.id),
('name', '=', (
'ITBIS Withheld by Companies 30% Customer '
'Rule (RD)')),
], limit=1)
self.assertEqual(
society_rule.apply(itbis_sale, {}),
[society_withholding.id, itbis_sale.id])
real_tax_code_signs = { real_tax_code_signs = {
('ITBIS 18% Sales', 'invoice'): '+', ('ITBIS 18% Sales', 'invoice'): '+',
('ITBIS 18% Sales', 'credit'): '-', ('ITBIS 18% Sales', 'credit'): '-',
@@ -434,7 +485,8 @@ class SpanishAccountDoTestCase(ModuleTestCase):
language = 'es_419' language = 'es_419'
test_spanish_chart_creates_spanish_accounts_and_taxes = ( test_spanish_chart_creates_spanish_accounts_and_taxes = (
AccountDoTestCase.test_spanish_chart_creates_spanish_accounts_and_taxes) AccountDoTestCase
.test_spanish_chart_creates_spanish_accounts_and_taxes)
@with_transaction() @with_transaction()
def test_migrate_pre_language_identifiers(self): def test_migrate_pre_language_identifiers(self):
@@ -485,7 +537,7 @@ class AccountDoUnitTestCase(unittest.TestCase):
if line.strip() if line.strip()
] ]
self.assertEqual(config.get('tryton', 'version'), '8.0.1') self.assertEqual(config.get('tryton', 'version'), '8.1.0')
self.assertEqual( self.assertEqual(
set(lines('tryton', 'depends')), set(lines('tryton', 'depends')),
{'account', 'ir'}) {'account', 'ir'})
@@ -550,35 +602,35 @@ class AccountDoUnitTestCase(unittest.TestCase):
expected = { expected = {
'account_chart_do_en.xml': { 'account_chart_do_en.xml': {
'account.account.type.template': 36, 'account.account.type.template': 36,
'account.account.template': 281, 'account.account.template': 282,
}, },
'tax_do_en.xml': { 'tax_do_en.xml': {
'account.tax.group': 7, 'account.tax.group': 6,
'account.tax.template': 50, 'account.tax.template': 51,
}, },
'tax_code_do_en.xml': { 'tax_code_do_en.xml': {
'account.tax.code.template': 44, 'account.tax.code.template': 43,
'account.tax.code.line.template': 93, 'account.tax.code.line.template': 95,
}, },
'tax_rule_do_en.xml': { 'tax_rule_do_en.xml': {
'account.tax.rule.template': 23, 'account.tax.rule.template': 28,
'account.tax.rule.line.template': 30, 'account.tax.rule.line.template': 31,
}, },
'account_chart_do_es_419.xml': { 'account_chart_do_es_419.xml': {
'account.account.type.template': 36, 'account.account.type.template': 36,
'account.account.template': 281, 'account.account.template': 282,
}, },
'tax_do_es_419.xml': { 'tax_do_es_419.xml': {
'account.tax.group': 7, 'account.tax.group': 6,
'account.tax.template': 50, 'account.tax.template': 51,
}, },
'tax_code_do_es_419.xml': { 'tax_code_do_es_419.xml': {
'account.tax.code.template': 44, 'account.tax.code.template': 43,
'account.tax.code.line.template': 93, 'account.tax.code.line.template': 95,
}, },
'tax_rule_do_es_419.xml': { 'tax_rule_do_es_419.xml': {
'account.tax.rule.template': 23, 'account.tax.rule.template': 28,
'account.tax.rule.line.template': 30, 'account.tax.rule.line.template': 31,
}, },
} }
for filename, expected_counts in expected.items(): for filename, expected_counts in expected.items():
@@ -609,7 +661,8 @@ class AccountDoUnitTestCase(unittest.TestCase):
with self.subTest(filename=filename): with self.subTest(filename=filename):
self.assertTrue(root.findall('data')) self.assertTrue(root.findall('data'))
self.assertEqual( self.assertEqual(
{data.get('language') for data in root.findall('data')}, {data.get('language')
for data in root.findall('data')},
{language}) {language})
def test_english_accounting_terminology_is_consistent(self): def test_english_accounting_terminology_is_consistent(self):
@@ -621,13 +674,17 @@ class AccountDoUnitTestCase(unittest.TestCase):
'tax_code_do_en.xml', 'tax_rule_do_en.xml'] 'tax_code_do_en.xml', 'tax_rule_do_en.xml']
for field in ET.parse(MODULE_DIR / filename).getroot().findall( for field in ET.parse(MODULE_DIR / filename).getroot().findall(
'.//field') './/field')
if field.get('name') in {'name', 'description'} and field.text) if field.get('name') in {
'name', 'description', 'legal_notice'} and field.text)
for phrase in [ for phrase in [
'advance itbis', 'assets for right of use', 'advance itbis', 'assets for right of use',
'charged for paying', 'clients tax rule', 'charged for paying', 'clients tax rule',
'collected to pay', 'deterioration', 'in favor', 'collected to pay', 'deterioration', 'in favor',
'itbis supported', 'other income and profits', 'itbis supported', 'other income and profits',
'physical persons', 'retention', 'withheld status', 'physical persons', 'retention', 'withheld status',
' aseguradoras ', ' bienes ', ' casilla ',
' combustibles ', ' intereses ', ' ley ', ' pagos ',
' personas ', ' premios ', ' retención ', ' tasa ',
]: ]:
with self.subTest(phrase=phrase): with self.subTest(phrase=phrase):
self.assertNotIn(phrase, text.lower()) self.assertNotIn(phrase, text.lower())
@@ -710,9 +767,23 @@ class AccountDoUnitTestCase(unittest.TestCase):
ref = field.get('ref') ref = field.get('ref')
if ref and '.' not in ref and ref not in ids: if ref and '.' not in ref and ref not in ids:
missing.append( missing.append(
(filename, record.get('id'), field.get('name'), ref)) (filename, record.get('id'),
field.get('name'), ref))
self.assertEqual(missing, []) self.assertEqual(missing, [])
def test_every_tax_group_is_used(self):
"""Do not install tax groups that no tax template can produce."""
records = list(_iter_xml_records('tax_do_en.xml'))
groups = {
record_id for _, record_id, model, _values in records
if model == 'account.tax.group'
}
used_groups = {
values['group'] for _, _, model, values in records
if model == 'account.tax.template' and values.get('group')
}
self.assertEqual(groups, used_groups)
def test_chart_template_codes_are_unique(self): def test_chart_template_codes_are_unique(self):
accounts = [ accounts = [
values for _, _, model, values in _iter_xml_records( values for _, _, model, values in _iter_xml_records(
@@ -804,12 +875,14 @@ class AccountDoUnitTestCase(unittest.TestCase):
for _, record_id, _, _ in _iter_xml_records( for _, record_id, _, _ in _iter_xml_records(
'tax_do_en.xml', 'tax_code_do_en.xml') 'tax_do_en.xml', 'tax_code_do_en.xml')
} }
self.assertFalse([record_id for record_id in ids if 'otros' in record_id]) self.assertFalse([
record_id for record_id in ids if 'otros' in record_id])
def test_tax_templates_are_complete(self): def test_tax_templates_are_complete(self):
taxes = { taxes = {
record_id: values record_id: values
for _, record_id, model, values in _iter_xml_records('tax_do_en.xml') for _, record_id, model, values
in _iter_xml_records('tax_do_en.xml')
if model == 'account.tax.template' if model == 'account.tax.template'
} }
accounts = { accounts = {
@@ -818,7 +891,7 @@ class AccountDoUnitTestCase(unittest.TestCase):
'account_chart_do_en.xml') 'account_chart_do_en.xml')
if model == 'account.account.template' if model == 'account.account.template'
} }
self.assertEqual(len(taxes), 50) self.assertEqual(len(taxes), 51)
for record_id, values in taxes.items(): for record_id, values in taxes.items():
with self.subTest(record_id=record_id): with self.subTest(record_id=record_id):
self.assertEqual( self.assertEqual(
@@ -853,17 +926,27 @@ class AccountDoUnitTestCase(unittest.TestCase):
self.assertIn( self.assertIn(
"Decimal('10')/100", "Decimal('10')/100",
taxes['do_tax_isc_bebidas_alc']['rate']) taxes['do_tax_isc_bebidas_alc']['rate'])
self.assertEqual(
taxes['do_tax_ret_isr_hon_5']['group'], 'do_tax_group_isr')
self.assertEqual(
taxes['do_tax_ret_isr_serv_10']['group'], 'do_tax_group_isr')
self.assertEqual(
taxes['do_tax_ret_isr_ext_27']['group'],
'do_tax_group_isr_ext')
self.assertEqual(
taxes['do_tax_ret_isr_ext_10']['group'],
'do_tax_group_isr_ext')
self.assertEqual( self.assertEqual(
taxes['do_tax_ret_isr_bovine_1']['start_date'], taxes['do_tax_ret_isr_bovine_1']['start_date'],
'datetime.date(2025, 6, 20)') 'datetime.date(2025, 6, 20)')
self.assertIn( self.assertIn(
'arts. 401-405; art. 404', 'Tax Code Arts. 401-405; Art. 404',
taxes['do_tax_activos_1']['legal_notice']) taxes['do_tax_activos_1']['legal_notice'])
self.assertIn( self.assertIn(
'art. 7 Ley 173-07', 'Law 173-07 Art. 7',
taxes['do_tax_iti_3']['legal_notice']) taxes['do_tax_iti_3']['legal_notice'])
self.assertIn( self.assertIn(
'art. 228', taxes['do_tax_propina_10']['legal_notice']) 'Art. 228', taxes['do_tax_propina_10']['legal_notice'])
self.assertEqual( self.assertEqual(
taxes['do_tax_isc_vehiculos']['group'], taxes['do_tax_isc_vehiculos']['group'],
'do_tax_group_others') 'do_tax_group_others')
@@ -967,6 +1050,15 @@ class AccountDoUnitTestCase(unittest.TestCase):
if model == 'account.tax.rule.line.template' if model == 'account.tax.rule.line.template'
} }
self.assertIn('do_tax_rule_bank_check_transfer', rules) self.assertIn('do_tax_rule_bank_check_transfer', rules)
self.assertEqual(
lines['do_trline_supp_ext_isr27']['group'],
'do_tax_group_isr_ext')
self.assertEqual(
lines['do_trline_supp_ext_isr15']['tax'],
'do_tax_ret_isr_ext_15')
self.assertEqual(
lines['do_trline_supp_ext_isr15']['start_date'],
'datetime.date(2026, 7, 1)')
self.assertEqual( self.assertEqual(
lines['do_trline_bank_check_transfer_015']['origin_tax'], lines['do_trline_bank_check_transfer_015']['origin_tax'],
'do_tax_cheques_015') 'do_tax_cheques_015')
@@ -986,4 +1078,19 @@ class AccountDoUnitTestCase(unittest.TestCase):
lines['do_trline_bank_check_transfer_020']['start_date'], lines['do_trline_bank_check_transfer_020']['start_date'],
'datetime.date(2026, 7, 3)') 'datetime.date(2026, 7, 3)')
def test_tax_rule_lines_have_reachable_match_patterns(self):
"""A rule must not contain two lines with the same match pattern."""
patterns = {}
for _, record_id, model, values in _iter_xml_records(
'tax_rule_do_en.xml'):
if model != 'account.tax.rule.line.template':
continue
pattern = tuple(values.get(field) for field in [
'rule', 'group', 'origin_tax', 'start_date', 'end_date'])
self.assertNotIn(
pattern, patterns,
msg=f'{record_id} is shadowed by {patterns.get(pattern)}')
patterns[pattern] = record_id
del ModuleTestCase del ModuleTestCase
+1 -1
View File
@@ -1,5 +1,5 @@
[tryton] [tryton]
version=8.0.1 version=8.1.0
depends: depends:
account account
ir ir