Complete Dominican tax localization metadata
This commit is contained in:
+86
-1
@@ -1,11 +1,12 @@
|
||||
import unittest
|
||||
import datetime
|
||||
from collections import Counter
|
||||
from decimal import Decimal
|
||||
from pathlib import Path
|
||||
from xml.etree import ElementTree as ET
|
||||
|
||||
from trytond.modules.account_do.tax import (
|
||||
TAX_APPLICATION, TAX_FISCAL_TYPE, TAX_KIND)
|
||||
DGII_FISCAL_STATUS, TAX_APPLICATION, TAX_FISCAL_TYPE, TAX_KIND)
|
||||
from trytond.pool import Pool
|
||||
from trytond.tests.test_tryton import ModuleTestCase, with_transaction
|
||||
from trytond.transaction import Transaction
|
||||
@@ -151,6 +152,34 @@ class AccountDoTestCase(ModuleTestCase):
|
||||
('tax_fiscal_type', '=', 'itbis_withholding_75_informal'),
|
||||
('rate', '=', Decimal('-0.135')),
|
||||
], limit=1))
|
||||
check_015, = Tax.search([
|
||||
('company', '=', company.id),
|
||||
('description', '=', 'Impuesto Cheques y Transferencias 0.15%'),
|
||||
], limit=1)
|
||||
check_020, = Tax.search([
|
||||
('company', '=', company.id),
|
||||
('description', '=', 'Impuesto Cheques y Transferencias 0.20%'),
|
||||
], limit=1)
|
||||
bank_rule, = TaxRule.search([
|
||||
('company', '=', company.id),
|
||||
('name', '=', (
|
||||
'Regla Bancaria Cheques / Transferencias '
|
||||
'Electrónicas (RD)')),
|
||||
], limit=1)
|
||||
self.assertEqual(check_015.end_date, datetime.date(2026, 7, 2))
|
||||
self.assertEqual(check_015.dgii_fiscal_status, 'historical')
|
||||
self.assertEqual(check_020.start_date, datetime.date(2026, 7, 3))
|
||||
self.assertEqual(check_020.dgii_fiscal_status, 'current')
|
||||
self.assertEqual(
|
||||
bank_rule.apply(check_015, {
|
||||
'date': datetime.date(2026, 7, 2),
|
||||
}),
|
||||
[check_015.id])
|
||||
self.assertEqual(
|
||||
bank_rule.apply(check_015, {
|
||||
'date': datetime.date(2026, 7, 3),
|
||||
}),
|
||||
[check_020.id])
|
||||
|
||||
chart.properties.company = company
|
||||
chart.properties.account_receivable = receivable
|
||||
@@ -248,6 +277,15 @@ class AccountDoUnitTestCase(unittest.TestCase):
|
||||
self.assertFalse([
|
||||
record_id for record_id, values in taxes.items()
|
||||
if not values.get('tax_application')])
|
||||
for field_name in [
|
||||
'dgii_legal_reference',
|
||||
'dgii_legal_article',
|
||||
'dgii_form_hint',
|
||||
'dgii_fiscal_status',
|
||||
]:
|
||||
self.assertFalse([
|
||||
record_id for record_id, values in taxes.items()
|
||||
if not values.get(field_name)])
|
||||
self.assertEqual(
|
||||
taxes['do_tax_itbis_18_venta']['invoice_account'],
|
||||
'do_account_21020101')
|
||||
@@ -354,6 +392,18 @@ class AccountDoUnitTestCase(unittest.TestCase):
|
||||
'isc_fossil_fuel_16')
|
||||
self.assertEqual(
|
||||
taxes['do_tax_cheques_020']['tax_kind'], 'others')
|
||||
self.assertEqual(
|
||||
taxes['do_tax_cheques_015']['end_date'],
|
||||
'datetime.date(2026, 7, 2)')
|
||||
self.assertEqual(
|
||||
taxes['do_tax_cheques_015']['dgii_fiscal_status'],
|
||||
'historical')
|
||||
self.assertEqual(
|
||||
taxes['do_tax_cheques_020']['start_date'],
|
||||
'datetime.date(2026, 7, 3)')
|
||||
self.assertEqual(
|
||||
taxes['do_tax_cheques_020']['dgii_fiscal_status'],
|
||||
'current')
|
||||
self.assertEqual(
|
||||
taxes['do_tax_cheques_020']['invoice_account'],
|
||||
'do_account_21021902')
|
||||
@@ -416,6 +466,39 @@ class AccountDoUnitTestCase(unittest.TestCase):
|
||||
self.assertEqual(lines['do_tcl_isc_comb_inv']['operator'], '+')
|
||||
self.assertEqual(lines['do_tcl_prop_inv']['code'], 'do_tc_others_tip')
|
||||
|
||||
def test_tax_rule_templates_include_date_sensitive_bank_tax(self):
|
||||
rules = {
|
||||
record_id: values
|
||||
for _, record_id, model, values in _iter_xml_records(
|
||||
'tax_rule_do.xml')
|
||||
if model == 'account.tax.rule.template'
|
||||
}
|
||||
lines = {
|
||||
record_id: values
|
||||
for _, record_id, model, values in _iter_xml_records(
|
||||
'tax_rule_do.xml')
|
||||
if model == 'account.tax.rule.line.template'
|
||||
}
|
||||
self.assertIn('do_tax_rule_bank_check_transfer', rules)
|
||||
self.assertEqual(
|
||||
lines['do_trline_bank_check_transfer_015']['origin_tax'],
|
||||
'do_tax_cheques_015')
|
||||
self.assertEqual(
|
||||
lines['do_trline_bank_check_transfer_015']['tax'],
|
||||
'do_tax_cheques_015')
|
||||
self.assertEqual(
|
||||
lines['do_trline_bank_check_transfer_015']['end_date'],
|
||||
'datetime.date(2026, 7, 2)')
|
||||
self.assertEqual(
|
||||
lines['do_trline_bank_check_transfer_020']['origin_tax'],
|
||||
'do_tax_cheques_015')
|
||||
self.assertEqual(
|
||||
lines['do_trline_bank_check_transfer_020']['tax'],
|
||||
'do_tax_cheques_020')
|
||||
self.assertEqual(
|
||||
lines['do_trline_bank_check_transfer_020']['start_date'],
|
||||
'datetime.date(2026, 7, 3)')
|
||||
|
||||
def test_tax_kind_contains_dominican_tax_categories(self):
|
||||
codes = {code for code, _ in TAX_KIND}
|
||||
self.assertEqual(codes, {
|
||||
@@ -437,8 +520,10 @@ class AccountDoUnitTestCase(unittest.TestCase):
|
||||
def test_fiscal_classification_codes_are_unique(self):
|
||||
fiscal_codes = [code for code, _ in TAX_FISCAL_TYPE]
|
||||
application_codes = [code for code, _ in TAX_APPLICATION]
|
||||
status_codes = [code for code, _ in DGII_FISCAL_STATUS]
|
||||
self.assertEqual(len(fiscal_codes), len(set(fiscal_codes)))
|
||||
self.assertEqual(len(application_codes), len(set(application_codes)))
|
||||
self.assertEqual(len(status_codes), len(set(status_codes)))
|
||||
|
||||
|
||||
del ModuleTestCase
|
||||
|
||||
Reference in New Issue
Block a user