Update foreign withholding and tax rules
This commit is contained in:
@@ -8,3 +8,7 @@ Version 8.1.0 - 2026-08-10
|
|||||||
(``es_419``) accounting charts, pending availability of ``es_DO``.
|
(``es_419``) accounting charts, pending availability of ``es_DO``.
|
||||||
* Preserve 8.0.0 chart records when migrating to language-scoped identifiers.
|
* Preserve 8.0.0 chart records when migrating to language-scoped identifiers.
|
||||||
* Normalize the English chart to standard accounting terminology.
|
* Normalize the English chart to standard accounting terminology.
|
||||||
|
* Add the 15% foreign-payment withholding introduced by Law 30-26 and keep
|
||||||
|
technical assistance out of the 10% interest category.
|
||||||
|
* Split tax rules whose duplicate match patterns made later alternatives
|
||||||
|
unreachable.
|
||||||
|
|||||||
@@ -1716,13 +1716,19 @@
|
|||||||
<data language="en" grouped="1">
|
<data language="en" grouped="1">
|
||||||
<record id="do_account_21020701_en" model="account.account.template">
|
<record id="do_account_21020701_en" model="account.account.template">
|
||||||
<field name="code">21020701</field>
|
<field name="code">21020701</field>
|
||||||
<field name="name">Foreign ISR services and royalties 27% payable</field>
|
<field name="name">Foreign ISR other taxable payments 27% payable</field>
|
||||||
<field name="parent" ref="do_account_210207_en"/>
|
<field name="parent" ref="do_account_210207_en"/>
|
||||||
<field name="type" ref="do_type_tax_payable_en"/>
|
<field name="type" ref="do_type_tax_payable_en"/>
|
||||||
</record>
|
</record>
|
||||||
<record id="do_account_21020702_en" model="account.account.template">
|
<record id="do_account_21020702_en" model="account.account.template">
|
||||||
<field name="code">21020702</field>
|
<field name="code">21020702</field>
|
||||||
<field name="name">Foreign ISR interest and assistance 10% payable</field>
|
<field name="name">Foreign ISR interest 10% payable</field>
|
||||||
|
<field name="parent" ref="do_account_210207_en"/>
|
||||||
|
<field name="type" ref="do_type_tax_payable_en"/>
|
||||||
|
</record>
|
||||||
|
<record id="do_account_21020703_en" model="account.account.template">
|
||||||
|
<field name="code">21020703</field>
|
||||||
|
<field name="name">Foreign ISR royalties, software and online services 15% payable</field>
|
||||||
<field name="parent" ref="do_account_210207_en"/>
|
<field name="parent" ref="do_account_210207_en"/>
|
||||||
<field name="type" ref="do_type_tax_payable_en"/>
|
<field name="type" ref="do_type_tax_payable_en"/>
|
||||||
</record>
|
</record>
|
||||||
|
|||||||
@@ -1708,13 +1708,19 @@
|
|||||||
<data language="es_419" grouped="1">
|
<data language="es_419" grouped="1">
|
||||||
<record id="do_account_21020701_es_419" model="account.account.template">
|
<record id="do_account_21020701_es_419" model="account.account.template">
|
||||||
<field name="code">21020701</field>
|
<field name="code">21020701</field>
|
||||||
<field name="name">ISR exterior servicios y regalías 27% por pagar</field>
|
<field name="name">ISR exterior otros pagos gravados 27% por pagar</field>
|
||||||
<field name="parent" ref="do_account_210207_es_419" />
|
<field name="parent" ref="do_account_210207_es_419" />
|
||||||
<field name="type" ref="do_type_tax_payable_es_419" />
|
<field name="type" ref="do_type_tax_payable_es_419" />
|
||||||
</record>
|
</record>
|
||||||
<record id="do_account_21020702_es_419" model="account.account.template">
|
<record id="do_account_21020702_es_419" model="account.account.template">
|
||||||
<field name="code">21020702</field>
|
<field name="code">21020702</field>
|
||||||
<field name="name">ISR exterior intereses y asistencia 10% por pagar</field>
|
<field name="name">ISR exterior intereses 10% por pagar</field>
|
||||||
|
<field name="parent" ref="do_account_210207_es_419" />
|
||||||
|
<field name="type" ref="do_type_tax_payable_es_419" />
|
||||||
|
</record>
|
||||||
|
<record id="do_account_21020703_es_419" model="account.account.template">
|
||||||
|
<field name="code">21020703</field>
|
||||||
|
<field name="name">ISR exterior regalías, software y servicios en línea 15% por pagar</field>
|
||||||
<field name="parent" ref="do_account_210207_es_419" />
|
<field name="parent" ref="do_account_210207_es_419" />
|
||||||
<field name="type" ref="do_type_tax_payable_es_419" />
|
<field name="type" ref="do_type_tax_payable_es_419" />
|
||||||
</record>
|
</record>
|
||||||
@@ -2057,4 +2063,4 @@
|
|||||||
<field name="type" ref="do_type_tax_payable_es_419" />
|
<field name="type" ref="do_type_tax_payable_es_419" />
|
||||||
</record>
|
</record>
|
||||||
</data>
|
</data>
|
||||||
</tryton>
|
</tryton>
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ the reviewer and review date rather than claiming certification in module data.
|
|||||||
Chart Size and Provenance
|
Chart Size and Provenance
|
||||||
-------------------------
|
-------------------------
|
||||||
|
|
||||||
The chart has 281 templates: 70 grouping nodes and 211 posting leaves. Of the
|
The chart has 282 templates: 70 grouping nodes and 212 posting leaves. Of the
|
||||||
posting leaves, 61 are tax control accounts (45 payable and 16 recoverable).
|
posting leaves, 61 are tax control accounts (45 payable and 16 recoverable).
|
||||||
Those controls deliberately provide stable identifiers for accounting and
|
Those controls deliberately provide stable identifiers for accounting and
|
||||||
reporting modules. The remaining leaves cover cash, receivables, payables,
|
reporting modules. The remaining leaves cover cash, receivables, payables,
|
||||||
@@ -36,7 +36,7 @@ designed Tryton baseline using these objective inclusion rules:
|
|||||||
* separate presentation is needed for a documented IFRS accounting policy.
|
* separate presentation is needed for a documented IFRS accounting policy.
|
||||||
|
|
||||||
Grouping nodes are closed and cannot receive postings. The test suite checks
|
Grouping nodes are closed and cannot receive postings. The test suite checks
|
||||||
281 unique templates, required optional-module accounts, account types and the
|
282 unique templates, required optional-module accounts, account types and the
|
||||||
IFRS policy coverage map. This is a transparent functional justification,
|
IFRS policy coverage map. This is a transparent functional justification,
|
||||||
which is the appropriate evidence where no official general chart exists.
|
which is the appropriate evidence where no official general chart exists.
|
||||||
|
|
||||||
@@ -45,7 +45,7 @@ accounts. That is not decidable from Dominican law because no mandatory
|
|||||||
general catalogue supplies a target count. If requested during review, the
|
general catalogue supplies a target count. If requested during review, the
|
||||||
safe reduction is to merge control accounts only after confirming that
|
safe reduction is to merge control accounts only after confirming that
|
||||||
``dgii_reports`` does not depend on their stable identifiers; claiming that
|
``dgii_reports`` does not depend on their stable identifiers; claiming that
|
||||||
281 codes are official would be incorrect.
|
282 codes are official would be incorrect.
|
||||||
|
|
||||||
Upstream Repository
|
Upstream Repository
|
||||||
-------------------
|
-------------------
|
||||||
|
|||||||
+3
-1
@@ -56,8 +56,10 @@ Official References
|
|||||||
<https://dgii.gov.do/legislacion/normasGenerales/Documents/NG%20sobre%20Veh%C3%ADculos%20de%20Motor/norma06-12.pdf>`_
|
<https://dgii.gov.do/legislacion/normasGenerales/Documents/NG%20sobre%20Veh%C3%ADculos%20de%20Motor/norma06-12.pdf>`_
|
||||||
* `General Rule 04-2025 (bovine subsector withholding)
|
* `General Rule 04-2025 (bovine subsector withholding)
|
||||||
<https://dgii.gov.do/legislacion/normasGenerales/Documents/Normas%20Sectoriales/Norma04-25.pdf>`_
|
<https://dgii.gov.do/legislacion/normasGenerales/Documents/Normas%20Sectoriales/Norma04-25.pdf>`_
|
||||||
* `Law 30-26 (bank checks and electronic transfers)
|
* `Law 30-26 (foreign payments, bank checks and electronic transfers)
|
||||||
<https://dgii.gov.do/transparencia/baseLegal/Documents/Leyes/30-26.pdf>`_
|
<https://dgii.gov.do/transparencia/baseLegal/Documents/Leyes/30-26.pdf>`_
|
||||||
|
* `DGII implementation calendar for Law 30-26
|
||||||
|
<https://dgii.gov.do/publicacionesOficiales/avisosInformativos/Documents/2026/10-26.pdf>`_
|
||||||
|
|
||||||
Review Record
|
Review Record
|
||||||
-------------
|
-------------
|
||||||
|
|||||||
@@ -87,6 +87,13 @@ The check and electronic-transfer templates preserve 0.15% through 2 July
|
|||||||
2026 and 0.20% from 3 July 2026 under Law 30-26. Their tax rule switches rates
|
2026 and 0.20% from 3 July 2026 under Law 30-26. Their tax rule switches rates
|
||||||
by accounting date.
|
by accounting date.
|
||||||
|
|
||||||
|
Law 30-26 also introduced articles 305-1 and 305-2 of the Tax Code. From
|
||||||
|
1 July 2026, royalties or rights, software licences, online advertising and
|
||||||
|
the right to use or store data paid abroad are subject to a distinct 15%
|
||||||
|
withholding. Other taxable payments abroad remain at 27%, while article 306
|
||||||
|
interest remains at 10%. Technical assistance must therefore not be
|
||||||
|
classified as article 306 interest.
|
||||||
|
|
||||||
Validation Boundary
|
Validation Boundary
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
|
|||||||
@@ -62,7 +62,8 @@ ISR Withholdings
|
|||||||
* ``do_tax_ret_isr_premios_15`` — 15% qualifying prize band.
|
* ``do_tax_ret_isr_premios_15`` — 15% qualifying prize band.
|
||||||
* ``do_tax_ret_isr_tragamonedas_10`` — 10% slot-machine prize case.
|
* ``do_tax_ret_isr_tragamonedas_10`` — 10% slot-machine prize case.
|
||||||
* ``do_tax_ret_isr_other_income_10`` — 10% residual income case under article 309.
|
* ``do_tax_ret_isr_other_income_10`` — 10% residual income case under article 309.
|
||||||
* ``do_tax_ret_isr_ext_27`` — 27% qualifying service or royalty paid abroad.
|
* ``do_tax_ret_isr_ext_27`` — 27% qualifying payment abroad not governed by a special rate.
|
||||||
|
* ``do_tax_ret_isr_ext_15`` — 15% royalties or rights, software licences, online advertising and data use or storage paid abroad from 1 July 2026.
|
||||||
* ``do_tax_ret_isr_ext_10`` — 10% qualifying interest paid abroad.
|
* ``do_tax_ret_isr_ext_10`` — 10% qualifying interest paid abroad.
|
||||||
|
|
||||||
Selective and Sector Charges
|
Selective and Sector Charges
|
||||||
|
|||||||
@@ -740,6 +740,22 @@
|
|||||||
<field name="type">credit</field>
|
<field name="type">credit</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
<!-- ISR Exterior 15% -->
|
||||||
|
<record id="do_tcl_isr_ext15_inv_en" model="account.tax.code.line.template">
|
||||||
|
<field name="code" ref="do_tc_isr_ext_en"/>
|
||||||
|
<field name="operator">-</field>
|
||||||
|
<field name="tax" ref="do_tax_ret_isr_ext_15_en"/>
|
||||||
|
<field name="amount">tax</field>
|
||||||
|
<field name="type">invoice</field>
|
||||||
|
</record>
|
||||||
|
<record id="do_tcl_isr_ext15_cr_en" model="account.tax.code.line.template">
|
||||||
|
<field name="code" ref="do_tc_isr_ext_en"/>
|
||||||
|
<field name="operator">+</field>
|
||||||
|
<field name="tax" ref="do_tax_ret_isr_ext_15_en"/>
|
||||||
|
<field name="amount">tax</field>
|
||||||
|
<field name="type">credit</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
<!-- ISR Exterior 10% -->
|
<!-- ISR Exterior 10% -->
|
||||||
<record id="do_tcl_isr_ext10_inv_en" model="account.tax.code.line.template">
|
<record id="do_tcl_isr_ext10_inv_en" model="account.tax.code.line.template">
|
||||||
<field name="code" ref="do_tc_isr_ext_en"/>
|
<field name="code" ref="do_tc_isr_ext_en"/>
|
||||||
|
|||||||
+15
-1
@@ -661,6 +661,20 @@
|
|||||||
<field name="amount">tax</field>
|
<field name="amount">tax</field>
|
||||||
<field name="type">credit</field>
|
<field name="type">credit</field>
|
||||||
</record>
|
</record>
|
||||||
|
<record id="do_tcl_isr_ext15_inv_es_419" model="account.tax.code.line.template">
|
||||||
|
<field name="code" ref="do_tc_isr_ext_es_419" />
|
||||||
|
<field name="operator">-</field>
|
||||||
|
<field name="tax" ref="do_tax_ret_isr_ext_15_es_419" />
|
||||||
|
<field name="amount">tax</field>
|
||||||
|
<field name="type">invoice</field>
|
||||||
|
</record>
|
||||||
|
<record id="do_tcl_isr_ext15_cr_es_419" model="account.tax.code.line.template">
|
||||||
|
<field name="code" ref="do_tc_isr_ext_es_419" />
|
||||||
|
<field name="operator">+</field>
|
||||||
|
<field name="tax" ref="do_tax_ret_isr_ext_15_es_419" />
|
||||||
|
<field name="amount">tax</field>
|
||||||
|
<field name="type">credit</field>
|
||||||
|
</record>
|
||||||
<record id="do_tcl_isr_ext10_inv_es_419" model="account.tax.code.line.template">
|
<record id="do_tcl_isr_ext10_inv_es_419" model="account.tax.code.line.template">
|
||||||
<field name="code" ref="do_tc_isr_ext_es_419" />
|
<field name="code" ref="do_tc_isr_ext_es_419" />
|
||||||
<field name="operator">-</field>
|
<field name="operator">-</field>
|
||||||
@@ -872,4 +886,4 @@
|
|||||||
<field name="type">credit</field>
|
<field name="type">credit</field>
|
||||||
</record>
|
</record>
|
||||||
</data>
|
</data>
|
||||||
</tryton>
|
</tryton>
|
||||||
|
|||||||
+16
-4
@@ -288,7 +288,7 @@
|
|||||||
</record>
|
</record>
|
||||||
<!-- ══════ ISR PAGOS AL EXTERIOR — Arts. 305-306 CT Ley 11-92 ══════ -->
|
<!-- ══════ ISR PAGOS AL EXTERIOR — Arts. 305-306 CT Ley 11-92 ══════ -->
|
||||||
<record id="do_tax_ret_isr_ext_27_en" model="account.tax.template">
|
<record id="do_tax_ret_isr_ext_27_en" model="account.tax.template">
|
||||||
<field name="name">ISR Withholding 27% — Payments Abroad: Services and Royalties (Non-Residents)</field>
|
<field name="name">ISR Withholding 27% — Other Taxable Payments Abroad (Non-Residents)</field>
|
||||||
<field name="description">Foreign ISR Withholding 27%</field>
|
<field name="description">Foreign ISR Withholding 27%</field>
|
||||||
<field name="type">percentage</field>
|
<field name="type">percentage</field>
|
||||||
<field name="rate" eval="Decimal('-27')/100" />
|
<field name="rate" eval="Decimal('-27')/100" />
|
||||||
@@ -296,10 +296,22 @@
|
|||||||
<field name="account" ref="do_account_root_en" />
|
<field name="account" ref="do_account_root_en" />
|
||||||
<field name="invoice_account" ref="do_account_21020701_en" />
|
<field name="invoice_account" ref="do_account_21020701_en" />
|
||||||
<field name="credit_note_account" ref="do_account_21020701_en" />
|
<field name="credit_note_account" ref="do_account_21020701_en" />
|
||||||
<field name="legal_notice">Art. 305 CT Ley 11-92 — Servicios y regalías a no residentes 27%</field>
|
<field name="legal_notice">Art. 305 CT Ley 11-92 — pagos gravados no sujetos a una tasa especial</field>
|
||||||
|
</record>
|
||||||
|
<record id="do_tax_ret_isr_ext_15_en" model="account.tax.template">
|
||||||
|
<field name="name">ISR Withholding 15% — Foreign Royalties, Software and Online Services</field>
|
||||||
|
<field name="description">Foreign ISR Withholding 15%</field>
|
||||||
|
<field name="type">percentage</field>
|
||||||
|
<field name="rate" eval="Decimal('-15')/100" />
|
||||||
|
<field name="start_date" eval="datetime.date(2026, 7, 1)" />
|
||||||
|
<field name="group" ref="do_tax_group_isr_ext_en" />
|
||||||
|
<field name="account" ref="do_account_root_en" />
|
||||||
|
<field name="invoice_account" ref="do_account_21020703_en" />
|
||||||
|
<field name="credit_note_account" ref="do_account_21020703_en" />
|
||||||
|
<field name="legal_notice">Arts. 305-1 and 305-2 CT, introduced by Law 30-26 — royalties or rights, software licences, online advertising and data use or storage</field>
|
||||||
</record>
|
</record>
|
||||||
<record id="do_tax_ret_isr_ext_10_en" model="account.tax.template">
|
<record id="do_tax_ret_isr_ext_10_en" model="account.tax.template">
|
||||||
<field name="name">ISR Withholding 10% — Payments Abroad: Interest and Technical Assistance (Non-Residents)</field>
|
<field name="name">ISR Withholding 10% — Interest Paid Abroad (Non-Residents)</field>
|
||||||
<field name="description">Foreign ISR Withholding 10%</field>
|
<field name="description">Foreign ISR Withholding 10%</field>
|
||||||
<field name="type">percentage</field>
|
<field name="type">percentage</field>
|
||||||
<field name="rate" eval="Decimal('-10')/100" />
|
<field name="rate" eval="Decimal('-10')/100" />
|
||||||
@@ -307,7 +319,7 @@
|
|||||||
<field name="account" ref="do_account_root_en" />
|
<field name="account" ref="do_account_root_en" />
|
||||||
<field name="invoice_account" ref="do_account_21020702_en" />
|
<field name="invoice_account" ref="do_account_21020702_en" />
|
||||||
<field name="credit_note_account" ref="do_account_21020702_en" />
|
<field name="credit_note_account" ref="do_account_21020702_en" />
|
||||||
<field name="legal_notice">Arts. 305-306 CT — Intereses y asistencia técnica a no residentes</field>
|
<field name="legal_notice">Art. 306 CT — interest paid or credited abroad</field>
|
||||||
</record>
|
</record>
|
||||||
<!-- ══════ ITBIS ADICIONAL — Retenciones especiales DGII ══════ -->
|
<!-- ══════ ITBIS ADICIONAL — Retenciones especiales DGII ══════ -->
|
||||||
<!-- Servicios gravados con retención del 100% del ITBIS según NG 01-11. -->
|
<!-- Servicios gravados con retención del 100% del ITBIS según NG 01-11. -->
|
||||||
|
|||||||
+16
-4
@@ -279,7 +279,7 @@
|
|||||||
<field name="legal_notice">Art. 309 CT mod. Ley 253-12 — otras rentas no contempladas 10%</field>
|
<field name="legal_notice">Art. 309 CT mod. Ley 253-12 — otras rentas no contempladas 10%</field>
|
||||||
</record>
|
</record>
|
||||||
<record id="do_tax_ret_isr_ext_27_es_419" model="account.tax.template">
|
<record id="do_tax_ret_isr_ext_27_es_419" model="account.tax.template">
|
||||||
<field name="name">Retención ISR 27% — Pagos al Exterior: Servicios y Regalías (No Residentes)</field>
|
<field name="name">Retención ISR 27% — Otros Pagos Gravados al Exterior (No Residentes)</field>
|
||||||
<field name="description">Retención ISR Exterior 27%</field>
|
<field name="description">Retención ISR Exterior 27%</field>
|
||||||
<field name="type">percentage</field>
|
<field name="type">percentage</field>
|
||||||
<field name="rate" eval="Decimal('-27')/100" />
|
<field name="rate" eval="Decimal('-27')/100" />
|
||||||
@@ -287,10 +287,22 @@
|
|||||||
<field name="account" ref="do_account_root_es_419" />
|
<field name="account" ref="do_account_root_es_419" />
|
||||||
<field name="invoice_account" ref="do_account_21020701_es_419" />
|
<field name="invoice_account" ref="do_account_21020701_es_419" />
|
||||||
<field name="credit_note_account" ref="do_account_21020701_es_419" />
|
<field name="credit_note_account" ref="do_account_21020701_es_419" />
|
||||||
<field name="legal_notice">Art. 305 CT Ley 11-92 — Servicios y regalías a no residentes 27%</field>
|
<field name="legal_notice">Art. 305 CT Ley 11-92 — pagos gravados no sujetos a una tasa especial</field>
|
||||||
|
</record>
|
||||||
|
<record id="do_tax_ret_isr_ext_15_es_419" model="account.tax.template">
|
||||||
|
<field name="name">Retención ISR 15% — Regalías, Software y Servicios en Línea al Exterior</field>
|
||||||
|
<field name="description">Retención ISR Exterior 15%</field>
|
||||||
|
<field name="type">percentage</field>
|
||||||
|
<field name="rate" eval="Decimal('-15')/100" />
|
||||||
|
<field name="start_date" eval="datetime.date(2026, 7, 1)" />
|
||||||
|
<field name="group" ref="do_tax_group_isr_ext_es_419" />
|
||||||
|
<field name="account" ref="do_account_root_es_419" />
|
||||||
|
<field name="invoice_account" ref="do_account_21020703_es_419" />
|
||||||
|
<field name="credit_note_account" ref="do_account_21020703_es_419" />
|
||||||
|
<field name="legal_notice">Arts. 305-1 y 305-2 CT, introducidos por Ley 30-26 — regalías o derechos, licencias de software, publicidad en línea y uso o almacenamiento de datos</field>
|
||||||
</record>
|
</record>
|
||||||
<record id="do_tax_ret_isr_ext_10_es_419" model="account.tax.template">
|
<record id="do_tax_ret_isr_ext_10_es_419" model="account.tax.template">
|
||||||
<field name="name">Retención ISR 10% — Pagos al Exterior: Intereses y Asistencia Técnica (No Residentes)</field>
|
<field name="name">Retención ISR 10% — Intereses Pagados al Exterior (No Residentes)</field>
|
||||||
<field name="description">Retención ISR Exterior 10%</field>
|
<field name="description">Retención ISR Exterior 10%</field>
|
||||||
<field name="type">percentage</field>
|
<field name="type">percentage</field>
|
||||||
<field name="rate" eval="Decimal('-10')/100" />
|
<field name="rate" eval="Decimal('-10')/100" />
|
||||||
@@ -298,7 +310,7 @@
|
|||||||
<field name="account" ref="do_account_root_es_419" />
|
<field name="account" ref="do_account_root_es_419" />
|
||||||
<field name="invoice_account" ref="do_account_21020702_es_419" />
|
<field name="invoice_account" ref="do_account_21020702_es_419" />
|
||||||
<field name="credit_note_account" ref="do_account_21020702_es_419" />
|
<field name="credit_note_account" ref="do_account_21020702_es_419" />
|
||||||
<field name="legal_notice">Arts. 305-306 CT — Intereses y asistencia técnica a no residentes</field>
|
<field name="legal_notice">Art. 306 CT — intereses pagados o acreditados al exterior</field>
|
||||||
</record>
|
</record>
|
||||||
<record id="do_tax_ret_itbis_100_inf_es_419" model="account.tax.template">
|
<record id="do_tax_ret_itbis_100_inf_es_419" model="account.tax.template">
|
||||||
<field name="name">Retención ITBIS 100% — Servicios Gravados Sujetos a Retención</field>
|
<field name="name">Retención ITBIS 100% — Servicios Gravados Sujetos a Retención</field>
|
||||||
|
|||||||
+43
-11
@@ -67,6 +67,18 @@
|
|||||||
<field name="tax" ref="do_tax_ret_isr_ext_27_en"/>
|
<field name="tax" ref="do_tax_ret_isr_ext_27_en"/>
|
||||||
<field name="sequence" eval="10"/>
|
<field name="sequence" eval="10"/>
|
||||||
</record>
|
</record>
|
||||||
|
<record id="do_tax_rule_supplier_ext_digital_en" model="account.tax.rule.template">
|
||||||
|
<field name="name">Foreign Royalties, Software and Online Services 15% Rule (RD)</field>
|
||||||
|
<field name="kind">purchase</field>
|
||||||
|
<field name="account" ref="do_account_root_en"/>
|
||||||
|
</record>
|
||||||
|
<record id="do_trline_supp_ext_isr15_en" model="account.tax.rule.line.template">
|
||||||
|
<field name="rule" ref="do_tax_rule_supplier_ext_digital_en"/>
|
||||||
|
<field name="group" ref="do_tax_group_isr_ext_en"/>
|
||||||
|
<field name="tax" ref="do_tax_ret_isr_ext_15_en"/>
|
||||||
|
<field name="start_date" eval="datetime.date(2026, 7, 1)"/>
|
||||||
|
<field name="sequence" eval="10"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
<!-- Tasas especiales ITBIS -->
|
<!-- Tasas especiales ITBIS -->
|
||||||
<record id="do_tax_rule_customer_itbis16_en" model="account.tax.rule.template">
|
<record id="do_tax_rule_customer_itbis16_en" model="account.tax.rule.template">
|
||||||
@@ -219,11 +231,16 @@
|
|||||||
<field name="tax" ref="do_tax_isc_combustibles_16_en"/>
|
<field name="tax" ref="do_tax_isc_combustibles_16_en"/>
|
||||||
<field name="sequence" eval="10"/>
|
<field name="sequence" eval="10"/>
|
||||||
</record>
|
</record>
|
||||||
|
<record id="do_tax_rule_customer_isc_fuel_rd2_en" model="account.tax.rule.template">
|
||||||
|
<field name="name">ISC Rule Additional RD$2 per Gallon of Fuel (RD)</field>
|
||||||
|
<field name="kind">sale</field>
|
||||||
|
<field name="account" ref="do_account_root_en"/>
|
||||||
|
</record>
|
||||||
<record id="do_trline_cust_isc_fuel_rd2_en" model="account.tax.rule.line.template">
|
<record id="do_trline_cust_isc_fuel_rd2_en" model="account.tax.rule.line.template">
|
||||||
<field name="rule" ref="do_tax_rule_customer_isc_fuel_en"/>
|
<field name="rule" ref="do_tax_rule_customer_isc_fuel_rd2_en"/>
|
||||||
<field name="group" ref="do_tax_group_isc_en"/>
|
<field name="group" ref="do_tax_group_isc_en"/>
|
||||||
<field name="tax" ref="do_tax_isc_fuel_rd2_gallon_en"/>
|
<field name="tax" ref="do_tax_isc_fuel_rd2_gallon_en"/>
|
||||||
<field name="sequence" eval="20"/>
|
<field name="sequence" eval="10"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="do_tax_rule_bank_check_transfer_en" model="account.tax.rule.template">
|
<record id="do_tax_rule_bank_check_transfer_en" model="account.tax.rule.template">
|
||||||
@@ -299,38 +316,53 @@
|
|||||||
<field name="sequence" eval="20"/>
|
<field name="sequence" eval="20"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="do_tax_rule_customer_sectorial_retention_en" model="account.tax.rule.template">
|
<record id="do_tax_rule_customer_sectorial_society_en" model="account.tax.rule.template">
|
||||||
<field name="name">Customer Rule with ITBIS Sectoral Withholding (RD)</field>
|
<field name="name">ITBIS Withheld by Companies 30% Customer Rule (RD)</field>
|
||||||
<field name="kind">sale</field>
|
<field name="kind">sale</field>
|
||||||
<field name="account" ref="do_account_root_en"/>
|
<field name="account" ref="do_account_root_en"/>
|
||||||
</record>
|
</record>
|
||||||
<record id="do_trline_cust_sectorial_society_en" model="account.tax.rule.line.template">
|
<record id="do_trline_cust_sectorial_society_en" model="account.tax.rule.line.template">
|
||||||
<field name="rule" ref="do_tax_rule_customer_sectorial_retention_en"/>
|
<field name="rule" ref="do_tax_rule_customer_sectorial_society_en"/>
|
||||||
<field name="group" ref="do_tax_group_itbis_en"/>
|
<field name="group" ref="do_tax_group_itbis_en"/>
|
||||||
<field name="tax" ref="do_tax_ret_itbis_society_30_suf_en"/>
|
<field name="tax" ref="do_tax_ret_itbis_society_30_suf_en"/>
|
||||||
<field name="keep_origin" eval="True"/>
|
<field name="keep_origin" eval="True"/>
|
||||||
<field name="sequence" eval="10"/>
|
<field name="sequence" eval="10"/>
|
||||||
</record>
|
</record>
|
||||||
|
<record id="do_tax_rule_customer_sectorial_airline_en" model="account.tax.rule.template">
|
||||||
|
<field name="name">ITBIS Withheld by Airlines Customer Rule (RD)</field>
|
||||||
|
<field name="kind">sale</field>
|
||||||
|
<field name="account" ref="do_account_root_en"/>
|
||||||
|
</record>
|
||||||
<record id="do_trline_cust_sectorial_airline_en" model="account.tax.rule.line.template">
|
<record id="do_trline_cust_sectorial_airline_en" model="account.tax.rule.line.template">
|
||||||
<field name="rule" ref="do_tax_rule_customer_sectorial_retention_en"/>
|
<field name="rule" ref="do_tax_rule_customer_sectorial_airline_en"/>
|
||||||
<field name="group" ref="do_tax_group_itbis_en"/>
|
<field name="group" ref="do_tax_group_itbis_en"/>
|
||||||
<field name="tax" ref="do_tax_ret_itbis_airline_100_en"/>
|
<field name="tax" ref="do_tax_ret_itbis_airline_100_en"/>
|
||||||
<field name="keep_origin" eval="True"/>
|
<field name="keep_origin" eval="True"/>
|
||||||
<field name="sequence" eval="20"/>
|
<field name="sequence" eval="10"/>
|
||||||
|
</record>
|
||||||
|
<record id="do_tax_rule_customer_sectorial_hotel_en" model="account.tax.rule.template">
|
||||||
|
<field name="name">ITBIS Withheld by Hotels Customer Rule (RD)</field>
|
||||||
|
<field name="kind">sale</field>
|
||||||
|
<field name="account" ref="do_account_root_en"/>
|
||||||
</record>
|
</record>
|
||||||
<record id="do_trline_cust_sectorial_hotel_en" model="account.tax.rule.line.template">
|
<record id="do_trline_cust_sectorial_hotel_en" model="account.tax.rule.line.template">
|
||||||
<field name="rule" ref="do_tax_rule_customer_sectorial_retention_en"/>
|
<field name="rule" ref="do_tax_rule_customer_sectorial_hotel_en"/>
|
||||||
<field name="group" ref="do_tax_group_itbis_en"/>
|
<field name="group" ref="do_tax_group_itbis_en"/>
|
||||||
<field name="tax" ref="do_tax_ret_itbis_hotel_100_en"/>
|
<field name="tax" ref="do_tax_ret_itbis_hotel_100_en"/>
|
||||||
<field name="keep_origin" eval="True"/>
|
<field name="keep_origin" eval="True"/>
|
||||||
<field name="sequence" eval="30"/>
|
<field name="sequence" eval="10"/>
|
||||||
|
</record>
|
||||||
|
<record id="do_tax_rule_customer_sectorial_state_en" model="account.tax.rule.template">
|
||||||
|
<field name="name">ITBIS Withheld by State Entities Customer Rule (RD)</field>
|
||||||
|
<field name="kind">sale</field>
|
||||||
|
<field name="account" ref="do_account_root_en"/>
|
||||||
</record>
|
</record>
|
||||||
<record id="do_trline_cust_sectorial_state_en" model="account.tax.rule.line.template">
|
<record id="do_trline_cust_sectorial_state_en" model="account.tax.rule.line.template">
|
||||||
<field name="rule" ref="do_tax_rule_customer_sectorial_retention_en"/>
|
<field name="rule" ref="do_tax_rule_customer_sectorial_state_en"/>
|
||||||
<field name="group" ref="do_tax_group_itbis_en"/>
|
<field name="group" ref="do_tax_group_itbis_en"/>
|
||||||
<field name="tax" ref="do_tax_ret_itbis_state_100_en"/>
|
<field name="tax" ref="do_tax_ret_itbis_state_100_en"/>
|
||||||
<field name="keep_origin" eval="True"/>
|
<field name="keep_origin" eval="True"/>
|
||||||
<field name="sequence" eval="40"/>
|
<field name="sequence" eval="10"/>
|
||||||
</record>
|
</record>
|
||||||
</data>
|
</data>
|
||||||
</tryton>
|
</tryton>
|
||||||
|
|||||||
+43
-11
@@ -56,6 +56,18 @@
|
|||||||
<field name="tax" ref="do_tax_ret_isr_ext_27_es_419" />
|
<field name="tax" ref="do_tax_ret_isr_ext_27_es_419" />
|
||||||
<field name="sequence" eval="10" />
|
<field name="sequence" eval="10" />
|
||||||
</record>
|
</record>
|
||||||
|
<record id="do_tax_rule_supplier_ext_digital_es_419" model="account.tax.rule.template">
|
||||||
|
<field name="name">Regla Regalías, Software y Servicios en Línea al Exterior 15% (RD)</field>
|
||||||
|
<field name="kind">purchase</field>
|
||||||
|
<field name="account" ref="do_account_root_es_419" />
|
||||||
|
</record>
|
||||||
|
<record id="do_trline_supp_ext_isr15_es_419" model="account.tax.rule.line.template">
|
||||||
|
<field name="rule" ref="do_tax_rule_supplier_ext_digital_es_419" />
|
||||||
|
<field name="group" ref="do_tax_group_isr_ext_es_419" />
|
||||||
|
<field name="tax" ref="do_tax_ret_isr_ext_15_es_419" />
|
||||||
|
<field name="start_date" eval="datetime.date(2026, 7, 1)" />
|
||||||
|
<field name="sequence" eval="10" />
|
||||||
|
</record>
|
||||||
<record id="do_tax_rule_customer_itbis16_es_419" model="account.tax.rule.template">
|
<record id="do_tax_rule_customer_itbis16_es_419" model="account.tax.rule.template">
|
||||||
<field name="name">Regla Clientes ITBIS 16% Tasa Especial (RD)</field>
|
<field name="name">Regla Clientes ITBIS 16% Tasa Especial (RD)</field>
|
||||||
<field name="kind">sale</field>
|
<field name="kind">sale</field>
|
||||||
@@ -202,11 +214,16 @@
|
|||||||
<field name="tax" ref="do_tax_isc_combustibles_16_es_419" />
|
<field name="tax" ref="do_tax_isc_combustibles_16_es_419" />
|
||||||
<field name="sequence" eval="10" />
|
<field name="sequence" eval="10" />
|
||||||
</record>
|
</record>
|
||||||
|
<record id="do_tax_rule_customer_isc_fuel_rd2_es_419" model="account.tax.rule.template">
|
||||||
|
<field name="name">Regla ISC Adicional RD$2 por Galón de Combustible (RD)</field>
|
||||||
|
<field name="kind">sale</field>
|
||||||
|
<field name="account" ref="do_account_root_es_419" />
|
||||||
|
</record>
|
||||||
<record id="do_trline_cust_isc_fuel_rd2_es_419" model="account.tax.rule.line.template">
|
<record id="do_trline_cust_isc_fuel_rd2_es_419" model="account.tax.rule.line.template">
|
||||||
<field name="rule" ref="do_tax_rule_customer_isc_fuel_es_419" />
|
<field name="rule" ref="do_tax_rule_customer_isc_fuel_rd2_es_419" />
|
||||||
<field name="group" ref="do_tax_group_isc_es_419" />
|
<field name="group" ref="do_tax_group_isc_es_419" />
|
||||||
<field name="tax" ref="do_tax_isc_fuel_rd2_gallon_es_419" />
|
<field name="tax" ref="do_tax_isc_fuel_rd2_gallon_es_419" />
|
||||||
<field name="sequence" eval="20" />
|
<field name="sequence" eval="10" />
|
||||||
</record>
|
</record>
|
||||||
<record id="do_tax_rule_bank_check_transfer_es_419" model="account.tax.rule.template">
|
<record id="do_tax_rule_bank_check_transfer_es_419" model="account.tax.rule.template">
|
||||||
<field name="name">Regla Bancaria Cheques / Transferencias Electrónicas (RD)</field>
|
<field name="name">Regla Bancaria Cheques / Transferencias Electrónicas (RD)</field>
|
||||||
@@ -277,38 +294,53 @@
|
|||||||
<field name="tax" ref="do_tax_ret_isc_insurance_100_es_419" />
|
<field name="tax" ref="do_tax_ret_isc_insurance_100_es_419" />
|
||||||
<field name="sequence" eval="20" />
|
<field name="sequence" eval="20" />
|
||||||
</record>
|
</record>
|
||||||
<record id="do_tax_rule_customer_sectorial_retention_es_419" model="account.tax.rule.template">
|
<record id="do_tax_rule_customer_sectorial_society_es_419" model="account.tax.rule.template">
|
||||||
<field name="name">Regla Cliente con Retención Sectorial ITBIS (RD)</field>
|
<field name="name">Regla Cliente ITBIS Retenido por Sociedades 30% (RD)</field>
|
||||||
<field name="kind">sale</field>
|
<field name="kind">sale</field>
|
||||||
<field name="account" ref="do_account_root_es_419" />
|
<field name="account" ref="do_account_root_es_419" />
|
||||||
</record>
|
</record>
|
||||||
<record id="do_trline_cust_sectorial_society_es_419" model="account.tax.rule.line.template">
|
<record id="do_trline_cust_sectorial_society_es_419" model="account.tax.rule.line.template">
|
||||||
<field name="rule" ref="do_tax_rule_customer_sectorial_retention_es_419" />
|
<field name="rule" ref="do_tax_rule_customer_sectorial_society_es_419" />
|
||||||
<field name="group" ref="do_tax_group_itbis_es_419" />
|
<field name="group" ref="do_tax_group_itbis_es_419" />
|
||||||
<field name="tax" ref="do_tax_ret_itbis_society_30_suf_es_419" />
|
<field name="tax" ref="do_tax_ret_itbis_society_30_suf_es_419" />
|
||||||
<field name="keep_origin" eval="True" />
|
<field name="keep_origin" eval="True" />
|
||||||
<field name="sequence" eval="10" />
|
<field name="sequence" eval="10" />
|
||||||
</record>
|
</record>
|
||||||
|
<record id="do_tax_rule_customer_sectorial_airline_es_419" model="account.tax.rule.template">
|
||||||
|
<field name="name">Regla Cliente ITBIS Retenido por Aerolíneas (RD)</field>
|
||||||
|
<field name="kind">sale</field>
|
||||||
|
<field name="account" ref="do_account_root_es_419" />
|
||||||
|
</record>
|
||||||
<record id="do_trline_cust_sectorial_airline_es_419" model="account.tax.rule.line.template">
|
<record id="do_trline_cust_sectorial_airline_es_419" model="account.tax.rule.line.template">
|
||||||
<field name="rule" ref="do_tax_rule_customer_sectorial_retention_es_419" />
|
<field name="rule" ref="do_tax_rule_customer_sectorial_airline_es_419" />
|
||||||
<field name="group" ref="do_tax_group_itbis_es_419" />
|
<field name="group" ref="do_tax_group_itbis_es_419" />
|
||||||
<field name="tax" ref="do_tax_ret_itbis_airline_100_es_419" />
|
<field name="tax" ref="do_tax_ret_itbis_airline_100_es_419" />
|
||||||
<field name="keep_origin" eval="True" />
|
<field name="keep_origin" eval="True" />
|
||||||
<field name="sequence" eval="20" />
|
<field name="sequence" eval="10" />
|
||||||
|
</record>
|
||||||
|
<record id="do_tax_rule_customer_sectorial_hotel_es_419" model="account.tax.rule.template">
|
||||||
|
<field name="name">Regla Cliente ITBIS Retenido por Hoteles (RD)</field>
|
||||||
|
<field name="kind">sale</field>
|
||||||
|
<field name="account" ref="do_account_root_es_419" />
|
||||||
</record>
|
</record>
|
||||||
<record id="do_trline_cust_sectorial_hotel_es_419" model="account.tax.rule.line.template">
|
<record id="do_trline_cust_sectorial_hotel_es_419" model="account.tax.rule.line.template">
|
||||||
<field name="rule" ref="do_tax_rule_customer_sectorial_retention_es_419" />
|
<field name="rule" ref="do_tax_rule_customer_sectorial_hotel_es_419" />
|
||||||
<field name="group" ref="do_tax_group_itbis_es_419" />
|
<field name="group" ref="do_tax_group_itbis_es_419" />
|
||||||
<field name="tax" ref="do_tax_ret_itbis_hotel_100_es_419" />
|
<field name="tax" ref="do_tax_ret_itbis_hotel_100_es_419" />
|
||||||
<field name="keep_origin" eval="True" />
|
<field name="keep_origin" eval="True" />
|
||||||
<field name="sequence" eval="30" />
|
<field name="sequence" eval="10" />
|
||||||
|
</record>
|
||||||
|
<record id="do_tax_rule_customer_sectorial_state_es_419" model="account.tax.rule.template">
|
||||||
|
<field name="name">Regla Cliente ITBIS Retenido por Instituciones del Estado (RD)</field>
|
||||||
|
<field name="kind">sale</field>
|
||||||
|
<field name="account" ref="do_account_root_es_419" />
|
||||||
</record>
|
</record>
|
||||||
<record id="do_trline_cust_sectorial_state_es_419" model="account.tax.rule.line.template">
|
<record id="do_trline_cust_sectorial_state_es_419" model="account.tax.rule.line.template">
|
||||||
<field name="rule" ref="do_tax_rule_customer_sectorial_retention_es_419" />
|
<field name="rule" ref="do_tax_rule_customer_sectorial_state_es_419" />
|
||||||
<field name="group" ref="do_tax_group_itbis_es_419" />
|
<field name="group" ref="do_tax_group_itbis_es_419" />
|
||||||
<field name="tax" ref="do_tax_ret_itbis_state_100_es_419" />
|
<field name="tax" ref="do_tax_ret_itbis_state_100_es_419" />
|
||||||
<field name="keep_origin" eval="True" />
|
<field name="keep_origin" eval="True" />
|
||||||
<field name="sequence" eval="40" />
|
<field name="sequence" eval="10" />
|
||||||
</record>
|
</record>
|
||||||
</data>
|
</data>
|
||||||
</tryton>
|
</tryton>
|
||||||
|
|||||||
+31
-11
@@ -557,35 +557,35 @@ class AccountDoUnitTestCase(unittest.TestCase):
|
|||||||
expected = {
|
expected = {
|
||||||
'account_chart_do_en.xml': {
|
'account_chart_do_en.xml': {
|
||||||
'account.account.type.template': 36,
|
'account.account.type.template': 36,
|
||||||
'account.account.template': 281,
|
'account.account.template': 282,
|
||||||
},
|
},
|
||||||
'tax_do_en.xml': {
|
'tax_do_en.xml': {
|
||||||
'account.tax.group': 7,
|
'account.tax.group': 7,
|
||||||
'account.tax.template': 50,
|
'account.tax.template': 51,
|
||||||
},
|
},
|
||||||
'tax_code_do_en.xml': {
|
'tax_code_do_en.xml': {
|
||||||
'account.tax.code.template': 44,
|
'account.tax.code.template': 44,
|
||||||
'account.tax.code.line.template': 93,
|
'account.tax.code.line.template': 95,
|
||||||
},
|
},
|
||||||
'tax_rule_do_en.xml': {
|
'tax_rule_do_en.xml': {
|
||||||
'account.tax.rule.template': 23,
|
'account.tax.rule.template': 28,
|
||||||
'account.tax.rule.line.template': 30,
|
'account.tax.rule.line.template': 31,
|
||||||
},
|
},
|
||||||
'account_chart_do_es_419.xml': {
|
'account_chart_do_es_419.xml': {
|
||||||
'account.account.type.template': 36,
|
'account.account.type.template': 36,
|
||||||
'account.account.template': 281,
|
'account.account.template': 282,
|
||||||
},
|
},
|
||||||
'tax_do_es_419.xml': {
|
'tax_do_es_419.xml': {
|
||||||
'account.tax.group': 7,
|
'account.tax.group': 7,
|
||||||
'account.tax.template': 50,
|
'account.tax.template': 51,
|
||||||
},
|
},
|
||||||
'tax_code_do_es_419.xml': {
|
'tax_code_do_es_419.xml': {
|
||||||
'account.tax.code.template': 44,
|
'account.tax.code.template': 44,
|
||||||
'account.tax.code.line.template': 93,
|
'account.tax.code.line.template': 95,
|
||||||
},
|
},
|
||||||
'tax_rule_do_es_419.xml': {
|
'tax_rule_do_es_419.xml': {
|
||||||
'account.tax.rule.template': 23,
|
'account.tax.rule.template': 28,
|
||||||
'account.tax.rule.line.template': 30,
|
'account.tax.rule.line.template': 31,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for filename, expected_counts in expected.items():
|
for filename, expected_counts in expected.items():
|
||||||
@@ -829,7 +829,7 @@ class AccountDoUnitTestCase(unittest.TestCase):
|
|||||||
'account_chart_do_en.xml')
|
'account_chart_do_en.xml')
|
||||||
if model == 'account.account.template'
|
if model == 'account.account.template'
|
||||||
}
|
}
|
||||||
self.assertEqual(len(taxes), 50)
|
self.assertEqual(len(taxes), 51)
|
||||||
for record_id, values in taxes.items():
|
for record_id, values in taxes.items():
|
||||||
with self.subTest(record_id=record_id):
|
with self.subTest(record_id=record_id):
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
@@ -991,6 +991,12 @@ class AccountDoUnitTestCase(unittest.TestCase):
|
|||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
lines['do_trline_supp_ext_isr27']['group'],
|
lines['do_trline_supp_ext_isr27']['group'],
|
||||||
'do_tax_group_isr_ext')
|
'do_tax_group_isr_ext')
|
||||||
|
self.assertEqual(
|
||||||
|
lines['do_trline_supp_ext_isr15']['tax'],
|
||||||
|
'do_tax_ret_isr_ext_15')
|
||||||
|
self.assertEqual(
|
||||||
|
lines['do_trline_supp_ext_isr15']['start_date'],
|
||||||
|
'datetime.date(2026, 7, 1)')
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
lines['do_trline_bank_check_transfer_015']['origin_tax'],
|
lines['do_trline_bank_check_transfer_015']['origin_tax'],
|
||||||
'do_tax_cheques_015')
|
'do_tax_cheques_015')
|
||||||
@@ -1010,5 +1016,19 @@ class AccountDoUnitTestCase(unittest.TestCase):
|
|||||||
lines['do_trline_bank_check_transfer_020']['start_date'],
|
lines['do_trline_bank_check_transfer_020']['start_date'],
|
||||||
'datetime.date(2026, 7, 3)')
|
'datetime.date(2026, 7, 3)')
|
||||||
|
|
||||||
|
def test_tax_rule_lines_have_reachable_match_patterns(self):
|
||||||
|
"""A rule must not contain two lines with the same match pattern."""
|
||||||
|
patterns = {}
|
||||||
|
for _, record_id, model, values in _iter_xml_records(
|
||||||
|
'tax_rule_do_en.xml'):
|
||||||
|
if model != 'account.tax.rule.line.template':
|
||||||
|
continue
|
||||||
|
pattern = tuple(values.get(field) for field in [
|
||||||
|
'rule', 'group', 'origin_tax', 'start_date', 'end_date'])
|
||||||
|
self.assertNotIn(
|
||||||
|
pattern, patterns,
|
||||||
|
msg=f'{record_id} is shadowed by {patterns.get(pattern)}')
|
||||||
|
patterns[pattern] = record_id
|
||||||
|
|
||||||
|
|
||||||
del ModuleTestCase
|
del ModuleTestCase
|
||||||
|
|||||||
Reference in New Issue
Block a user