Structure Dominican financial statements
This commit is contained in:
@@ -1,3 +1,8 @@
|
|||||||
|
Version 8.0.2 - 2026-08-10
|
||||||
|
--------------------------
|
||||||
|
* Structure income-statement types under current-period profit or loss, with
|
||||||
|
operating and non-operating sections compatible with Tryton core reports.
|
||||||
|
|
||||||
Version 8.0.1 - 2026-08-09
|
Version 8.0.1 - 2026-08-09
|
||||||
--------------------------
|
--------------------------
|
||||||
* Initial release.
|
* Initial release.
|
||||||
|
|||||||
+40
-15
@@ -191,45 +191,70 @@
|
|||||||
<field name="sequence" eval="30"/>
|
<field name="sequence" eval="30"/>
|
||||||
<field name="statement">balance</field>
|
<field name="statement">balance</field>
|
||||||
</record>
|
</record>
|
||||||
|
<record id="do_type_profit_loss_en" model="account.account.type.template">
|
||||||
|
<field name="name">Current Period Profit or Loss</field>
|
||||||
|
<field name="parent" ref="do_type_equity_en"/>
|
||||||
|
<field name="sequence" eval="40"/>
|
||||||
|
<field name="statement">income</field>
|
||||||
|
</record>
|
||||||
|
<record id="do_type_operating_section_en" model="account.account.type.template">
|
||||||
|
<field name="name">Operating profit or loss</field>
|
||||||
|
<field name="parent" ref="do_type_profit_loss_en"/>
|
||||||
|
<field name="sequence" eval="10"/>
|
||||||
|
<field name="statement">income</field>
|
||||||
|
</record>
|
||||||
<record id="do_type_revenue_en" model="account.account.type.template">
|
<record id="do_type_revenue_en" model="account.account.type.template">
|
||||||
<field name="name">Revenue</field>
|
<field name="name">Revenue</field>
|
||||||
<field name="parent" ref="do_type_root_en"/>
|
<field name="parent" ref="do_type_operating_section_en"/>
|
||||||
<field name="sequence" eval="40"/>
|
<field name="sequence" eval="10"/>
|
||||||
<field name="statement">income</field>
|
<field name="statement">income</field>
|
||||||
<field name="revenue" eval="True"/>
|
<field name="revenue" eval="True"/>
|
||||||
</record>
|
</record>
|
||||||
<record id="do_type_other_income_en" model="account.account.type.template">
|
<record id="do_type_expenses_en" model="account.account.type.template">
|
||||||
<field name="name">Other Income and Gains</field>
|
<field name="name">Operating costs and expenses</field>
|
||||||
<field name="parent" ref="do_type_root_en"/>
|
<field name="parent" ref="do_type_operating_section_en"/>
|
||||||
<field name="sequence" eval="50"/>
|
<field name="sequence" eval="20"/>
|
||||||
<field name="statement">income</field>
|
<field name="statement">income</field>
|
||||||
<field name="revenue" eval="True"/>
|
<field name="expense" eval="True"/>
|
||||||
</record>
|
</record>
|
||||||
<record id="do_type_cogs_en" model="account.account.type.template">
|
<record id="do_type_cogs_en" model="account.account.type.template">
|
||||||
<field name="name">Cost of Sales and Services</field>
|
<field name="name">Cost of Sales and Services</field>
|
||||||
<field name="parent" ref="do_type_root_en"/>
|
<field name="parent" ref="do_type_expenses_en"/>
|
||||||
<field name="sequence" eval="60"/>
|
<field name="sequence" eval="10"/>
|
||||||
<field name="statement">income</field>
|
<field name="statement">income</field>
|
||||||
<field name="expense" eval="True"/>
|
<field name="expense" eval="True"/>
|
||||||
</record>
|
</record>
|
||||||
<record id="do_type_expense_en" model="account.account.type.template">
|
<record id="do_type_expense_en" model="account.account.type.template">
|
||||||
<field name="name">Operational expenses</field>
|
<field name="name">Operational expenses</field>
|
||||||
<field name="parent" ref="do_type_root_en"/>
|
<field name="parent" ref="do_type_expenses_en"/>
|
||||||
<field name="sequence" eval="70"/>
|
<field name="sequence" eval="20"/>
|
||||||
<field name="statement">income</field>
|
<field name="statement">income</field>
|
||||||
<field name="expense" eval="True"/>
|
<field name="expense" eval="True"/>
|
||||||
</record>
|
</record>
|
||||||
|
<record id="do_type_non_operating_section_en" model="account.account.type.template">
|
||||||
|
<field name="name">Non-operating profit or loss</field>
|
||||||
|
<field name="parent" ref="do_type_profit_loss_en"/>
|
||||||
|
<field name="sequence" eval="20"/>
|
||||||
|
<field name="statement">income</field>
|
||||||
|
</record>
|
||||||
|
<record id="do_type_other_income_en" model="account.account.type.template">
|
||||||
|
<field name="name">Other Income and Gains</field>
|
||||||
|
<field name="parent" ref="do_type_non_operating_section_en"/>
|
||||||
|
<field name="sequence" eval="10"/>
|
||||||
|
<field name="statement">income</field>
|
||||||
|
<field name="revenue" eval="True"/>
|
||||||
|
</record>
|
||||||
<record id="do_type_financial_expense_en" model="account.account.type.template">
|
<record id="do_type_financial_expense_en" model="account.account.type.template">
|
||||||
<field name="name">Financial expenses</field>
|
<field name="name">Financial expenses</field>
|
||||||
<field name="parent" ref="do_type_root_en"/>
|
<field name="parent" ref="do_type_non_operating_section_en"/>
|
||||||
<field name="sequence" eval="80"/>
|
<field name="sequence" eval="20"/>
|
||||||
<field name="statement">income</field>
|
<field name="statement">income</field>
|
||||||
<field name="expense" eval="True"/>
|
<field name="expense" eval="True"/>
|
||||||
</record>
|
</record>
|
||||||
<record id="do_type_income_tax_en" model="account.account.type.template">
|
<record id="do_type_income_tax_en" model="account.account.type.template">
|
||||||
<field name="name">Income Tax</field>
|
<field name="name">Income Tax</field>
|
||||||
<field name="parent" ref="do_type_root_en"/>
|
<field name="parent" ref="do_type_non_operating_section_en"/>
|
||||||
<field name="sequence" eval="90"/>
|
<field name="sequence" eval="30"/>
|
||||||
<field name="statement">income</field>
|
<field name="statement">income</field>
|
||||||
<field name="expense" eval="True"/>
|
<field name="expense" eval="True"/>
|
||||||
</record>
|
</record>
|
||||||
|
|||||||
+40
-15
@@ -189,45 +189,70 @@
|
|||||||
<field name="sequence" eval="30" />
|
<field name="sequence" eval="30" />
|
||||||
<field name="statement">balance</field>
|
<field name="statement">balance</field>
|
||||||
</record>
|
</record>
|
||||||
|
<record id="do_type_profit_loss_es_419" model="account.account.type.template">
|
||||||
|
<field name="name">Resultado del período actual</field>
|
||||||
|
<field name="parent" ref="do_type_equity_es_419" />
|
||||||
|
<field name="sequence" eval="40" />
|
||||||
|
<field name="statement">income</field>
|
||||||
|
</record>
|
||||||
|
<record id="do_type_operating_section_es_419" model="account.account.type.template">
|
||||||
|
<field name="name">Resultado de operación</field>
|
||||||
|
<field name="parent" ref="do_type_profit_loss_es_419" />
|
||||||
|
<field name="sequence" eval="10" />
|
||||||
|
<field name="statement">income</field>
|
||||||
|
</record>
|
||||||
<record id="do_type_revenue_es_419" model="account.account.type.template">
|
<record id="do_type_revenue_es_419" model="account.account.type.template">
|
||||||
<field name="name">Ingresos de actividades ordinarias</field>
|
<field name="name">Ingresos de actividades ordinarias</field>
|
||||||
<field name="parent" ref="do_type_root_es_419" />
|
<field name="parent" ref="do_type_operating_section_es_419" />
|
||||||
<field name="sequence" eval="40" />
|
<field name="sequence" eval="10" />
|
||||||
<field name="statement">income</field>
|
<field name="statement">income</field>
|
||||||
<field name="revenue" eval="True" />
|
<field name="revenue" eval="True" />
|
||||||
</record>
|
</record>
|
||||||
<record id="do_type_other_income_es_419" model="account.account.type.template">
|
<record id="do_type_expenses_es_419" model="account.account.type.template">
|
||||||
<field name="name">Otros ingresos y ganancias</field>
|
<field name="name">Costos y gastos de operación</field>
|
||||||
<field name="parent" ref="do_type_root_es_419" />
|
<field name="parent" ref="do_type_operating_section_es_419" />
|
||||||
<field name="sequence" eval="50" />
|
<field name="sequence" eval="20" />
|
||||||
<field name="statement">income</field>
|
<field name="statement">income</field>
|
||||||
<field name="revenue" eval="True" />
|
<field name="expense" eval="True" />
|
||||||
</record>
|
</record>
|
||||||
<record id="do_type_cogs_es_419" model="account.account.type.template">
|
<record id="do_type_cogs_es_419" model="account.account.type.template">
|
||||||
<field name="name">Costo de ventas y servicios</field>
|
<field name="name">Costo de ventas y servicios</field>
|
||||||
<field name="parent" ref="do_type_root_es_419" />
|
<field name="parent" ref="do_type_expenses_es_419" />
|
||||||
<field name="sequence" eval="60" />
|
<field name="sequence" eval="10" />
|
||||||
<field name="statement">income</field>
|
<field name="statement">income</field>
|
||||||
<field name="expense" eval="True" />
|
<field name="expense" eval="True" />
|
||||||
</record>
|
</record>
|
||||||
<record id="do_type_expense_es_419" model="account.account.type.template">
|
<record id="do_type_expense_es_419" model="account.account.type.template">
|
||||||
<field name="name">Gastos operacionales</field>
|
<field name="name">Gastos operacionales</field>
|
||||||
<field name="parent" ref="do_type_root_es_419" />
|
<field name="parent" ref="do_type_expenses_es_419" />
|
||||||
<field name="sequence" eval="70" />
|
<field name="sequence" eval="20" />
|
||||||
<field name="statement">income</field>
|
<field name="statement">income</field>
|
||||||
<field name="expense" eval="True" />
|
<field name="expense" eval="True" />
|
||||||
</record>
|
</record>
|
||||||
|
<record id="do_type_non_operating_section_es_419" model="account.account.type.template">
|
||||||
|
<field name="name">Resultado no operativo</field>
|
||||||
|
<field name="parent" ref="do_type_profit_loss_es_419" />
|
||||||
|
<field name="sequence" eval="20" />
|
||||||
|
<field name="statement">income</field>
|
||||||
|
</record>
|
||||||
|
<record id="do_type_other_income_es_419" model="account.account.type.template">
|
||||||
|
<field name="name">Otros ingresos y ganancias</field>
|
||||||
|
<field name="parent" ref="do_type_non_operating_section_es_419" />
|
||||||
|
<field name="sequence" eval="10" />
|
||||||
|
<field name="statement">income</field>
|
||||||
|
<field name="revenue" eval="True" />
|
||||||
|
</record>
|
||||||
<record id="do_type_financial_expense_es_419" model="account.account.type.template">
|
<record id="do_type_financial_expense_es_419" model="account.account.type.template">
|
||||||
<field name="name">Gastos financieros</field>
|
<field name="name">Gastos financieros</field>
|
||||||
<field name="parent" ref="do_type_root_es_419" />
|
<field name="parent" ref="do_type_non_operating_section_es_419" />
|
||||||
<field name="sequence" eval="80" />
|
<field name="sequence" eval="20" />
|
||||||
<field name="statement">income</field>
|
<field name="statement">income</field>
|
||||||
<field name="expense" eval="True" />
|
<field name="expense" eval="True" />
|
||||||
</record>
|
</record>
|
||||||
<record id="do_type_income_tax_es_419" model="account.account.type.template">
|
<record id="do_type_income_tax_es_419" model="account.account.type.template">
|
||||||
<field name="name">Impuesto a las ganancias</field>
|
<field name="name">Impuesto a las ganancias</field>
|
||||||
<field name="parent" ref="do_type_root_es_419" />
|
<field name="parent" ref="do_type_non_operating_section_es_419" />
|
||||||
<field name="sequence" eval="90" />
|
<field name="sequence" eval="30" />
|
||||||
<field name="statement">income</field>
|
<field name="statement">income</field>
|
||||||
<field name="expense" eval="True" />
|
<field name="expense" eval="True" />
|
||||||
</record>
|
</record>
|
||||||
|
|||||||
+27
-3
@@ -565,7 +565,7 @@ class AccountDoUnitTestCase(unittest.TestCase):
|
|||||||
if line.strip()
|
if line.strip()
|
||||||
]
|
]
|
||||||
|
|
||||||
self.assertEqual(config.get('tryton', 'version'), '8.0.1')
|
self.assertEqual(config.get('tryton', 'version'), '8.0.2')
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
set(lines('tryton', 'depends')),
|
set(lines('tryton', 'depends')),
|
||||||
{'account', 'ir'})
|
{'account', 'ir'})
|
||||||
@@ -646,7 +646,7 @@ class AccountDoUnitTestCase(unittest.TestCase):
|
|||||||
def test_xml_record_inventory_is_explicit(self):
|
def test_xml_record_inventory_is_explicit(self):
|
||||||
expected = {
|
expected = {
|
||||||
'account_chart_do_en.xml': {
|
'account_chart_do_en.xml': {
|
||||||
'account.account.type.template': 36,
|
'account.account.type.template': 40,
|
||||||
'account.account.template': 287,
|
'account.account.template': 287,
|
||||||
},
|
},
|
||||||
'tax_do_en.xml': {
|
'tax_do_en.xml': {
|
||||||
@@ -662,7 +662,7 @@ class AccountDoUnitTestCase(unittest.TestCase):
|
|||||||
'account.tax.rule.line.template': 34,
|
'account.tax.rule.line.template': 34,
|
||||||
},
|
},
|
||||||
'account_chart_do_es_419.xml': {
|
'account_chart_do_es_419.xml': {
|
||||||
'account.account.type.template': 36,
|
'account.account.type.template': 40,
|
||||||
'account.account.template': 287,
|
'account.account.template': 287,
|
||||||
},
|
},
|
||||||
'tax_do_es_419.xml': {
|
'tax_do_es_419.xml': {
|
||||||
@@ -879,6 +879,30 @@ class AccountDoUnitTestCase(unittest.TestCase):
|
|||||||
types['do_type_retained_earnings']['statement'], 'balance')
|
types['do_type_retained_earnings']['statement'], 'balance')
|
||||||
self.assertEqual(types['do_type_revenue']['statement'], 'income')
|
self.assertEqual(types['do_type_revenue']['statement'], 'income')
|
||||||
self.assertEqual(types['do_type_expense']['statement'], 'income')
|
self.assertEqual(types['do_type_expense']['statement'], 'income')
|
||||||
|
self.assertEqual(
|
||||||
|
types['do_type_profit_loss']['parent'], 'do_type_equity')
|
||||||
|
self.assertEqual(
|
||||||
|
types['do_type_operating_section']['parent'],
|
||||||
|
'do_type_profit_loss')
|
||||||
|
self.assertEqual(
|
||||||
|
types['do_type_revenue']['parent'],
|
||||||
|
'do_type_operating_section')
|
||||||
|
self.assertEqual(
|
||||||
|
types['do_type_expenses']['parent'],
|
||||||
|
'do_type_operating_section')
|
||||||
|
self.assertEqual(
|
||||||
|
types['do_type_cogs']['parent'], 'do_type_expenses')
|
||||||
|
self.assertEqual(
|
||||||
|
types['do_type_expense']['parent'], 'do_type_expenses')
|
||||||
|
self.assertEqual(
|
||||||
|
types['do_type_non_operating_section']['parent'],
|
||||||
|
'do_type_profit_loss')
|
||||||
|
for account_type in [
|
||||||
|
'do_type_other_income', 'do_type_financial_expense',
|
||||||
|
'do_type_income_tax']:
|
||||||
|
self.assertEqual(
|
||||||
|
types[account_type]['parent'],
|
||||||
|
'do_type_non_operating_section')
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
accounts['do_account_110201']['type'], 'do_type_receivable')
|
accounts['do_account_110201']['type'], 'do_type_receivable')
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
[tryton]
|
[tryton]
|
||||||
version=8.0.1
|
version=8.0.2
|
||||||
depends:
|
depends:
|
||||||
account
|
account
|
||||||
ir
|
ir
|
||||||
|
|||||||
Reference in New Issue
Block a user