Harden localization data and validation

This commit is contained in:
José Arturo García
2026-08-10 08:42:39 -04:00
parent b5cd05f5f5
commit 4c42329379
7 changed files with 132 additions and 85 deletions
+2
View File
@@ -12,3 +12,5 @@ Version 8.1.0 - 2026-08-10
technical assistance out of the 10% interest category.
* Split tax rules whose duplicate match patterns made later alternatives
unreachable.
* Remove unused tax-group and tax-code records from the initial data set.
* Translate every user-visible legal notice in the English tax catalog.
+10 -8
View File
@@ -3,6 +3,15 @@
from trytond.pool import Pool, PoolMeta
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:
-5
View File
@@ -14,11 +14,6 @@
<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>
<!-- ── ITBIS ───────────────────────────────────────────── -->
<record id="do_tc_itbis_en" model="account.tax.code.template">
<field name="name">ITBIS — Net Balance (Debit Credit)</field>
-4
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" />
+49 -54
View File
@@ -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>
@@ -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,7 +100,7 @@
<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 -->
<record id="do_tax_ret_itbis_30_en" model="account.tax.template">
@@ -117,7 +112,7 @@
<field name="account" ref="do_account_root_en" />
<field name="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 ══════ -->
<record id="do_tax_ret_isr_hon_5_en" model="account.tax.template">
@@ -129,7 +124,7 @@
<field name="account" ref="do_account_root_en" />
<field name="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>
@@ -140,7 +135,7 @@
<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_div_10_en" model="account.tax.template">
<field name="name">ISR Withholding 10% — Dividends and Distributed Profits (Individuals and Legal Entities)</field>
@@ -151,7 +146,7 @@
<field name="account" ref="do_account_root_en" />
<field name="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,7 +157,7 @@
<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>
@@ -173,7 +168,7 @@
<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_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 +179,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 +190,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 +202,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 +213,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,7 +224,7 @@
<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>
@@ -240,7 +235,7 @@
<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. 321; Decree 95-12 — prizes and lotteries, final payment</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>
@@ -251,7 +246,7 @@
<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>
@@ -262,7 +257,7 @@
<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_tragamonedas_10_en" model="account.tax.template">
<field name="name">ISR Withholding 10% — Slot Machine Prizes</field>
@@ -273,7 +268,7 @@
<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_other_income_10_en" model="account.tax.template">
<field name="name">ISR Withholding 10% — Other Income Not Covered</field>
@@ -284,7 +279,7 @@
<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_ext_27_en" model="account.tax.template">
@@ -296,7 +291,7 @@
<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 — pagos gravados no sujetos a una tasa especial</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>
@@ -332,7 +327,7 @@
<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%. -->
@@ -345,7 +340,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>
@@ -356,7 +351,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>
@@ -367,7 +362,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>
@@ -378,7 +373,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>
@@ -389,7 +384,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>
@@ -400,7 +395,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>
@@ -411,7 +406,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>
@@ -422,7 +417,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>
@@ -433,7 +428,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>
@@ -444,7 +439,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>
@@ -455,7 +450,7 @@
<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 ══════ -->
<record id="do_tax_isc_bebidas_alc_en" model="account.tax.template">
@@ -467,7 +462,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>
@@ -478,7 +473,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>
@@ -489,7 +484,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>
@@ -500,7 +495,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>
@@ -511,7 +506,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>
@@ -522,7 +517,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>
@@ -533,7 +528,7 @@
<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. -->
@@ -546,7 +541,7 @@
<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.
@@ -561,7 +556,7 @@
<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
@@ -575,7 +570,7 @@
<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. -->
@@ -589,7 +584,7 @@
<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. -->
@@ -603,7 +598,7 @@
<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. -->
@@ -616,7 +611,7 @@
<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. -->
@@ -629,7 +624,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>
-5
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>
+71 -9
View File
@@ -306,7 +306,8 @@ 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',
@@ -372,6 +373,13 @@ class AccountDoTestCase(ModuleTestCase):
'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%'),
@@ -398,6 +406,43 @@ 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])
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'): '-',
@@ -560,11 +605,11 @@ class AccountDoUnitTestCase(unittest.TestCase):
'account.account.template': 282,
},
'tax_do_en.xml': {
'account.tax.group': 7,
'account.tax.group': 6,
'account.tax.template': 51,
},
'tax_code_do_en.xml': {
'account.tax.code.template': 44,
'account.tax.code.template': 43,
'account.tax.code.line.template': 95,
},
'tax_rule_do_en.xml': {
@@ -576,11 +621,11 @@ class AccountDoUnitTestCase(unittest.TestCase):
'account.account.template': 282,
},
'tax_do_es_419.xml': {
'account.tax.group': 7,
'account.tax.group': 6,
'account.tax.template': 51,
},
'tax_code_do_es_419.xml': {
'account.tax.code.template': 44,
'account.tax.code.template': 43,
'account.tax.code.line.template': 95,
},
'tax_rule_do_es_419.xml': {
@@ -629,13 +674,17 @@ 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())
@@ -722,6 +771,19 @@ class AccountDoUnitTestCase(unittest.TestCase):
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(
@@ -878,13 +940,13 @@ class AccountDoUnitTestCase(unittest.TestCase):
taxes['do_tax_ret_isr_bovine_1']['start_date'],
'datetime.date(2025, 6, 20)')
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')