Formalize DGII tax form mapping

This commit is contained in:
José Arturo García
2026-08-09 11:42:00 -04:00
parent 59b4f0e53d
commit c05a15e671
10 changed files with 1031 additions and 0 deletions
+3
View File
@@ -0,0 +1,3 @@
from . import dgii_mapping, tax
__all__ = ['dgii_mapping', 'tax']
+89
View File
@@ -0,0 +1,89 @@
from trytond.model import DeactivableMixin, ModelSQL, ModelView, fields
DGII_FORMS = [
('', ''),
('606', '606 - Compras y Gastos'),
('607', '607 - Ventas e Ingresos'),
('608', '608 - NCF Anulados'),
('609', '609 - Pagos al Exterior'),
('it1', 'IT-1 - Declaracion mensual ITBIS'),
('it1_annex_a', 'IT-1 Anexo A'),
('ir17', 'IR-17 - Otras Retenciones y Retribuciones Complementarias'),
('ir18', 'IR-18 - Dividendos'),
('ir13', 'IR-13 - Retenciones del Estado'),
('isc', 'ISC - Selectivo al Consumo'),
('act', 'ACT - Impuesto sobre Activos'),
('ir2', 'IR-2 - Impuesto sobre la Renta Personas Juridicas'),
]
DGII_AMOUNT_SOURCES = [
('', ''),
('tax_base', 'Base imponible'),
('tax_amount', 'Monto impuesto'),
('withholding_amount', 'Monto retenido'),
('perception_amount', 'Monto percibido'),
('account_balance', 'Saldo contable'),
('informative', 'Informativo'),
]
DGII_OPERATORS = [
('+', 'Suma'),
('-', 'Resta'),
('info', 'Informativo'),
]
DGII_FLOWS = [
('', ''),
('sale', 'Venta'),
('purchase', 'Compra'),
('payment', 'Pago o cobro'),
('bank', 'Cargo bancario'),
('asset', 'Transferencia de activo'),
('annual', 'Declaracion anual'),
]
class DgiiTaxMapping(DeactivableMixin, ModelSQL, ModelView):
"DGII Tax Mapping"
__name__ = 'account.do.dgii.tax.mapping'
tax_template = fields.Many2One(
'account.tax.template', 'Tax Template', required=True,
ondelete='CASCADE',
help='Impuesto de account_do que alimenta esta casilla DGII.')
account_template = fields.Many2One(
'account.account.template', 'Account Template',
help='Cuenta contable principal usada como trazabilidad del mapeo.')
form = fields.Selection(
DGII_FORMS, 'DGII Form', required=True, sort=False)
box = fields.Char(
'DGII Box', required=True, size=80,
help='Numero de casilla oficial o nombre tecnico del campo.')
box_label = fields.Char('DGII Box Label', required=True, size=180)
amount_source = fields.Selection(
DGII_AMOUNT_SOURCES, 'Amount Source', required=True, sort=False)
operator = fields.Selection(
DGII_OPERATORS, 'Operator', required=True, sort=False)
flow = fields.Selection(
DGII_FLOWS, 'Fiscal Flow', required=True, sort=False)
effective_from = fields.Date('Effective From')
effective_to = fields.Date('Effective To')
legal_basis = fields.Text('Legal Basis')
notes = fields.Text('Notes')
@staticmethod
def default_operator():
return '+'
@staticmethod
def default_amount_source():
return 'tax_amount'
@staticmethod
def default_flow():
return 'sale'
def get_rec_name(self, name):
return '%s %s - %s' % (
self.form.upper(), self.box, self.tax_template.rec_name)
+57
View File
@@ -0,0 +1,57 @@
<?xml version="1.0"?>
<tryton>
<data>
<record model="ir.ui.view" id="dgii_tax_mapping_view_tree">
<field name="model">account.do.dgii.tax.mapping</field>
<field name="type">tree</field>
<field name="name">dgii_tax_mapping_tree</field>
</record>
<record model="ir.ui.view" id="dgii_tax_mapping_view_form">
<field name="model">account.do.dgii.tax.mapping</field>
<field name="type">form</field>
<field name="name">dgii_tax_mapping_form</field>
</record>
<record model="ir.action.act_window" id="act_dgii_tax_mapping">
<field name="name">Mapeo DGII por Impuesto</field>
<field name="res_model">account.do.dgii.tax.mapping</field>
</record>
<record model="ir.action.act_window.view" id="act_dgii_tax_mapping_view_tree">
<field name="sequence" eval="10"/>
<field name="view" ref="dgii_tax_mapping_view_tree"/>
<field name="act_window" ref="act_dgii_tax_mapping"/>
</record>
<record model="ir.action.act_window.view" id="act_dgii_tax_mapping_view_form">
<field name="sequence" eval="20"/>
<field name="view" ref="dgii_tax_mapping_view_form"/>
<field name="act_window" ref="act_dgii_tax_mapping"/>
</record>
<menuitem
parent="account.menu_taxes"
action="act_dgii_tax_mapping"
sequence="80"
id="menu_dgii_tax_mapping"
icon="tryton-list"/>
<record model="ir.model.access" id="access_dgii_tax_mapping">
<field name="model">account.do.dgii.tax.mapping</field>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_delete" eval="False"/>
</record>
<record model="ir.model.access" id="access_dgii_tax_mapping_account_admin">
<field name="model">account.do.dgii.tax.mapping</field>
<field name="group" ref="account.group_account_admin"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_delete" eval="True"/>
</record>
</data>
</tryton>
+623
View File
@@ -0,0 +1,623 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- account_do: mapeo fiscal formal impuesto/cuenta -> formulario/casilla DGII. -->
<tryton>
<data>
<!-- ITBIS ventas -->
<record id="dgii_map_itbis_sale_18_it1_b16" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_itbis_18_venta"/>
<field name="account_template" ref="do_account_21020101"/>
<field name="form">it1</field>
<field name="box">16</field>
<field name="box_label">ITBIS cobrado 18%</field>
<field name="amount_source">tax_amount</field>
<field name="operator">+</field>
<field name="flow">sale</field>
<field name="legal_basis">IT-1 casilla 16; Ley 11-92 arts. 335-392; Ley 253-12.</field>
</record>
<record id="dgii_map_itbis_sale_16_it1_b17" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_itbis_16_venta"/>
<field name="account_template" ref="do_account_21020102"/>
<field name="form">it1</field>
<field name="box">17</field>
<field name="box_label">ITBIS cobrado 16%</field>
<field name="amount_source">tax_amount</field>
<field name="operator">+</field>
<field name="flow">sale</field>
<field name="legal_basis">IT-1 casilla 17; tasa especial conservada para casos autorizados.</field>
</record>
<record id="dgii_map_itbis_sale_9_it1_b18" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_itbis_9_venta"/>
<field name="account_template" ref="do_account_21020103"/>
<field name="form">it1</field>
<field name="box">18</field>
<field name="box_label">ITBIS cobrado 9% Ley 690-16</field>
<field name="amount_source">tax_amount</field>
<field name="operator">+</field>
<field name="flow">sale</field>
<field name="legal_basis">IT-1 casilla 18; Ley 690-16.</field>
</record>
<record id="dgii_map_itbis_sale_8_it1_b19" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_itbis_8_venta"/>
<field name="account_template" ref="do_account_21020104"/>
<field name="form">it1</field>
<field name="box">19</field>
<field name="box_label">ITBIS cobrado 8%</field>
<field name="amount_source">tax_amount</field>
<field name="operator">+</field>
<field name="flow">sale</field>
<field name="legal_basis">IT-1 casilla 19; tasa reducida ITBIS.</field>
</record>
<record id="dgii_map_itbis_exempt_it1a_b04" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_itbis_exento"/>
<field name="form">it1_annex_a</field>
<field name="box">04</field>
<field name="box_label">Operaciones exentas</field>
<field name="amount_source">tax_base</field>
<field name="operator">info</field>
<field name="flow">sale</field>
<field name="legal_basis">IT-1 Anexo A; Ley 11-92 arts. 343-344.</field>
</record>
<record id="dgii_map_itbis_zero_it1a_b02" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_itbis_tasa_cero"/>
<field name="account_template" ref="do_account_21020105"/>
<field name="form">it1_annex_a</field>
<field name="box">02</field>
<field name="box_label">Exportaciones y operaciones tasa cero</field>
<field name="amount_source">tax_base</field>
<field name="operator">info</field>
<field name="flow">sale</field>
<field name="legal_basis">IT-1 Anexo A; exportaciones y zonas francas.</field>
</record>
<!-- ITBIS compras -->
<record id="dgii_map_itbis_purchase_18_it1_b22" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_itbis_18_compra"/>
<field name="account_template" ref="do_account_11040101"/>
<field name="form">it1</field>
<field name="box">22</field>
<field name="box_label">ITBIS pagado en compras locales 18%</field>
<field name="amount_source">tax_amount</field>
<field name="operator">+</field>
<field name="flow">purchase</field>
<field name="legal_basis">IT-1 casilla 22; credito fiscal ITBIS.</field>
</record>
<record id="dgii_map_itbis_purchase_16_it1_b22" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_itbis_16_compra"/>
<field name="account_template" ref="do_account_11040102"/>
<field name="form">it1</field>
<field name="box">22</field>
<field name="box_label">ITBIS pagado en compras locales 16%</field>
<field name="amount_source">tax_amount</field>
<field name="operator">+</field>
<field name="flow">purchase</field>
<field name="legal_basis">IT-1 casilla 22; credito fiscal tasa especial 16%.</field>
</record>
<record id="dgii_map_itbis_purchase_9_it1_b22" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_itbis_9_compra"/>
<field name="account_template" ref="do_account_11040103"/>
<field name="form">it1</field>
<field name="box">22</field>
<field name="box_label">ITBIS pagado en compras locales 9%</field>
<field name="amount_source">tax_amount</field>
<field name="operator">+</field>
<field name="flow">purchase</field>
<field name="legal_basis">IT-1 casilla 22; credito fiscal Ley 690-16.</field>
</record>
<record id="dgii_map_itbis_purchase_8_it1_b22" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_itbis_8_compra"/>
<field name="account_template" ref="do_account_11040104"/>
<field name="form">it1</field>
<field name="box">22</field>
<field name="box_label">ITBIS pagado en compras locales 8%</field>
<field name="amount_source">tax_amount</field>
<field name="operator">+</field>
<field name="flow">purchase</field>
<field name="legal_basis">IT-1 casilla 22; credito fiscal tasa reducida 8%.</field>
</record>
<!-- Retenciones ITBIS sufridas / computables -->
<record id="dgii_map_itbis_adq_it1_b30" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_ret_itbis_2_adq"/>
<field name="account_template" ref="do_account_11040601"/>
<field name="form">it1</field>
<field name="box">30</field>
<field name="box_label">Pagos computables por retenciones/percepciones</field>
<field name="amount_source">withholding_amount</field>
<field name="operator">+</field>
<field name="flow">payment</field>
<field name="legal_basis">IT-1 casilla 30; NG 06-23 adquirencias.</field>
</record>
<record id="dgii_map_itbis_airline_it1a_b28" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_ret_itbis_airline_100"/>
<field name="account_template" ref="do_account_11040701"/>
<field name="form">it1_annex_a</field>
<field name="box">28</field>
<field name="box_label">Retenciones por transporte aereo BSP/IATA</field>
<field name="amount_source">withholding_amount</field>
<field name="operator">+</field>
<field name="flow">sale</field>
<field name="legal_basis">IT-1 Anexo A pagos computables sectoriales.</field>
</record>
<record id="dgii_map_itbis_society_it1a_b27" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_ret_itbis_society_30_suf"/>
<field name="account_template" ref="do_account_11040702"/>
<field name="form">it1_annex_a</field>
<field name="box">27</field>
<field name="box_label">Retenciones ITBIS por sociedades</field>
<field name="amount_source">withholding_amount</field>
<field name="operator">+</field>
<field name="flow">sale</field>
<field name="legal_basis">IT-1 Anexo A pagos computables por retenciones.</field>
</record>
<record id="dgii_map_itbis_hotel_it1a_b30" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_ret_itbis_hotel_100"/>
<field name="account_template" ref="do_account_11040703"/>
<field name="form">it1_annex_a</field>
<field name="box">30</field>
<field name="box_label">Retenciones por paquetes de alojamiento</field>
<field name="amount_source">withholding_amount</field>
<field name="operator">+</field>
<field name="flow">sale</field>
<field name="legal_basis">IT-1 Anexo A pagos computables sectoriales.</field>
</record>
<record id="dgii_map_itbis_state_it1a_b31" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_ret_itbis_state_100"/>
<field name="account_template" ref="do_account_11040704"/>
<field name="form">it1_annex_a</field>
<field name="box">31</field>
<field name="box_label">Retenciones realizadas por entidades del Estado</field>
<field name="amount_source">withholding_amount</field>
<field name="operator">+</field>
<field name="flow">sale</field>
<field name="legal_basis">IT-1 Anexo A pagos computables por entidades estatales.</field>
</record>
<!-- Retenciones ITBIS a pagar -->
<record id="dgii_map_ret_itbis_30_it1a_b52" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_ret_itbis_30"/>
<field name="account_template" ref="do_account_21021101"/>
<field name="form">it1_annex_a</field>
<field name="box">52</field>
<field name="box_label">ITBIS retenido 30% sociedades/grandes contribuyentes</field>
<field name="amount_source">withholding_amount</field>
<field name="operator">+</field>
<field name="flow">purchase</field>
<field name="legal_basis">IT-1 Anexo A casilla 52.</field>
</record>
<record id="dgii_map_ret_itbis_services_100_it1a_b50" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_ret_itbis_100_inf"/>
<field name="account_template" ref="do_account_21020201"/>
<field name="form">it1_annex_a</field>
<field name="box">50</field>
<field name="box_label">ITBIS por servicios sujetos a retencion 100%</field>
<field name="amount_source">withholding_amount</field>
<field name="operator">+</field>
<field name="flow">purchase</field>
<field name="legal_basis">IT-1 Anexo A casilla 50.</field>
</record>
<record id="dgii_map_ret_itbis_75_goods_18_it1a_b56" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_ret_itbis_75_inf"/>
<field name="account_template" ref="do_account_21021201"/>
<field name="form">it1_annex_a</field>
<field name="box">56</field>
<field name="box_label">ITBIS bienes sujetos a retencion comprobante compras 18%</field>
<field name="amount_source">withholding_amount</field>
<field name="operator">+</field>
<field name="flow">purchase</field>
<field name="legal_basis">IT-1 Anexo A casilla 56; comprobantes de compras.</field>
</record>
<record id="dgii_map_ret_itbis_75_goods_16_it1a_b57" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_ret_itbis_75_inf_16"/>
<field name="account_template" ref="do_account_21021202"/>
<field name="form">it1_annex_a</field>
<field name="box">57</field>
<field name="box_label">ITBIS bienes sujetos a retencion comprobante compras 16%</field>
<field name="amount_source">withholding_amount</field>
<field name="operator">+</field>
<field name="flow">purchase</field>
<field name="legal_basis">IT-1 Anexo A casilla 57; comprobantes de compras.</field>
</record>
<record id="dgii_map_ret_itbis_goods_100_18_it1a_b56" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_ret_itbis_100_goods_18"/>
<field name="account_template" ref="do_account_21021203"/>
<field name="form">it1_annex_a</field>
<field name="box">56</field>
<field name="box_label">ITBIS bienes proveedor informal 100% tasa 18%</field>
<field name="amount_source">withholding_amount</field>
<field name="operator">+</field>
<field name="flow">purchase</field>
<field name="legal_basis">IT-1 Anexo A casilla 56.</field>
</record>
<record id="dgii_map_ret_itbis_goods_100_16_it1a_b57" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_ret_itbis_100_goods_16"/>
<field name="account_template" ref="do_account_21021204"/>
<field name="form">it1_annex_a</field>
<field name="box">57</field>
<field name="box_label">ITBIS bienes proveedor informal 100% tasa 16%</field>
<field name="amount_source">withholding_amount</field>
<field name="operator">+</field>
<field name="flow">purchase</field>
<field name="legal_basis">IT-1 Anexo A casilla 57.</field>
</record>
<record id="dgii_map_ret_itbis_rst_18_it1a_b53" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_ret_itbis_rst_18"/>
<field name="account_template" ref="do_account_21020202"/>
<field name="form">it1_annex_a</field>
<field name="box">53</field>
<field name="box_label">ITBIS retenido RST 18%</field>
<field name="amount_source">withholding_amount</field>
<field name="operator">+</field>
<field name="flow">purchase</field>
<field name="legal_basis">IT-1 Anexo A casilla 53.</field>
</record>
<record id="dgii_map_ret_itbis_rst_16_it1a_b54" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_ret_itbis_rst_16"/>
<field name="account_template" ref="do_account_21020203"/>
<field name="form">it1_annex_a</field>
<field name="box">54</field>
<field name="box_label">ITBIS retenido RST 16%</field>
<field name="amount_source">withholding_amount</field>
<field name="operator">+</field>
<field name="flow">purchase</field>
<field name="legal_basis">IT-1 Anexo A casilla 54.</field>
</record>
<record id="dgii_map_ret_itbis_insurance_it1a_b50" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_ret_itbis_insurance_100"/>
<field name="account_template" ref="do_account_21020204"/>
<field name="form">it1_annex_a</field>
<field name="box">50</field>
<field name="box_label">ITBIS retenido en servicios de seguro</field>
<field name="amount_source">withholding_amount</field>
<field name="operator">+</field>
<field name="flow">purchase</field>
<field name="legal_basis">IT-1 Anexo A casilla 50.</field>
</record>
<!-- ISR / IR-17 / IR-18 / IR-13 / 609 -->
<record id="dgii_map_isr_pj_5_ir17_services" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_ret_isr_hon_5"/>
<field name="account_template" ref="do_account_21021301"/>
<field name="form">ir17</field>
<field name="box">isr_services_pj_5</field>
<field name="box_label">Retencion ISR servicios personas juridicas 5%</field>
<field name="amount_source">withholding_amount</field>
<field name="operator">+</field>
<field name="flow">purchase</field>
<field name="legal_basis">IR-17; Art. 309 Codigo Tributario.</field>
</record>
<record id="dgii_map_isr_pf_10_ir17_services" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_ret_isr_serv_10"/>
<field name="account_template" ref="do_account_21021302"/>
<field name="form">ir17</field>
<field name="box">isr_services_pf_10</field>
<field name="box_label">Retencion ISR servicios personas fisicas 10%</field>
<field name="amount_source">withholding_amount</field>
<field name="operator">+</field>
<field name="flow">purchase</field>
<field name="legal_basis">IR-17; Art. 309 Codigo Tributario.</field>
</record>
<record id="dgii_map_isr_rent_ir17" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_ret_isr_alq_10"/>
<field name="account_template" ref="do_account_21021401"/>
<field name="form">ir17</field>
<field name="box">isr_rent_10</field>
<field name="box_label">Retencion ISR alquileres 10%</field>
<field name="amount_source">withholding_amount</field>
<field name="operator">+</field>
<field name="flow">purchase</field>
<field name="legal_basis">IR-17; Art. 309 Codigo Tributario.</field>
</record>
<record id="dgii_map_isr_interest_pf_ir17" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_ret_isr_int_10"/>
<field name="account_template" ref="do_account_21021501"/>
<field name="form">ir17</field>
<field name="box">isr_interest_individual_10</field>
<field name="box_label">Retencion ISR intereses personas fisicas 10%</field>
<field name="amount_source">withholding_amount</field>
<field name="operator">+</field>
<field name="flow">payment</field>
<field name="legal_basis">IR-17; Norma General 07-19.</field>
</record>
<record id="dgii_map_isr_interest_pj_ir17" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_ret_isr_int_pj_1"/>
<field name="account_template" ref="do_account_21021502"/>
<field name="form">ir17</field>
<field name="box">isr_interest_legal_entity_1</field>
<field name="box_label">Retencion ISR intereses personas juridicas 1%</field>
<field name="amount_source">withholding_amount</field>
<field name="operator">+</field>
<field name="flow">payment</field>
<field name="legal_basis">IR-17; Norma General 07-19.</field>
</record>
<record id="dgii_map_isr_dividends_ir18" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_ret_isr_div_10"/>
<field name="account_template" ref="do_account_21020601"/>
<field name="form">ir18</field>
<field name="box">dividends_10</field>
<field name="box_label">Retencion ISR dividendos 10%</field>
<field name="amount_source">withholding_amount</field>
<field name="operator">+</field>
<field name="flow">payment</field>
<field name="legal_basis">IR-18; Art. 308 Codigo Tributario.</field>
</record>
<record id="dgii_map_isr_state_15_ir13" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_ret_isr_est_15"/>
<field name="account_template" ref="do_account_11040801"/>
<field name="form">ir13</field>
<field name="box">state_withholding_1_5</field>
<field name="box_label">Retencion ISR Estado 1.5% sufrida</field>
<field name="amount_source">withholding_amount</field>
<field name="operator">+</field>
<field name="flow">sale</field>
<field name="legal_basis">IR-13; retenciones del Estado.</field>
</record>
<record id="dgii_map_isr_state_5_ir13" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_ret_isr_est_5"/>
<field name="account_template" ref="do_account_11040802"/>
<field name="form">ir13</field>
<field name="box">state_withholding_5</field>
<field name="box_label">Retencion ISR Estado 5% sufrida</field>
<field name="amount_source">withholding_amount</field>
<field name="operator">+</field>
<field name="flow">sale</field>
<field name="legal_basis">IR-13; retenciones del Estado.</field>
</record>
<record id="dgii_map_isr_bovine_ir17" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_ret_isr_bovine_1"/>
<field name="account_template" ref="do_account_21021801"/>
<field name="form">ir17</field>
<field name="box">isr_bovine_meat_1</field>
<field name="box_label">Retencion ISR ganaderia/carne bovina 1%</field>
<field name="amount_source">withholding_amount</field>
<field name="operator">+</field>
<field name="flow">purchase</field>
<field name="legal_basis">IR-17; subsector ganaderia/carne bovina.</field>
</record>
<record id="dgii_map_isr_exporter_ir13" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_ret_isr_exporter_25"/>
<field name="account_template" ref="do_account_11040803"/>
<field name="form">ir13</field>
<field name="box">exporter_local_sales_2_5</field>
<field name="box_label">Retencion ISR exportadores mercado local 2.5%</field>
<field name="amount_source">withholding_amount</field>
<field name="operator">+</field>
<field name="flow">sale</field>
<field name="legal_basis">IR-13; retenciones a exportadores en mercado local.</field>
</record>
<record id="dgii_map_isr_prizes_25_ir17" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_ret_isr_premios_25"/>
<field name="account_template" ref="do_account_21021701"/>
<field name="form">ir17</field>
<field name="box">isr_prizes_25</field>
<field name="box_label">Retencion ISR premios 25%</field>
<field name="amount_source">withholding_amount</field>
<field name="operator">+</field>
<field name="flow">payment</field>
<field name="legal_basis">IR-17; Art. 321 Codigo Tributario.</field>
</record>
<record id="dgii_map_isr_prizes_10_ir17" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_ret_isr_premios_10"/>
<field name="account_template" ref="do_account_21021702"/>
<field name="form">ir17</field>
<field name="box">isr_prizes_10</field>
<field name="box_label">Retencion ISR premios 10%</field>
<field name="amount_source">withholding_amount</field>
<field name="operator">+</field>
<field name="flow">payment</field>
<field name="legal_basis">IR-17; premios por tramos.</field>
</record>
<record id="dgii_map_isr_prizes_15_ir17" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_ret_isr_premios_15"/>
<field name="account_template" ref="do_account_21021703"/>
<field name="form">ir17</field>
<field name="box">isr_prizes_15</field>
<field name="box_label">Retencion ISR premios 15%</field>
<field name="amount_source">withholding_amount</field>
<field name="operator">+</field>
<field name="flow">payment</field>
<field name="legal_basis">IR-17; premios por tramos.</field>
</record>
<record id="dgii_map_isr_slot_machine_ir17" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_ret_isr_tragamonedas_10"/>
<field name="account_template" ref="do_account_21021704"/>
<field name="form">ir17</field>
<field name="box">isr_slot_machine_prizes_10</field>
<field name="box_label">Retencion ISR tragamonedas 10%</field>
<field name="amount_source">withholding_amount</field>
<field name="operator">+</field>
<field name="flow">payment</field>
<field name="legal_basis">IR-17; premios maquinas tragamonedas.</field>
</record>
<record id="dgii_map_isr_other_income_ir17" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_ret_isr_other_income_10"/>
<field name="account_template" ref="do_account_21020301"/>
<field name="form">ir17</field>
<field name="box">isr_other_income_10</field>
<field name="box_label">Retencion ISR otras rentas 10%</field>
<field name="amount_source">withholding_amount</field>
<field name="operator">+</field>
<field name="flow">purchase</field>
<field name="legal_basis">IR-17; otras rentas no contempladas.</field>
</record>
<record id="dgii_map_isr_foreign_27_609" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_ret_isr_ext_27"/>
<field name="account_template" ref="do_account_21020701"/>
<field name="form">609</field>
<field name="box">isr_withheld_27</field>
<field name="box_label">ISR retenido pagos al exterior 27%</field>
<field name="amount_source">withholding_amount</field>
<field name="operator">+</field>
<field name="flow">purchase</field>
<field name="legal_basis">Formato 609; Arts. 305-306 Codigo Tributario.</field>
</record>
<record id="dgii_map_isr_foreign_10_609" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_ret_isr_ext_10"/>
<field name="account_template" ref="do_account_21020702"/>
<field name="form">609</field>
<field name="box">isr_withheld_10</field>
<field name="box_label">ISR retenido pagos al exterior 10%</field>
<field name="amount_source">withholding_amount</field>
<field name="operator">+</field>
<field name="flow">purchase</field>
<field name="legal_basis">Formato 609; intereses y asistencia tecnica al exterior.</field>
</record>
<!-- ISC / CDT / propina / otros -->
<record id="dgii_map_isc_alcohol_isc" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_isc_bebidas_alc"/>
<field name="account_template" ref="do_account_21020801"/>
<field name="form">isc</field>
<field name="box">isc_alcohol_10</field>
<field name="box_label">ISC bebidas alcoholicas 10%</field>
<field name="amount_source">tax_amount</field>
<field name="operator">+</field>
<field name="flow">sale</field>
<field name="legal_basis">Declaracion ISC; Ley 11-92 selectivo al consumo.</field>
</record>
<record id="dgii_map_isc_tobacco_isc" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_isc_tabaco"/>
<field name="account_template" ref="do_account_21020802"/>
<field name="form">isc</field>
<field name="box">isc_tobacco_20</field>
<field name="box_label">ISC tabaco y cigarrillos 20%</field>
<field name="amount_source">tax_amount</field>
<field name="operator">+</field>
<field name="flow">sale</field>
<field name="legal_basis">Declaracion ISC; tabaco y cigarrillos.</field>
</record>
<record id="dgii_map_isc_telecom_isc" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_isc_telecom"/>
<field name="account_template" ref="do_account_21020803"/>
<field name="form">isc</field>
<field name="box">isc_telecom_10</field>
<field name="box_label">ISC servicios de telecomunicaciones 10%</field>
<field name="amount_source">tax_amount</field>
<field name="operator">+</field>
<field name="flow">sale</field>
<field name="legal_basis">Declaracion ISC; telecomunicaciones.</field>
</record>
<record id="dgii_map_isc_fuel_16_isc" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_isc_combustibles_16"/>
<field name="account_template" ref="do_account_21020804"/>
<field name="form">isc</field>
<field name="box">isc_fossil_fuel_16</field>
<field name="box_label">ISC combustibles fosiles 16%</field>
<field name="amount_source">tax_amount</field>
<field name="operator">+</field>
<field name="flow">sale</field>
<field name="legal_basis">Declaracion ISC; combustibles fosiles.</field>
</record>
<record id="dgii_map_isc_avtur_isc" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_isc_avtur_65"/>
<field name="account_template" ref="do_account_21020807"/>
<field name="form">isc</field>
<field name="box">isc_avtur_6_5</field>
<field name="box_label">ISC Avtur 6.5%</field>
<field name="amount_source">tax_amount</field>
<field name="operator">+</field>
<field name="flow">sale</field>
<field name="legal_basis">Declaracion ISC; Avtur tasa reducida.</field>
</record>
<record id="dgii_map_isc_fuel_rd2_isc" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_isc_fuel_rd2_gallon"/>
<field name="account_template" ref="do_account_21020808"/>
<field name="form">isc</field>
<field name="box">isc_fuel_rd2_gallon</field>
<field name="box_label">ISC adicional combustibles RD$2 por galon</field>
<field name="amount_source">tax_amount</field>
<field name="operator">+</field>
<field name="flow">sale</field>
<field name="legal_basis">Declaracion ISC; adicional combustibles.</field>
</record>
<record id="dgii_map_ret_isc_insurance_isc" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_ret_isc_insurance_100"/>
<field name="account_template" ref="do_account_21020806"/>
<field name="form">isc</field>
<field name="box">isc_insurance_withholding_100</field>
<field name="box_label">Retencion ISC seguros 100%</field>
<field name="amount_source">withholding_amount</field>
<field name="operator">+</field>
<field name="flow">purchase</field>
<field name="legal_basis">Declaracion ISC; servicios de seguros.</field>
</record>
<record id="dgii_map_isc_vehicle_isc" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_isc_vehiculos"/>
<field name="account_template" ref="do_account_21020805"/>
<field name="form">isc</field>
<field name="box">isc_vehicle_17</field>
<field name="box_label">ISC vehiculos de motor 17%</field>
<field name="amount_source">tax_amount</field>
<field name="operator">+</field>
<field name="flow">asset</field>
<field name="legal_basis">Declaracion ISC; vehiculos de motor.</field>
</record>
<record id="dgii_map_cdt_607" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_cdt_indotel"/>
<field name="account_template" ref="do_account_21020901"/>
<field name="form">607</field>
<field name="box">other_taxes</field>
<field name="box_label">Otros impuestos: CDT INDOTEL 2%</field>
<field name="amount_source">tax_amount</field>
<field name="operator">+</field>
<field name="flow">sale</field>
<field name="legal_basis">Formato 607; CDT Ley 153-98.</field>
</record>
<record id="dgii_map_tip_607" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_propina_10"/>
<field name="account_template" ref="do_account_21020501"/>
<field name="form">607</field>
<field name="box">legal_tip</field>
<field name="box_label">Propina legal 10%</field>
<field name="amount_source">tax_amount</field>
<field name="operator">+</field>
<field name="flow">sale</field>
<field name="legal_basis">Formato 607; propina legal restaurantes, bares y hoteles.</field>
</record>
<record id="dgii_map_checks_015_ir2" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_cheques_015"/>
<field name="account_template" ref="do_account_21021901"/>
<field name="form">ir2</field>
<field name="box">financial_expenses_check_transfer_tax_015</field>
<field name="box_label">Impuesto cheques y transferencias 0.15%</field>
<field name="amount_source">account_balance</field>
<field name="operator">+</field>
<field name="flow">bank</field>
<field name="effective_to">2026-07-02</field>
<field name="legal_basis">IR-2 Anexo B gastos financieros; impuesto cheques/transferencias 0.15%.</field>
</record>
<record id="dgii_map_checks_020_ir2" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_cheques_020"/>
<field name="account_template" ref="do_account_21021902"/>
<field name="form">ir2</field>
<field name="box">financial_expenses_check_transfer_tax_020</field>
<field name="box_label">Impuesto cheques y transferencias 0.20%</field>
<field name="amount_source">account_balance</field>
<field name="operator">+</field>
<field name="flow">bank</field>
<field name="effective_from">2026-07-03</field>
<field name="legal_basis">IR-2 Anexo B gastos financieros; tasa vigente desde 2026-07-03.</field>
</record>
<record id="dgii_map_asset_tax_act" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_activos_1"/>
<field name="account_template" ref="do_account_21020502"/>
<field name="form">act</field>
<field name="box">asset_tax_1</field>
<field name="box_label">Impuesto minimo a los activos 1%</field>
<field name="amount_source">account_balance</field>
<field name="operator">+</field>
<field name="flow">annual</field>
<field name="legal_basis">ACT; impuesto sobre activos.</field>
</record>
<record id="dgii_map_iti_asset" model="account.do.dgii.tax.mapping">
<field name="tax_template" ref="do_tax_iti_3"/>
<field name="account_template" ref="do_account_21021001"/>
<field name="form">ir2</field>
<field name="box">asset_transfer_real_estate_3</field>
<field name="box_label">Impuesto transferencia inmobiliaria 3%</field>
<field name="amount_source">account_balance</field>
<field name="operator">+</field>
<field name="flow">asset</field>
<field name="legal_basis">IR-2 / soporte patrimonial; transferencia inmobiliaria ITI.</field>
</record>
</data>
</tryton>
+80
View File
@@ -1657,3 +1657,83 @@ msgstr "Impuesto cheques y transferencias 0.15% por pagar"
msgctxt "model:account.account.template,name:do_account_21021902"
msgid "Impuesto cheques y transferencias 0.20% por pagar"
msgstr "Impuesto cheques y transferencias 0.20% por pagar"
msgctxt "field:account.do.dgii.tax.mapping,account_template:"
msgid "Account Template"
msgstr "Plantilla de cuenta"
msgctxt "field:account.do.dgii.tax.mapping,amount_source:"
msgid "Amount Source"
msgstr "Fuente del importe"
msgctxt "field:account.do.dgii.tax.mapping,box:"
msgid "DGII Box"
msgstr "Casilla DGII"
msgctxt "field:account.do.dgii.tax.mapping,box_label:"
msgid "DGII Box Label"
msgstr "Etiqueta de casilla DGII"
msgctxt "field:account.do.dgii.tax.mapping,effective_from:"
msgid "Effective From"
msgstr "Vigente desde"
msgctxt "field:account.do.dgii.tax.mapping,effective_to:"
msgid "Effective To"
msgstr "Vigente hasta"
msgctxt "field:account.do.dgii.tax.mapping,flow:"
msgid "Fiscal Flow"
msgstr "Flujo fiscal"
msgctxt "field:account.do.dgii.tax.mapping,form:"
msgid "DGII Form"
msgstr "Formulario DGII"
msgctxt "field:account.do.dgii.tax.mapping,legal_basis:"
msgid "Legal Basis"
msgstr "Base legal"
msgctxt "field:account.do.dgii.tax.mapping,notes:"
msgid "Notes"
msgstr "Notas"
msgctxt "field:account.do.dgii.tax.mapping,operator:"
msgid "Operator"
msgstr "Operador"
msgctxt "field:account.do.dgii.tax.mapping,tax_template:"
msgid "Tax Template"
msgstr "Plantilla de impuesto"
msgctxt "model:account.do.dgii.tax.mapping,string:"
msgid "DGII Tax Mapping"
msgstr "Mapeo DGII por impuesto"
msgctxt "model:ir.action,name:act_dgii_tax_mapping"
msgid "Mapeo DGII por Impuesto"
msgstr "Mapeo DGII por Impuesto"
msgctxt "model:ir.ui.menu,name:menu_dgii_tax_mapping"
msgid "Mapeo DGII por Impuesto"
msgstr "Mapeo DGII por Impuesto"
msgctxt "selection:account.do.dgii.tax.mapping,amount_source:account_balance"
msgid "Account Balance"
msgstr "Saldo contable"
msgctxt "selection:account.do.dgii.tax.mapping,amount_source:informative"
msgid "Informative"
msgstr "Informativo"
msgctxt "selection:account.do.dgii.tax.mapping,amount_source:tax_amount"
msgid "Tax Amount"
msgstr "Monto impuesto"
msgctxt "selection:account.do.dgii.tax.mapping,amount_source:tax_base"
msgid "Tax Base"
msgstr "Base imponible"
msgctxt "selection:account.do.dgii.tax.mapping,amount_source:withholding_amount"
msgid "Withholding Amount"
msgstr "Monto retenido"
+80
View File
@@ -1713,3 +1713,83 @@ msgstr "Impuesto cheques y transferencias 0.15% por pagar"
msgctxt "model:account.account.template,name:do_account_21021902"
msgid "Impuesto cheques y transferencias 0.20% por pagar"
msgstr "Impuesto cheques y transferencias 0.20% por pagar"
msgctxt "field:account.do.dgii.tax.mapping,account_template:"
msgid "Account Template"
msgstr "Plantilla de cuenta"
msgctxt "field:account.do.dgii.tax.mapping,amount_source:"
msgid "Amount Source"
msgstr "Fuente del importe"
msgctxt "field:account.do.dgii.tax.mapping,box:"
msgid "DGII Box"
msgstr "Casilla DGII"
msgctxt "field:account.do.dgii.tax.mapping,box_label:"
msgid "DGII Box Label"
msgstr "Etiqueta de casilla DGII"
msgctxt "field:account.do.dgii.tax.mapping,effective_from:"
msgid "Effective From"
msgstr "Vigente desde"
msgctxt "field:account.do.dgii.tax.mapping,effective_to:"
msgid "Effective To"
msgstr "Vigente hasta"
msgctxt "field:account.do.dgii.tax.mapping,flow:"
msgid "Fiscal Flow"
msgstr "Flujo fiscal"
msgctxt "field:account.do.dgii.tax.mapping,form:"
msgid "DGII Form"
msgstr "Formulario DGII"
msgctxt "field:account.do.dgii.tax.mapping,legal_basis:"
msgid "Legal Basis"
msgstr "Base legal"
msgctxt "field:account.do.dgii.tax.mapping,notes:"
msgid "Notes"
msgstr "Notas"
msgctxt "field:account.do.dgii.tax.mapping,operator:"
msgid "Operator"
msgstr "Operador"
msgctxt "field:account.do.dgii.tax.mapping,tax_template:"
msgid "Tax Template"
msgstr "Plantilla de impuesto"
msgctxt "model:account.do.dgii.tax.mapping,string:"
msgid "DGII Tax Mapping"
msgstr "Mapeo DGII por impuesto"
msgctxt "model:ir.action,name:act_dgii_tax_mapping"
msgid "Mapeo DGII por Impuesto"
msgstr "Mapeo DGII por Impuesto"
msgctxt "model:ir.ui.menu,name:menu_dgii_tax_mapping"
msgid "Mapeo DGII por Impuesto"
msgstr "Mapeo DGII por Impuesto"
msgctxt "selection:account.do.dgii.tax.mapping,amount_source:account_balance"
msgid "Account Balance"
msgstr "Saldo contable"
msgctxt "selection:account.do.dgii.tax.mapping,amount_source:informative"
msgid "Informative"
msgstr "Informativo"
msgctxt "selection:account.do.dgii.tax.mapping,amount_source:tax_amount"
msgid "Tax Amount"
msgstr "Monto impuesto"
msgctxt "selection:account.do.dgii.tax.mapping,amount_source:tax_base"
msgid "Tax Base"
msgstr "Base imponible"
msgctxt "selection:account.do.dgii.tax.mapping,amount_source:withholding_amount"
msgid "Withholding Amount"
msgstr "Monto retenido"
+56
View File
@@ -1,5 +1,6 @@
import unittest
from collections import Counter
from datetime import date
from decimal import Decimal
from pathlib import Path
from xml.etree import ElementTree as ET
@@ -51,6 +52,7 @@ class AccountDoTestCase(ModuleTestCase):
Tax = pool.get('account.tax')
TaxCode = pool.get('account.tax.code')
TaxRule = pool.get('account.tax.rule')
DgiiTaxMapping = pool.get('account.do.dgii.tax.mapping')
CreateChart = pool.get('account.create_chart', type='wizard')
currency, = Currency.create([{
@@ -131,6 +133,14 @@ class AccountDoTestCase(ModuleTestCase):
('company', '=', company.id),
('kind', '=', 'purchase'),
], limit=1))
self.assertEqual(DgiiTaxMapping.search_count([]), 55)
self.assertTrue(DgiiTaxMapping.search([
('tax_template', '=', ModelData.get_id(
'account_do', 'do_tax_cheques_020')),
('form', '=', 'ir2'),
('box', '=', 'financial_expenses_check_transfer_tax_020'),
('effective_from', '=', date(2026, 7, 3)),
], limit=1))
self.assertTrue(Tax.search([
('company', '=', company.id),
('description', '=', 'ITBIS 18% Ventas'),
@@ -361,6 +371,52 @@ class AccountDoUnitTestCase(unittest.TestCase):
"Decimal('0.20')/100",
taxes['do_tax_cheques_020']['rate'])
def test_dgii_tax_mapping_formalizes_every_tax_template(self):
taxes = {
record_id: values
for _, record_id, model, values in _iter_xml_records('tax_do.xml')
if model == 'account.tax.template'
}
mappings = {
record_id: values
for _, record_id, model, values in _iter_xml_records(
'dgii_tax_mapping_data.xml')
if model == 'account.do.dgii.tax.mapping'
}
mapped_taxes = {
values['tax_template'] for values in mappings.values()}
self.assertEqual(len(mappings), 55)
self.assertEqual(mapped_taxes, set(taxes))
for record_id, values in mappings.items():
with self.subTest(record_id=record_id):
self.assertTrue(values.get('form'))
self.assertTrue(values.get('box'))
self.assertTrue(values.get('box_label'))
self.assertTrue(values.get('amount_source'))
self.assertIn(values.get('operator'), {'+', '-', 'info'})
self.assertTrue(values.get('flow'))
self.assertTrue(values.get('legal_basis'))
tax = taxes[values['tax_template']]
if tax.get('type') != 'none':
self.assertTrue(values.get('account_template'))
by_tax = {
values['tax_template']: values
for values in mappings.values()
}
self.assertEqual(by_tax['do_tax_itbis_18_venta']['form'], 'it1')
self.assertEqual(by_tax['do_tax_itbis_18_venta']['box'], '16')
self.assertEqual(by_tax['do_tax_itbis_18_compra']['box'], '22')
self.assertEqual(by_tax['do_tax_itbis_exento']['form'], 'it1_annex_a')
self.assertEqual(by_tax['do_tax_itbis_exento']['box'], '04')
self.assertEqual(by_tax['do_tax_ret_itbis_75_inf']['box'], '56')
self.assertEqual(by_tax['do_tax_ret_isr_ext_27']['form'], '609')
self.assertEqual(by_tax['do_tax_cheques_015']['effective_to'],
'2026-07-02')
self.assertEqual(by_tax['do_tax_cheques_020']['effective_from'],
'2026-07-03')
def test_tax_code_templates_use_expected_signs(self):
codes = {
record_id: values
+3
View File
@@ -10,9 +10,12 @@ xml:
tax_view.xml
tax_code_do.xml
tax_rule_do.xml
dgii_mapping.xml
dgii_tax_mapping_data.xml
[register]
model:
dgii_mapping.DgiiTaxMapping
tax.TaxTemplate
tax.Tax
tax.TaxCode
+29
View File
@@ -0,0 +1,29 @@
<?xml version="1.0"?>
<form>
<label name="tax_template"/>
<field name="tax_template"/>
<label name="account_template"/>
<field name="account_template"/>
<label name="form"/>
<field name="form"/>
<label name="box"/>
<field name="box"/>
<label name="box_label"/>
<field name="box_label" colspan="3"/>
<label name="amount_source"/>
<field name="amount_source"/>
<label name="operator"/>
<field name="operator"/>
<label name="flow"/>
<field name="flow"/>
<label name="active"/>
<field name="active"/>
<label name="effective_from"/>
<field name="effective_from"/>
<label name="effective_to"/>
<field name="effective_to"/>
<separator string="Base legal" colspan="4" id="legal"/>
<field name="legal_basis" colspan="4"/>
<separator string="Notas" colspan="4" id="notes"/>
<field name="notes" colspan="4"/>
</form>
+11
View File
@@ -0,0 +1,11 @@
<?xml version="1.0"?>
<tree>
<field name="tax_template"/>
<field name="form"/>
<field name="box"/>
<field name="box_label"/>
<field name="amount_source"/>
<field name="operator"/>
<field name="account_template"/>
<field name="active"/>
</tree>