Merge complete Dominican localization into 8.0

This commit is contained in:
José Arturo García
2026-08-08 20:56:32 -04:00
parent 71fdabefcf
commit 59b4f0e53d
13 changed files with 2639 additions and 180 deletions
+146 -8
View File
@@ -4,7 +4,8 @@ from decimal import Decimal
from pathlib import Path
from xml.etree import ElementTree as ET
from trytond.modules.account_do.tax import TAX_KIND
from trytond.modules.account_do.tax import (
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
@@ -90,8 +91,21 @@ class AccountDoTestCase(ModuleTestCase):
('closed', '!=', True),
], limit=1)
for code in [
'110401', '110406', '210201', '210202', '210203',
'210206', '210207', '210208', '210209', '210210']:
'110401', '110406', '110407', '110408',
'11040101', '11040102', '11040103', '11040104',
'11040601', '11040801', '11040802', '11040803',
'210201', '210202', '210203', '210206', '210207',
'210208', '210209', '210210', '210211', '210212',
'210213', '210214', '210215', '210216', '210217',
'210218', '210219',
'21020101', '21020102', '21020103', '21020104',
'21020105', '21020201', '21020501', '21020502',
'21020601', '21020701', '21020702', '21020801',
'21020802', '21020803', '21020804', '21020805',
'21020901', '21021001', '21021101', '21021201',
'21021301', '21021302', '21021401', '21021501',
'21021502', '21021701', '21021801', '21021901',
'21021902', '6208']:
with self.subTest(code=code):
self.assertTrue(Account.search([
('company', '=', company.id),
@@ -127,8 +141,16 @@ class AccountDoTestCase(ModuleTestCase):
('company', '=', company.id),
('description', '=', 'Retención ITBIS Gran Contribuyente 30%'),
('tax_kind', '=', 'itbis_withholding'),
('tax_fiscal_type', '=', 'itbis_withholding_30'),
('rate', '=', Decimal('-0.054')),
], limit=1))
self.assertTrue(Tax.search([
('company', '=', company.id),
('description', '=', 'Retención ITBIS Proveedor Informal 75%'),
('tax_kind', '=', 'itbis_withholding'),
('tax_fiscal_type', '=', 'itbis_withholding_75_informal'),
('rate', '=', Decimal('-0.135')),
], limit=1))
chart.properties.company = company
chart.properties.account_receivable = receivable
@@ -216,24 +238,125 @@ class AccountDoUnitTestCase(unittest.TestCase):
for _, record_id, model, values in _iter_xml_records('tax_do.xml')
if model == 'account.tax.template'
}
self.assertEqual(len(taxes), 31)
self.assertEqual(len(taxes), 55)
self.assertFalse([
record_id for record_id, values in taxes.items()
if not values.get('tax_kind')])
self.assertFalse([
record_id for record_id, values in taxes.items()
if not values.get('tax_fiscal_type')])
self.assertFalse([
record_id for record_id, values in taxes.items()
if not values.get('tax_application')])
self.assertEqual(
taxes['do_tax_itbis_18_venta']['invoice_account'],
'do_account_210201')
'do_account_21020101')
self.assertEqual(
taxes['do_tax_itbis_18_compra']['invoice_account'],
'do_account_110401')
'do_account_11040101')
expected_accounts = {
'do_tax_itbis_18_venta': 'do_account_21020101',
'do_tax_itbis_16_venta': 'do_account_21020102',
'do_tax_itbis_9_venta': 'do_account_21020103',
'do_tax_itbis_8_venta': 'do_account_21020104',
'do_tax_itbis_tasa_cero': 'do_account_21020105',
'do_tax_itbis_18_compra': 'do_account_11040101',
'do_tax_itbis_16_compra': 'do_account_11040102',
'do_tax_itbis_9_compra': 'do_account_11040103',
'do_tax_itbis_8_compra': 'do_account_11040104',
'do_tax_ret_itbis_2_adq': 'do_account_11040601',
'do_tax_ret_itbis_30': 'do_account_21021101',
'do_tax_ret_itbis_100_inf': 'do_account_21020201',
'do_tax_ret_itbis_75_inf': 'do_account_21021201',
'do_tax_ret_itbis_75_inf_16': 'do_account_21021202',
'do_tax_ret_itbis_100_goods_18': 'do_account_21021203',
'do_tax_ret_itbis_100_goods_16': 'do_account_21021204',
'do_tax_ret_itbis_rst_18': 'do_account_21020202',
'do_tax_ret_itbis_rst_16': 'do_account_21020203',
'do_tax_ret_itbis_insurance_100': 'do_account_21020204',
'do_tax_ret_itbis_airline_100': 'do_account_11040701',
'do_tax_ret_itbis_society_30_suf': 'do_account_11040702',
'do_tax_ret_itbis_hotel_100': 'do_account_11040703',
'do_tax_ret_itbis_state_100': 'do_account_11040704',
'do_tax_ret_isr_hon_5': 'do_account_21021301',
'do_tax_ret_isr_serv_10': 'do_account_21021302',
'do_tax_ret_isr_div_10': 'do_account_21020601',
'do_tax_ret_isr_int_10': 'do_account_21021501',
'do_tax_ret_isr_int_pj_1': 'do_account_21021502',
'do_tax_ret_isr_alq_10': 'do_account_21021401',
'do_tax_ret_isr_est_15': 'do_account_11040801',
'do_tax_ret_isr_est_5': 'do_account_11040802',
'do_tax_ret_isr_exporter_25': 'do_account_11040803',
'do_tax_ret_isr_bovine_1': 'do_account_21021801',
'do_tax_ret_isr_premios_25': 'do_account_21021701',
'do_tax_ret_isr_premios_10': 'do_account_21021702',
'do_tax_ret_isr_premios_15': 'do_account_21021703',
'do_tax_ret_isr_tragamonedas_10': 'do_account_21021704',
'do_tax_ret_isr_other_income_10': 'do_account_21020301',
'do_tax_ret_isr_ext_27': 'do_account_21020701',
'do_tax_ret_isr_ext_10': 'do_account_21020702',
'do_tax_isc_bebidas_alc': 'do_account_21020801',
'do_tax_isc_tabaco': 'do_account_21020802',
'do_tax_isc_telecom': 'do_account_21020803',
'do_tax_isc_combustibles_16': 'do_account_21020804',
'do_tax_isc_avtur_65': 'do_account_21020807',
'do_tax_isc_fuel_rd2_gallon': 'do_account_21020808',
'do_tax_ret_isc_insurance_100': 'do_account_21020806',
'do_tax_isc_vehiculos': 'do_account_21020805',
'do_tax_cdt_indotel': 'do_account_21020901',
'do_tax_propina_10': 'do_account_21020501',
'do_tax_cheques_015': 'do_account_21021901',
'do_tax_cheques_020': 'do_account_21021902',
'do_tax_activos_1': 'do_account_21020502',
'do_tax_iti_3': 'do_account_21021001',
}
for record_id, account_id in expected_accounts.items():
with self.subTest(record_id=record_id):
self.assertEqual(taxes[record_id]['invoice_account'], account_id)
self.assertEqual(
taxes[record_id]['credit_note_account'], account_id)
self.assertEqual(
taxes['do_tax_ret_itbis_30']['tax_kind'],
'itbis_withholding')
self.assertIn(
"Decimal('-5.4')/100",
taxes['do_tax_ret_itbis_30']['rate'])
self.assertEqual(
taxes['do_tax_ret_itbis_75_inf']['tax_fiscal_type'],
'itbis_withholding_75_informal')
self.assertIn(
"Decimal('-13.5')/100",
taxes['do_tax_ret_itbis_75_inf']['rate'])
for record_id in [
'do_tax_ret_isr_hon_5',
'do_tax_ret_isr_serv_10',
'do_tax_ret_isr_alq_10',
'do_tax_ret_isr_est_5',
'do_tax_ret_isr_bovine_1',
'do_tax_ret_isr_exporter_25',
'do_tax_ret_isr_ext_27',
]:
self.assertIn("Decimal('-", taxes[record_id]['rate'])
self.assertEqual(
taxes['do_tax_itbis_9_venta']['tax_fiscal_type'],
'itbis_sale_9')
self.assertIn(
"Decimal('9')/100",
taxes['do_tax_itbis_9_compra']['rate'])
self.assertEqual(
taxes['do_tax_isc_bebidas_alc']['tax_fiscal_type'],
'isc_alcohol_10')
self.assertIn(
"Decimal('10')/100",
taxes['do_tax_isc_bebidas_alc']['rate'])
self.assertEqual(
taxes['do_tax_isc_combustibles_16']['tax_fiscal_type'],
'isc_fossil_fuel_16')
self.assertEqual(
taxes['do_tax_cheques_020']['tax_kind'], 'others')
self.assertEqual(
taxes['do_tax_cheques_020']['invoice_account'],
'do_account_21021902')
self.assertIn(
"Decimal('0.20')/100",
taxes['do_tax_cheques_020']['rate'])
@@ -280,8 +403,17 @@ class AccountDoUnitTestCase(unittest.TestCase):
'do_tc_others_checks_020')
self.assertEqual(lines['do_tcl_itbis18v_inv']['operator'], '+')
self.assertEqual(lines['do_tcl_itbis18c_inv']['operator'], '-')
self.assertEqual(lines['do_tcl_ret_itbis_inv']['operator'], '+')
self.assertEqual(lines['do_tcl_ret_itbis_adq_inv']['operator'], '-')
self.assertEqual(lines['do_tcl_itbis9v_inv']['operator'], '+')
self.assertEqual(lines['do_tcl_itbis9c_inv']['operator'], '-')
self.assertEqual(lines['do_tcl_ret_itbis_inv']['operator'], '-')
self.assertEqual(lines['do_tcl_ret_itbis_adq_inv']['operator'], '+')
self.assertEqual(lines['do_tcl_ret_itbis_inf75_inv']['operator'], '-')
self.assertEqual(lines['do_tcl_isr_hon_inv']['operator'], '-')
self.assertEqual(lines['do_tcl_isr_est_inv']['operator'], '+')
self.assertEqual(lines['do_tcl_isr_est5_inv']['operator'], '+')
self.assertEqual(lines['do_tcl_isr_bovine_inv']['operator'], '-')
self.assertEqual(lines['do_tcl_isr_exporter_inv']['operator'], '+')
self.assertEqual(lines['do_tcl_isc_comb_inv']['operator'], '+')
self.assertEqual(lines['do_tcl_prop_inv']['code'], 'do_tc_others_tip')
def test_tax_kind_contains_dominican_tax_categories(self):
@@ -302,5 +434,11 @@ class AccountDoUnitTestCase(unittest.TestCase):
codes = [code for code, _ in TAX_KIND]
self.assertEqual(len(codes), len(set(codes)))
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]
self.assertEqual(len(fiscal_codes), len(set(fiscal_codes)))
self.assertEqual(len(application_codes), len(set(application_codes)))
del ModuleTestCase