Update Dominican withholding catalog

Apply the Article 309 rates introduced by Law 30-26 with dated historical templates and rules. Complete tax-code reversals, improve English terminology, harden migrations, and expand structural and functional tests.
This commit is contained in:
José Arturo García
2026-08-10 09:10:05 -04:00
parent c3ba620b74
commit 29e987520d
16 changed files with 765 additions and 154 deletions
+2
View File
@@ -10,6 +10,8 @@ Version 8.1.0 - 2026-08-10
* 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.
* Apply the article 309 withholding rates introduced by Law 30-26 from
1 July 2026 while preserving the preceding rates for historical entries.
* Split tax rules whose duplicate match patterns made later alternatives
unreachable.
* Remove unused tax-group and tax-code records from the initial data set.
+1 -1
View File
@@ -1 +1 @@
Copyright (C) 2026 Solutema
Copyright (C) 2026 Fundación Un País Mejor
+40 -10
View File
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- account_do: Tipos de cuenta y Plan de cuentas NIIF - República Dominicana -->
<!-- account_do: Account types and IFRS chart of accounts - Dominican Republic -->
<tryton>
<data language="en">
<!-- ===== Tipos de cuenta ===== -->
<!-- ===== Account types ===== -->
<record id="do_type_root_en" model="account.account.type.template">
<field name="name">IFRS Chart of Accounts - Dominican Republic</field>
<field name="sequence" eval="10"/>
@@ -180,7 +180,7 @@
<field name="statement">balance</field>
</record>
<record id="do_type_retained_earnings_en" model="account.account.type.template">
<field name="name">Withheld Earnings</field>
<field name="name">Retained Earnings</field>
<field name="parent" ref="do_type_equity_en"/>
<field name="sequence" eval="20"/>
<field name="statement">balance</field>
@@ -241,7 +241,7 @@
</record>
</data>
<data language="en">
<!-- ===== Cuenta raíz del plan ===== -->
<!-- ===== Chart root account ===== -->
<record id="do_account_root_en" model="account.account.template">
<field name="name">IFRS Chart of Accounts - Dominican Republic</field>
<field name="type" ref="do_type_root_en"/>
@@ -249,7 +249,7 @@
</record>
</data>
<data language="en" grouped="1">
<!-- ===== Nivel 1: 7 cuentas ===== -->
<!-- ===== Level 1: 7 accounts ===== -->
<record id="do_account_1_en" model="account.account.template">
<field name="code">1</field>
<field name="name">ASSETS</field>
@@ -294,7 +294,7 @@
</record>
</data>
<data language="en" grouped="1">
<!-- ===== Nivel 2: 12 cuentas ===== -->
<!-- ===== Level 2: 12 accounts ===== -->
<record id="do_account_11_en" model="account.account.template">
<field name="code">11</field>
<field name="name">Current Assets</field>
@@ -369,7 +369,7 @@
</record>
</data>
<data language="en" grouped="1">
<!-- ===== Nivel 3: 89 cuentas ===== -->
<!-- ===== Level 3: 89 accounts ===== -->
<record id="do_account_1101_en" model="account.account.template">
<field name="code">1101</field>
<field name="name">Cash and Cash Equivalents</field>
@@ -559,7 +559,7 @@
</record>
<record id="do_account_3104_en" model="account.account.template">
<field name="code">3104</field>
<field name="name">Withheld Earnings</field>
<field name="name">Retained Earnings</field>
<field name="parent" ref="do_account_31_en"/>
<field name="type" ref="do_type_retained_earnings_en"/>
</record>
@@ -914,7 +914,7 @@
</record>
</data>
<data language="en" grouped="1">
<!-- ===== Nivel 4: 100 cuentas ===== -->
<!-- ===== Level 4: 100 accounts ===== -->
<record id="do_account_110101_en" model="account.account.template">
<field name="code">110101</field>
<field name="name">Cash on Hand</field>
@@ -1639,7 +1639,7 @@
<field name="parent" ref="do_account_3106_en"/>
<field name="type" ref="do_type_oci_en"/>
</record>
<!-- Cuentas fiscales adicionales -->
<!-- Additional tax accounts -->
<record id="do_account_110406_en" model="account.account.template">
<field name="code">110406</field>
<field name="name">Recoverable ITBIS Withheld on Acquisitions</field>
@@ -1858,6 +1858,12 @@
<field name="parent" ref="do_account_210213_en"/>
<field name="type" ref="do_type_tax_payable_en"/>
</record>
<record id="do_account_21021303_en" model="account.account.template">
<field name="code">21021303</field>
<field name="name">ISR withholdings for individual services 15% payable</field>
<field name="parent" ref="do_account_210213_en"/>
<field name="type" ref="do_type_tax_payable_en"/>
</record>
</data>
<data language="en" grouped="1">
<record id="do_account_210214_en" model="account.account.template">
@@ -1874,6 +1880,12 @@
<field name="parent" ref="do_account_210214_en"/>
<field name="type" ref="do_type_tax_payable_en"/>
</record>
<record id="do_account_21021402_en" model="account.account.template">
<field name="code">21021402</field>
<field name="name">ISR rental withholdings 15% payable</field>
<field name="parent" ref="do_account_210214_en"/>
<field name="type" ref="do_type_tax_payable_en"/>
</record>
</data>
<data language="en" grouped="1">
<record id="do_account_210215_en" model="account.account.template">
@@ -2010,6 +2022,12 @@
<field name="parent" ref="do_account_210203_en"/>
<field name="type" ref="do_type_tax_payable_en"/>
</record>
<record id="do_account_21020302_en" model="account.account.template">
<field name="code">21020302</field>
<field name="name">ISR withholdings other income 15% payable</field>
<field name="parent" ref="do_account_210203_en"/>
<field name="type" ref="do_type_tax_payable_en"/>
</record>
</data>
<data language="en" grouped="1">
<record id="do_account_21021202_en" model="account.account.template">
@@ -2050,6 +2068,18 @@
<field name="parent" ref="do_account_210217_en"/>
<field name="type" ref="do_type_tax_payable_en"/>
</record>
<record id="do_account_21021705_en" model="account.account.template">
<field name="code">21021705</field>
<field name="name">ISR withholding on betting prizes 15% payable</field>
<field name="parent" ref="do_account_210217_en"/>
<field name="type" ref="do_type_tax_payable_en"/>
</record>
<record id="do_account_21021706_en" model="account.account.template">
<field name="code">21021706</field>
<field name="name">ISR withholding on slot-machine prizes 15% payable</field>
<field name="parent" ref="do_account_210217_en"/>
<field name="type" ref="do_type_tax_payable_en"/>
</record>
</data>
<data language="en" grouped="1">
<record id="do_account_21020806_en" model="account.account.template">
+32 -2
View File
@@ -1634,7 +1634,7 @@
</record>
<record id="do_account_110406_es_419" model="account.account.template">
<field name="code">110406</field>
<field name="name">ITBIS retenido por adquirencias a recuperar</field>
<field name="name">ITBIS retenido en adquisiciones a recuperar</field>
<field name="parent" ref="do_account_1104_es_419" />
<field name="type" ref="do_type_tax_credit_es_419" />
</record>
@@ -1642,7 +1642,7 @@
<data language="es_419" grouped="1">
<record id="do_account_11040601_es_419" model="account.account.template">
<field name="code">11040601</field>
<field name="name">ITBIS retenido por adquirencias 2% a recuperar</field>
<field name="name">ITBIS retenido en adquisiciones 2% a recuperar</field>
<field name="parent" ref="do_account_110406_es_419" />
<field name="type" ref="do_type_tax_credit_es_419" />
</record>
@@ -1850,6 +1850,12 @@
<field name="parent" ref="do_account_210213_es_419" />
<field name="type" ref="do_type_tax_payable_es_419" />
</record>
<record id="do_account_21021303_es_419" model="account.account.template">
<field name="code">21021303</field>
<field name="name">Retenciones ISR servicios personas físicas 15% por pagar</field>
<field name="parent" ref="do_account_210213_es_419" />
<field name="type" ref="do_type_tax_payable_es_419" />
</record>
</data>
<data language="es_419" grouped="1">
<record id="do_account_210214_es_419" model="account.account.template">
@@ -1866,6 +1872,12 @@
<field name="parent" ref="do_account_210214_es_419" />
<field name="type" ref="do_type_tax_payable_es_419" />
</record>
<record id="do_account_21021402_es_419" model="account.account.template">
<field name="code">21021402</field>
<field name="name">Retenciones ISR alquileres 15% por pagar</field>
<field name="parent" ref="do_account_210214_es_419" />
<field name="type" ref="do_type_tax_payable_es_419" />
</record>
</data>
<data language="es_419" grouped="1">
<record id="do_account_210215_es_419" model="account.account.template">
@@ -2002,6 +2014,12 @@
<field name="parent" ref="do_account_210203_es_419" />
<field name="type" ref="do_type_tax_payable_es_419" />
</record>
<record id="do_account_21020302_es_419" model="account.account.template">
<field name="code">21020302</field>
<field name="name">Retenciones ISR otras rentas 15% por pagar</field>
<field name="parent" ref="do_account_210203_es_419" />
<field name="type" ref="do_type_tax_payable_es_419" />
</record>
</data>
<data language="es_419" grouped="1">
<record id="do_account_21021202_es_419" model="account.account.template">
@@ -2042,6 +2060,18 @@
<field name="parent" ref="do_account_210217_es_419" />
<field name="type" ref="do_type_tax_payable_es_419" />
</record>
<record id="do_account_21021705_es_419" model="account.account.template">
<field name="code">21021705</field>
<field name="name">Retenciones ISR premios de apuestas 15% por pagar</field>
<field name="parent" ref="do_account_210217_es_419" />
<field name="type" ref="do_type_tax_payable_es_419" />
</record>
<record id="do_account_21021706_es_419" model="account.account.template">
<field name="code">21021706</field>
<field name="name">Retenciones ISR máquinas tragamonedas 15% por pagar</field>
<field name="parent" ref="do_account_210217_es_419" />
<field name="type" ref="do_type_tax_payable_es_419" />
</record>
</data>
<data language="es_419" grouped="1">
<record id="do_account_21020806_es_419" model="account.account.template">
+4 -4
View File
@@ -19,8 +19,8 @@ the reviewer and review date rather than claiming certification in module data.
Chart Size and Provenance
-------------------------
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).
The chart has 287 templates: 70 grouping nodes and 217 posting leaves. Of the
posting leaves, 66 are tax control accounts (50 payable and 16 recoverable).
Those controls deliberately provide stable identifiers for accounting and
reporting modules. The remaining leaves cover cash, receivables, payables,
inventory, cost of sales, assets, depreciation, deposits, leases, financial
@@ -36,7 +36,7 @@ designed Tryton baseline using these objective inclusion rules:
* separate presentation is needed for a documented IFRS accounting policy.
Grouping nodes are closed and cannot receive postings. The test suite checks
282 unique templates, required optional-module accounts, account types and the
287 unique templates, required optional-module accounts, account types and the
IFRS policy coverage map. This is a transparent functional justification,
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
safe reduction is to merge control accounts only after confirming that
``dgii_reports`` does not depend on their stable identifiers; claiming that
282 codes are official would be incorrect.
287 codes are official would be incorrect.
Upstream Repository
-------------------
+1 -1
View File
@@ -56,7 +56,7 @@ Official References
<https://dgii.gov.do/legislacion/normasGenerales/Documents/NG%20sobre%20Veh%C3%ADculos%20de%20Motor/norma06-12.pdf>`_
* `General Rule 04-2025 (bovine subsector withholding)
<https://dgii.gov.do/legislacion/normasGenerales/Documents/Normas%20Sectoriales/Norma04-25.pdf>`_
* `Law 30-26 (foreign payments, bank checks and electronic transfers)
* `Law 30-26 (article 309 withholdings, foreign payments, bank checks and electronic transfers)
<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>`_
+8
View File
@@ -94,6 +94,14 @@ 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.
Article 17 of Law 30-26 also amended article 309 from 1 July 2026. Rentals
provided by individuals, services provided by individuals, slot-machine
prizes and income not expressly covered are withheld at 15%. Sports and
lottery betting prizes from RD$200,001 through RD$600,000 are withheld at
15%, while higher betting prizes and prizes in general are withheld at 25%.
The catalog preserves the former 10% and prize-band templates through
30 June 2026 and switches the service and rental tax rules by accounting date.
Validation Boundary
-------------------
+11 -6
View File
@@ -48,20 +48,25 @@ ISR Withholdings
----------------
* ``do_tax_ret_isr_hon_5`` — 5% legal-entity service case.
* ``do_tax_ret_isr_serv_10`` — 10% natural-person professional service case.
* ``do_tax_ret_isr_serv_10`` historical 10% natural-person professional service case through 30 June 2026.
* ``do_tax_ret_isr_serv_15`` — 15% services provided by individuals from 1 July 2026.
* ``do_tax_ret_isr_div_10`` — 10% dividends and distributed profits.
* ``do_tax_ret_isr_int_10`` — 10% interest paid to a natural person.
* ``do_tax_ret_isr_alq_10`` — 10% qualifying rent paid to a natural person.
* ``do_tax_ret_isr_alq_10`` historical 10% qualifying rent through 30 June 2026.
* ``do_tax_ret_isr_alq_15`` — 15% rentals provided by individuals from 1 July 2026.
* ``do_tax_ret_isr_est_15`` — historical or specific 1.5% public-sector case.
* ``do_tax_ret_isr_est_5`` — 5% public-sector payment case.
* ``do_tax_ret_isr_bovine_1`` — 1% qualifying bovine purchase from an unregistered natural person.
* ``do_tax_ret_isr_exporter_25`` — 2.5% qualifying local sale by an exporter.
* ``do_tax_ret_isr_int_pj_1`` — 1% interest paid to a legal entity.
* ``do_tax_ret_isr_premios_25`` — 25% qualifying lottery, raffle or draw prize.
* ``do_tax_ret_isr_premios_10`` — 10% 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_other_income_10``10% residual income case under article 309.
* ``do_tax_ret_isr_premios_10`` historical 10% qualifying prize band through 30 June 2026.
* ``do_tax_ret_isr_premios_15`` historical 15% qualifying prize band through 30 June 2026.
* ``do_tax_ret_isr_betting_15`` — 15% betting prizes from RD$200,001 through RD$600,000 from 1 July 2026.
* ``do_tax_ret_isr_tragamonedas_10``historical 10% slot-machine prize case through 30 June 2026.
* ``do_tax_ret_isr_tragamonedas_15`` — 15% slot-machine prizes from 1 July 2026.
* ``do_tax_ret_isr_other_income_10`` — historical 10% residual income case through 30 June 2026.
* ``do_tax_ret_isr_other_income_15`` — 15% income not expressly covered from 1 July 2026.
* ``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.
+5 -5
View File
@@ -5,7 +5,7 @@ from sql import Table
from trytond.pool import PoolMeta
from trytond.transaction import Transaction
LEGACY_OBSOLETE_IDS = {
LEGACY_OBSOLETE_IDS = frozenset({
'do_tax_itbis_8_compra', 'do_tax_itbis_8_venta',
'do_tax_itbis_9_compra', 'do_tax_itbis_9_venta',
'do_tax_ret_itbis_2_adq',
@@ -23,9 +23,9 @@ LEGACY_OBSOLETE_IDS = {
'do_trline_cust_card_acquirer',
'do_trline_cust_itbis8', 'do_trline_cust_itbis9',
'do_trline_supp_itbis8', 'do_trline_supp_itbis9',
}
})
LOCALIZATION_MODELS = {
LOCALIZATION_MODELS = frozenset({
'account.account.template',
'account.account.type.template',
'account.tax.code.line.template',
@@ -34,7 +34,7 @@ LOCALIZATION_MODELS = {
'account.tax.rule.line.template',
'account.tax.rule.template',
'account.tax.template',
}
})
class ModelData(metaclass=PoolMeta):
@@ -58,7 +58,7 @@ class ModelData(metaclass=PoolMeta):
cursor.execute(*table.select(
table.id, table.fs_id,
where=(table.module == 'account_do')
& table.model.in_(tuple(LOCALIZATION_MODELS))))
& table.model.in_(tuple(sorted(LOCALIZATION_MODELS)))))
obsolete = []
for record_id, fs_id in cursor.fetchall():
if fs_id in LEGACY_OBSOLETE_IDS:
+184 -58
View File
@@ -1,19 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- account_do: Plantillas de códigos de impuesto (DGII) - República Dominicana -->
<!-- account_do: Tax code templates (DGII) - Dominican Republic -->
<!--
CONVENCIÓN DE OPERADORES:
Débitos / obligaciones a DGII → invoice="+", credit="-"
Créditos / reducciones al saldo → invoice="-", credit="+"
OPERATOR CONVENTION:
Debits / liabilities to DGII → invoice="+", credit="-"
Tax credits / balance reductions → invoice="-", credit="+"
Retenciones practicadas por la compañía usan tasa negativa y operador "-"
para presentar la obligación fiscal como valor positivo.
Withholdings made by the company use a negative rate and the "-" operator
to present the tax liability as a positive amount.
Lógica del árbol ITBIS:
Padre "ITBIS" = Ventas (+) + Compras (-) + Retenciones recibidas (-) = Neto a pagar
ITBIS tree logic:
"ITBIS" parent = Sales (+) + Purchases (-) + Withholdings received (-)
-->
<tryton>
<data language="en">
<!-- ===== Árbol de códigos de impuesto ===== -->
<!-- ===== Tax code tree ===== -->
<!-- ── ITBIS ───────────────────────────────────────────── -->
<record id="do_tc_itbis_en" model="account.tax.code.template">
<field name="name">ITBIS — Net Balance (Debit Credit)</field>
@@ -35,8 +35,8 @@
<field name="account" ref="do_account_root_en"/>
<field name="parent" ref="do_tc_itbis_ventas_en"/>
</record>
<!-- Compras con operadores inversos: las líneas usan "-" en invoice para que
este código sume en negativo y reste del padre ITBIS. -->
<!-- Purchase lines use the inverse operator so this code subtracts from
the parent ITBIS balance. -->
<record id="do_tc_itbis_compras_en" model="account.tax.code.template">
<field name="name">Input ITBIS on Purchases (Tax Credit)</field>
<field name="account" ref="do_account_root_en"/>
@@ -52,13 +52,13 @@
<field name="account" ref="do_account_root_en"/>
<field name="parent" ref="do_tc_itbis_compras_en"/>
</record>
<!-- Retención GC: rate=-5.4%; operador "-" presenta obligación positiva. -->
<!-- Large-taxpayer withholding: -5.4% rate; "-" presents a liability. -->
<record id="do_tc_itbis_retenido_en" model="account.tax.code.template">
<field name="name">ITBIS Withheld by Large Taxpayer (30%)</field>
<field name="account" ref="do_account_root_en"/>
<field name="parent" ref="do_tc_itbis_en"/>
</record>
<!-- Retenciones ITBIS proveedor informal / servicios: obligaciones fiscales -->
<!-- Informal-supplier and service ITBIS withholdings: tax liabilities -->
<record id="do_tc_itbis_ret_informal_en" model="account.tax.code.template">
<field name="name">ITBIS Withheld 100% Taxed Services</field>
<field name="account" ref="do_account_root_en"/>
@@ -84,14 +84,19 @@
<field name="account" ref="do_account_root_en"/>
<field name="parent" ref="do_tc_itbis_en"/>
</record>
<!-- Tasa cero: seguimiento informativo de la base imponible (amount=base) -->
<record id="do_tc_itbis_exempt_en" model="account.tax.code.template">
<field name="name">Exempt ITBIS — Tax Base</field>
<field name="account" ref="do_account_root_en"/>
<field name="parent" ref="do_tc_itbis_en"/>
</record>
<!-- Zero rate: informational tracking of taxable base (amount=base) -->
<record id="do_tc_itbis_tasa_cero_en" model="account.tax.code.template">
<field name="name">ITBIS Zero Rate — Tax Base (Exports / Free Trade Zone)</field>
<field name="account" ref="do_account_root_en"/>
<field name="parent" ref="do_tc_itbis_en"/>
</record>
<!-- ── ISR Retenciones ─────────────────────────────────── -->
<!-- ── ISR Withholdings ───────────────────────────────── -->
<record id="do_tc_isr_en" model="account.tax.code.template">
<field name="name">ISR: Withholdings</field>
<field name="account" ref="do_account_root_en"/>
@@ -103,7 +108,7 @@
<field name="parent" ref="do_tc_isr_en"/>
</record>
<record id="do_tc_isr_servicios_en" model="account.tax.code.template">
<field name="name">ISR Withholding Fees 10% (Individuals)</field>
<field name="name">ISR Withholding Fees and Services (Individuals)</field>
<field name="account" ref="do_account_root_en"/>
<field name="parent" ref="do_tc_isr_en"/>
</record>
@@ -123,7 +128,7 @@
<field name="parent" ref="do_tc_isr_en"/>
</record>
<record id="do_tc_isr_alquileres_en" model="account.tax.code.template">
<field name="name">ISR Rental Withholding 10%</field>
<field name="name">ISR Rental Withholding (Individuals)</field>
<field name="account" ref="do_account_root_en"/>
<field name="parent" ref="do_tc_isr_en"/>
</record>
@@ -148,17 +153,17 @@
<field name="parent" ref="do_tc_isr_en"/>
</record>
<record id="do_tc_isr_premios_en" model="account.tax.code.template">
<field name="name">ISR Withholding Prizes and Lotteries 25% (Art. 321 CT)</field>
<field name="name">ISR Withholding Prizes, Lotteries, Raffles and Betting 25%</field>
<field name="account" ref="do_account_root_en"/>
<field name="parent" ref="do_tc_isr_en"/>
</record>
<record id="do_tc_isr_premios_tramos_en" model="account.tax.code.template">
<field name="name">ISR Withholding Prizes 10% / 15% and Slots</field>
<field name="name">ISR Withholding Betting and Slot-Machine Prizes</field>
<field name="account" ref="do_account_root_en"/>
<field name="parent" ref="do_tc_isr_en"/>
</record>
<record id="do_tc_isr_other_income_en" model="account.tax.code.template">
<field name="name">ISR Withholding Other Income 10%</field>
<field name="name">ISR Withholding Other Income</field>
<field name="account" ref="do_account_root_en"/>
<field name="parent" ref="do_tc_isr_en"/>
</record>
@@ -212,7 +217,7 @@
<field name="parent" eval="None"/>
</record>
<!-- ── Otros impuestos ───────────────────────────────── -->
<!-- ── Other taxes ───────────────────────────────────── -->
<record id="do_tc_others_en" model="account.tax.code.template">
<field name="name">Other Taxes and Contributions</field>
<field name="account" ref="do_account_root_en"/>
@@ -244,15 +249,15 @@
<field name="parent" ref="do_tc_others_en"/>
</record>
<!-- ===== Líneas: enlace impuesto → código =====
ITBIS Ventas: invoice="+", credit="-" (débito fiscal, crédito revierte)
ITBIS Compras: invoice="-", credit="+" (crédito resta del padre; nd. proveedor revierte)
Retenciones practicadas: invoice="-", credit="+" (rate negativo → obligación positiva)
Retenciones sufridas: invoice="+", credit="-" (rate negativo → crédito/anticipo)
ISC / CDT / Otros: invoice="+", credit="-" (obligaciones)
<!-- ===== Lines: tax-to-code mapping =====
ITBIS sales: invoice="+", credit="-" (tax debit; credit note reverses)
ITBIS purchases: invoice="-", credit="+" (subtracts input tax)
Withholdings made: invoice="-", credit="+" (negative rate → liability)
Withholdings suffered: invoice="+", credit="-" (negative rate → credit)
ISC / CDT / Other: invoice="+", credit="-" (liabilities)
===== -->
<!-- ITBIS Ventas 18% -->
<!-- ITBIS sales 18% -->
<record id="do_tcl_itbis18v_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_itbis_ventas_18_en"/>
<field name="operator">+</field>
@@ -268,7 +273,7 @@
<field name="type">credit</field>
</record>
<!-- ITBIS Ventas 16% -->
<!-- ITBIS sales 16% -->
<record id="do_tcl_itbis16v_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_itbis_ventas_16_en"/>
<field name="operator">+</field>
@@ -284,7 +289,7 @@
<field name="type">credit</field>
</record>
<!-- ITBIS Compras 18%: invoice="-" para restar del padre -->
<!-- ITBIS purchases 18%: invoice="-" subtracts from parent -->
<record id="do_tcl_itbis18c_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_itbis_compras_18_en"/>
<field name="operator">-</field>
@@ -300,7 +305,7 @@
<field name="type">credit</field>
</record>
<!-- ITBIS Compras 16% -->
<!-- ITBIS purchases 16% -->
<record id="do_tcl_itbis16c_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_itbis_compras_16_en"/>
<field name="operator">-</field>
@@ -316,7 +321,7 @@
<field name="type">credit</field>
</record>
<!-- ITBIS Retención GC 30%: retención practicada, rate=-5.4% -->
<!-- Large-taxpayer ITBIS withholding 30%: rate=-5.4% -->
<record id="do_tcl_ret_itbis_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_itbis_retenido_en"/>
<field name="operator">-</field>
@@ -332,7 +337,7 @@
<field name="type">credit</field>
</record>
<!-- ITBIS Retención 100% Servicios: retención practicada -->
<!-- ITBIS withholding 100% on services -->
<record id="do_tcl_ret_itbis_inf_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_itbis_ret_informal_en"/>
<field name="operator">-</field>
@@ -348,7 +353,7 @@
<field name="type">credit</field>
</record>
<!-- ITBIS Retención 75% Proveedor Informal: retención practicada -->
<!-- ITBIS withholding 75% on informal suppliers -->
<record id="do_tcl_ret_itbis_inf75_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_itbis_ret_informal_75_en"/>
<field name="operator">-</field>
@@ -455,6 +460,13 @@
<field name="amount">tax</field>
<field name="type">invoice</field>
</record>
<record id="do_tcl_ret_itbis_air_cr_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_itbis_ret_sectorial_en"/>
<field name="operator">-</field>
<field name="tax" ref="do_tax_ret_itbis_airline_100_en"/>
<field name="amount">tax</field>
<field name="type">credit</field>
</record>
<record id="do_tcl_ret_itbis_soc_suf_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_itbis_ret_sectorial_en"/>
<field name="operator">+</field>
@@ -462,6 +474,13 @@
<field name="amount">tax</field>
<field name="type">invoice</field>
</record>
<record id="do_tcl_ret_itbis_soc_suf_cr_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_itbis_ret_sectorial_en"/>
<field name="operator">-</field>
<field name="tax" ref="do_tax_ret_itbis_society_30_suf_en"/>
<field name="amount">tax</field>
<field name="type">credit</field>
</record>
<record id="do_tcl_ret_itbis_hot_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_itbis_ret_sectorial_en"/>
<field name="operator">+</field>
@@ -469,6 +488,13 @@
<field name="amount">tax</field>
<field name="type">invoice</field>
</record>
<record id="do_tcl_ret_itbis_hot_cr_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_itbis_ret_sectorial_en"/>
<field name="operator">-</field>
<field name="tax" ref="do_tax_ret_itbis_hotel_100_en"/>
<field name="amount">tax</field>
<field name="type">credit</field>
</record>
<record id="do_tcl_ret_itbis_state_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_itbis_ret_sectorial_en"/>
<field name="operator">+</field>
@@ -476,8 +502,31 @@
<field name="amount">tax</field>
<field name="type">invoice</field>
</record>
<record id="do_tcl_ret_itbis_state_cr_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_itbis_ret_sectorial_en"/>
<field name="operator">-</field>
<field name="tax" ref="do_tax_ret_itbis_state_100_en"/>
<field name="amount">tax</field>
<field name="type">credit</field>
</record>
<!-- ITBIS Tasa Cero: seguimiento de base imponible (informativo) -->
<!-- Exempt ITBIS: informational taxable-base tracking -->
<record id="do_tcl_itbis_exempt_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_itbis_exempt_en"/>
<field name="operator">+</field>
<field name="tax" ref="do_tax_itbis_exento_en"/>
<field name="amount">base</field>
<field name="type">invoice</field>
</record>
<record id="do_tcl_itbis_exempt_cr_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_itbis_exempt_en"/>
<field name="operator">-</field>
<field name="tax" ref="do_tax_itbis_exento_en"/>
<field name="amount">base</field>
<field name="type">credit</field>
</record>
<!-- Zero-rate ITBIS: informational taxable-base tracking -->
<record id="do_tcl_itbis_tc_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_itbis_tasa_cero_en"/>
<field name="operator">+</field>
@@ -485,8 +534,15 @@
<field name="amount">base</field>
<field name="type">invoice</field>
</record>
<record id="do_tcl_itbis_tc_cr_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_itbis_tasa_cero_en"/>
<field name="operator">-</field>
<field name="tax" ref="do_tax_itbis_tasa_cero_en"/>
<field name="amount">base</field>
<field name="type">credit</field>
</record>
<!-- ISR Honorarios Personas Jurídicas 5% -->
<!-- ISR fees paid to legal entities 5% -->
<record id="do_tcl_isr_hon_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_honorarios_en"/>
<field name="operator">-</field>
@@ -502,7 +558,7 @@
<field name="type">credit</field>
</record>
<!-- ISR Honorarios Personas Físicas 10% -->
<!-- ISR fees paid to individuals 10% -->
<record id="do_tcl_isr_serv_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_servicios_en"/>
<field name="operator">-</field>
@@ -517,8 +573,22 @@
<field name="amount">tax</field>
<field name="type">credit</field>
</record>
<record id="do_tcl_isr_serv15_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_servicios_en"/>
<field name="operator">-</field>
<field name="tax" ref="do_tax_ret_isr_serv_15_en"/>
<field name="amount">tax</field>
<field name="type">invoice</field>
</record>
<record id="do_tcl_isr_serv15_cr_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_servicios_en"/>
<field name="operator">+</field>
<field name="tax" ref="do_tax_ret_isr_serv_15_en"/>
<field name="amount">tax</field>
<field name="type">credit</field>
</record>
<!-- ISR Dividendos 10% -->
<!-- ISR dividends 10% -->
<record id="do_tcl_isr_div_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_dividendos_en"/>
<field name="operator">-</field>
@@ -534,7 +604,7 @@
<field name="type">credit</field>
</record>
<!-- ISR Intereses Persona Física 10% -->
<!-- ISR interest paid to individuals 10% -->
<record id="do_tcl_isr_int_pf_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_intereses_pf_en"/>
<field name="operator">-</field>
@@ -550,7 +620,7 @@
<field name="type">credit</field>
</record>
<!-- ISR Intereses Persona Jurídica 1% -->
<!-- ISR interest paid to legal entities 1% -->
<record id="do_tcl_isr_int_pj_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_intereses_en"/>
<field name="operator">-</field>
@@ -566,7 +636,7 @@
<field name="type">credit</field>
</record>
<!-- ISR Alquileres 10% -->
<!-- ISR rentals 10% -->
<record id="do_tcl_isr_alq_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_alquileres_en"/>
<field name="operator">-</field>
@@ -581,8 +651,22 @@
<field name="amount">tax</field>
<field name="type">credit</field>
</record>
<record id="do_tcl_isr_alq15_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_alquileres_en"/>
<field name="operator">-</field>
<field name="tax" ref="do_tax_ret_isr_alq_15_en"/>
<field name="amount">tax</field>
<field name="type">invoice</field>
</record>
<record id="do_tcl_isr_alq15_cr_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_alquileres_en"/>
<field name="operator">+</field>
<field name="tax" ref="do_tax_ret_isr_alq_15_en"/>
<field name="amount">tax</field>
<field name="type">credit</field>
</record>
<!-- ISR Estado 1.5% -->
<!-- ISR state payments 1.5% -->
<record id="do_tcl_isr_est_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_gobierno_en"/>
<field name="operator">+</field>
@@ -598,7 +682,7 @@
<field name="type">credit</field>
</record>
<!-- ISR Estado 5%: retención sufrida -->
<!-- ISR state payments 5%: withholding suffered -->
<record id="do_tcl_isr_est5_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_gobierno_5_en"/>
<field name="operator">+</field>
@@ -614,7 +698,7 @@
<field name="type">credit</field>
</record>
<!-- ISR Ganadería/Carne Bovina 1%: retención practicada -->
<!-- ISR livestock/beef 1%: withholding made -->
<record id="do_tcl_isr_bovine_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_bovine_en"/>
<field name="operator">-</field>
@@ -630,7 +714,7 @@
<field name="type">credit</field>
</record>
<!-- ISR Exportadores 2.5%: retención sufrida -->
<!-- ISR exporters 2.5%: withholding suffered -->
<record id="do_tcl_isr_exporter_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_exporter_en"/>
<field name="operator">+</field>
@@ -646,7 +730,7 @@
<field name="type">credit</field>
</record>
<!-- ISR Premios 25% -->
<!-- ISR prizes 25% -->
<record id="do_tcl_isr_prem_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_premios_en"/>
<field name="operator">-</field>
@@ -704,6 +788,34 @@
<field name="amount">tax</field>
<field name="type">credit</field>
</record>
<record id="do_tcl_isr_betting15_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_premios_tramos_en"/>
<field name="operator">-</field>
<field name="tax" ref="do_tax_ret_isr_betting_15_en"/>
<field name="amount">tax</field>
<field name="type">invoice</field>
</record>
<record id="do_tcl_isr_betting15_cr_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_premios_tramos_en"/>
<field name="operator">+</field>
<field name="tax" ref="do_tax_ret_isr_betting_15_en"/>
<field name="amount">tax</field>
<field name="type">credit</field>
</record>
<record id="do_tcl_isr_trag15_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_premios_tramos_en"/>
<field name="operator">-</field>
<field name="tax" ref="do_tax_ret_isr_tragamonedas_15_en"/>
<field name="amount">tax</field>
<field name="type">invoice</field>
</record>
<record id="do_tcl_isr_trag15_cr_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_premios_tramos_en"/>
<field name="operator">+</field>
<field name="tax" ref="do_tax_ret_isr_tragamonedas_15_en"/>
<field name="amount">tax</field>
<field name="type">credit</field>
</record>
<record id="do_tcl_isr_other10_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_other_income_en"/>
<field name="operator">-</field>
@@ -718,8 +830,22 @@
<field name="amount">tax</field>
<field name="type">credit</field>
</record>
<record id="do_tcl_isr_other15_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_other_income_en"/>
<field name="operator">-</field>
<field name="tax" ref="do_tax_ret_isr_other_income_15_en"/>
<field name="amount">tax</field>
<field name="type">invoice</field>
</record>
<record id="do_tcl_isr_other15_cr_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_other_income_en"/>
<field name="operator">+</field>
<field name="tax" ref="do_tax_ret_isr_other_income_15_en"/>
<field name="amount">tax</field>
<field name="type">credit</field>
</record>
<!-- ISR Exterior 27% -->
<!-- Foreign-payment ISR 27% -->
<record id="do_tcl_isr_ext27_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_ext_en"/>
<field name="operator">-</field>
@@ -735,7 +861,7 @@
<field name="type">credit</field>
</record>
<!-- ISR Exterior 15% -->
<!-- Foreign-payment ISR 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>
@@ -751,7 +877,7 @@
<field name="type">credit</field>
</record>
<!-- ISR Exterior 10% -->
<!-- Foreign-payment ISR 10% -->
<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="operator">-</field>
@@ -767,7 +893,7 @@
<field name="type">credit</field>
</record>
<!-- ISC Bebidas alcohólicas -->
<!-- ISC alcoholic beverages -->
<record id="do_tcl_isc_beb_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isc_bebidas_en"/>
<field name="operator">+</field>
@@ -783,7 +909,7 @@
<field name="type">credit</field>
</record>
<!-- ISC Tabaco -->
<!-- ISC tobacco -->
<record id="do_tcl_isc_tab_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isc_tabaco_en"/>
<field name="operator">+</field>
@@ -799,7 +925,7 @@
<field name="type">credit</field>
</record>
<!-- ISC Telecomunicaciones -->
<!-- ISC telecommunications -->
<record id="do_tcl_isc_tel_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isc_telecom_en"/>
<field name="operator">+</field>
@@ -815,7 +941,7 @@
<field name="type">credit</field>
</record>
<!-- ISC Combustibles Fósiles -->
<!-- ISC fossil fuels -->
<record id="do_tcl_isc_comb_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isc_combustibles_en"/>
<field name="operator">+</field>
@@ -874,7 +1000,7 @@
<field name="type">credit</field>
</record>
<!-- ISC Vehículos -->
<!-- ISC vehicles -->
<record id="do_tcl_isc_veh_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isc_vehiculos_en"/>
<field name="operator">+</field>
@@ -906,7 +1032,7 @@
<field name="type">credit</field>
</record>
<!-- Propina Legal -->
<!-- Legal service charge -->
<record id="do_tcl_prop_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_others_tip_en"/>
<field name="operator">+</field>
@@ -922,7 +1048,7 @@
<field name="type">credit</field>
</record>
<!-- Impuesto Cheques y Transferencias -->
<!-- Tax on checks and transfers -->
<record id="do_tcl_chq_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_others_checks_en"/>
<field name="operator">+</field>
@@ -952,7 +1078,7 @@
<field name="type">credit</field>
</record>
<!-- Impuesto Mínimo a los Activos -->
<!-- Asset tax -->
<record id="do_tcl_act_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_others_assets_en"/>
<field name="operator">+</field>
@@ -968,7 +1094,7 @@
<field name="type">credit</field>
</record>
<!-- Impuesto sobre Transferencia Inmobiliaria -->
<!-- Real-estate transfer tax -->
<record id="do_tcl_iti_inv_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_others_iti_en"/>
<field name="operator">+</field>
+129 -5
View File
@@ -66,6 +66,11 @@
<field name="account" ref="do_account_root_es_419" />
<field name="parent" ref="do_tc_itbis_es_419" />
</record>
<record id="do_tc_itbis_exempt_es_419" model="account.tax.code.template">
<field name="name">ITBIS Exento — Base Imponible</field>
<field name="account" ref="do_account_root_es_419" />
<field name="parent" ref="do_tc_itbis_es_419" />
</record>
<record id="do_tc_itbis_tasa_cero_es_419" model="account.tax.code.template">
<field name="name">ITBIS Tasa Cero — Base Imponible (Exportaciones / Zona Franca)</field>
<field name="account" ref="do_account_root_es_419" />
@@ -82,7 +87,7 @@
<field name="parent" ref="do_tc_isr_es_419" />
</record>
<record id="do_tc_isr_servicios_es_419" model="account.tax.code.template">
<field name="name">Retención ISR Honorarios 10% (Personas Físicas)</field>
<field name="name">Retención ISR Honorarios y Servicios (Personas Físicas)</field>
<field name="account" ref="do_account_root_es_419" />
<field name="parent" ref="do_tc_isr_es_419" />
</record>
@@ -102,7 +107,7 @@
<field name="parent" ref="do_tc_isr_es_419" />
</record>
<record id="do_tc_isr_alquileres_es_419" model="account.tax.code.template">
<field name="name">Retención ISR Alquileres 10%</field>
<field name="name">Retención ISR Alquileres (Personas Físicas)</field>
<field name="account" ref="do_account_root_es_419" />
<field name="parent" ref="do_tc_isr_es_419" />
</record>
@@ -127,17 +132,17 @@
<field name="parent" ref="do_tc_isr_es_419" />
</record>
<record id="do_tc_isr_premios_es_419" model="account.tax.code.template">
<field name="name">Retención ISR Premios y Loterías 25% (Art. 321 CT)</field>
<field name="name">Retención ISR Premios, Loterías, Rifas y Apuestas 25%</field>
<field name="account" ref="do_account_root_es_419" />
<field name="parent" ref="do_tc_isr_es_419" />
</record>
<record id="do_tc_isr_premios_tramos_es_419" model="account.tax.code.template">
<field name="name">Retención ISR Premios 10% / 15% y Tragamonedas</field>
<field name="name">Retención ISR Premios de Apuestas y Tragamonedas</field>
<field name="account" ref="do_account_root_es_419" />
<field name="parent" ref="do_tc_isr_es_419" />
</record>
<record id="do_tc_isr_other_income_es_419" model="account.tax.code.template">
<field name="name">Retención ISR Otras Rentas 10%</field>
<field name="name">Retención ISR Otras Rentas</field>
<field name="account" ref="do_account_root_es_419" />
<field name="parent" ref="do_tc_isr_es_419" />
</record>
@@ -405,6 +410,13 @@
<field name="amount">tax</field>
<field name="type">invoice</field>
</record>
<record id="do_tcl_ret_itbis_air_cr_es_419" model="account.tax.code.line.template">
<field name="code" ref="do_tc_itbis_ret_sectorial_es_419" />
<field name="operator">-</field>
<field name="tax" ref="do_tax_ret_itbis_airline_100_es_419" />
<field name="amount">tax</field>
<field name="type">credit</field>
</record>
<record id="do_tcl_ret_itbis_soc_suf_inv_es_419" model="account.tax.code.line.template">
<field name="code" ref="do_tc_itbis_ret_sectorial_es_419" />
<field name="operator">+</field>
@@ -412,6 +424,13 @@
<field name="amount">tax</field>
<field name="type">invoice</field>
</record>
<record id="do_tcl_ret_itbis_soc_suf_cr_es_419" model="account.tax.code.line.template">
<field name="code" ref="do_tc_itbis_ret_sectorial_es_419" />
<field name="operator">-</field>
<field name="tax" ref="do_tax_ret_itbis_society_30_suf_es_419" />
<field name="amount">tax</field>
<field name="type">credit</field>
</record>
<record id="do_tcl_ret_itbis_hot_inv_es_419" model="account.tax.code.line.template">
<field name="code" ref="do_tc_itbis_ret_sectorial_es_419" />
<field name="operator">+</field>
@@ -419,6 +438,13 @@
<field name="amount">tax</field>
<field name="type">invoice</field>
</record>
<record id="do_tcl_ret_itbis_hot_cr_es_419" model="account.tax.code.line.template">
<field name="code" ref="do_tc_itbis_ret_sectorial_es_419" />
<field name="operator">-</field>
<field name="tax" ref="do_tax_ret_itbis_hotel_100_es_419" />
<field name="amount">tax</field>
<field name="type">credit</field>
</record>
<record id="do_tcl_ret_itbis_state_inv_es_419" model="account.tax.code.line.template">
<field name="code" ref="do_tc_itbis_ret_sectorial_es_419" />
<field name="operator">+</field>
@@ -426,6 +452,13 @@
<field name="amount">tax</field>
<field name="type">invoice</field>
</record>
<record id="do_tcl_ret_itbis_state_cr_es_419" model="account.tax.code.line.template">
<field name="code" ref="do_tc_itbis_ret_sectorial_es_419" />
<field name="operator">-</field>
<field name="tax" ref="do_tax_ret_itbis_state_100_es_419" />
<field name="amount">tax</field>
<field name="type">credit</field>
</record>
<record id="do_tcl_itbis_tc_inv_es_419" model="account.tax.code.line.template">
<field name="code" ref="do_tc_itbis_tasa_cero_es_419" />
<field name="operator">+</field>
@@ -433,6 +466,27 @@
<field name="amount">base</field>
<field name="type">invoice</field>
</record>
<record id="do_tcl_itbis_tc_cr_es_419" model="account.tax.code.line.template">
<field name="code" ref="do_tc_itbis_tasa_cero_es_419" />
<field name="operator">-</field>
<field name="tax" ref="do_tax_itbis_tasa_cero_es_419" />
<field name="amount">base</field>
<field name="type">credit</field>
</record>
<record id="do_tcl_itbis_exempt_inv_es_419" model="account.tax.code.line.template">
<field name="code" ref="do_tc_itbis_exempt_es_419" />
<field name="operator">+</field>
<field name="tax" ref="do_tax_itbis_exento_es_419" />
<field name="amount">base</field>
<field name="type">invoice</field>
</record>
<record id="do_tcl_itbis_exempt_cr_es_419" model="account.tax.code.line.template">
<field name="code" ref="do_tc_itbis_exempt_es_419" />
<field name="operator">-</field>
<field name="tax" ref="do_tax_itbis_exento_es_419" />
<field name="amount">base</field>
<field name="type">credit</field>
</record>
<record id="do_tcl_isr_hon_inv_es_419" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_honorarios_es_419" />
<field name="operator">-</field>
@@ -461,6 +515,20 @@
<field name="amount">tax</field>
<field name="type">credit</field>
</record>
<record id="do_tcl_isr_serv15_inv_es_419" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_servicios_es_419" />
<field name="operator">-</field>
<field name="tax" ref="do_tax_ret_isr_serv_15_es_419" />
<field name="amount">tax</field>
<field name="type">invoice</field>
</record>
<record id="do_tcl_isr_serv15_cr_es_419" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_servicios_es_419" />
<field name="operator">+</field>
<field name="tax" ref="do_tax_ret_isr_serv_15_es_419" />
<field name="amount">tax</field>
<field name="type">credit</field>
</record>
<record id="do_tcl_isr_div_inv_es_419" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_dividendos_es_419" />
<field name="operator">-</field>
@@ -517,6 +585,20 @@
<field name="amount">tax</field>
<field name="type">credit</field>
</record>
<record id="do_tcl_isr_alq15_inv_es_419" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_alquileres_es_419" />
<field name="operator">-</field>
<field name="tax" ref="do_tax_ret_isr_alq_15_es_419" />
<field name="amount">tax</field>
<field name="type">invoice</field>
</record>
<record id="do_tcl_isr_alq15_cr_es_419" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_alquileres_es_419" />
<field name="operator">+</field>
<field name="tax" ref="do_tax_ret_isr_alq_15_es_419" />
<field name="amount">tax</field>
<field name="type">credit</field>
</record>
<record id="do_tcl_isr_est_inv_es_419" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_gobierno_es_419" />
<field name="operator">+</field>
@@ -629,6 +711,34 @@
<field name="amount">tax</field>
<field name="type">credit</field>
</record>
<record id="do_tcl_isr_betting15_inv_es_419" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_premios_tramos_es_419" />
<field name="operator">-</field>
<field name="tax" ref="do_tax_ret_isr_betting_15_es_419" />
<field name="amount">tax</field>
<field name="type">invoice</field>
</record>
<record id="do_tcl_isr_betting15_cr_es_419" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_premios_tramos_es_419" />
<field name="operator">+</field>
<field name="tax" ref="do_tax_ret_isr_betting_15_es_419" />
<field name="amount">tax</field>
<field name="type">credit</field>
</record>
<record id="do_tcl_isr_trag15_inv_es_419" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_premios_tramos_es_419" />
<field name="operator">-</field>
<field name="tax" ref="do_tax_ret_isr_tragamonedas_15_es_419" />
<field name="amount">tax</field>
<field name="type">invoice</field>
</record>
<record id="do_tcl_isr_trag15_cr_es_419" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_premios_tramos_es_419" />
<field name="operator">+</field>
<field name="tax" ref="do_tax_ret_isr_tragamonedas_15_es_419" />
<field name="amount">tax</field>
<field name="type">credit</field>
</record>
<record id="do_tcl_isr_other10_inv_es_419" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_other_income_es_419" />
<field name="operator">-</field>
@@ -643,6 +753,20 @@
<field name="amount">tax</field>
<field name="type">credit</field>
</record>
<record id="do_tcl_isr_other15_inv_es_419" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_other_income_es_419" />
<field name="operator">-</field>
<field name="tax" ref="do_tax_ret_isr_other_income_15_es_419" />
<field name="amount">tax</field>
<field name="type">invoice</field>
</record>
<record id="do_tcl_isr_other15_cr_es_419" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_other_income_es_419" />
<field name="operator">+</field>
<field name="tax" ref="do_tax_ret_isr_other_income_15_es_419" />
<field name="amount">tax</field>
<field name="type">credit</field>
</record>
<record id="do_tcl_isr_ext27_inv_es_419" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_ext_es_419" />
<field name="operator">-</field>
+97 -32
View File
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<tryton>
<data language="en">
<!-- ===== Grupos de impuestos ===== -->
<!-- ===== Tax groups ===== -->
<record id="do_tax_group_itbis_en" model="account.tax.group">
<field name="name">ITBIS</field>
<field name="code">ITBIS</field>
@@ -34,11 +34,11 @@
</record>
</data>
<data language="en">
<!-- ===== Impuestos ===== -->
<!-- ===== Taxes ===== -->
<!-- invoice_account / credit_note_account → accounts from account_chart_do_en.xml -->
<!-- description: texto corto visible en líneas de factura -->
<!-- legal_notice: cita legal (~72 caracteres) — ver IMPUESTOS_RD.md -->
<!-- ══════ ITBIS — Arts. 335-392 CT Ley 11-92; Decreto 293-11 ══════ -->
<!-- description: short text displayed on invoice lines -->
<!-- legal_notice: concise legal citation -->
<!-- ══════ ITBIS — Tax Code Arts. 335-392; Decree 293-11 ══════ -->
<record id="do_tax_itbis_18_venta_en" model="account.tax.template">
<field name="name">ITBIS 18% — Sales (Legal and Natural Persons)</field>
<field name="description">ITBIS 18% Sales</field>
@@ -102,7 +102,7 @@
<field name="credit_note_account" ref="do_account_21020105_en" />
<field name="legal_notice">Tax Code Art. 342; Laws 557-05 and 8-90; DGII General Rule 05-19</field>
</record>
<!-- Retención ITBIS 30% Gran Contribuyente: tasa negativa (-5.4%) = 30% × 18% sobre la base -->
<!-- Large-taxpayer ITBIS withholding: -5.4% of base = 30% of 18% -->
<record id="do_tax_ret_itbis_30_en" model="account.tax.template">
<field name="name">ITBIS Withholding 30% — Large Taxpayer Agent (Legal and Natural Persons)</field>
<field name="description">ITBIS Withholding Large Taxpayer 30%</field>
@@ -114,7 +114,7 @@
<field name="credit_note_account" ref="do_account_21021101_en" />
<field name="legal_notice">DGII General Rule 01-11; Tax Code Arts. 309 and 337 — large taxpayers</field>
</record>
<!-- ══════ ISR RETENCIONES — Arts. 307-309 CT Ley 11-92; Decreto 95-12 ══════ -->
<!-- ══════ ISR WITHHOLDINGS — Tax Code Arts. 307-309; Decree 95-12 ══════ -->
<record id="do_tax_ret_isr_hon_5_en" model="account.tax.template">
<field name="name">ISR Withholding 5% — Fees and Services to Legal Entities</field>
<field name="description">ISR Withholding Legal Entity 5%</field>
@@ -131,12 +131,25 @@
<field name="description">ISR Withholding Individual 10%</field>
<field name="type">percentage</field>
<field name="rate" eval="Decimal('-10')/100" />
<field name="end_date" eval="datetime.date(2026, 6, 30)" />
<field name="group" ref="do_tax_group_isr_en" />
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021302_en" />
<field name="credit_note_account" ref="do_account_21021302_en" />
<field name="legal_notice">Tax Code Art. 309; Decree 95-12 — fees paid to individuals</field>
</record>
<record id="do_tax_ret_isr_serv_15_en" model="account.tax.template">
<field name="name">ISR Withholding 15% — Fees and Services Provided by Individuals</field>
<field name="description">ISR Withholding Individual 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_en" />
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021303_en" />
<field name="credit_note_account" ref="do_account_21021303_en" />
<field name="legal_notice">Tax Code Art. 309(b), amended by Law 30-26 Art. 17 — services provided by individuals</field>
</record>
<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="description">ISR Withholding Dividends 10%</field>
@@ -164,12 +177,25 @@
<field name="description">ISR Rental Withholding 10%</field>
<field name="type">percentage</field>
<field name="rate" eval="Decimal('-10')/100" />
<field name="end_date" eval="datetime.date(2026, 6, 30)" />
<field name="group" ref="do_tax_group_isr_en" />
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021401_en" />
<field name="credit_note_account" ref="do_account_21021401_en" />
<field name="legal_notice">Tax Code Art. 309; DGII General Rule 08-11 — rentals and leases</field>
</record>
<record id="do_tax_ret_isr_alq_15_en" model="account.tax.template">
<field name="name">ISR Withholding 15% — Rentals and Leases Provided by Individuals</field>
<field name="description">ISR Rental 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_en" />
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021402_en" />
<field name="credit_note_account" ref="do_account_21021402_en" />
<field name="legal_notice">Tax Code Art. 309(a), amended by Law 30-26 Art. 17 — rentals provided by individuals</field>
</record>
<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="description">ISR Withholding State 1.5%</field>
@@ -227,7 +253,7 @@
<field name="legal_notice">DGII General Rule 07-19; Tax Code Art. 306 bis — interest paid to legal entities</field>
</record>
<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% — Prizes, Lotteries, Raffles and Betting</field>
<field name="description">ISR Withholding on Prizes 25%</field>
<field name="type">percentage</field>
<field name="rate" eval="Decimal('-25')/100" />
@@ -235,13 +261,14 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021701_en" />
<field name="credit_note_account" ref="do_account_21021701_en" />
<field name="legal_notice">Tax Code Art. 321; Decree 95-12 — prizes and lotteries, final payment</field>
<field name="legal_notice">Tax Code Art. 309(c), amended by Law 30-26 Art. 17 — prizes in general and betting prizes above RD$600,000</field>
</record>
<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="description">ISR Withholding on Prizes 10%</field>
<field name="type">percentage</field>
<field name="rate" eval="Decimal('-10')/100" />
<field name="end_date" eval="datetime.date(2026, 6, 30)" />
<field name="group" ref="do_tax_group_isr_en" />
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021702_en" />
@@ -253,35 +280,74 @@
<field name="description">ISR Withholding on Prizes 15%</field>
<field name="type">percentage</field>
<field name="rate" eval="Decimal('-15')/100" />
<field name="end_date" eval="datetime.date(2026, 6, 30)" />
<field name="group" ref="do_tax_group_isr_en" />
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021703_en" />
<field name="credit_note_account" ref="do_account_21021703_en" />
<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 id="do_tax_ret_isr_betting_15_en" model="account.tax.template">
<field name="name">ISR Withholding 15% — Betting Prizes RD$200,001 to RD$600,000</field>
<field name="description">ISR Withholding Betting Prizes 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_en" />
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021705_en" />
<field name="credit_note_account" ref="do_account_21021705_en" />
<field name="legal_notice">Tax Code Art. 309(c)(i), amended by Law 30-26 Art. 17 — sports and lottery betting prizes</field>
</record>
<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="description">ISR Withholding Slot Machines 10%</field>
<field name="type">percentage</field>
<field name="rate" eval="Decimal('-10')/100" />
<field name="end_date" eval="datetime.date(2026, 6, 30)" />
<field name="group" ref="do_tax_group_isr_en" />
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021704_en" />
<field name="credit_note_account" ref="do_account_21021704_en" />
<field name="legal_notice">Tax Code Art. 309, amended by Law 253-12 — slot-machine prizes</field>
</record>
<record id="do_tax_ret_isr_tragamonedas_15_en" model="account.tax.template">
<field name="name">ISR Withholding 15% — Slot-Machine Prizes</field>
<field name="description">ISR Withholding Slot Machines 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_en" />
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021706_en" />
<field name="credit_note_account" ref="do_account_21021706_en" />
<field name="legal_notice">Tax Code Art. 309(d), amended by Law 30-26 Art. 17 — slot-machine prizes</field>
</record>
<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="description">ISR Withholding Other Income 10%</field>
<field name="type">percentage</field>
<field name="rate" eval="Decimal('-10')/100" />
<field name="end_date" eval="datetime.date(2026, 6, 30)" />
<field name="group" ref="do_tax_group_isr_en" />
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020301_en" />
<field name="credit_note_account" ref="do_account_21020301_en" />
<field name="legal_notice">Tax Code Art. 309, amended by Law 253-12 — other income not covered</field>
</record>
<!-- ══════ ISR PAGOS AL EXTERIOR — Arts. 305-306 CT Ley 11-92 ══════ -->
<record id="do_tax_ret_isr_other_income_15_en" model="account.tax.template">
<field name="name">ISR Withholding 15% — Other Income Not Expressly Covered</field>
<field name="description">ISR Withholding Other Income 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_en" />
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020302_en" />
<field name="credit_note_account" ref="do_account_21020302_en" />
<field name="legal_notice">Tax Code Art. 309(f), amended by Law 30-26 Art. 17 — other income not expressly covered</field>
</record>
<!-- ══════ FOREIGN-PAYMENT ISR — Tax Code Arts. 305-306 ══════ -->
<record id="do_tax_ret_isr_ext_27_en" model="account.tax.template">
<field name="name">ISR Withholding 27% — Other Taxable Payments Abroad (Non-Residents)</field>
<field name="description">Foreign ISR Withholding 27%</field>
@@ -316,8 +382,8 @@
<field name="credit_note_account" ref="do_account_21020702_en" />
<field name="legal_notice">Art. 306 CT — interest paid or credited abroad</field>
</record>
<!-- ══════ ITBIS ADICIONAL — Retenciones especiales DGII ══════ -->
<!-- Servicios gravados con retención del 100% del ITBIS según NG 01-11. -->
<!-- ══════ ADDITIONAL ITBIS — Special DGII withholdings ══════ -->
<!-- Taxable services with 100% ITBIS withholding under General Rule 01-11. -->
<record id="do_tax_ret_itbis_100_inf_en" model="account.tax.template">
<field name="name">ITBIS Withholding 100% — Taxable Services Subject to Withholding</field>
<field name="description">ITBIS Withholding Services 100%</field>
@@ -329,8 +395,8 @@
<field name="credit_note_account" ref="do_account_21020201_en" />
<field name="legal_notice">DGII General Rule 01-11 — 100% of ITBIS on taxable services</field>
</record>
<!-- Proveedor informal de bienes gravados: la NG 08-10 establece retención
del 75% del ITBIS. La tasa contable es -13.5% = 75% × 18%. -->
<!-- Taxable goods from informal suppliers: General Rule 08-10 requires
withholding 75% of ITBIS. The accounting rate is -13.5% = 75% × 18%. -->
<record id="do_tax_ret_itbis_75_inf_en" model="account.tax.template">
<field name="name">ITBIS Withholding 75% — Informal Supplier Goods (B11 / e-CF E41)</field>
<field name="description">ITBIS Withholding Informal Supplier 75%</field>
@@ -452,7 +518,7 @@
<field name="credit_note_account" ref="do_account_11040704_en" />
<field name="legal_notice">DGII Form IT-1 box 31 — ITBIS withheld by state institutions</field>
</record>
<!-- ══════ ISC — IMPUESTO SELECTIVO AL CONSUMO — Arts. 393-441 CT ══════ -->
<!-- ══════ ISC — SELECTIVE CONSUMPTION TAX — Tax Code Arts. 393-441 ══════ -->
<record id="do_tax_isc_bebidas_alc_en" model="account.tax.template">
<field name="name">ISC 10% — Alcoholic Beverages (Wines, Rum, Whiskey and Spirits)</field>
<field name="description">ISC Alcoholic Beverages 10%</field>
@@ -530,8 +596,8 @@
<field name="credit_note_account" ref="do_account_21020806_en" />
<field name="legal_notice">DGII General Rule 04-13 — insurers withhold 100% of billed ISC</field>
</record>
<!-- 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. -->
<!-- First-registration tax. The separate CO2 emissions tax is not modeled
because its rate depends on the vehicle's emissions. -->
<record id="do_tax_isc_vehiculos_en" model="account.tax.template">
<field name="name">First Vehicle Registration 17% — Imported Vehicles</field>
<field name="description">First Vehicle Plate 17%</field>
@@ -543,10 +609,9 @@
<field name="credit_note_account" ref="do_account_21020805_en" />
<field name="legal_notice">Law 557-05 Art. 22 — 17% of CIF value on first registration</field>
</record>
<!-- ══════ CDT — CONTRIBUCIÓN INDOTEL (LEY 153-98) ══════ -->
<!-- CDT: Contribución para el Desarrollo de las Telecomunicaciones.
Lo recaudan las empresas de telecom de sus customeres y lo remiten a INDOTEL.
Aparece como línea separada en facturas de telefonía e internet. -->
<!-- ══════ CDT — INDOTEL CONTRIBUTION (LAW 153-98) ══════ -->
<!-- Telecommunications companies collect the CDT from customers and remit
it to INDOTEL. It appears separately on telephone and internet bills. -->
<record id="do_tax_cdt_indotel_en" model="account.tax.template">
<field name="name">CDT 2% — Contribution for the Development of Telecommunications (INDOTEL)</field>
<field name="description">CDT INDOTEL 2%</field>
@@ -558,9 +623,9 @@
<field name="credit_note_account" ref="do_account_21020901_en" />
<field name="legal_notice">Telecommunications Law 153-98 Art. 26 — INDOTEL CDT at 2% of gross revenue</field>
</record>
<!-- ══════ OTROS IMPUESTOS Y CONTRIBUCIONES ══════ -->
<!-- Propina legal: cargo obligatorio para hoteles, restaurantes, cafés, barras
y establecimientos que expenden alimentos o bebidas. No es general. -->
<!-- ══════ OTHER TAXES AND CONTRIBUTIONS ══════ -->
<!-- The legal service charge applies to hotels, restaurants, cafes, bars
and similar establishments; it is not a general tax. -->
<record id="do_tax_propina_10_en" model="account.tax.template">
<field name="name">Legal Tip 10% — Restaurants, Bars and Hotels (Natural and Legal Persons)</field>
<field name="description">Legal Tip 10%</field>
@@ -572,8 +637,8 @@
<field name="credit_note_account" ref="do_account_21020501_en" />
<field name="legal_notice">Labour Code, Law 16-92 Art. 228 — mandatory 10% service charge</field>
</record>
<!-- 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. -->
<!-- 0.15% of checks and electronic bank debits. The bank collects it
automatically as a financial cost to the company. -->
<record id="do_tax_cheques_015_en" model="account.tax.template">
<field name="name">Tax on Checks and Bank Transfers 0.15% (Natural and Legal Persons)</field>
<field name="description">Checks and Transfers Tax 0.15%</field>
@@ -586,8 +651,8 @@
<field name="credit_note_account" ref="do_account_21021901_en" />
<field name="legal_notice">Tax Code Art. 382-D, amended by Law 288-04 — 1.5 per thousand on checks and debits</field>
</record>
<!-- 0.20% sobre valor de cheques y transferencias bancarias desde
2026-07-03. Se mantiene separado del 0.15% histórico. -->
<!-- 0.20% of checks and bank transfers from 2026-07-03. It remains
separate from the historical 0.15% tax. -->
<record id="do_tax_cheques_020_en" model="account.tax.template">
<field name="name">Tax on Checks and Bank Transfers 0.20% (Natural and Legal Persons)</field>
<field name="description">Checks and Transfers Tax 0.20%</field>
@@ -600,8 +665,8 @@
<field name="credit_note_account" ref="do_account_21021902_en" />
<field name="legal_notice">Law 30-26, effective 2026-07-03 — 2.0 per thousand on checks and transfers</field>
</record>
<!-- Impuesto anual sobre los activos imponibles. Su liquidación y crédito
contra ISR no se automatizan mediante esta plantilla contable. -->
<!-- Annual tax on taxable assets. This accounting template does not
automate its assessment or credit against ISR. -->
<record id="do_tax_activos_1_en" model="account.tax.template">
<field name="name">Asset Tax 1% (Legal Entities)</field>
<field name="description">Asset Tax 1%</field>
@@ -613,8 +678,8 @@
<field name="credit_note_account" ref="do_account_21020502_en" />
<field name="legal_notice">Tax Code Arts. 401-405; Art. 404 — 1% annually</field>
</record>
<!-- ITI: aplica a transferencias de bienes inmuebles. Las exenciones y la
valoración deben revisarse al liquidar cada operación. -->
<!-- ITI applies to real-estate transfers. Exemptions and valuation must be
reviewed when each transaction is assessed. -->
<record id="do_tax_iti_3_en" model="account.tax.template">
<field name="name">Real Estate Transfer Tax 3% (Natural and Legal Persons)</field>
<field name="description">ITI Real Estate Transfer 3%</field>
+68 -2
View File
@@ -123,17 +123,31 @@
<field name="description">Retención ISR Persona Física 10%</field>
<field name="type">percentage</field>
<field name="rate" eval="Decimal('-10')/100" />
<field name="end_date" eval="datetime.date(2026, 6, 30)" />
<field name="group" ref="do_tax_group_isr_es_419" />
<field name="account" ref="do_account_root_es_419" />
<field name="invoice_account" ref="do_account_21021302_es_419" />
<field name="credit_note_account" ref="do_account_21021302_es_419" />
<field name="legal_notice">Art. 309 CT Ley 11-92; Decreto 95-12 — Honorarios personas físicas</field>
</record>
<record id="do_tax_ret_isr_serv_15_es_419" model="account.tax.template">
<field name="name">Retención ISR 15% — Honorarios y Servicios Provistos por Personas Físicas</field>
<field name="description">Retención ISR Persona Física 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_es_419" />
<field name="account" ref="do_account_root_es_419" />
<field name="invoice_account" ref="do_account_21021303_es_419" />
<field name="credit_note_account" ref="do_account_21021303_es_419" />
<field name="legal_notice">Art. 309(b) CT, modificado por el art. 17 de la Ley 30-26 — servicios provistos por personas físicas</field>
</record>
<record id="do_tax_ret_isr_div_10_es_419" model="account.tax.template">
<field name="name">Retención ISR 10% — Dividendos y Utilidades Distribuidas (Personas Físicas y Jurídicas)</field>
<field name="description">Retención ISR Dividendos 10%</field>
<field name="type">percentage</field>
<field name="rate" eval="Decimal('-10')/100" />
<field name="end_date" eval="datetime.date(2026, 6, 30)" />
<field name="group" ref="do_tax_group_isr_es_419" />
<field name="account" ref="do_account_root_es_419" />
<field name="invoice_account" ref="do_account_21020601_es_419" />
@@ -162,6 +176,18 @@
<field name="credit_note_account" ref="do_account_21021401_es_419" />
<field name="legal_notice">Art. 309 CT; NG 08-11 DGII — Alquileres personas físicas y jurídicas</field>
</record>
<record id="do_tax_ret_isr_alq_15_es_419" model="account.tax.template">
<field name="name">Retención ISR 15% — Alquileres y Arrendamientos Provistos por Personas Físicas</field>
<field name="description">Retención ISR Alquileres 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_es_419" />
<field name="account" ref="do_account_root_es_419" />
<field name="invoice_account" ref="do_account_21021402_es_419" />
<field name="credit_note_account" ref="do_account_21021402_es_419" />
<field name="legal_notice">Art. 309(a) CT, modificado por el art. 17 de la Ley 30-26 — alquileres provistos por personas físicas</field>
</record>
<record id="do_tax_ret_isr_est_15_es_419" model="account.tax.template">
<field name="name">Retención ISR 1.5% — Pagos del Estado / Sector Público (Personas Físicas y Jurídicas)</field>
<field name="description">Retención ISR Estado 1.5%</field>
@@ -219,7 +245,7 @@
<field name="legal_notice">NG 07-19 DGII 2019; Art. 306 bis CT — Intereses personas jurídicas</field>
</record>
<record id="do_tax_ret_isr_premios_25_es_419" model="account.tax.template">
<field name="name">Retención ISR 25% — Premios de Lotería, Sorteos y Rifas (Personas Físicas y Jurídicas)</field>
<field name="name">Retención ISR 25% — Premios, Loterías, Rifas y Apuestas</field>
<field name="description">Retención ISR Premios 25%</field>
<field name="type">percentage</field>
<field name="rate" eval="Decimal('-25')/100" />
@@ -227,13 +253,14 @@
<field name="account" ref="do_account_root_es_419" />
<field name="invoice_account" ref="do_account_21021701_es_419" />
<field name="credit_note_account" ref="do_account_21021701_es_419" />
<field name="legal_notice">Art. 321 CT Ley 11-92; Decreto 95-12Premios y loterías, definitivo</field>
<field name="legal_notice">Art. 309(c) CT, modificado por el art. 17 de la Ley 30-26premios en general y premios de apuestas superiores a RD$600,000</field>
</record>
<record id="do_tax_ret_isr_premios_10_es_419" model="account.tax.template">
<field name="name">Retención ISR 10% — Premios RD$100,001 a RD$500,000</field>
<field name="description">Retención ISR Premios 10%</field>
<field name="type">percentage</field>
<field name="rate" eval="Decimal('-10')/100" />
<field name="end_date" eval="datetime.date(2026, 6, 30)" />
<field name="group" ref="do_tax_group_isr_es_419" />
<field name="account" ref="do_account_root_es_419" />
<field name="invoice_account" ref="do_account_21021702_es_419" />
@@ -245,34 +272,73 @@
<field name="description">Retención ISR Premios 15%</field>
<field name="type">percentage</field>
<field name="rate" eval="Decimal('-15')/100" />
<field name="end_date" eval="datetime.date(2026, 6, 30)" />
<field name="group" ref="do_tax_group_isr_es_419" />
<field name="account" ref="do_account_root_es_419" />
<field name="invoice_account" ref="do_account_21021703_es_419" />
<field name="credit_note_account" ref="do_account_21021703_es_419" />
<field name="legal_notice">Art. 309 CT mod. Ley 253-12 — premios RD$500,001 a RD$1,000,000 15%</field>
</record>
<record id="do_tax_ret_isr_betting_15_es_419" model="account.tax.template">
<field name="name">Retención ISR 15% — Premios de Apuestas RD$200,001 a RD$600,000</field>
<field name="description">Retención ISR Premios de Apuestas 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_es_419" />
<field name="account" ref="do_account_root_es_419" />
<field name="invoice_account" ref="do_account_21021705_es_419" />
<field name="credit_note_account" ref="do_account_21021705_es_419" />
<field name="legal_notice">Art. 309(c)(i) CT, modificado por el art. 17 de la Ley 30-26 — premios de apuestas deportivas y de lotería</field>
</record>
<record id="do_tax_ret_isr_tragamonedas_10_es_419" model="account.tax.template">
<field name="name">Retención ISR 10% — Premios Máquinas Tragamonedas</field>
<field name="description">Retención ISR Máquinas Tragamonedas 10%</field>
<field name="type">percentage</field>
<field name="rate" eval="Decimal('-10')/100" />
<field name="end_date" eval="datetime.date(2026, 6, 30)" />
<field name="group" ref="do_tax_group_isr_es_419" />
<field name="account" ref="do_account_root_es_419" />
<field name="invoice_account" ref="do_account_21021704_es_419" />
<field name="credit_note_account" ref="do_account_21021704_es_419" />
<field name="legal_notice">Art. 309 CT mod. Ley 253-12 — premios máquinas tragamonedas 10%</field>
</record>
<record id="do_tax_ret_isr_tragamonedas_15_es_419" model="account.tax.template">
<field name="name">Retención ISR 15% — Premios de Máquinas Tragamonedas</field>
<field name="description">Retención ISR Máquinas Tragamonedas 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_es_419" />
<field name="account" ref="do_account_root_es_419" />
<field name="invoice_account" ref="do_account_21021706_es_419" />
<field name="credit_note_account" ref="do_account_21021706_es_419" />
<field name="legal_notice">Art. 309(d) CT, modificado por el art. 17 de la Ley 30-26 — premios de máquinas tragamonedas</field>
</record>
<record id="do_tax_ret_isr_other_income_10_es_419" model="account.tax.template">
<field name="name">Retención ISR 10% — Otras Rentas no Contempladas</field>
<field name="description">Retención ISR Otras Rentas 10%</field>
<field name="type">percentage</field>
<field name="rate" eval="Decimal('-10')/100" />
<field name="end_date" eval="datetime.date(2026, 6, 30)" />
<field name="group" ref="do_tax_group_isr_es_419" />
<field name="account" ref="do_account_root_es_419" />
<field name="invoice_account" ref="do_account_21020301_es_419" />
<field name="credit_note_account" ref="do_account_21020301_es_419" />
<field name="legal_notice">Art. 309 CT mod. Ley 253-12 — otras rentas no contempladas 10%</field>
</record>
<record id="do_tax_ret_isr_other_income_15_es_419" model="account.tax.template">
<field name="name">Retención ISR 15% — Otras Rentas no Contempladas Expresamente</field>
<field name="description">Retención ISR Otras Rentas 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_es_419" />
<field name="account" ref="do_account_root_es_419" />
<field name="invoice_account" ref="do_account_21020302_es_419" />
<field name="credit_note_account" ref="do_account_21020302_es_419" />
<field name="legal_notice">Art. 309(f) CT, modificado por el art. 17 de la Ley 30-26 — otras rentas no contempladas expresamente</field>
</record>
<record id="do_tax_ret_isr_ext_27_es_419" model="account.tax.template">
<field name="name">Retención ISR 27% — Otros Pagos Gravados al Exterior (No Residentes)</field>
<field name="description">Retención ISR Exterior 27%</field>
+37 -13
View File
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- account_do: Reglas de impuestos - República Dominicana -->
<!-- account_do: Tax rules - Dominican Republic -->
<tryton>
<data language="en">
<!-- ===== Reglas de impuestos ===== -->
<!-- Regla customeres: al facturar aplica ITBIS 18% Ventas -->
<!-- ===== Tax rules ===== -->
<!-- Customer rule: use 18% sales ITBIS when invoicing -->
<record id="do_tax_rule_customer_en" model="account.tax.rule.template">
<field name="name">RD Customers Tax Rule</field>
<field name="kind">sale</field>
@@ -16,7 +16,7 @@
<field name="sequence" eval="10"/>
</record>
<!-- Regla proveedores: al recibir factura aplica ITBIS 18% Compras -->
<!-- Supplier rule: use 18% purchase ITBIS on incoming invoices -->
<record id="do_tax_rule_supplier_en" model="account.tax.rule.template">
<field name="name">RD Supplier Tax Rule</field>
<field name="kind">purchase</field>
@@ -29,7 +29,7 @@
<field name="sequence" eval="10"/>
</record>
<!-- Regla customeres exentos de ITBIS (art. 343-344 CT: salud, educación, etc.) -->
<!-- ITBIS-exempt customers (Tax Code Arts. 343-344) -->
<record id="do_tax_rule_customer_exento_en" model="account.tax.rule.template">
<field name="name">ITBIS Exempt Customers Rule (RD)</field>
<field name="kind">sale</field>
@@ -42,7 +42,7 @@
<field name="sequence" eval="10"/>
</record>
<!-- Regla customeres Zona Franca / Exportaciones (ITBIS tasa cero, NCF B14/E44) -->
<!-- Free-zone customers and exports (zero-rate ITBIS, NCF B14/E44) -->
<record id="do_tax_rule_customer_zf_en" model="account.tax.rule.template">
<field name="name">Free Zone Customers Rule / Exports (RD)</field>
<field name="kind">sale</field>
@@ -55,7 +55,7 @@
<field name="sequence" eval="10"/>
</record>
<!-- Regla proveedores no residentes (ISR pagos al exterior Art. 305-306 CT) -->
<!-- Non-resident suppliers (foreign-payment ISR, Tax Code Arts. 305-306) -->
<record id="do_tax_rule_supplier_ext_en" model="account.tax.rule.template">
<field name="name">Non-Resident Suppliers / Foreign Suppliers Rule (RD)</field>
<field name="kind">purchase</field>
@@ -80,7 +80,7 @@
<field name="sequence" eval="10"/>
</record>
<!-- Tasas especiales ITBIS -->
<!-- Special ITBIS rates -->
<record id="do_tax_rule_customer_itbis16_en" model="account.tax.rule.template">
<field name="name">ITBIS Customer Rule 16% Special Rate (RD)</field>
<field name="kind">sale</field>
@@ -104,7 +104,7 @@
<field name="sequence" eval="10"/>
</record>
<!-- Retenciones ITBIS que conservan el ITBIS base -->
<!-- ITBIS withholdings that preserve the original ITBIS -->
<record id="do_tax_rule_supplier_itbis_ret30_en" model="account.tax.rule.template">
<field name="name">Supplier Rule with ITBIS Withholding 30% (RD)</field>
<field name="kind">purchase</field>
@@ -141,8 +141,8 @@
<field name="keep_origin" eval="True"/>
<field name="sequence" eval="10"/>
</record>
<!-- Retenciones ISR por escenario. Estas reglas se aplican sobre impuestos
del grupo ISR; los impuestos ITBIS se mantienen separados. -->
<!-- Scenario-specific ISR withholdings. These rules apply to ISR-group
taxes; ITBIS taxes remain separate. -->
<record id="do_tax_rule_supplier_isr_pj_services_en" model="account.tax.rule.template">
<field name="name">ISR Rule Services Legal Entities 5% (RD)</field>
<field name="kind">purchase</field>
@@ -155,7 +155,7 @@
<field name="sequence" eval="10"/>
</record>
<record id="do_tax_rule_supplier_isr_pf_services_en" model="account.tax.rule.template">
<field name="name">ISR Rule Services Individuals 10% (RD)</field>
<field name="name">Individual Services ISR Rule (RD)</field>
<field name="kind">purchase</field>
<field name="account" ref="do_account_root_en"/>
</record>
@@ -163,10 +163,18 @@
<field name="rule" ref="do_tax_rule_supplier_isr_pf_services_en"/>
<field name="group" ref="do_tax_group_isr_en"/>
<field name="tax" ref="do_tax_ret_isr_serv_10_en"/>
<field name="end_date" eval="datetime.date(2026, 6, 30)"/>
<field name="sequence" eval="10"/>
</record>
<record id="do_trline_supp_isr_pf_services_15_en" model="account.tax.rule.line.template">
<field name="rule" ref="do_tax_rule_supplier_isr_pf_services_en"/>
<field name="group" ref="do_tax_group_isr_en"/>
<field name="tax" ref="do_tax_ret_isr_serv_15_en"/>
<field name="start_date" eval="datetime.date(2026, 7, 1)"/>
<field name="sequence" eval="20"/>
</record>
<record id="do_tax_rule_supplier_isr_rent_en" model="account.tax.rule.template">
<field name="name">Rent ISR Rule 10% (RD)</field>
<field name="name">Individual Rental ISR Rule (RD)</field>
<field name="kind">purchase</field>
<field name="account" ref="do_account_root_en"/>
</record>
@@ -174,8 +182,16 @@
<field name="rule" ref="do_tax_rule_supplier_isr_rent_en"/>
<field name="group" ref="do_tax_group_isr_en"/>
<field name="tax" ref="do_tax_ret_isr_alq_10_en"/>
<field name="end_date" eval="datetime.date(2026, 6, 30)"/>
<field name="sequence" eval="10"/>
</record>
<record id="do_trline_supp_isr_rent_15_en" model="account.tax.rule.line.template">
<field name="rule" ref="do_tax_rule_supplier_isr_rent_en"/>
<field name="group" ref="do_tax_group_isr_en"/>
<field name="tax" ref="do_tax_ret_isr_alq_15_en"/>
<field name="start_date" eval="datetime.date(2026, 7, 1)"/>
<field name="sequence" eval="20"/>
</record>
<record id="do_tax_rule_customer_state_isr15_en" model="account.tax.rule.template">
<field name="name">Customer Rule State / Public Sector ISR 1.5% (RD)</field>
<field name="kind">sale</field>
@@ -281,8 +297,16 @@
<field name="rule" ref="do_tax_rule_supplier_informal_services_en"/>
<field name="group" ref="do_tax_group_isr_en"/>
<field name="tax" ref="do_tax_ret_isr_serv_10_en"/>
<field name="end_date" eval="datetime.date(2026, 6, 30)"/>
<field name="sequence" eval="20"/>
</record>
<record id="do_trline_supp_inf_isr15_en" model="account.tax.rule.line.template">
<field name="rule" ref="do_tax_rule_supplier_informal_services_en"/>
<field name="group" ref="do_tax_group_isr_en"/>
<field name="tax" ref="do_tax_ret_isr_serv_15_en"/>
<field name="start_date" eval="datetime.date(2026, 7, 1)"/>
<field name="sequence" eval="30"/>
</record>
<record id="do_tax_rule_supplier_rst_en" model="account.tax.rule.template">
<field name="name">RST Provider Rule with ITBIS Withholding (RD)</field>
+26 -2
View File
@@ -138,7 +138,7 @@
<field name="sequence" eval="10" />
</record>
<record id="do_tax_rule_supplier_isr_pf_services_es_419" model="account.tax.rule.template">
<field name="name">Regla ISR Servicios Personas Físicas 10% (RD)</field>
<field name="name">Regla ISR Servicios de Personas Físicas (RD)</field>
<field name="kind">purchase</field>
<field name="account" ref="do_account_root_es_419" />
</record>
@@ -146,10 +146,18 @@
<field name="rule" ref="do_tax_rule_supplier_isr_pf_services_es_419" />
<field name="group" ref="do_tax_group_isr_es_419" />
<field name="tax" ref="do_tax_ret_isr_serv_10_es_419" />
<field name="end_date" eval="datetime.date(2026, 6, 30)" />
<field name="sequence" eval="10" />
</record>
<record id="do_trline_supp_isr_pf_services_15_es_419" model="account.tax.rule.line.template">
<field name="rule" ref="do_tax_rule_supplier_isr_pf_services_es_419" />
<field name="group" ref="do_tax_group_isr_es_419" />
<field name="tax" ref="do_tax_ret_isr_serv_15_es_419" />
<field name="start_date" eval="datetime.date(2026, 7, 1)" />
<field name="sequence" eval="20" />
</record>
<record id="do_tax_rule_supplier_isr_rent_es_419" model="account.tax.rule.template">
<field name="name">Regla ISR Alquileres 10% (RD)</field>
<field name="name">Regla ISR Alquileres de Personas Físicas (RD)</field>
<field name="kind">purchase</field>
<field name="account" ref="do_account_root_es_419" />
</record>
@@ -157,8 +165,16 @@
<field name="rule" ref="do_tax_rule_supplier_isr_rent_es_419" />
<field name="group" ref="do_tax_group_isr_es_419" />
<field name="tax" ref="do_tax_ret_isr_alq_10_es_419" />
<field name="end_date" eval="datetime.date(2026, 6, 30)" />
<field name="sequence" eval="10" />
</record>
<record id="do_trline_supp_isr_rent_15_es_419" model="account.tax.rule.line.template">
<field name="rule" ref="do_tax_rule_supplier_isr_rent_es_419" />
<field name="group" ref="do_tax_group_isr_es_419" />
<field name="tax" ref="do_tax_ret_isr_alq_15_es_419" />
<field name="start_date" eval="datetime.date(2026, 7, 1)" />
<field name="sequence" eval="20" />
</record>
<record id="do_tax_rule_customer_state_isr15_es_419" model="account.tax.rule.template">
<field name="name">Regla Cliente Estado / Sector Público ISR 1.5% (RD)</field>
<field name="kind">sale</field>
@@ -262,8 +278,16 @@
<field name="rule" ref="do_tax_rule_supplier_informal_services_es_419" />
<field name="group" ref="do_tax_group_isr_es_419" />
<field name="tax" ref="do_tax_ret_isr_serv_10_es_419" />
<field name="end_date" eval="datetime.date(2026, 6, 30)" />
<field name="sequence" eval="20" />
</record>
<record id="do_trline_supp_inf_isr15_es_419" model="account.tax.rule.line.template">
<field name="rule" ref="do_tax_rule_supplier_informal_services_es_419" />
<field name="group" ref="do_tax_group_isr_es_419" />
<field name="tax" ref="do_tax_ret_isr_serv_15_es_419" />
<field name="start_date" eval="datetime.date(2026, 7, 1)" />
<field name="sequence" eval="30" />
</record>
<record id="do_tax_rule_supplier_rst_es_419" model="account.tax.rule.template">
<field name="name">Regla Proveedor RST con Retención ITBIS (RD)</field>
<field name="kind">purchase</field>
+120 -13
View File
@@ -310,8 +310,10 @@ class AccountDoTestCase(ModuleTestCase):
'21020801',
'21020802', '21020803', '21020804', '21020805',
'21020901', '21021001', '21021101', '21021201',
'21021301', '21021302', '21021401', '21021501',
'21021502', '21021701', '21021801', '21021901',
'21020302', '21021301', '21021302', '21021303',
'21021401', '21021402', '21021501',
'21021502', '21021701', '21021705', '21021706',
'21021801', '21021901',
'21021902', '6208']:
with self.subTest(code=code):
self.assertTrue(Account.search([
@@ -426,6 +428,28 @@ class AccountDoTestCase(ModuleTestCase):
'date': datetime.date(2026, 7, 1),
}),
[foreign_15.id])
service_10, = Tax.search([
('company', '=', company.id),
('description', '=', 'ISR Withholding Individual 10%'),
], limit=1)
service_15, = Tax.search([
('company', '=', company.id),
('description', '=', 'ISR Withholding Individual 15%'),
], limit=1)
service_rule, = TaxRule.search([
('company', '=', company.id),
('name', '=', 'Individual Services ISR Rule (RD)'),
], limit=1)
self.assertEqual(
service_rule.apply(service_10, {
'date': datetime.date(2026, 6, 30),
}),
[service_10.id])
self.assertEqual(
service_rule.apply(service_10, {
'date': datetime.date(2026, 7, 1),
}),
[service_15.id])
itbis_sale, = Tax.search([
('company', '=', company.id),
('description', '=', 'ITBIS 18% Sales'),
@@ -452,6 +476,8 @@ class AccountDoTestCase(ModuleTestCase):
('ITBIS Withholding Large Taxpayer 30%', 'credit'): '+',
('ISR Withholding Individual 10%', 'invoice'): '-',
('ISR Withholding Individual 10%', 'credit'): '+',
('ISR Withholding Individual 15%', 'invoice'): '-',
('ISR Withholding Individual 15%', 'credit'): '+',
('ISR Withholding State 1.5%', 'invoice'): '+',
('ISR Withholding State 1.5%', 'credit'): '-',
('Checks and Transfers Tax 0.20%', 'invoice'): '+',
@@ -514,6 +540,8 @@ class SpanishAccountDoTestCase(ModuleTestCase):
}])
ModelData._migrate_localization_identifiers()
# A retried module update must be harmless.
ModelData._migrate_localization_identifiers()
self.assertEqual(
ModelData.get_id('account_do', 'do_account_root_es_419'),
@@ -597,40 +625,51 @@ class AccountDoUnitTestCase(unittest.TestCase):
'doc/releases.rst',
]:
self.assertTrue((MODULE_DIR / filename).is_file())
self.assertNotIn(
'Solu' + 'tema',
'\n'.join(
path.read_text(encoding='utf-8')
for path in MODULE_DIR.rglob('*')
if path.is_file()
and '.git' not in path.parts
and 'dist' not in path.parts
and (path.suffix in {'.py', '.rst', '.toml', '.xml'}
or path.name in {
'CHANGELOG', 'COPYRIGHT', 'tryton.cfg'})))
def test_xml_record_inventory_is_explicit(self):
expected = {
'account_chart_do_en.xml': {
'account.account.type.template': 36,
'account.account.template': 282,
'account.account.template': 287,
},
'tax_do_en.xml': {
'account.tax.group': 6,
'account.tax.template': 51,
'account.tax.template': 56,
},
'tax_code_do_en.xml': {
'account.tax.code.template': 43,
'account.tax.code.line.template': 95,
'account.tax.code.template': 44,
'account.tax.code.line.template': 112,
},
'tax_rule_do_en.xml': {
'account.tax.rule.template': 28,
'account.tax.rule.line.template': 31,
'account.tax.rule.line.template': 34,
},
'account_chart_do_es_419.xml': {
'account.account.type.template': 36,
'account.account.template': 282,
'account.account.template': 287,
},
'tax_do_es_419.xml': {
'account.tax.group': 6,
'account.tax.template': 51,
'account.tax.template': 56,
},
'tax_code_do_es_419.xml': {
'account.tax.code.template': 43,
'account.tax.code.line.template': 95,
'account.tax.code.template': 44,
'account.tax.code.line.template': 112,
},
'tax_rule_do_es_419.xml': {
'account.tax.rule.template': 28,
'account.tax.rule.line.template': 31,
'account.tax.rule.line.template': 34,
},
}
for filename, expected_counts in expected.items():
@@ -689,6 +728,20 @@ class AccountDoUnitTestCase(unittest.TestCase):
with self.subTest(phrase=phrase):
self.assertNotIn(phrase, text.lower())
def test_english_xml_comments_are_in_english(self):
text = '\n'.join(
(MODULE_DIR / filename).read_text(encoding='utf-8').lower()
for filename in [
'account_chart_do_en.xml', 'tax_do_en.xml',
'tax_code_do_en.xml', 'tax_rule_do_en.xml'])
for marker in [
'á', 'é', 'í', 'ó', 'ú', 'ñ',
' cuenta ', ' impuesto ', ' proveedor ', ' regla ',
' retención ', ' servicios ', ' tasa ',
]:
with self.subTest(marker=marker):
self.assertNotIn(marker, text)
def test_spanish_chart_has_complete_parallel_identifiers(self):
pairs = [
('account_chart_do_en.xml', 'account_chart_do_es_419.xml'),
@@ -729,6 +782,9 @@ class AccountDoUnitTestCase(unittest.TestCase):
self.assertEqual(
spanish_accounts['do_account_110201_es_419']['name'],
'Cuentas por cobrar clientes')
self.assertEqual(
spanish_accounts['do_account_110406_es_419']['name'],
'ITBIS retenido en adquisiciones a recuperar')
self.assertEqual(
spanish_taxes['do_tax_itbis_18_venta_es_419']['description'],
'ITBIS 18% Ventas')
@@ -891,7 +947,7 @@ class AccountDoUnitTestCase(unittest.TestCase):
'account_chart_do_en.xml')
if model == 'account.account.template'
}
self.assertEqual(len(taxes), 51)
self.assertEqual(len(taxes), 56)
for record_id, values in taxes.items():
with self.subTest(record_id=record_id):
self.assertEqual(
@@ -939,6 +995,26 @@ class AccountDoUnitTestCase(unittest.TestCase):
self.assertEqual(
taxes['do_tax_ret_isr_bovine_1']['start_date'],
'datetime.date(2025, 6, 20)')
for old_id in [
'do_tax_ret_isr_serv_10',
'do_tax_ret_isr_alq_10',
'do_tax_ret_isr_premios_10',
'do_tax_ret_isr_premios_15',
'do_tax_ret_isr_tragamonedas_10',
'do_tax_ret_isr_other_income_10',
]:
self.assertEqual(
taxes[old_id]['end_date'], 'datetime.date(2026, 6, 30)')
for current_id in [
'do_tax_ret_isr_serv_15',
'do_tax_ret_isr_alq_15',
'do_tax_ret_isr_betting_15',
'do_tax_ret_isr_tragamonedas_15',
'do_tax_ret_isr_other_income_15',
]:
self.assertEqual(
taxes[current_id]['start_date'],
'datetime.date(2026, 7, 1)')
self.assertIn(
'Tax Code Arts. 401-405; Art. 404',
taxes['do_tax_activos_1']['legal_notice'])
@@ -1036,6 +1112,37 @@ class AccountDoUnitTestCase(unittest.TestCase):
self.assertEqual(lines['do_tcl_isc_comb_inv']['operator'], '+')
self.assertEqual(lines['do_tcl_prop_inv']['code'], 'do_tc_others_tip')
def test_tax_code_lines_reverse_credit_notes(self):
"""Every reported amount must have an inverse credit-note line."""
pairs = {}
for _, record_id, model, values in _iter_xml_records(
'tax_code_do_en.xml'):
if model != 'account.tax.code.line.template':
continue
key = (values['tax'], values['amount'])
pair = pairs.setdefault(key, {})
self.assertNotIn(values['type'], pair)
pair[values['type']] = (
record_id, values['operator'])
for key, lines in pairs.items():
with self.subTest(tax=key[0], amount=key[1]):
self.assertEqual(set(lines), {'invoice', 'credit'})
self.assertNotEqual(
lines['invoice'][1], lines['credit'][1])
def test_every_tax_is_reported_by_a_tax_code(self):
taxes = {
record_id for _, record_id, model, _values
in _iter_xml_records('tax_do_en.xml')
if model == 'account.tax.template'
}
reported = {
values['tax'] for _, _, model, values
in _iter_xml_records('tax_code_do_en.xml')
if model == 'account.tax.code.line.template'
}
self.assertEqual(taxes, reported)
def test_tax_rule_templates_include_date_sensitive_bank_tax(self):
rules = {
record_id: values