From fa3712bbfc7f331bf332f98bbaf4973f3ac7ef30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=CC=81=20Arturo=20Garci=CC=81a?= Date: Sun, 9 Aug 2026 12:19:52 -0400 Subject: [PATCH] Complete Dominican tax localization metadata --- IMPUESTOS_RD.md | 24 +- README.rst | 4 +- locale/es.po | 72 ++++ locale/es_419.po | 72 ++++ tax.py | 24 +- tax_do.xml | 833 ++++++++++++++++++++++++++----------------- tax_rule_do.xml | 22 ++ tests/test_module.py | 87 ++++- view/tax_form.xml | 8 + 9 files changed, 794 insertions(+), 352 deletions(-) diff --git a/IMPUESTOS_RD.md b/IMPUESTOS_RD.md index d6f8ff9..b401cd4 100644 --- a/IMPUESTOS_RD.md +++ b/IMPUESTOS_RD.md @@ -77,7 +77,7 @@ se determina al cierre del año y se aplica al año siguiente. | Tasa | 18% | | Tipo de operación | Ventas (débito fiscal) | | Aplica a | Personas Jurídicas y Personas Físicas | -| Cuenta contable | 210201 — ITBIS cobrado por pagar | +| Cuenta contable | 21020101 — ITBIS cobrado por pagar 18% | | Formulario | IT-1 (plazo día 20) | **Base legal:** @@ -110,7 +110,7 @@ lo requieran. No se marcan como inactivas. | ID plantilla | `do_tax_itbis_16_venta` | | Tasa | 16% | | Estado | Tasa especial disponible | -| Cuenta contable | 210201 — ITBIS cobrado por pagar | +| Cuenta contable | 21020102 — ITBIS cobrado por pagar 16% | **Base legal:** Art. 345 CT (Ley 11-92), modificado por Ley 253-12. @@ -127,7 +127,7 @@ tasa especial distinta del 18% general. | Tasa | 18% | | Tipo de operación | Compras (crédito fiscal) | | Aplica a | Personas Jurídicas y Personas Físicas | -| Cuenta contable | 110401 — ITBIS adelantado en compras | +| Cuenta contable | 11040101 — ITBIS adelantado en compras 18% | | Formulario | IT-1 (plazo día 20) | **Base legal:** Arts. 349-357 CT (Ley 11-92) — Crédito fiscal ITBIS | Decreto 293-11. @@ -156,7 +156,7 @@ Los exportadores (tasa cero) pueden solicitar devolución mediante formulario IT | ID plantilla | `do_tax_itbis_16_compra` | | Tasa | 16% | | Estado | Tasa especial disponible | -| Cuenta contable | 110401 — ITBIS adelantado en compras | +| Cuenta contable | 11040102 — ITBIS adelantado en compras 16% | **Base legal:** Art. 345 CT (Ley 11-92), modificado por Ley 253-12. @@ -173,7 +173,7 @@ tasa especial distinta del 18% general. Ver nota en [ITBIS 16% Ventas](#itbis-16 | Tasa | 8% | | Tipo de operación | Ventas — tasa reducida (débito fiscal) | | Aplica a | Personas Jurídicas y Personas Físicas | -| Cuenta contable | 210201 — ITBIS cobrado por pagar | +| Cuenta contable | 21020104 — ITBIS cobrado por pagar 8% | | Formulario | IT-1 (plazo día 20) | **Base legal:** Art. 345 CT (Ley 11-92) | Ley 253-12 | Decreto 293-11 | NG 12-22. @@ -201,13 +201,13 @@ reducida (8%) o exento (0%). Una clasificación incorrecta puede generar ajustes | Tasa | 8% | | Tipo de operación | Compras — tasa reducida (crédito fiscal) | | Aplica a | Personas Jurídicas y Personas Físicas | -| Cuenta contable | 110401 — ITBIS adelantado en compras | +| Cuenta contable | 11040104 — ITBIS adelantado en compras 8% | | Formulario | IT-1 (plazo día 20) | **Base legal:** Arts. 349-357 CT (Ley 11-92) | Ley 253-12 | Decreto 293-11. El ITBIS al 8% pagado en compras de bienes con tasa reducida genera crédito fiscal acreditable -contra el débito ITBIS de ventas. Se registra en la misma cuenta 110401 junto con el crédito al 18%. +contra el débito ITBIS de ventas. Se registra en la subcuenta 11040104 para mantener separación por tasa y permitir reportes fiscales consistentes. Aplican las mismas reglas de proporcionalidad del Art. 352 CT en caso de operaciones mixtas. --- @@ -262,7 +262,7 @@ derecho a crédito fiscal (ver sección siguiente). | Tasa | 0% | | Tipo de operación | Ventas exportación / Zona Franca | | Aplica a | Personas Jurídicas y Personas Físicas | -| Cuenta contable | 210201 — ITBIS cobrado por pagar (registra $0) | +| Cuenta contable | 21020105 — ITBIS tasa cero ventas y exportaciones | | NCF aplicable | B14 / e-CF E44 (Zonas Francas) | B16 / e-CF E46 (Exportaciones) | **Base legal:** Art. 342 CT (Ley 11-92) | Ley 557-05 | Ley 8-90 (Zonas Francas) | NG 05-19 DGII. @@ -1006,7 +1006,7 @@ servicio de telecom. | ID plantilla | `do_tax_propina_10` | | Tasa | 10% | | Aplica a | Restaurantes, bares, hoteles, servicios de catering | -| Cuenta contable | 210205 — Otros impuestos por pagar | +| Cuenta contable | 21021901 — impuesto 0.15% histórico; 21021902 — impuesto 0.20% vigente | **Base legal:** Ley 4-11 y Resoluciones del Ministerio de Trabajo. @@ -1043,12 +1043,12 @@ debe incluirse en la base del ITBIS. Consultar con asesor fiscal. | ID plantilla histórica | `do_tax_cheques_015` | | ID plantilla vigente/alternativa | `do_tax_cheques_020` | | Tasa histórica | 0.15% (1.5 por mil) | -| Tasa vigente/alternativa | 0.20% (2.0 por mil) | +| Tasa vigente | 0.20% (2.0 por mil) desde 2026-07-03 | | Quién lo paga | El titular de la cuenta bancaria (empresa o persona) | | Quién lo recauda | El banco, de forma automática | -| Cuenta contable | 210205 — Otros impuestos por pagar | +| Cuenta contable | 21021901 — impuesto 0.15% histórico; 21021902 — impuesto 0.20% vigente | -**Base legal:** Art. 382-D CT (Ley 11-92, modificado por Ley 288-04). +**Base legal:** Art. 382-D CT (Ley 11-92, modificado por Ley 288-04); Ley 30-26 Art. 40 y aviso DGII de implementación para la tasa 0.20% desde 2026-07-03. **Descripción:** Impuesto que el banco descuenta automáticamente sobre: - Cada cheque emitido diff --git a/README.rst b/README.rst index d8fd117..ecaa64d 100644 --- a/README.rst +++ b/README.rst @@ -10,7 +10,9 @@ Cobertura funcional * Catálogo de impuestos y códigos fiscales. * Reglas fiscales de venta, compra, tasas especiales y retenciones para escenarios dominicanos comunes. * Campo ``tax_kind`` para clasificar ITBIS, retenciones, ISC, CDT, propina legal y otros impuestos. -* Campos ``tax_fiscal_type`` y ``tax_application`` para clasificar fiscalmente cada impuesto con mayor granularidad sin romper integraciones que usan ``tax_kind``. +* Campos ``tax_fiscal_type``, ``tax_application`` y metadata DGII para clasificar fiscalmente cada impuesto con mayor granularidad sin romper integraciones que usan ``tax_kind``. +* Vigencias fiscales nativas en plantillas de impuesto y reglas, incluyendo impuesto de cheques/transferencias 0.15% histórico y 0.20% vigente desde 2026-07-03. +* Las casillas y formularios DGII no se duplican aquí: ``account_do`` define cuentas/impuestos/reglas base y ``dgii_reports`` consume esa base para 606, 607, IT-1, IR-17, IR-2, ACT, ISC y formularios relacionados. * Cuentas fiscales auxiliares para retenciones ITBIS, retenciones ISR, adquirencias, pagos al exterior, ISC, CDT e impuestos especiales. * Documentación técnica en ``doc/index.rst`` y escenario funcional en ``tests/scenario_account_do.rst``. diff --git a/locale/es.po b/locale/es.po index 79269ad..4061208 100644 --- a/locale/es.po +++ b/locale/es.po @@ -34,6 +34,78 @@ msgctxt "field:account.tax.template,tax_application:" msgid "Tax Application" msgstr "Aplicación del impuesto" +msgctxt "field:account.tax,dgii_fiscal_status:" +msgid "DGII Fiscal Status" +msgstr "Estado fiscal DGII" + +msgctxt "field:account.tax.template,dgii_fiscal_status:" +msgid "DGII Fiscal Status" +msgstr "Estado fiscal DGII" + +msgctxt "field:account.tax,dgii_form_hint:" +msgid "DGII Form Hint" +msgstr "Formulario DGII sugerido" + +msgctxt "field:account.tax.template,dgii_form_hint:" +msgid "DGII Form Hint" +msgstr "Formulario DGII sugerido" + +msgctxt "field:account.tax,dgii_legal_article:" +msgid "DGII Legal Article" +msgstr "Artículo/base legal DGII" + +msgctxt "field:account.tax.template,dgii_legal_article:" +msgid "DGII Legal Article" +msgstr "Artículo/base legal DGII" + +msgctxt "field:account.tax,dgii_legal_reference:" +msgid "DGII Legal Reference" +msgstr "Referencia legal DGII" + +msgctxt "field:account.tax.template,dgii_legal_reference:" +msgid "DGII Legal Reference" +msgstr "Referencia legal DGII" + +msgctxt "selection:account.tax,dgii_fiscal_status:current" +msgid "Vigente" +msgstr "Vigente" + +msgctxt "selection:account.tax,dgii_fiscal_status:deprecated" +msgid "Derogado" +msgstr "Derogado" + +msgctxt "selection:account.tax,dgii_fiscal_status:future" +msgid "Futuro" +msgstr "Futuro" + +msgctxt "selection:account.tax,dgii_fiscal_status:historical" +msgid "Histórico" +msgstr "Histórico" + +msgctxt "selection:account.tax,dgii_fiscal_status:special" +msgid "Especial" +msgstr "Especial" + +msgctxt "selection:account.tax.template,dgii_fiscal_status:current" +msgid "Vigente" +msgstr "Vigente" + +msgctxt "selection:account.tax.template,dgii_fiscal_status:deprecated" +msgid "Derogado" +msgstr "Derogado" + +msgctxt "selection:account.tax.template,dgii_fiscal_status:future" +msgid "Futuro" +msgstr "Futuro" + +msgctxt "selection:account.tax.template,dgii_fiscal_status:historical" +msgid "Histórico" +msgstr "Histórico" + +msgctxt "selection:account.tax.template,dgii_fiscal_status:special" +msgid "Especial" +msgstr "Especial" + msgctxt "selection:account.tax,tax_application:" msgid "Annual Declaration" msgstr "Declaración anual" diff --git a/locale/es_419.po b/locale/es_419.po index 96ec3a8..b6b5e6c 100644 --- a/locale/es_419.po +++ b/locale/es_419.po @@ -26,6 +26,78 @@ msgctxt "field:account.tax.template,tax_application:" msgid "Tax Application" msgstr "Aplicación del impuesto" +msgctxt "field:account.tax,dgii_fiscal_status:" +msgid "DGII Fiscal Status" +msgstr "Estado fiscal DGII" + +msgctxt "field:account.tax.template,dgii_fiscal_status:" +msgid "DGII Fiscal Status" +msgstr "Estado fiscal DGII" + +msgctxt "field:account.tax,dgii_form_hint:" +msgid "DGII Form Hint" +msgstr "Formulario DGII sugerido" + +msgctxt "field:account.tax.template,dgii_form_hint:" +msgid "DGII Form Hint" +msgstr "Formulario DGII sugerido" + +msgctxt "field:account.tax,dgii_legal_article:" +msgid "DGII Legal Article" +msgstr "Artículo/base legal DGII" + +msgctxt "field:account.tax.template,dgii_legal_article:" +msgid "DGII Legal Article" +msgstr "Artículo/base legal DGII" + +msgctxt "field:account.tax,dgii_legal_reference:" +msgid "DGII Legal Reference" +msgstr "Referencia legal DGII" + +msgctxt "field:account.tax.template,dgii_legal_reference:" +msgid "DGII Legal Reference" +msgstr "Referencia legal DGII" + +msgctxt "selection:account.tax,dgii_fiscal_status:current" +msgid "Vigente" +msgstr "Vigente" + +msgctxt "selection:account.tax,dgii_fiscal_status:deprecated" +msgid "Derogado" +msgstr "Derogado" + +msgctxt "selection:account.tax,dgii_fiscal_status:future" +msgid "Futuro" +msgstr "Futuro" + +msgctxt "selection:account.tax,dgii_fiscal_status:historical" +msgid "Histórico" +msgstr "Histórico" + +msgctxt "selection:account.tax,dgii_fiscal_status:special" +msgid "Especial" +msgstr "Especial" + +msgctxt "selection:account.tax.template,dgii_fiscal_status:current" +msgid "Vigente" +msgstr "Vigente" + +msgctxt "selection:account.tax.template,dgii_fiscal_status:deprecated" +msgid "Derogado" +msgstr "Derogado" + +msgctxt "selection:account.tax.template,dgii_fiscal_status:future" +msgid "Futuro" +msgstr "Futuro" + +msgctxt "selection:account.tax.template,dgii_fiscal_status:historical" +msgid "Histórico" +msgstr "Histórico" + +msgctxt "selection:account.tax.template,dgii_fiscal_status:special" +msgid "Especial" +msgstr "Especial" + msgctxt "selection:account.tax,tax_application:" msgid "Annual Declaration" msgstr "Declaración anual" diff --git a/tax.py b/tax.py index 3dd3594..4c21d18 100644 --- a/tax.py +++ b/tax.py @@ -84,6 +84,15 @@ TAX_APPLICATION = [ ('asset_transfer', 'Transferencia de activos'), ] +DGII_FISCAL_STATUS = [ + ('', ''), + ('current', 'Vigente'), + ('special', 'Especial'), + ('historical', 'Histórico'), + ('future', 'Futuro'), + ('deprecated', 'Derogado'), +] + MODEL_DATA_RENAMES = { 'do_tax_group_otros': 'do_tax_group_others', 'do_tc_otros': 'do_tc_others', @@ -122,6 +131,11 @@ class TaxTemplate(metaclass=PoolMeta): TAX_FISCAL_TYPE, 'Fiscal Tax Type', sort=False) tax_application = fields.Selection( TAX_APPLICATION, 'Tax Application', sort=False) + dgii_legal_reference = fields.Char('DGII Legal Reference') + dgii_legal_article = fields.Char('DGII Legal Article') + dgii_form_hint = fields.Char('DGII Form Hint') + dgii_fiscal_status = fields.Selection( + DGII_FISCAL_STATUS, 'DGII Fiscal Status', sort=False) @classmethod def __register__(cls, module_name): @@ -137,7 +151,10 @@ class TaxTemplate(metaclass=PoolMeta): def _get_tax_value(self, tax=None): values = super()._get_tax_value(tax=tax) - for field in ['tax_kind', 'tax_fiscal_type', 'tax_application']: + for field in [ + 'tax_kind', 'tax_fiscal_type', 'tax_application', + 'dgii_legal_reference', 'dgii_legal_article', + 'dgii_form_hint', 'dgii_fiscal_status']: if not tax or getattr(tax, field) != getattr(self, field): values[field] = getattr(self, field) return values @@ -151,6 +168,11 @@ class Tax(metaclass=PoolMeta): TAX_FISCAL_TYPE, 'Fiscal Tax Type', sort=False) tax_application = fields.Selection( TAX_APPLICATION, 'Tax Application', sort=False) + dgii_legal_reference = fields.Char('DGII Legal Reference') + dgii_legal_article = fields.Char('DGII Legal Article') + dgii_form_hint = fields.Char('DGII Form Hint') + dgii_fiscal_status = fields.Selection( + DGII_FISCAL_STATUS, 'DGII Fiscal Status', sort=False) @classmethod def __register__(cls, module_name): diff --git a/tax_do.xml b/tax_do.xml index 00e7cb0..1f82590 100644 --- a/tax_do.xml +++ b/tax_do.xml @@ -1,5 +1,4 @@ - - + @@ -44,172 +43,203 @@ - - ITBIS 18% — Ventas (Personas Jurídicas y Físicas) ITBIS 18% Ventas percentage - - - - - + + + + + Arts. 335-392 CT Ley 11-92; Ley 253-12 Art. 10; Decreto 293-11 + DGII ITBIS; Código Tributario Ley 11-92; Decreto 293-11 + Arts. 335-392 CT Ley 11-92; Ley 253-12 Art. 10; Decreto 293-11 + IT-1 / 606 / 607 + current itbis itbis_sale_18 sale_invoice - ITBIS 16% — Ventas Tasa Especial (Personas Jurídicas y Físicas) ITBIS 16% Ventas percentage - - - - - + + + + + Art. 345 CT Ley 11-92 mod. Ley 253-12 — tasa especial 16% + DGII ITBIS; Código Tributario Ley 11-92; Decreto 293-11 + Art. 345 CT Ley 11-92 mod. Ley 253-12 — tasa especial 16% + IT-1 / 606 / 607 + special itbis itbis_sale_16 sale_invoice - ITBIS 9% — Ventas Tasa Especial Ley 690-16 ITBIS 9% Ventas percentage - - - - - + + + + + IT-1 DGII 2020; Ley 690-16 — tasa especial ITBIS 9% + DGII ITBIS; Código Tributario Ley 11-92; Decreto 293-11 + IT-1 DGII 2020; Ley 690-16 — tasa especial ITBIS 9% + IT-1 / 606 / 607 + special itbis itbis_sale_9 sale_invoice - ITBIS 18% — Compras / Crédito Fiscal (Personas Jurídicas y Físicas) ITBIS 18% Compras percentage - - - - - + + + + + Arts. 349-357 CT Ley 11-92 — Crédito fiscal ITBIS; Decreto 293-11 + DGII ITBIS; Código Tributario Ley 11-92; Decreto 293-11 + Arts. 349-357 CT Ley 11-92 — Crédito fiscal ITBIS; Decreto 293-11 + IT-1 / 606 / 607 + current itbis itbis_purchase_18 purchase_invoice - ITBIS 16% — Compras / Crédito Fiscal Tasa Especial ITBIS 16% Compras percentage - - - - - + + + + + Art. 345 CT Ley 11-92 — Crédito fiscal tasa especial 16% + DGII ITBIS; Código Tributario Ley 11-92; Decreto 293-11 + Art. 345 CT Ley 11-92 — Crédito fiscal tasa especial 16% + IT-1 / 606 / 607 + special itbis itbis_purchase_16 purchase_invoice - ITBIS 9% — Compras / Crédito Fiscal Tasa Especial Ley 690-16 ITBIS 9% Compras percentage - - - - - + + + + + IT-1 DGII 2020; Ley 690-16 — crédito fiscal tasa especial 9% + DGII ITBIS; Código Tributario Ley 11-92; Decreto 293-11 + IT-1 DGII 2020; Ley 690-16 — crédito fiscal tasa especial 9% + IT-1 / 606 / 607 + special itbis itbis_purchase_9 purchase_invoice - ITBIS 8% — Ventas Tasa Reducida (Personas Jurídicas y Físicas) ITBIS 8% Ventas percentage - - - - - + + + + + Art. 345 CT; Ley 253-12; Decreto 293-11 — Tasa reducida 8% + DGII ITBIS; Código Tributario Ley 11-92; Decreto 293-11 + Art. 345 CT; Ley 253-12; Decreto 293-11 — Tasa reducida 8% + IT-1 / 606 / 607 + special itbis itbis_sale_8 sale_invoice - ITBIS 8% — Compras Tasa Reducida / Crédito Fiscal (Personas Jurídicas y Físicas) ITBIS 8% Compras percentage - - - - - + + + + + Arts. 349-357 CT — Crédito fiscal tasa reducida 8%; Decreto 293-11 + DGII ITBIS; Código Tributario Ley 11-92; Decreto 293-11 + Arts. 349-357 CT — Crédito fiscal tasa reducida 8%; Decreto 293-11 + IT-1 / 606 / 607 + special itbis itbis_purchase_8 purchase_invoice - ITBIS Exento — Bienes y Servicios Exentos (Personas Jurídicas y Físicas) ITBIS Exento none - - + + Arts. 343-344 CT Ley 11-92; Ley 288-04; NG 12-22 DGII + DGII ITBIS; Código Tributario Ley 11-92; Decreto 293-11 + Arts. 343-344 CT Ley 11-92; Ley 288-04; NG 12-22 DGII + IT-1 / 606 / 607 + current itbis itbis_exempt sale_invoice - ITBIS Tasa Cero — Exportaciones y Zona Franca (Personas Jurídicas y Físicas) ITBIS 0% Exportaciones / Zona Franca percentage - - - - - + + + + + Art. 342 CT; Ley 557-05; Ley 8-90 Zonas Francas; NG 05-19 DGII + DGII ITBIS; Código Tributario Ley 11-92; Decreto 293-11 + Art. 342 CT; Ley 557-05; Ley 8-90 Zonas Francas; NG 05-19 DGII + IT-1 / 606 / 607 + current itbis itbis_zero_rate sale_invoice - Retención ITBIS 30% — Agente Gran Contribuyente (Personas Jurídicas y Físicas) Retención ITBIS Gran Contribuyente 30% percentage - - - - - + + + + + NG 01-11 DGII 2011; Arts. 309 y 337 CT — Grandes Contribuyentes + DGII ITBIS; Código Tributario Ley 11-92; Decreto 293-11 + NG 01-11 DGII 2011; Arts. 309 y 337 CT — Grandes Contribuyentes + IT-1 / 606 / 607 + current itbis_withholding itbis_withholding_30 purchase_invoice - @@ -217,587 +247,696 @@ Retención ITBIS 2% — Adquirencias Tarjetas de Crédito y Débito (NG 06-23) Retención ITBIS Adquirencias 2% percentage - - - - - + + + + + NG 06-23 DGII 2023; Art. 337 CT — Adquirencias tarjetas débito/crédito + DGII ITBIS; Código Tributario Ley 11-92; Decreto 293-11 + NG 06-23 DGII 2023; Art. 337 CT — Adquirencias tarjetas débito/crédito + IT-1 / 606 / 607 + current itbis_withholding_acquirer itbis_withholding_acquirer_2 payment_withholding - - Retención ISR 5% — Honorarios y Servicios a Personas Jurídicas Retención ISR Persona Jurídica 5% percentage - - - - - + + + + + Art. 309 CT Ley 11-92; Decreto 95-12 — Honorarios personas jurídicas + DGII ISR; Código Tributario Ley 11-92 + Art. 309 CT Ley 11-92; Decreto 95-12 — Honorarios personas jurídicas + IR-17 / IR-3 / IR-2 segun operación + current isr_withholding isr_legal_entity_services_5 purchase_invoice - Retención ISR 10% — Honorarios y Servicios a Personas Físicas Retención ISR Persona Física 10% percentage - - - - - + + + + + Art. 309 CT Ley 11-92; Decreto 95-12 — Honorarios personas físicas + DGII ISR; Código Tributario Ley 11-92 + Art. 309 CT Ley 11-92; Decreto 95-12 — Honorarios personas físicas + IR-17 / IR-3 / IR-2 segun operación + current isr_withholding isr_individual_services_10 purchase_invoice - Retención ISR 10% — Dividendos y Utilidades Distribuidas (Personas Físicas y Jurídicas) Retención ISR Dividendos 10% percentage - - - - - + + + + + Art. 308 CT Ley 11-92; Decreto 95-12; Formulario IR-18 + DGII ISR; Código Tributario Ley 11-92 + Art. 308 CT Ley 11-92; Decreto 95-12; Formulario IR-18 + IR-17 / IR-3 / IR-2 segun operación + current isr_withholding isr_dividends_10 payment_withholding - Retención ISR 10% — Intereses a Personas Físicas (NG 07-19) Retención ISR Intereses Persona Física 10% percentage - - - - - + + + + + NG 07-19 DGII; Art. 306 bis CT — Intereses personas físicas, definitivo + DGII ISR; Código Tributario Ley 11-92 + NG 07-19 DGII; Art. 306 bis CT — Intereses personas físicas, definitivo + IR-17 / IR-3 / IR-2 segun operación + current isr_withholding isr_interest_individual_10 payment_withholding - Retención ISR 10% — Alquileres y Arrendamientos (Personas Físicas y Jurídicas) Retención ISR Alquileres 10% percentage - - - - - + + + + + Art. 309 CT; NG 08-11 DGII — Alquileres personas físicas y jurídicas + DGII ISR; Código Tributario Ley 11-92 + Art. 309 CT; NG 08-11 DGII — Alquileres personas físicas y jurídicas + IR-17 / IR-3 / IR-2 segun operación + current isr_withholding isr_rent_10 purchase_invoice - Retención ISR 1.5% — Pagos del Estado / Sector Público (Personas Físicas y Jurídicas) Retención ISR Estado 1.5% percentage - - - - - + + + + + Art. 309 CT; Decreto 95-12; Formulario 623 DGII — Sector público + DGII ISR; Código Tributario Ley 11-92 + Art. 309 CT; Decreto 95-12; Formulario 623 DGII — Sector público + IR-17 / IR-3 / IR-2 segun operación + current isr_withholding isr_state_1_5 sale_invoice - Retención ISR 5% — Pagos del Estado / Sector Público (Personas Físicas y Jurídicas) Retención ISR Estado 5% percentage - - - - - + + + + + Art. 309 CT mod. Ley 253-12 — retención pagos del Estado 5% + DGII ISR; Código Tributario Ley 11-92 + Art. 309 CT mod. Ley 253-12 — retención pagos del Estado 5% + IR-17 / IR-3 / IR-2 segun operación + current isr_withholding isr_state_5 sale_invoice - Retención ISR 1% — Sector Ganadería y Carne Bovina Retención ISR Ganadería/Carne Bovina 1% percentage - - - - - + + + + + NG 04-25 DGII — retención 1% sobre facturas sector carne bovina + DGII ISR; Código Tributario Ley 11-92 + NG 04-25 DGII — retención 1% sobre facturas sector carne bovina + IR-17 / IR-3 / IR-2 segun operación + current isr_withholding isr_bovine_meat_1 purchase_invoice - Retención ISR 2.5% — Exportadores en Ventas al Mercado Local Retención ISR Exportadores 2.5% percentage - - - - - + + + + + NG 15-07 DGII — retención 2.5% ventas locales de exportadores + DGII ISR; Código Tributario Ley 11-92 + NG 15-07 DGII — retención 2.5% ventas locales de exportadores + IR-17 / IR-3 / IR-2 segun operación + current isr_withholding isr_exporter_sales_2_5 sale_invoice - Retención ISR 1% — Intereses a Personas Jurídicas (NG 07-19) Retención ISR Intereses Persona Jurídica 1% percentage - - - - - + + + + + NG 07-19 DGII 2019; Art. 306 bis CT — Intereses personas jurídicas + DGII ISR; Código Tributario Ley 11-92 + NG 07-19 DGII 2019; Art. 306 bis CT — Intereses personas jurídicas + IR-17 / IR-3 / IR-2 segun operación + current isr_withholding isr_interest_legal_entity_1 payment_withholding - Retención ISR 25% — Premios de Lotería, Sorteos y Rifas (Personas Físicas y Jurídicas) Retención ISR Premios 25% percentage - - - - - + + + + + Art. 321 CT Ley 11-92; Decreto 95-12 — Premios y loterías, definitivo + DGII ISR; Código Tributario Ley 11-92 + Art. 321 CT Ley 11-92; Decreto 95-12 — Premios y loterías, definitivo + IR-17 / IR-3 / IR-2 segun operación + current isr_withholding isr_prizes_25 payment_withholding - Retención ISR 10% — Premios RD$100,001 a RD$500,000 Retención ISR Premios 10% percentage - - - - - + + + + + Art. 309 CT mod. Ley 253-12 — premios RD$100,001 a RD$500,000 10% + DGII ISR; Código Tributario Ley 11-92 + Art. 309 CT mod. Ley 253-12 — premios RD$100,001 a RD$500,000 10% + IR-17 / IR-3 / IR-2 segun operación + current isr_withholding isr_prizes_10 payment_withholding - Retención ISR 15% — Premios RD$500,001 a RD$1,000,000 Retención ISR Premios 15% percentage - - - - - + + + + + Art. 309 CT mod. Ley 253-12 — premios RD$500,001 a RD$1,000,000 15% + DGII ISR; Código Tributario Ley 11-92 + Art. 309 CT mod. Ley 253-12 — premios RD$500,001 a RD$1,000,000 15% + IR-17 / IR-3 / IR-2 segun operación + current isr_withholding isr_prizes_15 payment_withholding - Retención ISR 10% — Premios Máquinas Tragamonedas Retención ISR Máquinas Tragamonedas 10% percentage - - - - - + + + + + Art. 309 CT mod. Ley 253-12 — premios máquinas tragamonedas 10% + DGII ISR; Código Tributario Ley 11-92 + Art. 309 CT mod. Ley 253-12 — premios máquinas tragamonedas 10% + IR-17 / IR-3 / IR-2 segun operación + current isr_withholding isr_slot_machine_prizes_10 payment_withholding - Retención ISR 10% — Otras Rentas no Contempladas Retención ISR Otras Rentas 10% percentage - - - - - + + + + + Art. 309 CT mod. Ley 253-12 — otras rentas no contempladas 10% + DGII ISR; Código Tributario Ley 11-92 + Art. 309 CT mod. Ley 253-12 — otras rentas no contempladas 10% + IR-17 / IR-3 / IR-2 segun operación + current isr_withholding isr_other_income_10 purchase_invoice - - Retención ISR 27% — Pagos al Exterior: Servicios y Regalías (No Residentes) Retención ISR Exterior 27% percentage - - - - - + + + + + Art. 305 CT Ley 11-92 — Servicios y regalías a no residentes 27% + DGII ISR; Código Tributario Ley 11-92 + Art. 305 CT Ley 11-92 — Servicios y regalías a no residentes 27% + 609 / IR-17 + current isr_withholding isr_foreign_services_27 purchase_invoice - Retención ISR 10% — Pagos al Exterior: Intereses y Asistencia Técnica (No Residentes) Retención ISR Exterior 10% percentage - - - - - + + + + + Arts. 305-306 CT — Intereses y asistencia técnica a no residentes + DGII ISR; Código Tributario Ley 11-92 + Arts. 305-306 CT — Intereses y asistencia técnica a no residentes + 609 / IR-17 + current isr_withholding isr_foreign_interest_10 purchase_invoice - - Retención ITBIS 100% — Servicios Gravados Sujetos a Retención Retención ITBIS Servicios 100% percentage - - - - - + + + + + NG 01-11 DGII — Retención 100% ITBIS en servicios gravados + DGII ITBIS; Código Tributario Ley 11-92; Decreto 293-11 + NG 01-11 DGII — Retención 100% ITBIS en servicios gravados + IT-1 / 606 / 607 + current itbis_withholding itbis_withholding_100_services purchase_invoice - Retención ITBIS 75% — Bienes de Proveedor Informal (B11 / e-CF E41) Retención ITBIS Proveedor Informal 75% percentage - - - - - + + + + + NG 08-10 DGII — Retención 75% ITBIS compras a proveedores informales + DGII ITBIS; Código Tributario Ley 11-92; Decreto 293-11 + NG 08-10 DGII — Retención 75% ITBIS compras a proveedores informales + IT-1 / 606 / 607 + current itbis_withholding itbis_withholding_75_informal purchase_invoice - Retención ITBIS 75% — Bienes Proveedor Informal Tasa 16% Retención ITBIS Proveedor Informal 75% Tasa 16% percentage - - - - - + + + + + IT-1 DGII casilla 57; NG 08-10/05-19 — 75% de ITBIS tasa 16% + DGII ITBIS; Código Tributario Ley 11-92; Decreto 293-11 + IT-1 DGII casilla 57; NG 08-10/05-19 — 75% de ITBIS tasa 16% + IT-1 / 606 / 607 + current itbis_withholding itbis_withholding_75_informal_16 purchase_invoice - Retención ITBIS 100% — Bienes Proveedor Informal Tasa 18% Retención ITBIS Proveedor Informal 100% Tasa 18% percentage - - - - - + + + + + IT-1 DGII casilla 56 — bienes comprobante de compras, retención 100% + DGII ITBIS; Código Tributario Ley 11-92; Decreto 293-11 + IT-1 DGII casilla 56 — bienes comprobante de compras, retención 100% + IT-1 / 606 / 607 + current itbis_withholding itbis_withholding_100_informal_goods_18 purchase_invoice - Retención ITBIS 100% — Bienes Proveedor Informal Tasa 16% Retención ITBIS Proveedor Informal 100% Tasa 16% percentage - - - - - + + + + + IT-1 DGII casilla 57 — bienes comprobante de compras, retención 100% + DGII ITBIS; Código Tributario Ley 11-92; Decreto 293-11 + IT-1 DGII casilla 57 — bienes comprobante de compras, retención 100% + IT-1 / 606 / 607 + current itbis_withholding itbis_withholding_100_informal_goods_16 purchase_invoice - Retención ITBIS 100% — Contribuyentes RST Tasa 18% Retención ITBIS RST 18% percentage - - - - - + + + + + IT-1 DGII casilla 53 — ITBIS retenido RST operaciones gravadas 18% + DGII ITBIS; Código Tributario Ley 11-92; Decreto 293-11 + IT-1 DGII casilla 53 — ITBIS retenido RST operaciones gravadas 18% + IT-1 / 606 / 607 + current itbis_withholding itbis_withholding_rst_18 purchase_invoice - Retención ITBIS 100% — Contribuyentes RST Tasa 16% Retención ITBIS RST 16% percentage - - - - - + + + + + IT-1 DGII casilla 54 — ITBIS retenido RST operaciones gravadas 16% + DGII ITBIS; Código Tributario Ley 11-92; Decreto 293-11 + IT-1 DGII casilla 54 — ITBIS retenido RST operaciones gravadas 16% + IT-1 / 606 / 607 + current itbis_withholding itbis_withholding_rst_16 purchase_invoice - Retención ITBIS 100% — Compañías de Seguros Retención ITBIS Seguros 100% percentage - - - - - + + + + + NG 04-13 DGII — aseguradoras retienen 100% del ITBIS facturado + DGII ITBIS; Código Tributario Ley 11-92; Decreto 293-11 + NG 04-13 DGII — aseguradoras retienen 100% del ITBIS facturado + IT-1 / 606 / 607 + current itbis_withholding itbis_withholding_insurance_100 purchase_invoice - ITBIS Retenido por Aerolíneas 100% — BSP/IATA ITBIS Retenido Aerolíneas 100% percentage - - - - - + + + + + IT-1 DGII casilla 28; NG 02-05 — ITBIS retenido por aerolíneas + DGII ITBIS; Código Tributario Ley 11-92; Decreto 293-11 + IT-1 DGII casilla 28; NG 02-05 — ITBIS retenido por aerolíneas + IT-1 / 606 / 607 + current itbis_withholding itbis_withholding_airline_100 sale_invoice - ITBIS Retenido por Sociedades 30% — Retención Sufrida ITBIS Retenido Sociedades 30% percentage - - - - - + + + + + IT-1 DGII casilla 29; NG 02-05/07-09 — sociedades retienen ITBIS + DGII ITBIS; Código Tributario Ley 11-92; Decreto 293-11 + IT-1 DGII casilla 29; NG 02-05/07-09 — sociedades retienen ITBIS + IT-1 / 606 / 607 + current itbis_withholding itbis_withholding_society_30_suffered sale_invoice - ITBIS Retenido por Hoteles 100% — Comisiones Paquetes ITBIS Retenido Hoteles 100% percentage - - - - - + + + + + IT-1 DGII casilla 30; NG 02-05 — hoteles retienen ITBIS en comisiones + DGII ITBIS; Código Tributario Ley 11-92; Decreto 293-11 + IT-1 DGII casilla 30; NG 02-05 — hoteles retienen ITBIS en comisiones + IT-1 / 606 / 607 + current itbis_withholding itbis_withholding_hotel_100 sale_invoice - ITBIS Retenido por Entidades del Estado 100% ITBIS Retenido Estado 100% percentage - - - - - + + + + + IT-1 DGII casilla 31 — ITBIS retenido por instituciones del Estado + DGII ITBIS; Código Tributario Ley 11-92; Decreto 293-11 + IT-1 DGII casilla 31 — ITBIS retenido por instituciones del Estado + IT-1 / 606 / 607 + current itbis_withholding itbis_withholding_state_100 sale_invoice - - ISC 10% — Bebidas Alcohólicas (Vinos, Ron, Whisky y Destilados) ISC Bebidas Alcohólicas 10% percentage - - - - - + + + + + Ley 253-12 mod. Art. 375 CT — ISC bebidas alcohólicas ad valorem 10% + DGII ISC; Código Tributario Ley 11-92 + Ley 253-12 mod. Art. 375 CT — ISC bebidas alcohólicas ad valorem 10% + ISC / 606 / 607 segun operación + current isc isc_alcohol_10 sale_invoice - ISC 20% — Tabaco, Cigarrillos y Derivados ISC Tabaco y Cigarrillos 20% percentage - - - - - + + + + + Arts. 393-441 CT Ley 11-92 — ISC tabaco y cigarrillos, ad valorem 20% + DGII ISC; Código Tributario Ley 11-92 + Arts. 393-441 CT Ley 11-92 — ISC tabaco y cigarrillos, ad valorem 20% + ISC / 606 / 607 segun operación + current isc isc_tobacco_20 sale_invoice - ISC 10% — Servicios de Telecomunicaciones ISC Telecomunicaciones 10% percentage - - - - - + + + + + Arts. 393-441 CT; Ley 253-12 — ISC servicios telecomunicaciones 10% + DGII ISC; Código Tributario Ley 11-92 + Arts. 393-441 CT; Ley 253-12 — ISC servicios telecomunicaciones 10% + ISC / 606 / 607 segun operación + current isc isc_telecom_10 sale_invoice - ISC 16% — Combustibles Fósiles y Derivados del Petróleo ISC Combustibles Fósiles 16% percentage - - - - - + + + + + Ley 253-12 mod. Art. 367 CT — ISC combustibles fósiles 16% + DGII ISC; Código Tributario Ley 11-92 + Ley 253-12 mod. Art. 367 CT — ISC combustibles fósiles 16% + ISC / 606 / 607 segun operación + current isc isc_fossil_fuel_16 sale_invoice - ISC 6.5% — Avtur Tasa Reducida ISC Avtur 6.5% percentage - - - - - + + + + + Ley 253-12 Art. 23 — tasa reducida Avtur 6.5% ad valorem + DGII ISC; Código Tributario Ley 11-92 + Ley 253-12 Art. 23 — tasa reducida Avtur 6.5% ad valorem + ISC / 606 / 607 segun operación + current isc isc_avtur_6_5 sale_invoice - ISC RD$2.00 — Adicional por Galón Gasolina/Gasoil ISC Combustibles RD$2/Galón fixed - - - - - + + + + + Ley 253-12 Art. 20 — adicional RD$2.00 por galón gasolina/gasoil + DGII ISC; Código Tributario Ley 11-92 + Ley 253-12 Art. 20 — adicional RD$2.00 por galón gasolina/gasoil + ISC / 606 / 607 segun operación + current isc isc_fuel_rd2_gallon sale_invoice - Retención ISC 100% — Compañías de Seguros Retención ISC Seguros 100% percentage - - - - - + + + + + NG 04-13 DGII — aseguradoras retienen 100% del ISC facturado + DGII ISC; Código Tributario Ley 11-92 + NG 04-13 DGII — aseguradoras retienen 100% del ISC facturado + ISC / 606 / 607 segun operación + current isc isc_insurance_withholding_100 purchase_invoice - ISC 17% — Vehículos de Motor (Referencial, hasta 2,000 cc) ISC Vehículos 17% percentage - - - - - + + + + + Arts. 393-441 CT — ISC vehículos ad valorem (tasa varía por cilindrada/CIF) + DGII ISC; Código Tributario Ley 11-92 + Arts. 393-441 CT — ISC vehículos ad valorem (tasa varía por cilindrada/CIF) + ISC / 606 / 607 segun operación + current isc isc_vehicle_17 asset_transfer - - @@ -805,19 +944,21 @@ CDT 2% — Contribución para el Desarrollo de las Telecomunicaciones (INDOTEL) CDT INDOTEL 2% percentage - - - - - + + + + + Art. 26 Ley 153-98 Telecomunicaciones — CDT INDOTEL 2% ingresos brutos + Ley 153-98 INDOTEL + Art. 26 Ley 153-98 Telecomunicaciones — CDT INDOTEL 2% ingresos brutos + 607 / reportes telecomunicaciones + current cdt cdt_indotel_2 sale_invoice - - @@ -825,83 +966,101 @@ Propina Legal 10% — Restaurantes, Bares y Hoteles (Personas Físicas y Jurídicas) Propina Legal 10% percentage - - - - - + + + + + Ley 4-11 y Resolución Ministerio Trabajo — Propina obligatoria 10% + Ley 4-11; Ministerio de Trabajo + Ley 4-11 y Resolución Ministerio Trabajo — Propina obligatoria 10% + 607 / Nómina interna propina legal + current tip legal_tip_10 sale_invoice - Impuesto sobre Cheques y Transferencias Bancarias 0.15% (Personas Físicas y Jurídicas) Impuesto Cheques y Transferencias 0.15% percentage - - - - - + + + + + + Art. 382-D CT Ley 11-92 mod. Ley 288-04 — 1.5 por mil cheques/débitos + Impuesto emisión de cheques y transferencias electrónicas + Art. 382-D CT Ley 11-92 mod. Ley 288-04; vigente hasta 2026-07-02 + Cargo bancario / contabilidad financiera + historical others check_transfer_tax_015 bank_charge - Impuesto sobre Cheques y Transferencias Bancarias 0.20% (Personas Físicas y Jurídicas) Impuesto Cheques y Transferencias 0.20% percentage - - - - - + + + + + + Ley 30-26, vig. 2026-07-03 — 2.0 por mil cheques/transferencias + Impuesto emisión de cheques y transferencias electrónicas + Ley 30-26 Art. 40; vigente desde 2026-07-03; aviso DGII calendario Ley 30-26 + Cargo bancario / contabilidad financiera + current others check_transfer_tax_020 bank_charge - Impuesto Mínimo a los Activos 1% (Personas Jurídicas) Impuesto a los Activos 1% percentage - - - - - + + + + + Art. 296-A CT Ley 11-92 — Mínimo ISR 1% activos totales, anual (IR-2) + DGII Impuesto sobre Activos; Código Tributario Ley 11-92 + Art. 296-A CT Ley 11-92 — Mínimo ISR 1% activos totales, anual (IR-2) + ACT / IR-2 + current others asset_tax_1 annual_declaration - Impuesto sobre Transferencia Inmobiliaria 3% (Personas Físicas y Jurídicas) Transferencia Inmobiliaria ITI 3% percentage - - - - - + + + + + Art. 11 Ley 288-04; Arts. 27 ss. Ley 18-88 — ITI 3% valor inmueble + DGII Transferencias Inmobiliarias + Art. 11 Ley 288-04; Arts. 27 ss. Ley 18-88 — ITI 3% valor inmueble + Transferencia inmobiliaria + current others real_estate_transfer_3 asset_transfer - + \ No newline at end of file diff --git a/tax_rule_do.xml b/tax_rule_do.xml index bd42068..9101233 100644 --- a/tax_rule_do.xml +++ b/tax_rule_do.xml @@ -283,6 +283,28 @@ + + Regla Bancaria Cheques / Transferencias Electrónicas (RD) + both + + + + + + + + + + + + + + + + + + + Regla Proveedor Informal Servicios (RD) purchase diff --git a/tests/test_module.py b/tests/test_module.py index 9882f24..8e0ac81 100644 --- a/tests/test_module.py +++ b/tests/test_module.py @@ -1,11 +1,12 @@ import unittest +import datetime from collections import Counter from decimal import Decimal from pathlib import Path from xml.etree import ElementTree as ET from trytond.modules.account_do.tax import ( - TAX_APPLICATION, TAX_FISCAL_TYPE, TAX_KIND) + DGII_FISCAL_STATUS, TAX_APPLICATION, TAX_FISCAL_TYPE, TAX_KIND) from trytond.pool import Pool from trytond.tests.test_tryton import ModuleTestCase, with_transaction from trytond.transaction import Transaction @@ -151,6 +152,34 @@ class AccountDoTestCase(ModuleTestCase): ('tax_fiscal_type', '=', 'itbis_withholding_75_informal'), ('rate', '=', Decimal('-0.135')), ], limit=1)) + check_015, = Tax.search([ + ('company', '=', company.id), + ('description', '=', 'Impuesto Cheques y Transferencias 0.15%'), + ], limit=1) + check_020, = Tax.search([ + ('company', '=', company.id), + ('description', '=', 'Impuesto Cheques y Transferencias 0.20%'), + ], limit=1) + bank_rule, = TaxRule.search([ + ('company', '=', company.id), + ('name', '=', ( + 'Regla Bancaria Cheques / Transferencias ' + 'Electrónicas (RD)')), + ], limit=1) + self.assertEqual(check_015.end_date, datetime.date(2026, 7, 2)) + self.assertEqual(check_015.dgii_fiscal_status, 'historical') + self.assertEqual(check_020.start_date, datetime.date(2026, 7, 3)) + self.assertEqual(check_020.dgii_fiscal_status, 'current') + self.assertEqual( + bank_rule.apply(check_015, { + 'date': datetime.date(2026, 7, 2), + }), + [check_015.id]) + self.assertEqual( + bank_rule.apply(check_015, { + 'date': datetime.date(2026, 7, 3), + }), + [check_020.id]) chart.properties.company = company chart.properties.account_receivable = receivable @@ -248,6 +277,15 @@ class AccountDoUnitTestCase(unittest.TestCase): self.assertFalse([ record_id for record_id, values in taxes.items() if not values.get('tax_application')]) + for field_name in [ + 'dgii_legal_reference', + 'dgii_legal_article', + 'dgii_form_hint', + 'dgii_fiscal_status', + ]: + self.assertFalse([ + record_id for record_id, values in taxes.items() + if not values.get(field_name)]) self.assertEqual( taxes['do_tax_itbis_18_venta']['invoice_account'], 'do_account_21020101') @@ -354,6 +392,18 @@ class AccountDoUnitTestCase(unittest.TestCase): 'isc_fossil_fuel_16') self.assertEqual( taxes['do_tax_cheques_020']['tax_kind'], 'others') + self.assertEqual( + taxes['do_tax_cheques_015']['end_date'], + 'datetime.date(2026, 7, 2)') + self.assertEqual( + taxes['do_tax_cheques_015']['dgii_fiscal_status'], + 'historical') + self.assertEqual( + taxes['do_tax_cheques_020']['start_date'], + 'datetime.date(2026, 7, 3)') + self.assertEqual( + taxes['do_tax_cheques_020']['dgii_fiscal_status'], + 'current') self.assertEqual( taxes['do_tax_cheques_020']['invoice_account'], 'do_account_21021902') @@ -416,6 +466,39 @@ 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_rule_templates_include_date_sensitive_bank_tax(self): + rules = { + record_id: values + for _, record_id, model, values in _iter_xml_records( + 'tax_rule_do.xml') + if model == 'account.tax.rule.template' + } + lines = { + record_id: values + for _, record_id, model, values in _iter_xml_records( + 'tax_rule_do.xml') + if model == 'account.tax.rule.line.template' + } + self.assertIn('do_tax_rule_bank_check_transfer', rules) + self.assertEqual( + lines['do_trline_bank_check_transfer_015']['origin_tax'], + 'do_tax_cheques_015') + self.assertEqual( + lines['do_trline_bank_check_transfer_015']['tax'], + 'do_tax_cheques_015') + self.assertEqual( + lines['do_trline_bank_check_transfer_015']['end_date'], + 'datetime.date(2026, 7, 2)') + self.assertEqual( + lines['do_trline_bank_check_transfer_020']['origin_tax'], + 'do_tax_cheques_015') + self.assertEqual( + lines['do_trline_bank_check_transfer_020']['tax'], + 'do_tax_cheques_020') + self.assertEqual( + lines['do_trline_bank_check_transfer_020']['start_date'], + 'datetime.date(2026, 7, 3)') + def test_tax_kind_contains_dominican_tax_categories(self): codes = {code for code, _ in TAX_KIND} self.assertEqual(codes, { @@ -437,8 +520,10 @@ class AccountDoUnitTestCase(unittest.TestCase): def test_fiscal_classification_codes_are_unique(self): fiscal_codes = [code for code, _ in TAX_FISCAL_TYPE] application_codes = [code for code, _ in TAX_APPLICATION] + status_codes = [code for code, _ in DGII_FISCAL_STATUS] self.assertEqual(len(fiscal_codes), len(set(fiscal_codes))) self.assertEqual(len(application_codes), len(set(application_codes))) + self.assertEqual(len(status_codes), len(set(status_codes))) del ModuleTestCase diff --git a/view/tax_form.xml b/view/tax_form.xml index a950fca..2efd4ca 100644 --- a/view/tax_form.xml +++ b/view/tax_form.xml @@ -7,5 +7,13 @@