Compare commits

5 Commits
Author SHA1 Message Date
José Arturo García 8bf88f4be3 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.
2026-08-10 09:09:59 -04:00
José Arturo García 4c42329379 Harden localization data and validation 2026-08-10 08:42:39 -04:00
José Arturo García b5cd05f5f5 Update foreign withholding and tax rules 2026-08-10 08:12:16 -04:00
José Arturo García 22281ed4a6 Classify foreign ISR withholdings separately
Assign payments to non-residents to the dedicated ISREXT group in both localization datasets and tax rules. Add regression checks for national and foreign ISR groups.
2026-08-10 02:23:01 -04:00
José Arturo García d708024c58 Start account_do 8.1 series 2026-08-10 00:12:02 -04:00
20 changed files with 1145 additions and 301 deletions
+9 -1
View File
@@ -1,4 +1,4 @@
Version 8.0.1 - 2026-08-09
Version 8.1.0 - 2026-08-10
--------------------------
* Initial release.
* Document tax requirements and official source provenance.
@@ -8,3 +8,11 @@ Version 8.0.1 - 2026-08-09
(``es_419``) accounting charts, pending availability of ``es_DO``.
* Preserve 8.0.0 chart records when migrating to language-scoped identifiers.
* 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.
* Translate every user-visible legal notice in the English tax catalog.
+1 -1
View File
@@ -1 +1 @@
Copyright (C) 2026 Solutema
Copyright (C) 2026 Fundación Un País Mejor
+10 -8
View File
@@ -3,6 +3,15 @@
from trytond.pool import Pool, PoolMeta
CHART_DEFAULT_ACCOUNTS = {
'account_do.do_account_root_en': (
'account_do.do_account_110201_en',
'account_do.do_account_210101_en'),
'account_do.do_account_root_es_419': (
'account_do.do_account_110201_es_419',
'account_do.do_account_210101_es_419'),
}
class CreateChart(metaclass=PoolMeta):
__name__ = 'account.create_chart'
@@ -12,14 +21,7 @@ class CreateChart(metaclass=PoolMeta):
ModelData = pool.get('ir.model.data')
defaults = super().default_properties(fields)
chart_defaults = {}
for root, accounts in [
('account_do.do_account_root_en', (
'account_do.do_account_110201_en',
'account_do.do_account_210101_en')),
('account_do.do_account_root_es_419', (
'account_do.do_account_110201_es_419',
'account_do.do_account_210101_es_419')),
]:
for root, accounts in CHART_DEFAULT_ACCOUNTS.items():
try:
chart_defaults[ModelData.get_id(root)] = accounts
except KeyError:
+48 -12
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>
@@ -1716,13 +1716,19 @@
<data language="en" grouped="1">
<record id="do_account_21020701_en" model="account.account.template">
<field name="code">21020701</field>
<field name="name">Foreign ISR services and royalties 27% payable</field>
<field name="name">Foreign ISR other taxable payments 27% payable</field>
<field name="parent" ref="do_account_210207_en"/>
<field name="type" ref="do_type_tax_payable_en"/>
</record>
<record id="do_account_21020702_en" model="account.account.template">
<field name="code">21020702</field>
<field name="name">Foreign ISR interest and assistance 10% payable</field>
<field name="name">Foreign ISR interest 10% payable</field>
<field name="parent" ref="do_account_210207_en"/>
<field name="type" ref="do_type_tax_payable_en"/>
</record>
<record id="do_account_21020703_en" model="account.account.template">
<field name="code">21020703</field>
<field name="name">Foreign ISR royalties, software and online services 15% payable</field>
<field name="parent" ref="do_account_210207_en"/>
<field name="type" ref="do_type_tax_payable_en"/>
</record>
@@ -1852,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">
@@ -1868,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">
@@ -2004,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">
@@ -2044,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">
+40 -4
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>
@@ -1708,13 +1708,19 @@
<data language="es_419" grouped="1">
<record id="do_account_21020701_es_419" model="account.account.template">
<field name="code">21020701</field>
<field name="name">ISR exterior servicios y regalías 27% por pagar</field>
<field name="name">ISR exterior otros pagos gravados 27% por pagar</field>
<field name="parent" ref="do_account_210207_es_419" />
<field name="type" ref="do_type_tax_payable_es_419" />
</record>
<record id="do_account_21020702_es_419" model="account.account.template">
<field name="code">21020702</field>
<field name="name">ISR exterior intereses y asistencia 10% por pagar</field>
<field name="name">ISR exterior intereses 10% por pagar</field>
<field name="parent" ref="do_account_210207_es_419" />
<field name="type" ref="do_type_tax_payable_es_419" />
</record>
<record id="do_account_21020703_es_419" model="account.account.template">
<field name="code">21020703</field>
<field name="name">ISR exterior regalías, software y servicios en línea 15% por pagar</field>
<field name="parent" ref="do_account_210207_es_419" />
<field name="type" ref="do_type_tax_payable_es_419" />
</record>
@@ -1844,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">
@@ -1860,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">
@@ -1996,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">
@@ -2036,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 281 templates: 70 grouping nodes and 211 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
281 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
281 codes are official would be incorrect.
287 codes are official would be incorrect.
Upstream Repository
-------------------
+1 -1
View File
@@ -1,7 +1,7 @@
Releases
========
8.0.1
8.1.0
-----
Initial release with the Dominican chart of accounts, fiscal accounts, taxes,
+3 -1
View File
@@ -56,8 +56,10 @@ Official References
<https://dgii.gov.do/legislacion/normasGenerales/Documents/NG%20sobre%20Veh%C3%ADculos%20de%20Motor/norma06-12.pdf>`_
* `General Rule 04-2025 (bovine subsector withholding)
<https://dgii.gov.do/legislacion/normasGenerales/Documents/Normas%20Sectoriales/Norma04-25.pdf>`_
* `Law 30-26 (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>`_
Review Record
-------------
+15
View File
@@ -87,6 +87,21 @@ The check and electronic-transfer templates preserve 0.15% through 2 July
2026 and 0.20% from 3 July 2026 under Law 30-26. Their tax rule switches rates
by accounting date.
Law 30-26 also introduced articles 305-1 and 305-2 of the Tax Code. From
1 July 2026, royalties or rights, software licences, online advertising and
the right to use or store data paid abroad are subject to a distinct 15%
withholding. Other taxable payments abroad remain at 27%, while article 306
interest remains at 10%. Technical assistance must therefore not be
classified as article 306 interest.
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
-------------------
+13 -7
View File
@@ -48,21 +48,27 @@ 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_ext_27``27% qualifying service or royalty paid abroad.
* ``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.
Selective and Sector Charges
+5 -7
View File
@@ -2,12 +2,10 @@
# this repository contains the full copyright notices and license terms.
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',
@@ -25,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',
@@ -36,7 +34,7 @@ LOCALIZATION_MODELS = {
'account.tax.rule.line.template',
'account.tax.rule.template',
'account.tax.template',
}
})
class ModelData(metaclass=PoolMeta):
@@ -60,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:
+199 -62
View File
@@ -1,24 +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 ===== -->
<record id="do_tc_root_en" model="account.tax.code.template">
<field name="name">Dominican Republic Taxes</field>
<field name="account" ref="do_account_root_en"/>
</record>
<!-- ===== Tax code tree ===== -->
<!-- ── ITBIS ───────────────────────────────────────────── -->
<record id="do_tc_itbis_en" model="account.tax.code.template">
<field name="name">ITBIS — Net Balance (Debit Credit)</field>
@@ -40,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"/>
@@ -57,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"/>
@@ -89,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"/>
@@ -108,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>
@@ -128,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>
@@ -153,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>
@@ -217,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"/>
@@ -249,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>
@@ -273,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>
@@ -289,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>
@@ -305,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>
@@ -321,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>
@@ -337,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>
@@ -353,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>
@@ -460,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>
@@ -467,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>
@@ -474,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>
@@ -481,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>
@@ -490,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>
@@ -507,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>
@@ -522,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>
@@ -539,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>
@@ -555,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>
@@ -571,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>
@@ -586,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>
@@ -603,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>
@@ -619,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>
@@ -635,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>
@@ -651,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>
@@ -709,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>
@@ -723,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>
@@ -740,7 +861,23 @@
<field name="type">credit</field>
</record>
<!-- ISR Exterior 10% -->
<!-- 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>
<field name="tax" ref="do_tax_ret_isr_ext_15_en"/>
<field name="amount">tax</field>
<field name="type">invoice</field>
</record>
<record id="do_tcl_isr_ext15_cr_en" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_ext_en"/>
<field name="operator">+</field>
<field name="tax" ref="do_tax_ret_isr_ext_15_en"/>
<field name="amount">tax</field>
<field name="type">credit</field>
</record>
<!-- 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>
@@ -756,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>
@@ -772,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>
@@ -788,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>
@@ -804,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>
@@ -863,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>
@@ -895,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>
@@ -911,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>
@@ -941,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>
@@ -957,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>
+143 -9
View File
@@ -1,10 +1,6 @@
<?xml version='1.0' encoding='utf-8'?>
<tryton>
<data language="es_419">
<record id="do_tc_root_es_419" model="account.tax.code.template">
<field name="name">Impuestos República Dominicana</field>
<field name="account" ref="do_account_root_es_419" />
</record>
<record id="do_tc_itbis_es_419" model="account.tax.code.template">
<field name="name">ITBIS — Balance Neto (Débito Crédito)</field>
<field name="account" ref="do_account_root_es_419" />
@@ -70,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" />
@@ -86,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>
@@ -106,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>
@@ -131,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>
@@ -409,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>
@@ -416,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>
@@ -423,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>
@@ -430,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>
@@ -437,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>
@@ -465,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>
@@ -521,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>
@@ -633,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>
@@ -647,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>
@@ -661,6 +781,20 @@
<field name="amount">tax</field>
<field name="type">credit</field>
</record>
<record id="do_tcl_isr_ext15_inv_es_419" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_ext_es_419" />
<field name="operator">-</field>
<field name="tax" ref="do_tax_ret_isr_ext_15_es_419" />
<field name="amount">tax</field>
<field name="type">invoice</field>
</record>
<record id="do_tcl_isr_ext15_cr_es_419" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_ext_es_419" />
<field name="operator">+</field>
<field name="tax" ref="do_tax_ret_isr_ext_15_es_419" />
<field name="amount">tax</field>
<field name="type">credit</field>
</record>
<record id="do_tcl_isr_ext10_inv_es_419" model="account.tax.code.line.template">
<field name="code" ref="do_tc_isr_ext_es_419" />
<field name="operator">-</field>
+162 -90
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>
@@ -12,11 +12,6 @@
<field name="code">ISR</field>
<field name="kind">both</field>
</record>
<record id="do_tax_group_exempt_en" model="account.tax.group">
<field name="name">Exempt / Zero Rate</field>
<field name="code">EX0</field>
<field name="kind">both</field>
</record>
<record id="do_tax_group_isc_en" model="account.tax.group">
<field name="name">ISC - Selective Consumer</field>
<field name="code">ISC</field>
@@ -39,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>
@@ -53,7 +48,7 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020101_en" />
<field name="credit_note_account" ref="do_account_21020101_en" />
<field name="legal_notice">Arts. 335-392 CT Ley 11-92; Ley 253-12 Art. 10; Decreto 293-11</field>
<field name="legal_notice">Tax Code Arts. 335-392; Law 253-12 Art. 10; Decree 293-11</field>
</record>
<record id="do_tax_itbis_16_venta_en" model="account.tax.template">
<field name="name">ITBIS 16% — Special Rate Sales (Legal and Natural Persons)</field>
@@ -64,7 +59,7 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020102_en" />
<field name="credit_note_account" ref="do_account_21020102_en" />
<field name="legal_notice">Art. 345 CT Ley 11-92 mod. Ley 253-12 — tasa especial 16%</field>
<field name="legal_notice">Tax Code Art. 345, amended by Law 253-12 — special 16% rate</field>
</record>
<record id="do_tax_itbis_18_compra_en" model="account.tax.template">
<field name="name">ITBIS 18% — Purchases / Tax Credit (Legal and Natural Persons)</field>
@@ -75,7 +70,7 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_11040101_en" />
<field name="credit_note_account" ref="do_account_11040101_en" />
<field name="legal_notice">Arts. 349-357 CT Ley 11-92 — Crédito fiscal ITBIS; Decreto 293-11</field>
<field name="legal_notice">Tax Code Arts. 349-357 — ITBIS input tax credit; Decree 293-11</field>
</record>
<record id="do_tax_itbis_16_compra_en" model="account.tax.template">
<field name="name">ITBIS 16% — Purchases / Tax Credit Special Rate</field>
@@ -86,7 +81,7 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_11040102_en" />
<field name="credit_note_account" ref="do_account_11040102_en" />
<field name="legal_notice">Art. 345 CT Ley 11-92 — Crédito fiscal tasa especial 16%</field>
<field name="legal_notice">Tax Code Art. 345 — input tax credit at the special 16% rate</field>
</record>
<record id="do_tax_itbis_exento_en" model="account.tax.template">
<field name="name">Exempt ITBIS — Exempt Goods and Services (Legal and Natural Persons)</field>
@@ -94,7 +89,7 @@
<field name="type">none</field>
<field name="group" ref="do_tax_group_itbis_en" />
<field name="account" ref="do_account_root_en" />
<field name="legal_notice">Arts. 343-344 CT Ley 11-92; Ley 288-04; NG 12-22 DGII</field>
<field name="legal_notice">Tax Code Arts. 343-344; Law 288-04; DGII General Rule 12-22</field>
</record>
<record id="do_tax_itbis_tasa_cero_en" model="account.tax.template">
<field name="name">ITBIS Zero Rate — Exports and Free Zone (Legal and Natural Persons)</field>
@@ -105,9 +100,9 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020105_en" />
<field name="credit_note_account" ref="do_account_21020105_en" />
<field name="legal_notice">Art. 342 CT; Ley 557-05; Ley 8-90 Zonas Francas; NG 05-19 DGII</field>
<field name="legal_notice">Tax Code Art. 342; Laws 557-05 and 8-90; DGII General Rule 05-19</field>
</record>
<!-- 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>
@@ -117,9 +112,9 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021101_en" />
<field name="credit_note_account" ref="do_account_21021101_en" />
<field name="legal_notice">NG 01-11 DGII 2011; Arts. 309 y 337 CT — Grandes Contribuyentes</field>
<field name="legal_notice">DGII General Rule 01-11; Tax Code Arts. 309 and 337 — large taxpayers</field>
</record>
<!-- ══════ 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>
@@ -129,18 +124,31 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021301_en" />
<field name="credit_note_account" ref="do_account_21021301_en" />
<field name="legal_notice">Art. 309 CT Ley 11-92; Decreto 95-12 — Honorarios personas jurídicas</field>
<field name="legal_notice">Tax Code Art. 309; Decree 95-12 — fees paid to legal entities</field>
</record>
<record id="do_tax_ret_isr_serv_10_en" model="account.tax.template">
<field name="name">ISR Withholding 10% — Fees and Services to Individuals</field>
<field name="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">Art. 309 CT Ley 11-92; Decreto 95-12 — Honorarios personas físicas</field>
<field name="legal_notice">Tax Code Art. 309; Decree 95-12 — fees paid to individuals</field>
</record>
<record 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>
@@ -151,7 +159,7 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020601_en" />
<field name="credit_note_account" ref="do_account_21020601_en" />
<field name="legal_notice">Art. 308 CT Ley 11-92; Decreto 95-12; Formulario IR-18</field>
<field name="legal_notice">Tax Code Art. 308; Decree 95-12; DGII Form IR-18</field>
</record>
<record id="do_tax_ret_isr_int_10_en" model="account.tax.template">
<field name="name">ISR Withholding 10% — Interest to Individuals (NG 07-19)</field>
@@ -162,18 +170,31 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021501_en" />
<field name="credit_note_account" ref="do_account_21021501_en" />
<field name="legal_notice">NG 07-19 DGII; Art. 306 bis CT Intereses personas físicas, definitivo</field>
<field name="legal_notice">DGII General Rule 07-19; Tax Code Art. 306 bis — interest paid to individuals</field>
</record>
<record id="do_tax_ret_isr_alq_10_en" model="account.tax.template">
<field name="name">ISR Withholding 10% — Rentals and Leases (Natural and Legal Persons)</field>
<field name="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">Art. 309 CT; NG 08-11 DGII — Alquileres personas físicas y jurídicas</field>
<field name="legal_notice">Tax Code Art. 309; DGII General Rule 08-11 — rentals and leases</field>
</record>
<record 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>
@@ -184,7 +205,7 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_11040801_en" />
<field name="credit_note_account" ref="do_account_11040801_en" />
<field name="legal_notice">Art. 309 CT; Decreto 95-12; Formulario 623 DGII — Sector público</field>
<field name="legal_notice">Tax Code Art. 309; Decree 95-12; DGII Form 623 — public sector</field>
</record>
<record id="do_tax_ret_isr_est_5_en" model="account.tax.template">
<field name="name">ISR Withholding 5% — State/Public Sector Payments (Natural and Legal Persons)</field>
@@ -195,7 +216,7 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_11040802_en" />
<field name="credit_note_account" ref="do_account_11040802_en" />
<field name="legal_notice">Art. 309 CT mod. Ley 253-12 — retención pagos del Estado 5%</field>
<field name="legal_notice">Tax Code Art. 309, amended by Law 253-12 — 5% on state payments</field>
</record>
<record id="do_tax_ret_isr_bovine_1_en" model="account.tax.template">
<field name="name">ISR Withholding 1% — Bovine Purchases from Unregistered Individuals</field>
@@ -207,7 +228,7 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021801_en" />
<field name="credit_note_account" ref="do_account_21021801_en" />
<field name="legal_notice">NG 04-2025 arts. 2, 4, 5 y 11 — 1% del monto facturado</field>
<field name="legal_notice">DGII General Rule 04-2025 Arts. 2, 4, 5 and 11 — 1% of billed amount</field>
</record>
<record id="do_tax_ret_isr_exporter_25_en" model="account.tax.template">
<field name="name">ISR Withholding 2.5% — Exporters in Sales to the Local Market</field>
@@ -218,7 +239,7 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_11040803_en" />
<field name="credit_note_account" ref="do_account_11040803_en" />
<field name="legal_notice">NG 15-07 DGII — retención 2.5% ventas locales de exportadores</field>
<field name="legal_notice">DGII General Rule 15-07 — 2.5% on exporters' domestic sales</field>
</record>
<record id="do_tax_ret_isr_int_pj_1_en" model="account.tax.template">
<field name="name">ISR Withholding 1% — Interest to Legal Entities (NG 07-19)</field>
@@ -229,10 +250,10 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021502_en" />
<field name="credit_note_account" ref="do_account_21021502_en" />
<field name="legal_notice">NG 07-19 DGII 2019; Art. 306 bis CT Intereses personas jurídicas</field>
<field name="legal_notice">DGII General Rule 07-19; Tax Code Art. 306 bis — interest paid to legal entities</field>
</record>
<record 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" />
@@ -240,77 +261,129 @@
<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">Art. 321 CT Ley 11-92; Decreto 95-12 — Premios y loterías, definitivo</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" />
<field name="credit_note_account" ref="do_account_21021702_en" />
<field name="legal_notice">Art. 309 CT mod. Ley 253-12 — premios RD$100,001 a RD$500,000 10%</field>
<field name="legal_notice">Tax Code Art. 309, amended by Law 253-12 — prizes from RD$100,001 to RD$500,000</field>
</record>
<record id="do_tax_ret_isr_premios_15_en" model="account.tax.template">
<field name="name">ISR Withholding 15% — Awards RD$500,001 to RD$1,000,000</field>
<field name="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">Art. 309 CT mod. Ley 253-12 — premios RD$500,001 a RD$1,000,000 15%</field>
<field name="legal_notice">Tax Code Art. 309, amended by Law 253-12 — prizes from RD$500,001 to RD$1,000,000</field>
</record>
<record 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">Art. 309 CT mod. Ley 253-12 — premios máquinas tragamonedas 10%</field>
<field name="legal_notice">Tax Code Art. 309, amended by Law 253-12 — slot-machine prizes</field>
</record>
<record 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">Art. 309 CT mod. Ley 253-12 — otras rentas no contempladas 10%</field>
<field name="legal_notice">Tax Code Art. 309, amended by Law 253-12 — other income not covered</field>
</record>
<!-- ══════ 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% — Payments Abroad: Services and Royalties (Non-Residents)</field>
<field name="name">ISR Withholding 27% — Other Taxable Payments Abroad (Non-Residents)</field>
<field name="description">Foreign ISR Withholding 27%</field>
<field name="type">percentage</field>
<field name="rate" eval="Decimal('-27')/100" />
<field name="group" ref="do_tax_group_isr_en" />
<field name="group" ref="do_tax_group_isr_ext_en" />
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020701_en" />
<field name="credit_note_account" ref="do_account_21020701_en" />
<field name="legal_notice">Art. 305 CT Ley 11-92 — Servicios y regalías a no residentes 27%</field>
<field name="legal_notice">Tax Code Art. 305 — taxable payments not subject to a special rate</field>
</record>
<record id="do_tax_ret_isr_ext_15_en" model="account.tax.template">
<field name="name">ISR Withholding 15% — Foreign Royalties, Software and Online Services</field>
<field name="description">Foreign ISR Withholding 15%</field>
<field name="type">percentage</field>
<field name="rate" eval="Decimal('-15')/100" />
<field name="start_date" eval="datetime.date(2026, 7, 1)" />
<field name="group" ref="do_tax_group_isr_ext_en" />
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020703_en" />
<field name="credit_note_account" ref="do_account_21020703_en" />
<field name="legal_notice">Arts. 305-1 and 305-2 CT, introduced by Law 30-26 — royalties or rights, software licences, online advertising and data use or storage</field>
</record>
<record id="do_tax_ret_isr_ext_10_en" model="account.tax.template">
<field name="name">ISR Withholding 10% — Payments Abroad: Interest and Technical Assistance (Non-Residents)</field>
<field name="name">ISR Withholding 10% — Interest Paid Abroad (Non-Residents)</field>
<field name="description">Foreign ISR Withholding 10%</field>
<field name="type">percentage</field>
<field name="rate" eval="Decimal('-10')/100" />
<field name="group" ref="do_tax_group_isr_en" />
<field name="group" ref="do_tax_group_isr_ext_en" />
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020702_en" />
<field name="credit_note_account" ref="do_account_21020702_en" />
<field name="legal_notice">Arts. 305-306 CT — Intereses y asistencia técnica a no residentes</field>
<field name="legal_notice">Art. 306 CT — interest paid or credited abroad</field>
</record>
<!-- ══════ 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>
@@ -320,10 +393,10 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020201_en" />
<field name="credit_note_account" ref="do_account_21020201_en" />
<field name="legal_notice">NG 01-11 DGII — Retención 100% ITBIS en servicios gravados</field>
<field name="legal_notice">DGII General Rule 01-11 — 100% of ITBIS on taxable services</field>
</record>
<!-- 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>
@@ -333,7 +406,7 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021201_en" />
<field name="credit_note_account" ref="do_account_21021201_en" />
<field name="legal_notice">NG 08-10 DGII — Retención 75% ITBIS compras a proveedores informales</field>
<field name="legal_notice">DGII General Rule 08-10 — 75% of ITBIS on informal-supplier purchases</field>
</record>
<record id="do_tax_ret_itbis_75_inf_16_en" model="account.tax.template">
<field name="name">ITBIS Withholding 75% — Goods Informal Supplier Rate 16%</field>
@@ -344,7 +417,7 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021202_en" />
<field name="credit_note_account" ref="do_account_21021202_en" />
<field name="legal_notice">IT-1 DGII casilla 57; NG 08-10/05-19 — 75% de ITBIS tasa 16%</field>
<field name="legal_notice">DGII Form IT-1 box 57; General Rules 08-10 and 05-19 — 75% at the 16% rate</field>
</record>
<record id="do_tax_ret_itbis_100_goods_18_en" model="account.tax.template">
<field name="name">ITBIS Withholding 100% — Goods Informal Supplier Rate 18%</field>
@@ -355,7 +428,7 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021203_en" />
<field name="credit_note_account" ref="do_account_21021203_en" />
<field name="legal_notice">IT-1 DGII casilla 56 — bienes comprobante de compras, retención 100%</field>
<field name="legal_notice">DGII Form IT-1 box 56 — goods supported by a purchase receipt, 100% withholding</field>
</record>
<record id="do_tax_ret_itbis_100_goods_16_en" model="account.tax.template">
<field name="name">ITBIS Withholding 100% — Goods Informal Supplier Rate 16%</field>
@@ -366,7 +439,7 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021204_en" />
<field name="credit_note_account" ref="do_account_21021204_en" />
<field name="legal_notice">IT-1 DGII casilla 57 — bienes comprobante de compras, retención 100%</field>
<field name="legal_notice">DGII Form IT-1 box 57 — goods supported by a purchase receipt, 100% withholding</field>
</record>
<record id="do_tax_ret_itbis_rst_18_en" model="account.tax.template">
<field name="name">ITBIS Withholding 100% — RST Taxpayers Rate 18%</field>
@@ -377,7 +450,7 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020202_en" />
<field name="credit_note_account" ref="do_account_21020202_en" />
<field name="legal_notice">IT-1 DGII casilla 53 — ITBIS retenido RST operaciones gravadas 18%</field>
<field name="legal_notice">DGII Form IT-1 box 53 — ITBIS withheld from RST taxable transactions at 18%</field>
</record>
<record id="do_tax_ret_itbis_rst_16_en" model="account.tax.template">
<field name="name">ITBIS Withholding 100% — RST Taxpayers Rate 16%</field>
@@ -388,7 +461,7 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020203_en" />
<field name="credit_note_account" ref="do_account_21020203_en" />
<field name="legal_notice">IT-1 DGII casilla 54 — ITBIS retenido RST operaciones gravadas 16%</field>
<field name="legal_notice">DGII Form IT-1 box 54 — ITBIS withheld from RST taxable transactions at 16%</field>
</record>
<record id="do_tax_ret_itbis_insurance_100_en" model="account.tax.template">
<field name="name">ITBIS Withholding 100% — Insurance Companies</field>
@@ -399,7 +472,7 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020204_en" />
<field name="credit_note_account" ref="do_account_21020204_en" />
<field name="legal_notice">NG 04-13 DGII — aseguradoras retienen 100% del ITBIS facturado</field>
<field name="legal_notice">DGII General Rule 04-13 — insurers withhold 100% of billed ITBIS</field>
</record>
<record id="do_tax_ret_itbis_airline_100_en" model="account.tax.template">
<field name="name">ITBIS Withheld by Airlines 100% — BSP/IATA</field>
@@ -410,7 +483,7 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_11040701_en" />
<field name="credit_note_account" ref="do_account_11040701_en" />
<field name="legal_notice">IT-1 DGII casilla 28; NG 02-05 — ITBIS retenido por aerolíneas</field>
<field name="legal_notice">DGII Form IT-1 box 28; General Rule 02-05 — ITBIS withheld by airlines</field>
</record>
<record id="do_tax_ret_itbis_society_30_suf_en" model="account.tax.template">
<field name="name">ITBIS Withheld by Companies 30% — Withholding Suffered</field>
@@ -421,7 +494,7 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_11040702_en" />
<field name="credit_note_account" ref="do_account_11040702_en" />
<field name="legal_notice">IT-1 DGII casilla 29; NG 02-05/07-09 — sociedades retienen ITBIS</field>
<field name="legal_notice">DGII Form IT-1 box 29; General Rules 02-05 and 07-09 — ITBIS withheld by companies</field>
</record>
<record id="do_tax_ret_itbis_hotel_100_en" model="account.tax.template">
<field name="name">ITBIS Withheld by Hotels 100% — Package Commissions</field>
@@ -432,7 +505,7 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_11040703_en" />
<field name="credit_note_account" ref="do_account_11040703_en" />
<field name="legal_notice">IT-1 DGII casilla 30; NG 02-05 — hoteles retienen ITBIS en comisiones</field>
<field name="legal_notice">DGII Form IT-1 box 30; General Rule 02-05 — ITBIS withheld by hotels on commissions</field>
</record>
<record id="do_tax_ret_itbis_state_100_en" model="account.tax.template">
<field name="name">ITBIS Withheld by State Entities 100%</field>
@@ -443,9 +516,9 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_11040704_en" />
<field name="credit_note_account" ref="do_account_11040704_en" />
<field name="legal_notice">IT-1 DGII casilla 31 — ITBIS retenido por instituciones del Estado</field>
<field name="legal_notice">DGII Form IT-1 box 31 — ITBIS withheld by state institutions</field>
</record>
<!-- ══════ 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>
@@ -455,7 +528,7 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020801_en" />
<field name="credit_note_account" ref="do_account_21020801_en" />
<field name="legal_notice">Ley 253-12 mod. Art. 375 CT — ISC bebidas alcohólicas ad valorem 10%</field>
<field name="legal_notice">Law 253-12, amending Tax Code Art. 375 — 10% ad valorem ISC on alcoholic beverages</field>
</record>
<record id="do_tax_isc_tabaco_en" model="account.tax.template">
<field name="name">ISC 20% — Tobacco, Cigarettes and Derivatives</field>
@@ -466,7 +539,7 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020802_en" />
<field name="credit_note_account" ref="do_account_21020802_en" />
<field name="legal_notice">Arts. 393-441 CT Ley 11-92 — ISC tabaco y cigarrillos, ad valorem 20%</field>
<field name="legal_notice">Tax Code Arts. 393-441 — 20% ad valorem ISC on tobacco and cigarettes</field>
</record>
<record id="do_tax_isc_telecom_en" model="account.tax.template">
<field name="name">ISC 10% — Telecommunications Services</field>
@@ -477,7 +550,7 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020803_en" />
<field name="credit_note_account" ref="do_account_21020803_en" />
<field name="legal_notice">Arts. 393-441 CT; Ley 253-12 — ISC servicios telecomunicaciones 10%</field>
<field name="legal_notice">Tax Code Arts. 393-441; Law 253-12 — 10% ISC on telecommunications services</field>
</record>
<record id="do_tax_isc_combustibles_16_en" model="account.tax.template">
<field name="name">ISC 16% — Fossil Fuels and Petroleum Derivatives</field>
@@ -488,7 +561,7 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020804_en" />
<field name="credit_note_account" ref="do_account_21020804_en" />
<field name="legal_notice">Ley 253-12 mod. Art. 367 CT — ISC combustibles fósiles 16%</field>
<field name="legal_notice">Law 253-12, amending Tax Code Art. 367 — 16% ISC on fossil fuels</field>
</record>
<record id="do_tax_isc_avtur_65_en" model="account.tax.template">
<field name="name">ISC 6.5% — Avtur Reduced Rate</field>
@@ -499,7 +572,7 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020807_en" />
<field name="credit_note_account" ref="do_account_21020807_en" />
<field name="legal_notice">Ley 253-12 Art. 23 — tasa reducida Avtur 6.5% ad valorem</field>
<field name="legal_notice">Law 253-12 Art. 23 — reduced 6.5% ad valorem rate for Avtur</field>
</record>
<record id="do_tax_isc_fuel_rd2_gallon_en" model="account.tax.template">
<field name="name">ISC RD$2.00 — Additional per Gallon Gasoline/Diesel</field>
@@ -510,7 +583,7 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020808_en" />
<field name="credit_note_account" ref="do_account_21020808_en" />
<field name="legal_notice">Ley 253-12 Art. 20 — adicional RD$2.00 por galón gasolina/gasoil</field>
<field name="legal_notice">Law 253-12 Art. 20 — additional RD$2.00 per gallon of gasoline or diesel</field>
</record>
<record id="do_tax_ret_isc_insurance_100_en" model="account.tax.template">
<field name="name">ISC Withholding 100% — Insurance Companies</field>
@@ -521,10 +594,10 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020806_en" />
<field name="credit_note_account" ref="do_account_21020806_en" />
<field name="legal_notice">NG 04-13 DGII — aseguradoras retienen 100% del ISC facturado</field>
<field name="legal_notice">DGII General Rule 04-13 — insurers withhold 100% of billed ISC</field>
</record>
<!-- 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>
@@ -534,12 +607,11 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020805_en" />
<field name="credit_note_account" ref="do_account_21020805_en" />
<field name="legal_notice">Art. 22 Ley 557-05 — 17% sobre valor CIF para primera placa</field>
<field name="legal_notice">Law 557-05 Art. 22 — 17% of CIF value on first registration</field>
</record>
<!-- ══════ 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>
@@ -549,11 +621,11 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020901_en" />
<field name="credit_note_account" ref="do_account_21020901_en" />
<field name="legal_notice">Art. 26 Ley 153-98 Telecomunicaciones — CDT INDOTEL 2% ingresos brutos</field>
<field name="legal_notice">Telecommunications Law 153-98 Art. 26 — INDOTEL CDT at 2% of gross revenue</field>
</record>
<!-- ══════ 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>
@@ -563,10 +635,10 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020501_en" />
<field name="credit_note_account" ref="do_account_21020501_en" />
<field name="legal_notice">Código de Trabajo, Ley 16-92, art. 228 — propina obligatoria 10%</field>
<field name="legal_notice">Labour Code, Law 16-92 Art. 228 — mandatory 10% service charge</field>
</record>
<!-- 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>
@@ -577,10 +649,10 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021901_en" />
<field name="credit_note_account" ref="do_account_21021901_en" />
<field name="legal_notice">Art. 382-D CT Ley 11-92 mod. Ley 288-04 — 1.5 por mil cheques/débitos</field>
<field name="legal_notice">Tax Code Art. 382-D, amended by Law 288-04 — 1.5 per thousand on checks and debits</field>
</record>
<!-- 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>
@@ -591,10 +663,10 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021902_en" />
<field name="credit_note_account" ref="do_account_21021902_en" />
<field name="legal_notice">Ley 30-26, vig. 2026-07-03 — 2.0 por mil cheques/transferencias</field>
<field name="legal_notice">Law 30-26, effective 2026-07-03 — 2.0 per thousand on checks and transfers</field>
</record>
<!-- 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>
@@ -604,10 +676,10 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21020502_en" />
<field name="credit_note_account" ref="do_account_21020502_en" />
<field name="legal_notice">Código Tributario, arts. 401-405; art. 404 — 1% anual</field>
<field name="legal_notice">Tax Code Arts. 401-405; Art. 404 — 1% annually</field>
</record>
<!-- 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>
@@ -617,7 +689,7 @@
<field name="account" ref="do_account_root_en" />
<field name="invoice_account" ref="do_account_21021001_en" />
<field name="credit_note_account" ref="do_account_21021001_en" />
<field name="legal_notice">Art. 20 Ley 288-04, mod. art. 7 Ley 173-07 — tasa 3%</field>
<field name="legal_notice">Law 288-04 Art. 20, amended by Law 173-07 Art. 7 — 3% rate</field>
</record>
</data>
</tryton>
+86 -13
View File
@@ -11,11 +11,6 @@
<field name="code">ISR</field>
<field name="kind">both</field>
</record>
<record id="do_tax_group_exempt_es_419" model="account.tax.group">
<field name="name">Exento / Tasa Cero</field>
<field name="code">EX0</field>
<field name="kind">both</field>
</record>
<record id="do_tax_group_isc_es_419" model="account.tax.group">
<field name="name">ISC - Selectivo al Consumo</field>
<field name="code">ISC</field>
@@ -128,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" />
@@ -167,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>
@@ -224,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" />
@@ -232,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" />
@@ -250,55 +272,106 @@
<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% — Pagos al Exterior: Servicios y Regalías (No Residentes)</field>
<field name="name">Retención ISR 27% — Otros Pagos Gravados al Exterior (No Residentes)</field>
<field name="description">Retención ISR Exterior 27%</field>
<field name="type">percentage</field>
<field name="rate" eval="Decimal('-27')/100" />
<field name="group" ref="do_tax_group_isr_es_419" />
<field name="group" ref="do_tax_group_isr_ext_es_419" />
<field name="account" ref="do_account_root_es_419" />
<field name="invoice_account" ref="do_account_21020701_es_419" />
<field name="credit_note_account" ref="do_account_21020701_es_419" />
<field name="legal_notice">Art. 305 CT Ley 11-92 — Servicios y regalías a no residentes 27%</field>
<field name="legal_notice">Art. 305 CT Ley 11-92 — pagos gravados no sujetos a una tasa especial</field>
</record>
<record id="do_tax_ret_isr_ext_15_es_419" model="account.tax.template">
<field name="name">Retención ISR 15% — Regalías, Software y Servicios en Línea al Exterior</field>
<field name="description">Retención ISR Exterior 15%</field>
<field name="type">percentage</field>
<field name="rate" eval="Decimal('-15')/100" />
<field name="start_date" eval="datetime.date(2026, 7, 1)" />
<field name="group" ref="do_tax_group_isr_ext_es_419" />
<field name="account" ref="do_account_root_es_419" />
<field name="invoice_account" ref="do_account_21020703_es_419" />
<field name="credit_note_account" ref="do_account_21020703_es_419" />
<field name="legal_notice">Arts. 305-1 y 305-2 CT, introducidos por Ley 30-26 — regalías o derechos, licencias de software, publicidad en línea y uso o almacenamiento de datos</field>
</record>
<record id="do_tax_ret_isr_ext_10_es_419" model="account.tax.template">
<field name="name">Retención ISR 10% — Pagos al Exterior: Intereses y Asistencia Técnica (No Residentes)</field>
<field name="name">Retención ISR 10% — Intereses Pagados al Exterior (No Residentes)</field>
<field name="description">Retención ISR Exterior 10%</field>
<field name="type">percentage</field>
<field name="rate" eval="Decimal('-10')/100" />
<field name="group" ref="do_tax_group_isr_es_419" />
<field name="group" ref="do_tax_group_isr_ext_es_419" />
<field name="account" ref="do_account_root_es_419" />
<field name="invoice_account" ref="do_account_21020702_es_419" />
<field name="credit_note_account" ref="do_account_21020702_es_419" />
<field name="legal_notice">Arts. 305-306 CT — Intereses y asistencia técnica a no residentes</field>
<field name="legal_notice">Art. 306 CT — intereses pagados o acreditados al exterior</field>
</record>
<record id="do_tax_ret_itbis_100_inf_es_419" model="account.tax.template">
<field name="name">Retención ITBIS 100% — Servicios Gravados Sujetos a Retención</field>
+81 -25
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>
@@ -63,12 +63,24 @@
</record>
<record id="do_trline_supp_ext_isr27_en" model="account.tax.rule.line.template">
<field name="rule" ref="do_tax_rule_supplier_ext_en"/>
<field name="group" ref="do_tax_group_isr_en"/>
<field name="group" ref="do_tax_group_isr_ext_en"/>
<field name="tax" ref="do_tax_ret_isr_ext_27_en"/>
<field name="sequence" eval="10"/>
</record>
<record id="do_tax_rule_supplier_ext_digital_en" model="account.tax.rule.template">
<field name="name">Foreign Royalties, Software and Online Services 15% Rule (RD)</field>
<field name="kind">purchase</field>
<field name="account" ref="do_account_root_en"/>
</record>
<record id="do_trline_supp_ext_isr15_en" model="account.tax.rule.line.template">
<field name="rule" ref="do_tax_rule_supplier_ext_digital_en"/>
<field name="group" ref="do_tax_group_isr_ext_en"/>
<field name="tax" ref="do_tax_ret_isr_ext_15_en"/>
<field name="start_date" eval="datetime.date(2026, 7, 1)"/>
<field name="sequence" eval="10"/>
</record>
<!-- Tasas especiales ITBIS -->
<!-- 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>
@@ -92,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>
@@ -129,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>
@@ -143,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>
@@ -151,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>
@@ -162,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>
@@ -219,11 +247,16 @@
<field name="tax" ref="do_tax_isc_combustibles_16_en"/>
<field name="sequence" eval="10"/>
</record>
<record id="do_tax_rule_customer_isc_fuel_rd2_en" model="account.tax.rule.template">
<field name="name">ISC Rule Additional RD$2 per Gallon of Fuel (RD)</field>
<field name="kind">sale</field>
<field name="account" ref="do_account_root_en"/>
</record>
<record id="do_trline_cust_isc_fuel_rd2_en" model="account.tax.rule.line.template">
<field name="rule" ref="do_tax_rule_customer_isc_fuel_en"/>
<field name="rule" ref="do_tax_rule_customer_isc_fuel_rd2_en"/>
<field name="group" ref="do_tax_group_isc_en"/>
<field name="tax" ref="do_tax_isc_fuel_rd2_gallon_en"/>
<field name="sequence" eval="20"/>
<field name="sequence" eval="10"/>
</record>
<record id="do_tax_rule_bank_check_transfer_en" model="account.tax.rule.template">
@@ -264,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>
@@ -299,38 +340,53 @@
<field name="sequence" eval="20"/>
</record>
<record id="do_tax_rule_customer_sectorial_retention_en" model="account.tax.rule.template">
<field name="name">Customer Rule with ITBIS Sectoral Withholding (RD)</field>
<record id="do_tax_rule_customer_sectorial_society_en" model="account.tax.rule.template">
<field name="name">ITBIS Withheld by Companies 30% Customer Rule (RD)</field>
<field name="kind">sale</field>
<field name="account" ref="do_account_root_en"/>
</record>
<record id="do_trline_cust_sectorial_society_en" model="account.tax.rule.line.template">
<field name="rule" ref="do_tax_rule_customer_sectorial_retention_en"/>
<field name="rule" ref="do_tax_rule_customer_sectorial_society_en"/>
<field name="group" ref="do_tax_group_itbis_en"/>
<field name="tax" ref="do_tax_ret_itbis_society_30_suf_en"/>
<field name="keep_origin" eval="True"/>
<field name="sequence" eval="10"/>
</record>
<record id="do_tax_rule_customer_sectorial_airline_en" model="account.tax.rule.template">
<field name="name">ITBIS Withheld by Airlines Customer Rule (RD)</field>
<field name="kind">sale</field>
<field name="account" ref="do_account_root_en"/>
</record>
<record id="do_trline_cust_sectorial_airline_en" model="account.tax.rule.line.template">
<field name="rule" ref="do_tax_rule_customer_sectorial_retention_en"/>
<field name="rule" ref="do_tax_rule_customer_sectorial_airline_en"/>
<field name="group" ref="do_tax_group_itbis_en"/>
<field name="tax" ref="do_tax_ret_itbis_airline_100_en"/>
<field name="keep_origin" eval="True"/>
<field name="sequence" eval="20"/>
<field name="sequence" eval="10"/>
</record>
<record id="do_tax_rule_customer_sectorial_hotel_en" model="account.tax.rule.template">
<field name="name">ITBIS Withheld by Hotels Customer Rule (RD)</field>
<field name="kind">sale</field>
<field name="account" ref="do_account_root_en"/>
</record>
<record id="do_trline_cust_sectorial_hotel_en" model="account.tax.rule.line.template">
<field name="rule" ref="do_tax_rule_customer_sectorial_retention_en"/>
<field name="rule" ref="do_tax_rule_customer_sectorial_hotel_en"/>
<field name="group" ref="do_tax_group_itbis_en"/>
<field name="tax" ref="do_tax_ret_itbis_hotel_100_en"/>
<field name="keep_origin" eval="True"/>
<field name="sequence" eval="30"/>
<field name="sequence" eval="10"/>
</record>
<record id="do_tax_rule_customer_sectorial_state_en" model="account.tax.rule.template">
<field name="name">ITBIS Withheld by State Entities Customer Rule (RD)</field>
<field name="kind">sale</field>
<field name="account" ref="do_account_root_en"/>
</record>
<record id="do_trline_cust_sectorial_state_en" model="account.tax.rule.line.template">
<field name="rule" ref="do_tax_rule_customer_sectorial_retention_en"/>
<field name="rule" ref="do_tax_rule_customer_sectorial_state_en"/>
<field name="group" ref="do_tax_group_itbis_en"/>
<field name="tax" ref="do_tax_ret_itbis_state_100_en"/>
<field name="keep_origin" eval="True"/>
<field name="sequence" eval="40"/>
<field name="sequence" eval="10"/>
</record>
</data>
</tryton>
+70 -14
View File
@@ -52,10 +52,22 @@
</record>
<record id="do_trline_supp_ext_isr27_es_419" model="account.tax.rule.line.template">
<field name="rule" ref="do_tax_rule_supplier_ext_es_419" />
<field name="group" ref="do_tax_group_isr_es_419" />
<field name="group" ref="do_tax_group_isr_ext_es_419" />
<field name="tax" ref="do_tax_ret_isr_ext_27_es_419" />
<field name="sequence" eval="10" />
</record>
<record id="do_tax_rule_supplier_ext_digital_es_419" model="account.tax.rule.template">
<field name="name">Regla Regalías, Software y Servicios en Línea al Exterior 15% (RD)</field>
<field name="kind">purchase</field>
<field name="account" ref="do_account_root_es_419" />
</record>
<record id="do_trline_supp_ext_isr15_es_419" model="account.tax.rule.line.template">
<field name="rule" ref="do_tax_rule_supplier_ext_digital_es_419" />
<field name="group" ref="do_tax_group_isr_ext_es_419" />
<field name="tax" ref="do_tax_ret_isr_ext_15_es_419" />
<field name="start_date" eval="datetime.date(2026, 7, 1)" />
<field name="sequence" eval="10" />
</record>
<record id="do_tax_rule_customer_itbis16_es_419" model="account.tax.rule.template">
<field name="name">Regla Clientes ITBIS 16% Tasa Especial (RD)</field>
<field name="kind">sale</field>
@@ -126,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>
@@ -134,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>
@@ -145,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>
@@ -202,11 +230,16 @@
<field name="tax" ref="do_tax_isc_combustibles_16_es_419" />
<field name="sequence" eval="10" />
</record>
<record id="do_tax_rule_customer_isc_fuel_rd2_es_419" model="account.tax.rule.template">
<field name="name">Regla ISC Adicional RD$2 por Galón de Combustible (RD)</field>
<field name="kind">sale</field>
<field name="account" ref="do_account_root_es_419" />
</record>
<record id="do_trline_cust_isc_fuel_rd2_es_419" model="account.tax.rule.line.template">
<field name="rule" ref="do_tax_rule_customer_isc_fuel_es_419" />
<field name="rule" ref="do_tax_rule_customer_isc_fuel_rd2_es_419" />
<field name="group" ref="do_tax_group_isc_es_419" />
<field name="tax" ref="do_tax_isc_fuel_rd2_gallon_es_419" />
<field name="sequence" eval="20" />
<field name="sequence" eval="10" />
</record>
<record id="do_tax_rule_bank_check_transfer_es_419" model="account.tax.rule.template">
<field name="name">Regla Bancaria Cheques / Transferencias Electrónicas (RD)</field>
@@ -245,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>
@@ -277,38 +318,53 @@
<field name="tax" ref="do_tax_ret_isc_insurance_100_es_419" />
<field name="sequence" eval="20" />
</record>
<record id="do_tax_rule_customer_sectorial_retention_es_419" model="account.tax.rule.template">
<field name="name">Regla Cliente con Retención Sectorial ITBIS (RD)</field>
<record id="do_tax_rule_customer_sectorial_society_es_419" model="account.tax.rule.template">
<field name="name">Regla Cliente ITBIS Retenido por Sociedades 30% (RD)</field>
<field name="kind">sale</field>
<field name="account" ref="do_account_root_es_419" />
</record>
<record id="do_trline_cust_sectorial_society_es_419" model="account.tax.rule.line.template">
<field name="rule" ref="do_tax_rule_customer_sectorial_retention_es_419" />
<field name="rule" ref="do_tax_rule_customer_sectorial_society_es_419" />
<field name="group" ref="do_tax_group_itbis_es_419" />
<field name="tax" ref="do_tax_ret_itbis_society_30_suf_es_419" />
<field name="keep_origin" eval="True" />
<field name="sequence" eval="10" />
</record>
<record id="do_tax_rule_customer_sectorial_airline_es_419" model="account.tax.rule.template">
<field name="name">Regla Cliente ITBIS Retenido por Aerolíneas (RD)</field>
<field name="kind">sale</field>
<field name="account" ref="do_account_root_es_419" />
</record>
<record id="do_trline_cust_sectorial_airline_es_419" model="account.tax.rule.line.template">
<field name="rule" ref="do_tax_rule_customer_sectorial_retention_es_419" />
<field name="rule" ref="do_tax_rule_customer_sectorial_airline_es_419" />
<field name="group" ref="do_tax_group_itbis_es_419" />
<field name="tax" ref="do_tax_ret_itbis_airline_100_es_419" />
<field name="keep_origin" eval="True" />
<field name="sequence" eval="20" />
<field name="sequence" eval="10" />
</record>
<record id="do_tax_rule_customer_sectorial_hotel_es_419" model="account.tax.rule.template">
<field name="name">Regla Cliente ITBIS Retenido por Hoteles (RD)</field>
<field name="kind">sale</field>
<field name="account" ref="do_account_root_es_419" />
</record>
<record id="do_trline_cust_sectorial_hotel_es_419" model="account.tax.rule.line.template">
<field name="rule" ref="do_tax_rule_customer_sectorial_retention_es_419" />
<field name="rule" ref="do_tax_rule_customer_sectorial_hotel_es_419" />
<field name="group" ref="do_tax_group_itbis_es_419" />
<field name="tax" ref="do_tax_ret_itbis_hotel_100_es_419" />
<field name="keep_origin" eval="True" />
<field name="sequence" eval="30" />
<field name="sequence" eval="10" />
</record>
<record id="do_tax_rule_customer_sectorial_state_es_419" model="account.tax.rule.template">
<field name="name">Regla Cliente ITBIS Retenido por Instituciones del Estado (RD)</field>
<field name="kind">sale</field>
<field name="account" ref="do_account_root_es_419" />
</record>
<record id="do_trline_cust_sectorial_state_es_419" model="account.tax.rule.line.template">
<field name="rule" ref="do_tax_rule_customer_sectorial_retention_es_419" />
<field name="rule" ref="do_tax_rule_customer_sectorial_state_es_419" />
<field name="group" ref="do_tax_group_itbis_es_419" />
<field name="tax" ref="do_tax_ret_itbis_state_100_es_419" />
<field name="keep_origin" eval="True" />
<field name="sequence" eval="40" />
<field name="sequence" eval="10" />
</record>
</data>
</tryton>
-1
View File
@@ -1 +0,0 @@
+250 -36
View File
@@ -1,5 +1,5 @@
import unittest
import datetime
import unittest
from collections import Counter
from configparser import ConfigParser
from decimal import Decimal
@@ -75,15 +75,18 @@ IFRS_ACCOUNT_TYPE_AUDIT = {
IFRS_POLICY_COVERAGE = {
'NIC 1': {'11', '12', '21', '23', '3106', '7101', '7102'},
'NIC 2': {'1103', '110305', '5101', '5106'},
'NIIF 9': {'110205', '110701', '110702', '110703', '120701',
'120702', '120703', '4208', '6206', '310604'},
'NIIF 9': {
'110205', '110701', '110702', '110703', '120701', '120702',
'120703', '4208', '6206', '310604'},
'NIIF 15': {'110601', '210501', '4101', '4102', '4103', '4104'},
'NIIF 16': {'120501', '120591', '120592', '230201', '230202',
'6112', '6203'},
'NIIF 16': {
'120501', '120591', '120592', '230201', '230202', '6112',
'6203'},
'NIC 12': {'120601', '230301', '6301', '6302', '6303'},
'NIC 16': {'120101', '120191', '120192', '6110', '6116'},
'NIC 36': {'111002', '120192', '120292', '120392', '120592',
'120892', '120992', '6116', '6117', '4206'},
'NIC 36': {
'111002', '120192', '120292', '120392', '120592', '120892',
'120992', '6116', '6117', '4206'},
'NIC 37': {'220101', '230401', '6118', '4207'},
'NIC 38': {'120901', '120991', '120992', '6111', '6117'},
'NIC 40': {'120801', '120891', '120892', '4209', '6207'},
@@ -198,7 +201,8 @@ class AccountDoTestCase(ModuleTestCase):
template_id = ModelData.get_id(
'account_do', 'do_account_root_es_419')
except KeyError:
self.skipTest('The es_419 chart is loaded only for es_419 databases')
self.skipTest(
'The es_419 chart is loaded only for es_419 databases')
template = AccountTemplate(template_id)
session_id, _start, _end = CreateChart.create()
@@ -302,11 +306,14 @@ class AccountDoTestCase(ModuleTestCase):
'210218', '210219',
'21020101', '21020102', '21020103', '21020104',
'21020105', '21020201', '21020501', '21020502',
'21020601', '21020701', '21020702', '21020801',
'21020601', '21020701', '21020702', '21020703',
'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([
@@ -358,14 +365,23 @@ class AccountDoTestCase(ModuleTestCase):
], limit=1))
self.assertTrue(Tax.search([
('company', '=', company.id),
('description', '=', 'ITBIS Withholding Large Taxpayer 30%'),
('description', '=',
'ITBIS Withholding Large Taxpayer 30%'),
('rate', '=', Decimal('-0.054')),
], limit=1))
self.assertTrue(Tax.search([
('company', '=', company.id),
('description', '=', 'ITBIS Withholding Informal Supplier 75%'),
('description', '=',
'ITBIS Withholding Informal Supplier 75%'),
('rate', '=', Decimal('-0.135')),
], limit=1))
foreign_15, = Tax.search([
('company', '=', company.id),
('description', '=', 'Foreign ISR Withholding 15%'),
], limit=1)
self.assertEqual(foreign_15.rate, Decimal('-0.15'))
self.assertEqual(
foreign_15.start_date, datetime.date(2026, 7, 1))
check_015, = Tax.search([
('company', '=', company.id),
('description', '=', 'Checks and Transfers Tax 0.15%'),
@@ -392,6 +408,65 @@ class AccountDoTestCase(ModuleTestCase):
'date': datetime.date(2026, 7, 3),
}),
[check_020.id])
foreign_27, = Tax.search([
('company', '=', company.id),
('description', '=', 'Foreign ISR Withholding 27%'),
], limit=1)
foreign_rule, = TaxRule.search([
('company', '=', company.id),
('name', '=', (
'Foreign Royalties, Software and Online '
'Services 15% Rule (RD)')),
], limit=1)
self.assertEqual(
foreign_rule.apply(foreign_27, {
'date': datetime.date(2026, 6, 30),
}),
[foreign_27.id])
self.assertEqual(
foreign_rule.apply(foreign_27, {
'date': datetime.date(2026, 7, 1),
}),
[foreign_15.id])
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'),
], limit=1)
society_withholding, = Tax.search([
('company', '=', company.id),
('description', '=', 'ITBIS Withheld Companies 30%'),
], limit=1)
society_rule, = TaxRule.search([
('company', '=', company.id),
('name', '=', (
'ITBIS Withheld by Companies 30% Customer '
'Rule (RD)')),
], limit=1)
self.assertEqual(
society_rule.apply(itbis_sale, {}),
[society_withholding.id, itbis_sale.id])
real_tax_code_signs = {
('ITBIS 18% Sales', 'invoice'): '+',
('ITBIS 18% Sales', 'credit'): '-',
@@ -401,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'): '+',
@@ -434,7 +511,8 @@ class SpanishAccountDoTestCase(ModuleTestCase):
language = 'es_419'
test_spanish_chart_creates_spanish_accounts_and_taxes = (
AccountDoTestCase.test_spanish_chart_creates_spanish_accounts_and_taxes)
AccountDoTestCase
.test_spanish_chart_creates_spanish_accounts_and_taxes)
@with_transaction()
def test_migrate_pre_language_identifiers(self):
@@ -462,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'),
@@ -485,7 +565,7 @@ class AccountDoUnitTestCase(unittest.TestCase):
if line.strip()
]
self.assertEqual(config.get('tryton', 'version'), '8.0.1')
self.assertEqual(config.get('tryton', 'version'), '8.1.0')
self.assertEqual(
set(lines('tryton', 'depends')),
{'account', 'ir'})
@@ -545,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': 281,
'account.account.template': 287,
},
'tax_do_en.xml': {
'account.tax.group': 7,
'account.tax.template': 50,
'account.tax.group': 6,
'account.tax.template': 56,
},
'tax_code_do_en.xml': {
'account.tax.code.template': 44,
'account.tax.code.line.template': 93,
'account.tax.code.line.template': 112,
},
'tax_rule_do_en.xml': {
'account.tax.rule.template': 23,
'account.tax.rule.line.template': 30,
'account.tax.rule.template': 28,
'account.tax.rule.line.template': 34,
},
'account_chart_do_es_419.xml': {
'account.account.type.template': 36,
'account.account.template': 281,
'account.account.template': 287,
},
'tax_do_es_419.xml': {
'account.tax.group': 7,
'account.tax.template': 50,
'account.tax.group': 6,
'account.tax.template': 56,
},
'tax_code_do_es_419.xml': {
'account.tax.code.template': 44,
'account.tax.code.line.template': 93,
'account.tax.code.line.template': 112,
},
'tax_rule_do_es_419.xml': {
'account.tax.rule.template': 23,
'account.tax.rule.line.template': 30,
'account.tax.rule.template': 28,
'account.tax.rule.line.template': 34,
},
}
for filename, expected_counts in expected.items():
@@ -609,7 +700,8 @@ class AccountDoUnitTestCase(unittest.TestCase):
with self.subTest(filename=filename):
self.assertTrue(root.findall('data'))
self.assertEqual(
{data.get('language') for data in root.findall('data')},
{data.get('language')
for data in root.findall('data')},
{language})
def test_english_accounting_terminology_is_consistent(self):
@@ -621,17 +713,35 @@ class AccountDoUnitTestCase(unittest.TestCase):
'tax_code_do_en.xml', 'tax_rule_do_en.xml']
for field in ET.parse(MODULE_DIR / filename).getroot().findall(
'.//field')
if field.get('name') in {'name', 'description'} and field.text)
if field.get('name') in {
'name', 'description', 'legal_notice'} and field.text)
for phrase in [
'advance itbis', 'assets for right of use',
'charged for paying', 'clients tax rule',
'collected to pay', 'deterioration', 'in favor',
'itbis supported', 'other income and profits',
'physical persons', 'retention', 'withheld status',
' aseguradoras ', ' bienes ', ' casilla ',
' combustibles ', ' intereses ', ' ley ', ' pagos ',
' personas ', ' premios ', ' retención ', ' tasa ',
]:
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'),
@@ -672,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')
@@ -710,9 +823,23 @@ class AccountDoUnitTestCase(unittest.TestCase):
ref = field.get('ref')
if ref and '.' not in ref and ref not in ids:
missing.append(
(filename, record.get('id'), field.get('name'), ref))
(filename, record.get('id'),
field.get('name'), ref))
self.assertEqual(missing, [])
def test_every_tax_group_is_used(self):
"""Do not install tax groups that no tax template can produce."""
records = list(_iter_xml_records('tax_do_en.xml'))
groups = {
record_id for _, record_id, model, _values in records
if model == 'account.tax.group'
}
used_groups = {
values['group'] for _, _, model, values in records
if model == 'account.tax.template' and values.get('group')
}
self.assertEqual(groups, used_groups)
def test_chart_template_codes_are_unique(self):
accounts = [
values for _, _, model, values in _iter_xml_records(
@@ -804,12 +931,14 @@ class AccountDoUnitTestCase(unittest.TestCase):
for _, record_id, _, _ in _iter_xml_records(
'tax_do_en.xml', 'tax_code_do_en.xml')
}
self.assertFalse([record_id for record_id in ids if 'otros' in record_id])
self.assertFalse([
record_id for record_id in ids if 'otros' in record_id])
def test_tax_templates_are_complete(self):
taxes = {
record_id: values
for _, record_id, model, values in _iter_xml_records('tax_do_en.xml')
for _, record_id, model, values
in _iter_xml_records('tax_do_en.xml')
if model == 'account.tax.template'
}
accounts = {
@@ -818,7 +947,7 @@ class AccountDoUnitTestCase(unittest.TestCase):
'account_chart_do_en.xml')
if model == 'account.account.template'
}
self.assertEqual(len(taxes), 50)
self.assertEqual(len(taxes), 56)
for record_id, values in taxes.items():
with self.subTest(record_id=record_id):
self.assertEqual(
@@ -853,17 +982,47 @@ class AccountDoUnitTestCase(unittest.TestCase):
self.assertIn(
"Decimal('10')/100",
taxes['do_tax_isc_bebidas_alc']['rate'])
self.assertEqual(
taxes['do_tax_ret_isr_hon_5']['group'], 'do_tax_group_isr')
self.assertEqual(
taxes['do_tax_ret_isr_serv_10']['group'], 'do_tax_group_isr')
self.assertEqual(
taxes['do_tax_ret_isr_ext_27']['group'],
'do_tax_group_isr_ext')
self.assertEqual(
taxes['do_tax_ret_isr_ext_10']['group'],
'do_tax_group_isr_ext')
self.assertEqual(
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(
'arts. 401-405; art. 404',
'Tax Code Arts. 401-405; Art. 404',
taxes['do_tax_activos_1']['legal_notice'])
self.assertIn(
'art. 7 Ley 173-07',
'Law 173-07 Art. 7',
taxes['do_tax_iti_3']['legal_notice'])
self.assertIn(
'art. 228', taxes['do_tax_propina_10']['legal_notice'])
'Art. 228', taxes['do_tax_propina_10']['legal_notice'])
self.assertEqual(
taxes['do_tax_isc_vehiculos']['group'],
'do_tax_group_others')
@@ -953,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
@@ -967,6 +1157,15 @@ class AccountDoUnitTestCase(unittest.TestCase):
if model == 'account.tax.rule.line.template'
}
self.assertIn('do_tax_rule_bank_check_transfer', rules)
self.assertEqual(
lines['do_trline_supp_ext_isr27']['group'],
'do_tax_group_isr_ext')
self.assertEqual(
lines['do_trline_supp_ext_isr15']['tax'],
'do_tax_ret_isr_ext_15')
self.assertEqual(
lines['do_trline_supp_ext_isr15']['start_date'],
'datetime.date(2026, 7, 1)')
self.assertEqual(
lines['do_trline_bank_check_transfer_015']['origin_tax'],
'do_tax_cheques_015')
@@ -986,4 +1185,19 @@ class AccountDoUnitTestCase(unittest.TestCase):
lines['do_trline_bank_check_transfer_020']['start_date'],
'datetime.date(2026, 7, 3)')
def test_tax_rule_lines_have_reachable_match_patterns(self):
"""A rule must not contain two lines with the same match pattern."""
patterns = {}
for _, record_id, model, values in _iter_xml_records(
'tax_rule_do_en.xml'):
if model != 'account.tax.rule.line.template':
continue
pattern = tuple(values.get(field) for field in [
'rule', 'group', 'origin_tax', 'start_date', 'end_date'])
self.assertNotIn(
pattern, patterns,
msg=f'{record_id} is shadowed by {patterns.get(pattern)}')
patterns[pattern] = record_id
del ModuleTestCase
+1 -1
View File
@@ -1,5 +1,5 @@
[tryton]
version=8.0.1
version=8.1.0
depends:
account
ir