chore: import enterprise addons 19.0 bulk snapshot

This commit is contained in:
1b-agent committed 2026-09-16 10:13:08 +00:00
commit ca4af030d3
39951 files changed
+15570005

No files matched your search

+5
View File
@@ -0,0 +1,5 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import models
from . import wizard
from . import report
+1
View File
@@ -0,0 +1 @@
{'name': 'Colombian - Accounting Reports', 'version': '1.1', 'description': '\nAccounting reports for Colombia\n================================\n ', 'author': 'David Arnold (XOE Solutions)', 'category': 'Accounting/Localizations/Reporting', 'depends': ['l10n_co'], 'data': ['security/ir.model.access.csv', 'data/l10n_co_reports.xml', 'data/l10n_co_reports_ica.xml', 'data/l10n_co_reports_iva.xml', 'data/l10n_co_reports_fuente.xml', 'data/profit_loss_pymes.xml', 'data/balance_sheet_pymes.xml', 'data/trial_balance_per_partner.xml', 'data/l10n_co_reports_libro_diario.xml', 'data/l10n_co_reports_libro_inv_blc.xml', 'wizard/retention_report_views.xml', 'report/certification_report_templates.xml', 'report/libro_diario_report_templates.xml'], 'auto_install': ['l10n_co', 'account_reports'], 'installable': True, 'website': 'https://xoe.solutions', 'license': 'LGPL-3'}
@@ -0,0 +1,364 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="l10n_co_bs_report" model="account.report">
<field name="name">Balance Sheet</field>
<field name="name@es_419">Saldo general</field>
<field name="root_report_id" ref="account_reports.balance_sheet"/>
<field name="country_id" ref="base.co" />
<field name="filter_unfold_all" eval="True"/>
<field name="filter_date_range" eval="False"/>
<field name="filter_journals" eval="True"/>
<field name="filter_multi_company">selector</field>
<field name="column_ids">
<record id="l10n_co_bs_report_column" model="account.report.column">
<field name="name">Balance</field>
<field name="name@es_419">Saldo</field>
<field name="expression_label">balance</field>
</record>
</field>
<field name="line_ids">
<!-- Assets -->
<record id="l10n_co_bs_report_assets" model="account.report.line">
<field name="name">ASSETS</field>
<field name="name@es_419">ACTIVOS</field>
<field name="aggregation_formula">L10N_CO_BS_AC.balance + L10N_CO_BS_ANC.balance</field>
<field name="horizontal_split_side">left</field>
<field name="hierarchy_level">0</field>
<field name="children_ids">
<!-- Current Assets -->
<record id="l10n_co_bs_report_assets_current" model="account.report.line">
<field name="code">L10N_CO_BS_AC</field>
<field name="name">Current Assets</field>
<field name="name@es_419">Activos corrientes</field>
<field name="aggregation_formula">L10N_CO_BS_CASH.balance + L10N_CO_BS_INV.balance + L10N_CO_BS_AC_DEBTORS.balance + L10N_CO_BS_AC_INVENTORY.balance + L10N_CO_BS_AC_DEFERRED.balance</field>
<field name="children_ids">
<record id="l10n_co_bs_report_cash" model="account.report.line">
<field name="code">L10N_CO_BS_CASH</field>
<field name="name">Bank and Cash</field>
<field name="name@es_419">Disponible</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">11</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_bs_report_investments" model="account.report.line">
<field name="code">L10N_CO_BS_INV</field>
<field name="name">Investments</field>
<field name="name@es_419">Inversiones</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">12</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_bs_report_ac_debt" model="account.report.line">
<field name="code">L10N_CO_BS_AC_DEBTORS</field>
<field name="name">Debtors</field>
<field name="name@es_419">Deudores</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">13</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_bs_report_ac_inventory" model="account.report.line">
<field name="code">L10N_CO_BS_AC_INVENTORY</field>
<field name="name">Inventory</field>
<field name="name@es_419">Inventario</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">14</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_bs_report_ac_deferred" model="account.report.line">
<field name="code">L10N_CO_BS_AC_DEFERRED</field>
<field name="name">Deferred</field>
<field name="name@es_419">Diferidos</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">1705 + 1710</field>
<field name="groupby">account_id</field>
</record>
</field>
</record>
<!-- Non-current Assets -->
<record id="l10n_co_bs_report_assets_non_current" model="account.report.line">
<field name="code">L10N_CO_BS_ANC</field>
<field name="name">Non-current Assets</field>
<field name="name@es_419">Activos no corrientes</field>
<field name="aggregation_formula">L10N_CO_BS_PROP.balance + L10N_CO_BS_INT.balance + L10N_CO_BS_ANC_DEFERRED.balance + L10N_CO_BS_VAL.balance + L10N_CO_BS_ASSETS_OTHER.balance</field>
<field name="children_ids">
<record id="l10n_co_bs_report_property" model="account.report.line">
<field name="code">L10N_CO_BS_PROP</field>
<field name="name">Property, Plant and Equipment</field>
<field name="name@es_419">Propiedades, planta y equipo</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">15</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_bs_report_intangibles" model="account.report.line">
<field name="code">L10N_CO_BS_INT</field>
<field name="name">Intangibles</field>
<field name="name@es_419">Intangibles</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">16</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_bs_report_anc_deferred" model="account.report.line">
<field name="code">L10N_CO_BS_ANC_DEFERRED</field>
<field name="name">Deferred</field>
<field name="name@es_419">Diferidos</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">1715 + 1720 + 1798</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_bs_report_valuations" model="account.report.line">
<field name="code">L10N_CO_BS_VAL</field>
<field name="name">Valuations</field>
<field name="name@es_419">Valorizaciones</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">19</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_bs_report_assets_other" model="account.report.line">
<field name="code">L10N_CO_BS_ASSETS_OTHER</field>
<field name="name">Other Assets</field>
<field name="name@es_419">Otros activos</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">18</field>
<field name="groupby">account_id</field>
</record>
</field>
</record>
</field>
</record>
<!-- Liabilities -->
<record id="l10n_co_bs_report_liabilities" model="account.report.line">
<field name="name">LIABILITIES</field>
<field name="name@es_419">PASIVO</field>
<field name="code">L10N_CO_BS_LIABILITIES</field>
<field name="aggregation_formula">L10N_CO_BS_LC.balance + L10N_CO_BS_LNC.balance</field>
<field name="horizontal_split_side">right</field>
<field name="hierarchy_level">0</field>
<field name="children_ids">
<!-- Current Liabilities -->
<record id="l10n_co_bs_report_liabilities_current" model="account.report.line">
<field name="code">L10N_CO_BS_LC</field>
<field name="name">Current Liabilities</field>
<field name="name@es_419">Pasivos corrientes</field>
<field name="aggregation_formula">L10N_CO_BS_FIN.balance + L10N_CO_BS_SUPPLIERS.balance + L10N_CO_BS_PAYABLE.balance + L10N_CO_BS_TAXES.balance + L10N_CO_BS_LABOR.balance + L10N_CO_BS_LC_OTHER.balance</field>
<field name="children_ids">
<record id="l10n_co_bs_report_fin_obligations" model="account.report.line">
<field name="code">L10N_CO_BS_FIN</field>
<field name="name">Financial Obligations</field>
<field name="name@es_419">Obligaciones financieras</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">-21</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_bs_report_suppliers" model="account.report.line">
<field name="code">L10N_CO_BS_SUPPLIERS</field>
<field name="name">Suppliers</field>
<field name="name@es_419">Proveedores</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">-22</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_bs_report_payable" model="account.report.line">
<field name="code">L10N_CO_BS_PAYABLE</field>
<field name="name">Accounts Payable</field>
<field name="name@es_419">Cuentas por pagar</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">-23</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_bs_report_taxes" model="account.report.line">
<field name="code">L10N_CO_BS_TAXES</field>
<field name="name">Taxes, Levies and Fees</field>
<field name="name@es_419">Impuestos, gravámenes y tasas</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">-24</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_bs_report_labor" model="account.report.line">
<field name="code">L10N_CO_BS_LABOR</field>
<field name="name">Labor Obligations</field>
<field name="name@es_419">Obligaciones laborales</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">-25</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_bs_report_liabilities_current_other" model="account.report.line">
<field name="code">L10N_CO_BS_LC_OTHER</field>
<field name="name">Other Current Liabilities</field>
<field name="name@es_419">Otros pasivos corrientes</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">-2805 - 2810 - 2815 - 2820 - 2825</field>
<field name="groupby">account_id</field>
</record>
</field>
</record>
<!-- Non-current Liabilities -->
<record id="l10n_co_bs_report_liabilities_non_current" model="account.report.line">
<field name="code">L10N_CO_BS_LNC</field>
<field name="name">Non-current Liabilities</field>
<field name="name@es_419">Pasivos no corrientes</field>
<field name="aggregation_formula">L10N_CO_BS_PROVISIONS.balance + L10N_CO_BS_LNC_DEFERRED.balance + L10N_CO_BS_BONDS.balance + L10N_CO_BS_LNC_OTHER.balance</field>
<field name="children_ids">
<record id="l10n_co_bs_report_provisions" model="account.report.line">
<field name="code">L10N_CO_BS_PROVISIONS</field>
<field name="name">Estimated Liabilities and Provisions</field>
<field name="name@es_419">Pasivos estimados y provisiones</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">-26</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_bs_report_deferred_liabilities" model="account.report.line">
<field name="code">L10N_CO_BS_LNC_DEFERRED</field>
<field name="name">Deferred</field>
<field name="name@es_419">Diferidos</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">-27</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_bs_report_bonds" model="account.report.line">
<field name="code">L10N_CO_BS_BONDS</field>
<field name="name">Bonds and Commercial Paper</field>
<field name="name@es_419">Bonos y papeles comerciales</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">-29</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_bs_report_liabilities_non_current_other" model="account.report.line">
<field name="code">L10N_CO_BS_LNC_OTHER</field>
<field name="name">Other Non-current Liabilities</field>
<field name="name@es_419">Otros pasivos no corrientes</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">-2830 - 2835 - 2840 - 2895</field>
<field name="groupby">account_id</field>
</record>
</field>
</record>
</field>
</record>
<!-- Equity -->
<record id="l10n_co_bs_report_equity" model="account.report.line">
<field name="code">L10N_CO_BS_EQUITY</field>
<field name="name">EQUITY</field>
<field name="name@es_419">PATRIMONIO</field>
<field name="aggregation_formula">L10N_CO_BS_CAPITAL.balance + L10N_CO_BS_SURPLUS.balance + L10N_CO_BS_RESERVES.balance + L10N_CO_BS_REVALUATION.balance + L10N_CO_BS_DIVIDENDS.balance + L10N_CO_BS_YEAR_RESULTS.balance + L10N_CO_BS_YEAR_EARNINGS.balance + L10N_CO_BS_PREV_RESULTS.balance + L10N_CO_BS_VAL_SURPLUS.balance + L10N_CO_BS_PREV_YEAR_EARNINGS.balance</field>
<field name="horizontal_split_side">right</field>
<field name="hierarchy_level">0</field>
<field name="children_ids">
<record id="l10n_co_bs_report_social_capital" model="account.report.line">
<field name="code">L10N_CO_BS_CAPITAL</field>
<field name="name">Social Capital</field>
<field name="name@es_419">Capital social</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">-31</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_bs_report_capital_surplus" model="account.report.line">
<field name="code">L10N_CO_BS_SURPLUS</field>
<field name="name">Capital Surplus</field>
<field name="name@es_419">Superávit de capital</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">-32</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_bs_report_reserves" model="account.report.line">
<field name="code">L10N_CO_BS_RESERVES</field>
<field name="name">Reserves</field>
<field name="name@es_419">Reservas</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">-33</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_bs_report_revaluation" model="account.report.line">
<field name="code">L10N_CO_BS_REVALUATION</field>
<field name="name">Revaluation of Equity</field>
<field name="name@es_419">Revalorización del patrimonio</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">-34</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_bs_report_dividends" model="account.report.line">
<field name="code">L10N_CO_BS_DIVIDENDS</field>
<field name="name">Dividends or Participations Declared in Shares, Quotas or Parts of Social Interest</field>
<field name="name@es_419">Dividendos o participaciones decretados en acciones, cuotas o partes de interés social</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">-35</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_bs_report_year_results" model="account.report.line">
<field name="code">L10N_CO_BS_YEAR_RESULTS</field>
<field name="name">Results for the Year</field>
<field name="name@es_419">Resultados del ejercicio</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">-36</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_bs_report_year_earnings" model="account.report.line">
<field name="code">L10N_CO_BS_YEAR_EARNINGS</field>
<field name="name">Current Year Unallocated Earnings</field>
<field name="name@es_419">Ingresos no asignados del ejercicio en curso</field>
<field name="foldable" eval="True"/>
<field name="action_id" ref="action_l10n_co_pl_report"/>
<field name="expression_ids">
<record id="l10n_co_bs_report_year_earnings_line_1_balance" model="account.report.expression">
<field name="label">balance</field>
<field name="engine">aggregation</field>
<field name="formula">L10N_CO_PNL_NET_INCOME.balance</field>
<field name="date_scope">from_fiscalyear</field>
<field name="subformula">cross_report(l10n_co_reports.l10n_co_pl_account_report_pymes)</field>
</record>
</field>
</record>
<record id="l10n_co_bs_report_previous_year_results" model="account.report.line">
<field name="code">L10N_CO_BS_PREV_RESULTS</field>
<field name="name">Previous Year Earnings</field>
<field name="name@es_419">Resultados de ejercicios anteriores</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">-37</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_account_financial_previous_year_earnings0" model="account.report.line">
<field name="name">Previous Years Unallocated Earnings</field>
<field name="name@es_419">Resultados no asignados de ejercicios anteriores</field>
<field name="code">L10N_CO_BS_PREV_YEAR_EARNINGS</field>
<field name="expression_ids">
<record id="l10n_co_account_financial_previous_year_earnings0_allocated_earnings" model="account.report.expression">
<field name="label">allocated_earnings</field>
<field name="engine">domain</field>
<field name="formula" eval="[('account_id.account_type', '=', 'equity_unaffected')]"/>
<field name="subformula">-sum</field>
<field name="date_scope">from_beginning</field>
</record>
<record id="l10n_co_account_financial_previous_year_earnings0_balance_domain" model="account.report.expression">
<field name="label">balance_domain</field>
<field name="engine">domain</field>
<field name="formula" eval="[('account_id.account_type', 'in', ('income', 'income_other', 'expense_direct_cost', 'expense', 'expense_depreciation', 'expense_other'))]"/>
<field name="subformula">-sum</field>
<field name="date_scope">from_beginning</field>
</record>
<record id="l10n_co_account_financial_previous_year_earnings0_balance" model="account.report.expression">
<field name="label">balance</field>
<field name="engine">aggregation</field>
<field name="formula">L10N_CO_BS_PREV_YEAR_EARNINGS.balance_domain + L10N_CO_BS_PREV_YEAR_EARNINGS.allocated_earnings - L10N_CO_BS_YEAR_EARNINGS.balance</field>
</record>
</field>
</record>
<record id="l10n_co_bs_report_valuations_surplus" model="account.report.line">
<field name="code">L10N_CO_BS_VAL_SURPLUS</field>
<field name="name">Surplus from Valuations</field>
<field name="name@es_419">Superávit por valorizaciones</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">-38</field>
<field name="groupby">account_id</field>
</record>
</field>
</record>
<record id="l10n_co_bs_report_liabilities_equity" model="account.report.line">
<field name="name">LIABILITIES AND EQUITY</field>
<field name="name@es_419">PASIVO Y PATRIMONIO</field>
<field name="code">L10N_CO_BS_LIABILITIES_EQUITY</field>
<field name="aggregation_formula">L10N_CO_BS_LIABILITIES.balance + L10N_CO_BS_EQUITY.balance</field>
<field name="horizontal_split_side">right</field>
<field name="hierarchy_level">0</field>
</record>
</field>
</record>
</odoo>
+8
View File
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<menuitem id="account_reports_co_statements_menu" name="Colombian Statements" parent="account.menu_finance_reports" sequence="6" groups="account.group_account_readonly"/>
</data>
</odoo>
@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="l10n_co_reports_fuente" model="account.report">
<field name="name">Retención por Terceros</field>
<field name="name@es_419">Retención por terceros</field>
<field name="filter_unfold_all" eval="True"/>
<field name="filter_partner" eval="False"/>
<field name="filter_show_draft" eval="True"/>
<field name="filter_unreconciled" eval="False"/>
<field name="filter_period_comparison" eval="False"/>
<field name="filter_date_range" eval="True"/>
<field name="default_opening_date_filter">this_year</field>
<field name="search_bar" eval="True"/>
<field name="custom_handler_model_id" ref="model_l10n_co_fuente_report_handler"/>
<field name="column_ids">
<record id="l10n_co_reports_fuente_communication" model="account.report.column">
<field name="name">Concepto de retención</field>
<field name="expression_label">origin_tax_desc</field>
<field name="figure_type">string</field>
</record>
<record id="l10n_co_reports_fuente_tax_base_amount" model="account.report.column">
<field name="name">Monto del Pago Sujeto Retención</field>
<field name="name@es_419">Monto del pago sujeto retención</field>
<field name="expression_label">tax_base_amount</field>
</record>
<record id="l10n_co_reports_fuente_balance" model="account.report.column">
<field name="name">Retenido Consignado</field>
<field name="name@es_419">Retenido consignado</field>
<field name="expression_label">balance</field>
<field name="blank_if_zero" eval="True"/>
</record>
</field>
</record>
<record id="action_account_report_fuente" model="ir.actions.client">
<field name="name">Certificado de Retención en Fuente</field>
<field name="tag">account_report</field>
<field name="context" eval="{'report_id': ref('l10n_co_reports.l10n_co_reports_fuente')}" />
</record>
<menuitem id="menu_action_account_report_fuente" name="Certificado de Retención en Fuente" action="action_account_report_fuente" parent="account_reports_co_statements_menu"/>
</odoo>
@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="l10n_co_reports_ica" model="account.report">
<field name="name">Retención en ICA</field>
<field name="name@es_419">Retención en ICA</field>
<field name="filter_unfold_all" eval="True"/>
<field name="filter_partner" eval="False"/>
<field name="filter_show_draft" eval="True"/>
<field name="filter_unreconciled" eval="False"/>
<field name="filter_period_comparison" eval="False"/>
<field name="filter_date_range" eval="True"/>
<field name="default_opening_date_filter">this_year</field>
<field name="search_bar" eval="True"/>
<field name="custom_handler_model_id" ref="model_l10n_co_ica_report_handler"/>
<field name="column_ids">
<record id="l10n_co_reports_ica_bimestre" model="account.report.column">
<field name="name">Bimestre</field>
<field name="name@es_419">Bimestre</field>
<field name="expression_label">bimestre</field>
<field name="figure_type">string</field>
</record>
<record id="l10n_co_reports_ica_tax_base_amount" model="account.report.column">
<field name="name">Monto del pago sujeto a retención</field>
<field name="name@es_419">Monto del pago sujeto a retención</field>
<field name="expression_label">tax_base_amount</field>
</record>
<record id="l10n_co_reports_ica_balance" model="account.report.column">
<field name="name">Retenido y consignado</field>
<field name="name@es_419">Retenido y consignado</field>
<field name="expression_label">balance</field>
</record>
<record id="l10n_co_reports_ica_type" model="account.report.column">
<field name="name">Concepto</field>
<field name="expression_label">ica_type</field>
<field name="figure_type">string</field>
</record>
</field>
</record>
<record id="action_account_report_ica" model="ir.actions.client">
<field name="name">Certificado de Retención en ICA</field>
<field name="tag">account_report</field>
<field name="context" eval="{'report_id': ref('l10n_co_reports.l10n_co_reports_ica')}" />
</record>
<menuitem id="menu_action_account_report_ica" name="Certificado de Retención en ICA" action="action_account_report_ica" parent="account_reports_co_statements_menu"/>
</odoo>
@@ -0,0 +1,54 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="l10n_co_reports_iva" model="account.report">
<field name="name">Retención en IVA</field>
<field name="name@es_419">Retención en IVA</field>
<field name="filter_unfold_all" eval="True"/>
<field name="filter_partner" eval="False"/>
<field name="filter_show_draft" eval="True"/>
<field name="filter_unreconciled" eval="False"/>
<field name="filter_period_comparison" eval="False"/>
<field name="filter_date_range" eval="True"/>
<field name="default_opening_date_filter">this_year</field>
<field name="search_bar" eval="True"/>
<field name="custom_handler_model_id" ref="model_l10n_co_iva_report_handler"/>
<field name="column_ids">
<record id="l10n_co_reports_iva_bimestre" model="account.report.column">
<field name="name">Bimestre</field>
<field name="name@es_419">Bimestre</field>
<field name="expression_label">bimestre</field>
<field name="figure_type">string</field>
</record>
<record id="l10n_co_reports_iva_balance" model="account.report.column">
<field name="name">Retenido Consignado</field>
<field name="name@es_419">Retenido consignado</field>
<field name="expression_label">balance</field>
</record>
<record id="l10n_co_reports_iva_balance_15_over_19" model="account.report.column">
<field name="name">Monto del Pago Sujeto Retención</field>
<field name="name@es_419">Monto del pago sujeto retención</field>
<field name="expression_label">balance_15_over_19</field>
</record>
<record id="l10n_co_reports_iva_tax_base_amount" model="account.report.column">
<field name="name">Monto Total Operación</field>
<field name="name@es_419">Monto total operación</field>
<field name="expression_label">tax_base_amount</field>
<field name="blank_if_zero" eval="True"/>
</record>
<record id="l10n_co_reports_iva_percentage" model="account.report.column">
<field name="name">%</field>
<field name="expression_label">percentage</field>
<field name="figure_type">percentage</field>
<field name="blank_if_zero" eval="True"/>
</record>
</field>
</record>
<record id="action_account_report_iva" model="ir.actions.client">
<field name="name">Certificado de Retención en IVA</field>
<field name="tag">account_report</field>
<field name="context" eval="{'report_id': ref('l10n_co_reports.l10n_co_reports_iva')}" />
</record>
<menuitem id="menu_action_account_report_iva" name="Certificado de Retención en IVA" action="action_account_report_iva" parent="account_reports_co_statements_menu"/>
</odoo>
@@ -0,0 +1,67 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="l10n_co_reports_libro_diario" model="account.report">
<field name="name">Daily Journal Report</field>
<field name="name@es_419">Libro Diario</field>
<field name="filter_unfold_all" eval="False"/>
<field name="filter_partner" eval="False"/>
<field name="filter_show_draft" eval="True"/>
<field name="filter_unreconciled" eval="False"/>
<field name="filter_period_comparison" eval="False"/>
<field name="filter_date_range" eval="True"/>
<field name="default_opening_date_filter">this_year</field>
<field name="search_bar" eval="True"/>
<field name="custom_handler_model_id" ref="model_l10n_co_libro_diario_report_handler"/>
<field name="column_ids">
<record id="l10n_co_reports_libro_diario_line_date" model="account.report.column">
<field name="name">DATE</field>
<field name="name@es_419">FECHA</field>
<field name="expression_label">line_date</field>
<field name="figure_type">date</field>
</record>
<record id="l10n_co_reports_libro_diario_move_name" model="account.report.column">
<field name="name">MOVE</field>
<field name="name@es_419">FOLIO</field>
<field name="expression_label">move_name</field>
<field name="figure_type">string</field>
</record>
<record id="l10n_co_reports_libro_diario_account_name" model="account.report.column">
<field name="name">ACCOUNT</field>
<field name="name@es_419">CUENTA</field>
<field name="expression_label">account_name</field>
<field name="figure_type">string</field>
</record>
<record id="l10n_co_reports_libro_diario_partner_name" model="account.report.column">
<field name="name">PARTNER</field>
<field name="name@es_419">CONTACTO</field>
<field name="expression_label">partner_name</field>
<field name="figure_type">string</field>
</record>
<record id="l10n_co_reports_libro_diario_line_label" model="account.report.column">
<field name="name">LABEL</field>
<field name="name@es_419">CONCEPTO</field>
<field name="expression_label">line_label</field>
<field name="figure_type">string</field>
</record>
<record id="l10n_co_reports_libro_diario_line_debit" model="account.report.column">
<field name="name">DEBIT</field>
<field name="name@es_419">DEBE</field>
<field name="expression_label">line_debit</field>
</record>
<record id="l10n_co_reports_libro_diario_line_credit" model="account.report.column">
<field name="name">CREDIT</field>
<field name="name@es_419">HABER</field>
<field name="expression_label">line_credit</field>
</record>
</field>
</record>
<record id="action_account_report_libro_diario" model="ir.actions.client">
<field name="name">Daily Journal Report</field>
<field name="tag">account_report</field>
<field name="context" eval="{'report_id': ref('l10n_co_reports.l10n_co_reports_libro_diario')}" />
</record>
<menuitem id="menu_action_account_report_libro_diario" name="Daily Journal Report" action="action_account_report_libro_diario" parent="account_reports_co_statements_menu"/>
</odoo>
@@ -0,0 +1,543 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="l10n_co_reports_libro_inv_blc" model="account.report">
<field name="name">Inventory and Balance Report</field>
<field name="name@es_419">Libro de Inventarios y Balance</field>
<field name="root_report_id" ref="account_reports.balance_sheet"/>
<field name="country_id" ref="base.co" />
<field name="filter_unfold_all" eval="True"/>
<field name="filter_date_range" eval="False"/>
<field name="filter_journals" eval="True"/>
<field name="filter_multi_company">selector</field>
<field name="column_ids">
<record id="l10n_co_reports_libro_inv_blc_column" model="account.report.column">
<field name="name">Balance</field>
<field name="name@es_419">Saldo</field>
<field name="expression_label">balance</field>
</record>
</field>
<field name="line_ids">
<record id="l10n_co_reports_libro_inv_blc_activo" model="account.report.line">
<field name="code">L10N_CO_LIB_ACT</field>
<field name="name">1 ASSETS</field>
<field name="name@es_419">1 ACTIVO</field>
<field name="aggregation_formula">L10N_CO_LIB_ACT_11.balance + L10N_CO_LIB_ACT_12.balance + L10N_CO_LIB_ACT_13.balance + L10N_CO_LIB_ACT_14.balance + L10N_CO_LIB_ACT_15.balance + L10N_CO_LIB_ACT_16.balance + L10N_CO_LIB_ACT_17.balance + L10N_CO_LIB_ACT_18.balance + L10N_CO_LIB_ACT_19.balance</field>
<field name="horizontal_split_side">left</field>
<field name="hierarchy_level">0</field>
<field name="children_ids">
<record id="l10n_co_reports_libro_inv_blc_activo_11" model="account.report.line">
<field name="code">L10N_CO_LIB_ACT_11</field>
<field name="name">11 CASH AND CASH EQUIVALENTS</field>
<field name="name@es_419">11 DISPONIBLE</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">11</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_activo_12" model="account.report.line">
<field name="code">L10N_CO_LIB_ACT_12</field>
<field name="name">12 INVESTMENTS</field>
<field name="name@es_419">12 INVERSIONES</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">12</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_activo_13" model="account.report.line">
<field name="code">L10N_CO_LIB_ACT_13</field>
<field name="name">13 ACCOUNTS RECEIVABLE</field>
<field name="name@es_419">13 DEUDORES</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">13</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_activo_14" model="account.report.line">
<field name="code">L10N_CO_LIB_ACT_14</field>
<field name="name">14 INVENTORIES</field>
<field name="name@es_419">14 INVENTARIOS</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">14</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_activo_15" model="account.report.line">
<field name="code">L10N_CO_LIB_ACT_15</field>
<field name="name">15 PROPERTY, PLANT AND EQUIPMENT</field>
<field name="name@es_419">15 PROPIEDADES PLANTA Y EQUIPO</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">15</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_activo_16" model="account.report.line">
<field name="code">L10N_CO_LIB_ACT_16</field>
<field name="name">16 INTANGIBLE ASSETS</field>
<field name="name@es_419">16 INTANGIBLES</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">16</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_activo_17" model="account.report.line">
<field name="code">L10N_CO_LIB_ACT_17</field>
<field name="name">17 DEFERRED ASSETS</field>
<field name="name@es_419">17 DIFERIDOS</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">17</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_activo_18" model="account.report.line">
<field name="code">L10N_CO_LIB_ACT_18</field>
<field name="name">18 OTHER ASSETS</field>
<field name="name@es_419">18 OTROS ACTIVOS</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">18</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_activo_19" model="account.report.line">
<field name="code">L10N_CO_LIB_ACT_19</field>
<field name="name">19 REVALUATIONS</field>
<field name="name@es_419">19 VALORIZACIONES</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">19</field>
<field name="groupby">account_id</field>
</record>
</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_pasivo" model="account.report.line">
<field name="code">L10N_CO_LIB_PSV</field>
<field name="name">2 LIABILITIES</field>
<field name="name@es_419">2 PASIVO</field>
<field name="aggregation_formula">L10N_CO_LIB_PSV_21.balance + L10N_CO_LIB_PSV_22.balance + L10N_CO_LIB_PSV_23.balance + L10N_CO_LIB_PSV_24.balance + L10N_CO_LIB_PSV_25.balance + L10N_CO_LIB_PSV_26.balance + L10N_CO_LIB_PSV_27.balance + L10N_CO_LIB_PSV_28.balance + L10N_CO_LIB_PSV_29.balance</field>
<field name="horizontal_split_side">right</field>
<field name="hierarchy_level">0</field>
<field name="children_ids">
<record id="l10n_co_reports_libro_inv_blc_pasivo_21" model="account.report.line">
<field name="code">L10N_CO_LIB_PSV_21</field>
<field name="name">21 FINANCIAL OBLIGATIONS</field>
<field name="name@es_419">21 OBLIGACIONES FINANCIERAS</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">21</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_pasivo_22" model="account.report.line">
<field name="code">L10N_CO_LIB_PSV_22</field>
<field name="name">22 TRADE PAYABLES</field>
<field name="name@es_419">22 PROVEEDORES</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">22</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_pasivo_23" model="account.report.line">
<field name="code">L10N_CO_LIB_PSV_23</field>
<field name="name">23 ACCOUNTS PAYABLE</field>
<field name="name@es_419">23 CUENTAS POR PAGAR</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">23</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_pasivo_24" model="account.report.line">
<field name="code">L10N_CO_LIB_PSV_24</field>
<field name="name">24 TAXES, LEVIES AND FEES</field>
<field name="name@es_419">24 IMPUESTOS, GRAVAMENES Y TASAS</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">24</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_pasivo_25" model="account.report.line">
<field name="code">L10N_CO_LIB_PSV_25</field>
<field name="name">25 LABOR OBLIGATIONS</field>
<field name="name@es_419">25 OBLIGACIONES LABORALES</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">25</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_pasivo_26" model="account.report.line">
<field name="code">L10N_CO_LIB_PSV_26</field>
<field name="name">26 ESTIMATED LIABILITIES AND PROVISIONS</field>
<field name="name@es_419">26 PASIVOS ESTIMADOS Y PROVISIONES</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">26</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_pasivo_27" model="account.report.line">
<field name="code">L10N_CO_LIB_PSV_27</field>
<field name="name">27 DEFERRED LIABILITIES</field>
<field name="name@es_419">27 DIFERIDOS</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">27</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_pasivo_28" model="account.report.line">
<field name="code">L10N_CO_LIB_PSV_28</field>
<field name="name">28 OTHER LIABILITIES</field>
<field name="name@es_419">28 OTROS PASIVOS</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">28</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_pasivo_29" model="account.report.line">
<field name="code">L10N_CO_LIB_PSV_29</field>
<field name="name">29 BONDS AND COMMERCIAL PAPER</field>
<field name="name@es_419">29 BONOS Y PAPELES COMERCIALES</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">29</field>
<field name="groupby">account_id</field>
</record>
</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_patrimonio" model="account.report.line">
<field name="code">L10N_CO_LIB_PTR</field>
<field name="name">3 EQUITY</field>
<field name="name@es_419">3 PATRIMONIO</field>
<field name="aggregation_formula">L10N_CO_LIB_PTR_31.balance + L10N_CO_LIB_PTR_32.balance + L10N_CO_LIB_PTR_33.balance + L10N_CO_LIB_PTR_34.balance + L10N_CO_LIB_PTR_35.balance + L10N_CO_LIB_PTR_36.balance + L10N_CO_LIB_PTR_37.balance + L10N_CO_LIB_PTR_38.balance</field>
<field name="horizontal_split_side">right</field>
<field name="hierarchy_level">0</field>
<field name="children_ids">
<record id="l10n_co_reports_libro_inv_blc_patrimonio_31" model="account.report.line">
<field name="code">L10N_CO_LIB_PTR_31</field>
<field name="name">31 SHARE CAPITAL</field>
<field name="name@es_419">31 CAPITAL SOCIAL</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">31</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_patrimonio_32" model="account.report.line">
<field name="code">L10N_CO_LIB_PTR_32</field>
<field name="name">32 CAPITAL SURPLUS</field>
<field name="name@es_419">32 SUPERAVIT DE CAPITAL</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">32</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_patrimonio_33" model="account.report.line">
<field name="code">L10N_CO_LIB_PTR_33</field>
<field name="name">33 RESERVES</field>
<field name="name@es_419">33 RESERVAS</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">33</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_patrimonio_34" model="account.report.line">
<field name="code">L10N_CO_LIB_PTR_34</field>
<field name="name">34 EQUITY REVALUATION</field>
<field name="name@es_419">34 REVALORIZACION DEL PATRIMONIO</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">34</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_patrimonio_35" model="account.report.line">
<field name="code">L10N_CO_LIB_PTR_35</field>
<field name="name">35 DIVIDENDS OR PARTICIPATIONS DECREED IN SHARES, QUOTAS OR PARTIES OF SOCIAL INTEREST</field>
<field name="name@es_419">35 DIVIDENDOS O PARTICIPACIONES DECRETADOS EN ACCIONES, CUOTAS O PARTES DE INTERES SOCIAL</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">35</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_patrimonio_36" model="account.report.line">
<field name="code">L10N_CO_LIB_PTR_36</field>
<field name="name">36 NET INCOME FOR THE YEAR</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">36</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_patrimonio_37" model="account.report.line">
<field name="code">L10N_CO_LIB_PTR_37</field>
<field name="name">37 RETAINED EARNINGS FROM PRIOR YEARS</field>
<field name="name@es_419">37 RESULTADOS DE EJERCICIOS ANTERIORES</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">37</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_patrimonio_38" model="account.report.line">
<field name="code">L10N_CO_LIB_PTR_38</field>
<field name="name">38 REVALUATION SURPLUS</field>
<field name="name@es_419">38 SUPERAVIT POR VALORIZACIONES</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">38</field>
<field name="groupby">account_id</field>
</record>
</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_ingresos" model="account.report.line">
<field name="code">L10N_CO_LIB_ING</field>
<field name="name">4 INCOME</field>
<field name="name@es_419">4 INGRESOS</field>
<field name="aggregation_formula">L10N_CO_LIB_ING_41.balance + L10N_CO_LIB_ING_42.balance + L10N_CO_LIB_ING_47.balance</field>
<field name="horizontal_split_side">right</field>
<field name="hierarchy_level">0</field>
<field name="children_ids">
<record id="l10n_co_reports_libro_inv_blc_ingresos_41" model="account.report.line">
<field name="code">L10N_CO_LIB_ING_41</field>
<field name="name">41 OPERATING REVENUE</field>
<field name="name@es_419">41 OPERACIONALES</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">41</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_ingresos_42" model="account.report.line">
<field name="code">L10N_CO_LIB_ING_42</field>
<field name="name">42 NON-OPERATING REVENUE</field>
<field name="name@es_419">42 NO OPERACIONALES</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">42</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_ingresos_47" model="account.report.line">
<field name="code">L10N_CO_LIB_ING_47</field>
<field name="name">47 INFLATION ADJUSTMENTS</field>
<field name="name@es_419">47 AJUSTES POR INFLACION</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">47</field>
<field name="groupby">account_id</field>
</record>
</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_gastos" model="account.report.line">
<field name="code">L10N_CO_LIB_GST</field>
<field name="name">5 EXPENSES</field>
<field name="name@es_419">5 GASTOS</field>
<field name="aggregation_formula">L10N_CO_LIB_GST_51.balance + L10N_CO_LIB_GST_52.balance + L10N_CO_LIB_GST_53.balance + L10N_CO_LIB_GST_54.balance + L10N_CO_LIB_GST_59.balance</field>
<field name="horizontal_split_side">right</field>
<field name="hierarchy_level">0</field>
<field name="children_ids">
<record id="l10n_co_reports_libro_inv_blc_gastos_51" model="account.report.line">
<field name="code">L10N_CO_LIB_GST_51</field>
<field name="name">51 ADMINISTRATIVE EXPENSES</field>
<field name="name@es_419">51 OPERACIONALES DE ADMINISTRACION</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">51</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_gastos_52" model="account.report.line">
<field name="code">L10N_CO_LIB_GST_52</field>
<field name="name">52 SELLING EXPENSES</field>
<field name="name@es_419">52 OPERACIONALES DE VENTAS</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">52</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_gastos_53" model="account.report.line">
<field name="code">L10N_CO_LIB_GST_53</field>
<field name="name">53 NON-OPERATING EXPENSES</field>
<field name="name@es_419">53 NO OPERACIONALES</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">53</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_gastos_54" model="account.report.line">
<field name="code">L10N_CO_LIB_GST_54</field>
<field name="name">54 INCOME TAX AND SUPPLEMENTARY TAXES</field>
<field name="name@es_419">54 IMPUESTO DE RENTA Y COMPLEMENTARIOS</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">54</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_gastos_59" model="account.report.line">
<field name="code">L10N_CO_LIB_GST_59</field>
<field name="name">59 GAINS AND LOSSES</field>
<field name="name@es_419">59 GANANCIAS Y PERDIDAS</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">59</field>
<field name="groupby">account_id</field>
</record>
</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_c_ventas" model="account.report.line">
<field name="code">L10N_CO_LIB_CVT</field>
<field name="name">6 COST OF SALES</field>
<field name="name@es_419">6 COSTOS DE VENTAS</field>
<field name="aggregation_formula">L10N_CO_LIB_CVT_61.balance + L10N_CO_LIB_CVT_62.balance</field>
<field name="horizontal_split_side">right</field>
<field name="hierarchy_level">0</field>
<field name="children_ids">
<record id="l10n_co_reports_libro_inv_blc_c_ventas_61" model="account.report.line">
<field name="code">L10N_CO_LIB_CVT_61</field>
<field name="name">61 COST OF GOODS SOLD AND SERVICES RENDERED</field>
<field name="name@es_419">61 COSTO DE VENTAS Y DE PRESTACION DE SERVICIOS</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">61</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_c_ventas_62" model="account.report.line">
<field name="code">L10N_CO_LIB_CVT_62</field>
<field name="name">62 PURCHASES</field>
<field name="name@es_419">62 COMPRAS</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">62</field>
<field name="groupby">account_id</field>
</record>
</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_c_prod" model="account.report.line">
<field name="code">L10N_CO_LIB_CPO</field>
<field name="name">7 PRODUCTION OR OPERATION COSTS</field>
<field name="name@es_419">7 COSTOS DE PRODUCCION O DE OPERACION</field>
<field name="aggregation_formula">L10N_CO_LIB_CPO_71.balance + L10N_CO_LIB_CPO_72.balance + L10N_CO_LIB_CPO_73.balance + L10N_CO_LIB_CPO_74.balance</field>
<field name="horizontal_split_side">right</field>
<field name="hierarchy_level">0</field>
<field name="children_ids">
<record id="l10n_co_reports_libro_inv_blc_c_prod_71" model="account.report.line">
<field name="code">L10N_CO_LIB_CPO_71</field>
<field name="name">71 RAW MATERIALS</field>
<field name="name@es_419">71 MATERIA PRIMA</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">71</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_c_prod_72" model="account.report.line">
<field name="code">L10N_CO_LIB_CPO_72</field>
<field name="name">72 DIRECT LABOR</field>
<field name="name@es_419">72 MANO DE OBRA DIRECTA</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">72</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_c_prod_73" model="account.report.line">
<field name="code">L10N_CO_LIB_CPO_73</field>
<field name="name">73 INDIRECT COSTS</field>
<field name="name@es_419">73 COSTOS INDIRECTOS</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">73</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_c_prod_74" model="account.report.line">
<field name="code">L10N_CO_LIB_CPO_74</field>
<field name="name">74 SERVICE CONTRACTS</field>
<field name="name@es_419">74 CONTRATOS DE SERVICIOS</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">74</field>
<field name="groupby">account_id</field>
</record>
</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_cu_deud" model="account.report.line">
<field name="code">L10N_CO_LIB_CUD</field>
<field name="name">8 MEMORANDUM ACCOUNTS – DEBIT BALANCES</field>
<field name="name@es_419">8 CUENTAS DE ORDEN DEUDORAS</field>
<field name="aggregation_formula">L10N_CO_LIB_CUD_81.balance + L10N_CO_LIB_CUD_82.balance + L10N_CO_LIB_CUD_83.balance + L10N_CO_LIB_CUD_84.balance + L10N_CO_LIB_CUD_85.balance + L10N_CO_LIB_CUD_86.balance</field>
<field name="horizontal_split_side">right</field>
<field name="hierarchy_level">0</field>
<field name="children_ids">
<record id="l10n_co_reports_libro_inv_blc_cu_deud_81" model="account.report.line">
<field name="code">L10N_CO_LIB_CUD_81</field>
<field name="name">81 CONTINGENT RIGHTS</field>
<field name="name@es_419">81 DERECHOS CONTINGENTES</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">81</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_cu_deud_82" model="account.report.line">
<field name="code">L10N_CO_LIB_CUD_82</field>
<field name="name">82 TAX DEBTORS</field>
<field name="name@es_419">82 DEUDORAS FISCALES</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">82</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_cu_deud_83" model="account.report.line">
<field name="code">L10N_CO_LIB_CUD_83</field>
<field name="name">83 CONTROL DEBTORS</field>
<field name="name@es_419">83 DEUDORAS DE CONTROL</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">83</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_cu_deud_84" model="account.report.line">
<field name="code">L10N_CO_LIB_CUD_84</field>
<field name="name">84 OFFSET CONTINGENT RIGHTS (CR)</field>
<field name="name@es_419">84 DERECHOS CONTINGENTES POR CONTRA (CR)</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">84</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_cu_deud_85" model="account.report.line">
<field name="code">L10N_CO_LIB_CUD_85</field>
<field name="name">85 OFFSET TAX DEBTORS (CR)</field>
<field name="name@es_419">85 DEUDORAS FISCALES POR CONTRA (CR)</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">85</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_cu_deud_86" model="account.report.line">
<field name="code">L10N_CO_LIB_CUD_86</field>
<field name="name">86 OFFSET CONTROL DEBTORS (CR)</field>
<field name="name@es_419">86 DEUDORAS DE CONTROL POR CONTRA (CR)</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">86</field>
<field name="groupby">account_id</field>
</record>
</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_cu_acre" model="account.report.line">
<field name="code">L10N_CO_LIB_CUA</field>
<field name="name">9 MEMORANDUM ACCOUNTS – CREDIT BALANCES</field>
<field name="name@es_419">9 CUENTAS DE ORDEN ACREEDORAS</field>
<field name="aggregation_formula">L10N_CO_LIB_CUA_91.balance + L10N_CO_LIB_CUA_92.balance + L10N_CO_LIB_CUA_93.balance + L10N_CO_LIB_CUA_94.balance + L10N_CO_LIB_CUA_95.balance + L10N_CO_LIB_CUA_96.balance</field>
<field name="horizontal_split_side">right</field>
<field name="hierarchy_level">0</field>
<field name="children_ids">
<record id="l10n_co_reports_libro_inv_blc_cu_acre_91" model="account.report.line">
<field name="code">L10N_CO_LIB_CUA_91</field>
<field name="name">91 CONTINGENT LIABILITIES</field>
<field name="name@es_419">91 RESPONSABILIDADES CONTINGENTES</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">91</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_cu_acre_92" model="account.report.line">
<field name="code">L10N_CO_LIB_CUA_92</field>
<field name="name">92 TAX CREDITORS</field>
<field name="name@es_419">92 ACREEDORAS FISCALES</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">92</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_cu_acre_93" model="account.report.line">
<field name="code">L10N_CO_LIB_CUA_93</field>
<field name="name">93 CONTROL CREDITORS</field>
<field name="name@es_419">93 ACREEDORAS DE CONTROL</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">93</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_cu_acre_94" model="account.report.line">
<field name="code">L10N_CO_LIB_CUA_94</field>
<field name="name">94 OFFSET CONTINGENT LIABILITIES (DB)</field>
<field name="name@es_419">94 RESPONSABILIDADES CONTINGENTES POR CONTRA (DB)</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">94</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_cu_acre_95" model="account.report.line">
<field name="code">L10N_CO_LIB_CUA_95</field>
<field name="name">95 OFFSET TAX CREDITORS (DB)</field>
<field name="name@es_419">95 ACREEDORAS FISCALES POR CONTRA (DB)</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">95</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_reports_libro_inv_blc_cu_acre_96" model="account.report.line">
<field name="code">L10N_CO_LIB_CUA_96</field>
<field name="name">96 OFFSET CONTROL CREDITORS (DB)</field>
<field name="name@es_419">96 ACREEDORAS DE CONTROL POR CONTRA (DB)</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">96</field>
<field name="groupby">account_id</field>
</record>
</field>
</record>
<record id="l10n_co_inv_blc_assets_expenses" model="account.report.line">
<field name="name">Assets + Expenses</field>
<field name="code">L10N_CO_ASSETS_EXPENSES</field>
<field name="aggregation_formula">L10N_CO_LIB_ACT.balance + L10N_CO_LIB_GST.balance + L10N_CO_LIB_CVT.balance + L10N_CO_LIB_CPO.balance</field>
<field name="horizontal_split_side">right</field>
<field name="hierarchy_level">0</field>
</record>
<record id="l10n_co_inv_blc_equity_liability" model="account.report.line">
<field name="name">Liabilities + Equity + Income</field>
<field name="name@es_419">Patrimonio + Pasivo + Ingresos</field>
<field name="code">L10N_CO_EQUITY_LIABILITY</field>
<field name="aggregation_formula">L10N_CO_LIB_PTR.balance + L10N_CO_LIB_PSV.balance + L10N_CO_LIB_ING.balance</field>
<field name="horizontal_split_side">right</field>
<field name="hierarchy_level">0</field>
</record>
</field>
</record>
</odoo>
+316
View File
@@ -0,0 +1,316 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="l10n_co_pl_account_report_pymes" model="account.report">
<field name="name">Profit and Loss</field>
<field name="name@es_419">Estado de resultados</field>
<field name="root_report_id" ref="account_reports.profit_and_loss"/>
<field name="country_id" ref="base.co"/>
<field name="filter_date_range" eval="True"/>
<field name="filter_unfold_all" eval="True"/>
<field name="filter_journals" eval="True"/>
<field name="filter_multi_company">selector</field>
<field name="column_ids">
<record id="l10n_co_pl_account_report_column" model="account.report.column">
<field name="name">Balance</field>
<field name="name@es_419">Saldo</field>
<field name="expression_label">balance</field>
</record>
</field>
<field name="line_ids">
<record id="l10n_co_pl_account_report_income" model="account.report.line">
<field name="name">Income</field>
<field name="name@es_419">Ingresos</field>
<field name="code">L10N_CO_PNL_INCOME</field>
<field name="aggregation_formula">L10N_CO_PNL_IO.balance + L10N_CO_PNL_INO.balance</field>
<field name="hierarchy_level">0</field>
<field name="children_ids">
<record id="l10n_co_pl_account_report_income_operational" model="account.report.line">
<field name="code">L10N_CO_PNL_IO</field>
<field name="name">Operational</field>
<field name="name@es_419">Operacionales</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">-41</field>
<field name="groupby">account_id</field>
</record>
<record id="l10n_co_pl_account_report_income_non_operational" model="account.report.line">
<field name="code">L10N_CO_PNL_INO</field>
<field name="name">Non-operational</field>
<field name="name@es_419">No operacionales</field>
<field name="foldable" eval="True"/>
<field name="account_codes_formula">-42</field>
<field name="groupby">account_id</field>
</record>
</field>
</record>
<record id="l10n_co_pl_account_report_expenses" model="account.report.line">
<field name="name">Expenses</field>
<field name="name@es_419">Gastos</field>
<field name="code">L10N_CO_PNL_EXPENSES</field>
<field name="aggregation_formula" eval="False"/>
<field name="hierarchy_level">0</field>
<field name="expression_ids">
<record id="l10n_co_pl_account_report_expenses_balance" model="account.report.expression">
<field name="label">balance</field>
<field name="engine">aggregation</field>
<field name="formula">L10N_CO_PNL_E_ADMIN.balance + L10N_CO_PNL_E_SALES.balance + L10N_CO_PNL_DEPR.balance + L10N_CO_PNL_E_NO.balance</field>
<field name="green_on_positive" eval="False"/>
</record>
</field>
<field name="children_ids">
<record id="l10n_co_pl_account_report_expenses_admin" model="account.report.line">
<field name="code">L10N_CO_PNL_E_ADMIN</field>
<field name="name">Administrative Operations</field>
<field name="name@es_419">Operacionales de administración</field>
<field name="foldable" eval="True"/>
<field name="groupby">account_id</field>
<field name="account_codes_formula" eval="False"/>
<field name="expression_ids">
<record id="l10n_co_pl_account_report_expenses_admin_balance" model="account.report.expression">
<field name="label">balance</field>
<field name="engine">account_codes</field>
<field name="formula">51\(5160,5165)</field>
<field name="green_on_positive" eval="False"/>
</record>
</field>
</record>
<record id="l10n_co_pl_account_report_expenses_sales" model="account.report.line">
<field name="code">L10N_CO_PNL_E_SALES</field>
<field name="name">Sales Operations</field>
<field name="name@es_419">Operacionales de ventas</field>
<field name="foldable" eval="True"/>
<field name="groupby">account_id</field>
<field name="account_codes_formula" eval="False"/>
<field name="expression_ids">
<record id="l10n_co_pl_account_report_expenses_sales_balance" model="account.report.expression">
<field name="label">balance</field>
<field name="engine">account_codes</field>
<field name="formula">52</field>
<field name="green_on_positive" eval="False"/>
</record>
</field>
</record>
<record id="l10n_co_pl_account_report_depreciation" model="account.report.line">
<field name="code">L10N_CO_PNL_DEPR</field>
<field name="name">Depreciation and Amortization</field>
<field name="name@es_419">Depreciaciones y amortizaciones</field>
<field name="foldable" eval="True"/>
<field name="groupby">account_id</field>
<field name="account_codes_formula" eval="False"/>
<field name="expression_ids">
<record id="l10n_co_pl_account_report_depreciation_balance" model="account.report.expression">
<field name="label">balance</field>
<field name="engine">account_codes</field>
<field name="formula">5160 + 5165</field>
<field name="green_on_positive" eval="False"/>
</record>
</field>
</record>
<record id="l10n_co_pl_account_report_expenses_non_operational" model="account.report.line">
<field name="code">L10N_CO_PNL_E_NO</field>
<field name="name">Non-operational</field>
<field name="name@es_419">No operacionales</field>
<field name="foldable" eval="True"/>
<field name="groupby">account_id</field>
<field name="account_codes_formula" eval="False"/>
<field name="expression_ids">
<record id="l10n_co_pl_account_report_expenses_non_operational_balance" model="account.report.expression">
<field name="label">balance</field>
<field name="engine">account_codes</field>
<field name="formula">53</field>
<field name="green_on_positive" eval="False"/>
</record>
</field>
</record>
</field>
</record>
<record id="l10n_co_pl_account_report_sales_cost" model="account.report.line">
<field name="code">L10N_CO_PNL_COST_SALES</field>
<field name="name">Cost of Sales</field>
<field name="name@es_419">Costos de ventas</field>
<field name="foldable" eval="True"/>
<field name="aggregation_formula" eval="False"/>
<field name="hierarchy_level">0</field>
<field name="expression_ids">
<record id="l10n_co_pl_account_report_sales_cost_balance" model="account.report.expression">
<field name="label">balance</field>
<field name="engine">aggregation</field>
<field name="formula">L10N_CO_PNL_COST_SNS.balance + L10N_CO_PNL_COST_PURCHASE.balance</field>
<field name="green_on_positive" eval="False"/>
</record>
</field>
<field name="children_ids">
<record id="l10n_co_pl_account_report_cost_sales_services" model="account.report.line">
<field name="code">L10N_CO_PNL_COST_SNS</field>
<field name="name">Cost of sales and provision of services</field>
<field name="name@es_419">Costo de ventas y de prestación de servicios</field>
<field name="foldable" eval="True"/>
<field name="groupby">account_id</field>
<field name="account_codes_formula" eval="False"/>
<field name="expression_ids">
<record id="l10n_co_pl_account_report_cost_sales_services_balance" model="account.report.expression">
<field name="label">balance</field>
<field name="engine">account_codes</field>
<field name="formula">61</field>
<field name="green_on_positive" eval="False"/>
</record>
</field>
</record>
<record id="l10n_co_pl_account_report_purchase_cost" model="account.report.line">
<field name="code">L10N_CO_PNL_COST_PURCHASE</field>
<field name="name">Purchases</field>
<field name="name@es_419">Compras</field>
<field name="foldable" eval="True"/>
<field name="groupby">account_id</field>
<field name="account_codes_formula" eval="False"/>
<field name="expression_ids">
<record id="l10n_co_pl_account_report_purchase_cost_balance" model="account.report.expression">
<field name="label">balance</field>
<field name="engine">account_codes</field>
<field name="formula">62</field>
<field name="green_on_positive" eval="False"/>
</record>
</field>
</record>
</field>
</record>
<record id="l10n_co_pl_account_report_cost_production" model="account.report.line">
<field name="code">L10N_CO_PNL_COST_PROD</field>
<field name="name">Cost of Production</field>
<field name="name@es_419">Costos de producción o de operación</field>
<field name="foldable" eval="True"/>
<field name="aggregation_formula" eval="False"/>
<field name="hierarchy_level">0</field>
<field name="expression_ids">
<record id="l10n_co_pl_account_report_cost_production_balance" model="account.report.expression">
<field name="label">balance</field>
<field name="engine">aggregation</field>
<field name="formula">
L10N_CO_PNL_RAW_MATERIAL.balance + L10N_CO_PNL_COST_LABOR.balance +
L10N_CO_PNL_INDIRECT.balance + L10N_CO_PNL_COST_CONTRACTS.balance
</field>
<field name="green_on_positive" eval="False"/>
</record>
</field>
<field name="children_ids">
<record id="l10n_co_pl_account_report_raw_material" model="account.report.line">
<field name="code">L10N_CO_PNL_RAW_MATERIAL</field>
<field name="name">Raw Material</field>
<field name="name@es_419">Materia prima</field>
<field name="foldable" eval="True"/>
<field name="groupby">account_id</field>
<field name="account_codes_formula" eval="False"/>
<field name="expression_ids">
<record id="l10n_co_pl_account_report_raw_material_balance" model="account.report.expression">
<field name="label">balance</field>
<field name="engine">account_codes</field>
<field name="formula">71</field>
<field name="green_on_positive" eval="False"/>
</record>
</field>
</record>
<record id="l10n_co_pl_account_report_cost_labor" model="account.report.line">
<field name="code">L10N_CO_PNL_COST_LABOR</field>
<field name="name">Direct Labor</field>
<field name="name@es_419">Mano de obra directa</field>
<field name="foldable" eval="True"/>
<field name="groupby">account_id</field>
<field name="account_codes_formula" eval="False"/>
<field name="expression_ids">
<record id="l10n_co_pl_account_report_cost_labor_balance" model="account.report.expression">
<field name="label">balance</field>
<field name="engine">account_codes</field>
<field name="formula">72</field>
<field name="green_on_positive" eval="False"/>
</record>
</field>
</record>
<record id="l10n_co_pl_account_report_cost_indirect" model="account.report.line">
<field name="code">L10N_CO_PNL_INDIRECT</field>
<field name="name">Indirect Costs</field>
<field name="name@es_419">Costos indirectos</field>
<field name="foldable" eval="True"/>
<field name="groupby">account_id</field>
<field name="account_codes_formula" eval="False"/>
<field name="expression_ids">
<record id="l10n_co_pl_account_report_cost_indirect_balance" model="account.report.expression">
<field name="label">balance</field>
<field name="engine">account_codes</field>
<field name="formula">73</field>
<field name="green_on_positive" eval="False"/>
</record>
</field>
</record>
<record id="l10n_co_pl_account_report_cost_contracts" model="account.report.line">
<field name="code">L10N_CO_PNL_COST_CONTRACTS</field>
<field name="name">Service Contracts</field>
<field name="name@es_419">Contratos de servicios</field>
<field name="foldable" eval="True"/>
<field name="groupby">account_id</field>
<field name="account_codes_formula" eval="False"/>
<field name="expression_ids">
<record id="l10n_co_pl_account_report_cost_contracts_balance" model="account.report.expression">
<field name="label">balance</field>
<field name="engine">account_codes</field>
<field name="formula">74</field>
<field name="green_on_positive" eval="False"/>
</record>
</field>
</record>
</field>
</record>
<record id="l10n_co_pl_account_report_gains_losses" model="account.report.line">
<field name="code">L10N_CO_PNL_GAINS_LOSSES</field>
<field name="name">Gains and Losses</field>
<field name="name@es_419">Ganancias y pérdidas</field>
<field name="foldable" eval="True"/>
<field name="groupby">account_id</field>
<field name="hierarchy_level">0</field>
<field name="account_codes_formula" eval="False"/>
<field name="expression_ids">
<record id="l10n_co_pl_account_report_gains_losses_balance" model="account.report.expression">
<field name="label">balance</field>
<field name="engine">account_codes</field>
<field name="formula">59</field>
<field name="green_on_positive" eval="False"/>
</record>
</field>
</record>
<record id="l10n_co_pl_account_report_income_before_tax" model="account.report.line">
<field name="code">L10N_CO_PNL_BEFORE_TAX</field>
<field name="name">Net Income before Tax</field>
<field name="name@es_419">Resultado neto antes de impuestos</field>
<field name="aggregation_formula">L10N_CO_PNL_INCOME.balance - L10N_CO_PNL_EXPENSES.balance - L10N_CO_PNL_COST_SALES.balance - L10N_CO_PNL_COST_PROD.balance + L10N_CO_PNL_GAINS_LOSSES.balance</field>
<field name="hierarchy_level">0</field>
</record>
<record id="l10n_co_pl_account_report_income_tax" model="account.report.line">
<field name="code">L10N_CO_PNL_TAX</field>
<field name="name">Income Tax</field>
<field name="name@es_419">Impuesto de renta y complementarios</field>
<field name="foldable" eval="True"/>
<field name="groupby">account_id</field>
<field name="hierarchy_level">0</field>
<field name="account_codes_formula" eval="False"/>
<field name="expression_ids">
<record id="l10n_co_pl_account_report_income_tax_balance" model="account.report.expression">
<field name="label">balance</field>
<field name="engine">account_codes</field>
<field name="formula">54</field>
<field name="green_on_positive" eval="False"/>
</record>
</field>
</record>
<record id="l10n_co_pl_account_report_net_income" model="account.report.line">
<field name="code">L10N_CO_PNL_NET_INCOME</field>
<field name="name">Net Income</field>
<field name="name@es_419">Resultado neto</field>
<field name="aggregation_formula">L10N_CO_PNL_BEFORE_TAX.balance - L10N_CO_PNL_TAX.balance</field>
<field name="hierarchy_level">0</field>
</record>
</field>
</record>
<record id="action_l10n_co_pl_report" model="ir.actions.client">
<field name="name">Profit and Loss</field>
<field name="tag">account_report</field>
<field name="context" eval="{'model': 'account.report', 'report_id': ref('l10n_co_pl_account_report_pymes')}"/>
</record>
</odoo>
@@ -0,0 +1,54 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="l10n_co_reports_trial_balance_per_partner" model="account.report">
<field name="name">Trial Balance by Partner</field>
<field name="name@es_419">Balance de sumas y saldos por socio</field>
<field name="country_id" ref="base.co"/>
<field name="root_report_id" ref="account_reports.trial_balance_report"/>
<field name="custom_handler_model_id" ref="model_l10n_co_account_trial_balance_per_partner_report_handler"/>
<field name="column_ids">
<record id="l10n_co_reports_trial_balance_per_partner_debit" model="account.report.column">
<field name="name">Debit</field>
<field name="name@es_419">Débito</field>
<field name="expression_label">debit</field>
</record>
<record id="l10n_co_reports_trial_balance_per_partner_credit" model="account.report.column">
<field name="name">Credit</field>
<field name="name@es_419">Crédito</field>
<field name="expression_label">credit</field>
</record>
</field>
<field name="line_ids">
<record id="l10n_co_reports_trial_balance_per_partner_all" model="account.report.line">
<field name="name">Trial Balance</field>
<field name="name@es_419">Balance general</field>
<field name="code">TB</field>
<field name="groupby">account_id,partner_id</field>
<field name="foldable" eval="False"/>
<field name="expression_ids">
<record id="l10n_co_reports_trial_balance_per_partner_all_balance" model="account.report.expression">
<field name="label">balance</field>
<field name="engine">custom</field>
<field name="auditable">True</field>
<field name="formula">_report_custom_engine_trial_balance</field>
<field name="subformula">balance</field>
</record>
<record id="l10n_co_reports_trial_balance_per_partner_all_debit" model="account.report.expression">
<field name="label">debit</field>
<field name="engine">custom</field>
<field name="auditable">True</field>
<field name="formula">_report_custom_engine_trial_balance</field>
<field name="subformula">debit</field>
</record>
<record id="l10n_co_reports_trial_balance_per_partner_all_credit" model="account.report.expression">
<field name="label">credit</field>
<field name="engine">custom</field>
<field name="auditable">True</field>
<field name="formula">_report_custom_engine_trial_balance</field>
<field name="subformula">credit</field>
</record>
</field>
</record>
</field>
</record>
</odoo>
+452
View File
@@ -0,0 +1,452 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * l10n_co_reports
#
# Weblate <noreply-mt-weblate@weblate.org>, 2025, 2026.
# "Fernanda Alvarez (mfar)" <mfar@odoo.com>, 2026.
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.1alpha1+e\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-30 19:05+0000\n"
"PO-Revision-Date: 2026-08-18 21:17+0000\n"
"Last-Translator: \"Fernanda Alvarez (mfar)\" <mfar@odoo.com>\n"
"Language-Team: Spanish (Latin America) <https://translate.odoo.com/projects/"
"odoo-19-l10n/l10n_co_reports/es_419/>\n"
"Language: es_419\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 2026.6.1\n"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid ", practicó en la ciudad de"
msgstr ", practicó en la ciudad de"
#. module: l10n_co_reports
#: model:account.report.line,name:l10n_co_reports.l10n_co_reports_libro_inv_blc_patrimonio_36
msgid "36 NET INCOME FOR THE YEAR"
msgstr "36 RESULTADOS DEL EJERCICIO"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_libro_diario
msgid "<span>DAILY JOURNAL REPORT</span>"
msgstr "<span>LIBRO DIARIO</span>"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "<strong>MONTO DEL PAGO SUJETO A:</strong>"
msgstr "<strong>MONTO DEL PAGO SUJETO A:</strong>"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "<strong>MONTO TOTAL OPERACIONAL:</strong>"
msgstr "<strong>MONTO TOTAL OPERACIONAL:</strong>"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "<strong>RETENIDO Y CONSIGNADO:</strong>"
msgstr "<strong>RETENIDO Y CONSIGNADO:</strong>"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "<strong>TOTAL DE IMPUESTOS DESCONTABLES</strong>"
msgstr "<strong>TOTAL DE IMPUESTOS DESCONTABLES</strong>"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_libro_diario
msgid "ACCOUNT"
msgstr "CUENTA"
#. module: l10n_co_reports
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_reports_retention_report_wizard__article
msgid "Artículo"
msgstr "Artículo"
#. module: l10n_co_reports
#: model:account.report.line,name:l10n_co_reports.l10n_co_inv_blc_assets_expenses
msgid "Assets + Expenses"
msgstr "Activo + Gastos"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "Bimestre"
msgstr "Bimestre"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "CERTIFICADO DE RETENCIÓN DE IVA"
msgstr "CERTIFICADO DE RETENCIÓN DE IVA"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "CERTIFICADO DE RETENCIÓN EN ICA"
msgstr "CERTIFICADO DE RETENCIÓN EN ICA"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "CERTIFICADO DE RETENCIÓN POR TERCEROS"
msgstr "CERTIFICADO DE RETENCIÓN POR TERCEROS"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_libro_diario
msgid "CREDIT"
msgstr "HABER"
#. module: l10n_co_reports
#: model:ir.actions.client,name:l10n_co_reports.action_account_report_fuente
#: model:ir.ui.menu,name:l10n_co_reports.menu_action_account_report_fuente
msgid "Certificado de Retención en Fuente"
msgstr "Certificado de retención en fuente"
#. module: l10n_co_reports
#: model:ir.actions.client,name:l10n_co_reports.action_account_report_ica
#: model:ir.ui.menu,name:l10n_co_reports.menu_action_account_report_ica
msgid "Certificado de Retención en ICA"
msgstr "Certificado de retención en ICA"
#. module: l10n_co_reports
#: model:ir.actions.client,name:l10n_co_reports.action_account_report_iva
#: model:ir.ui.menu,name:l10n_co_reports.menu_action_account_report_iva
msgid "Certificado de Retención en IVA"
msgstr "Certificado de retención en IVA"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.retention_report_wizard_form
msgid "Certificados de Retención"
msgstr "Certificados de retención"
#. module: l10n_co_reports
#: model:ir.actions.report,name:l10n_co_reports.action_report_certification
msgid "Certification Report"
msgstr "Reporte de certificación"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "Ciudad Tercero:"
msgstr "Ciudad tercero:"
#. module: l10n_co_reports
#: model:ir.model,name:l10n_co_reports.model_report_l10n_co_reports_report_certification
msgid "Colombian Certification Report"
msgstr "Reporte de certificación colombiano"
#. module: l10n_co_reports
#: model:ir.model,name:l10n_co_reports.model_report_l10n_co_reports_report_libro_diario
msgid "Colombian Libro Diario Report"
msgstr "Reporte Libro Diario"
#. module: l10n_co_reports
#: model:ir.model,name:l10n_co_reports.model_l10n_co_reports_retention_report_wizard
msgid "Colombian Retention Report Wizard"
msgstr "Asistente de reporte de retención colombiano"
#. module: l10n_co_reports
#: model:ir.ui.menu,name:l10n_co_reports.account_reports_co_statements_menu
msgid "Colombian Statements"
msgstr "Estados de cuenta colombianos"
#. module: l10n_co_reports
#: model:ir.model,name:l10n_co_reports.model_l10n_co_report_handler
msgid "Columbian Report Custom Handler"
msgstr "Controlador de reporte personalizado colombiano"
#. module: l10n_co_reports
#: model:account.report.column,name:l10n_co_reports.l10n_co_reports_ica_type
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "Concepto"
msgstr "Concepto"
#. module: l10n_co_reports
#: model:account.report.column,name:l10n_co_reports.l10n_co_reports_fuente_communication
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "Concepto de retención"
msgstr "Concepto de retención"
#. module: l10n_co_reports
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_reports_retention_report_wizard__create_uid
msgid "Created by"
msgstr "Creado por"
#. module: l10n_co_reports
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_reports_retention_report_wizard__create_date
msgid "Created on"
msgstr "Creado el"
#. module: l10n_co_reports
#: model:ir.model,name:l10n_co_reports.model_l10n_co_account_trial_balance_per_partner_report_handler
msgid "Custom handler for Colombian 'Trial balance per partner'"
msgstr ""
"Gestor personalizado para el \"Balance de comprobación por contacto\" "
"colombiano"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_libro_diario
msgid "DATE"
msgstr "FECHA"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_libro_diario
msgid "DEBIT"
msgstr "DEBE"
#. module: l10n_co_reports
#: model:ir.actions.client,name:l10n_co_reports.action_account_report_libro_diario
#: model:ir.actions.report,name:l10n_co_reports.action_report_libro_diario
#: model:ir.ui.menu,name:l10n_co_reports.menu_action_account_report_libro_diario
msgid "Daily Journal Report"
msgstr "Libro Diario"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid ""
"Dicha Retención fue consignada oportunamente a nombre de la Dirección de "
"Impuestos y Aduanas Nacionales en la Ciudad de"
msgstr ""
"Dicha retención fue consignada oportunamente a nombre de la Dirección de "
"Impuestos y Aduanas Nacionales en la ciudad de"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid ""
"Dicha Retención fue consignada oportunamente a nombre de la Secretaría de "
"Hacienda en la Ciudad de"
msgstr ""
"Dicha Retención fue consignada oportunamente a nombre de la Secretaría de "
"Hacienda en la Ciudad de"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "Dirección:"
msgstr "Dirección:"
#. module: l10n_co_reports
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_account_trial_balance_per_partner_report_handler__display_name
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_fuente_report_handler__display_name
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_ica_report_handler__display_name
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_iva_report_handler__display_name
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_libro_diario_report_handler__display_name
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_report_handler__display_name
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_reports_retention_report_wizard__display_name
#: model:ir.model.fields,field_description:l10n_co_reports.field_report_l10n_co_reports_report_certification__display_name
#: model:ir.model.fields,field_description:l10n_co_reports.field_report_l10n_co_reports_report_libro_diario__display_name
msgid "Display Name"
msgstr "Mostrar nombre"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "Durante el año gravable de"
msgstr "Durante el año gravable de"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid ""
"El presente certificado se expide en concordancia con las disposiciones "
"legales contenidas en el artículo 381 del Estatuto Tributario."
msgstr ""
"El presente certificado se expide en concordancia con las disposiciones "
"legales contenidas en el artículo 381 del Estatuto Tributario."
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_libro_diario
msgid "FROM"
msgstr "DE"
#. module: l10n_co_reports
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_reports_retention_report_wizard__declaration_date
msgid "Fecha de Declaración"
msgstr "Fecha de declaración"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "Fecha de Declaración:"
msgstr "Fecha de declaración:"
#. module: l10n_co_reports
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_reports_retention_report_wizard__expedition_date
msgid "Fecha de Expedición"
msgstr "Fecha de expedición"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "Fecha de Expedición:"
msgstr "Fecha de expedición:"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.retention_report_wizard_form
msgid "Fechas para Certificado"
msgstr "Fechas para certificado"
#. module: l10n_co_reports
#: model:ir.model,name:l10n_co_reports.model_l10n_co_fuente_report_handler
msgid "Fuente Report Custom Handler"
msgstr "Controlador personalizado del reporte fuente"
#. module: l10n_co_reports
#: model:ir.model,name:l10n_co_reports.model_l10n_co_ica_report_handler
msgid "ICA Report Custom Handler"
msgstr "Controlador personalizado del reporte ICA"
#. module: l10n_co_reports
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_account_trial_balance_per_partner_report_handler__id
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_fuente_report_handler__id
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_ica_report_handler__id
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_iva_report_handler__id
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_libro_diario_report_handler__id
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_report_handler__id
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_reports_retention_report_wizard__id
#: model:ir.model.fields,field_description:l10n_co_reports.field_report_l10n_co_reports_report_certification__id
#: model:ir.model.fields,field_description:l10n_co_reports.field_report_l10n_co_reports_report_libro_diario__id
msgid "ID"
msgstr "ID"
#. module: l10n_co_reports
#: model:ir.model,name:l10n_co_reports.model_l10n_co_iva_report_handler
msgid "IVA Report Custom Handler"
msgstr "Controlador personalizado del reporte de IVA"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.retention_report_wizard_form
msgid "Imprimir"
msgstr "Imprimir"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_libro_diario
msgid "LABEL"
msgstr "CONCEPTO"
#. module: l10n_co_reports
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_reports_retention_report_wizard__write_uid
msgid "Last Updated by"
msgstr "Última actualización por"
#. module: l10n_co_reports
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_reports_retention_report_wizard__write_date
msgid "Last Updated on"
msgstr "Última actualización en"
#. module: l10n_co_reports
#: model:ir.model,name:l10n_co_reports.model_l10n_co_libro_diario_report_handler
msgid "Libro Diario Report Custom Handler"
msgstr "Gestor personalizado de reportes de libro diario"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_libro_diario
msgid "MOVE"
msgstr "FOLIO"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "Monto Total Operación"
msgstr "Monto total operación"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "Monto del Pago Sujeto Retención"
msgstr "Monto del pago sujeto retención"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "Monto del pago sujeto a retención"
msgstr "Monto del pago sujeto a retención"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_libro_diario
msgid "NIT:"
msgstr "NIT:"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "NO REQUIRE FIRMA AUTOGRAFA."
msgstr "NO REQUIERE FIRMA AUTÓGRAFA."
#. module: l10n_co_reports
#. odoo-python
#: code:addons/l10n_co_reports/report/libro_diario_report.py:0
msgid "No lines were provided to print."
msgstr "No se proporcionaron líneas para imprimir"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "Nombre/Razón Social:"
msgstr "Nombre/razón social:"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_libro_diario
msgid "PARTNER"
msgstr "CONTACTO"
#. module: l10n_co_reports
#. odoo-python
#: code:addons/l10n_co_reports/models/trial_balance.py:0
msgid "Partner VAT"
msgstr "NIT del tercero"
#. module: l10n_co_reports
#. odoo-python
#: code:addons/l10n_co_reports/models/trial_balance.py:0
msgid "Partners information"
msgstr "Información del contacto"
#. module: l10n_co_reports
#: model:ir.actions.client,name:l10n_co_reports.action_l10n_co_pl_report
msgid "Profit and Loss"
msgstr "Estado de resultados"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "Retenido Consignado"
msgstr "Retenido consignado"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "Retenido y consignado"
msgstr "Retenido y consignado"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid ""
"Señor contribuyente: Favor tener en cuenta que la base certificada por "
"nosotros corresponde a la sometida a retención durante el periodo gravable "
"según las normas vigentes sobre la materia y podría ser diferente a lo "
"facturado por usted durante el mismo periodo. al declarar tenerlo presente."
msgstr ""
"Señor contribuyente: Favor tener en cuenta que la base certificada por "
"nosotros corresponde a la sometida a retención durante el periodo gravable "
"según las normas vigentes sobre la materia y podría ser diferente a lo "
"facturado por usted durante el mismo periodo. Tenga esto presente al momento "
"de realizar su declaración."
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_libro_diario
msgid "TO"
msgstr "A"
#. module: l10n_co_reports
#. odoo-python
#: code:addons/l10n_co_reports/report/certification_report.py:0
msgid "You have to expand at least one partner."
msgstr "Debe expandir al menos un tercero."
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "con NIT:"
msgstr "con NIT:"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "retención de ICA a"
msgstr "retención de ICA a"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "retención de IVA a"
msgstr "retención de IVA a"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "retención en la fuente a"
msgstr "retención en la fuente a"
+434
View File
@@ -0,0 +1,434 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * l10n_co_reports
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 19.0+e\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-30 19:05+0000\n"
"PO-Revision-Date: 2025-12-30 19:05+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid ", practicó en la ciudad de"
msgstr ""
#. module: l10n_co_reports
#: model:account.report.line,name:l10n_co_reports.l10n_co_reports_libro_inv_blc_patrimonio_36
msgid "36 NET INCOME FOR THE YEAR"
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_libro_diario
msgid "<span>DAILY JOURNAL REPORT</span>"
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "<strong>MONTO DEL PAGO SUJETO A:</strong>"
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "<strong>MONTO TOTAL OPERACIONAL:</strong>"
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "<strong>RETENIDO Y CONSIGNADO:</strong>"
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "<strong>TOTAL DE IMPUESTOS DESCONTABLES</strong>"
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_libro_diario
msgid "ACCOUNT"
msgstr ""
#. module: l10n_co_reports
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_reports_retention_report_wizard__article
msgid "Artículo"
msgstr ""
#. module: l10n_co_reports
#: model:account.report.line,name:l10n_co_reports.l10n_co_inv_blc_assets_expenses
msgid "Assets + Expenses"
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "Bimestre"
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "CERTIFICADO DE RETENCIÓN DE IVA"
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "CERTIFICADO DE RETENCIÓN EN ICA"
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "CERTIFICADO DE RETENCIÓN POR TERCEROS"
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_libro_diario
msgid "CREDIT"
msgstr ""
#. module: l10n_co_reports
#: model:ir.actions.client,name:l10n_co_reports.action_account_report_fuente
#: model:ir.ui.menu,name:l10n_co_reports.menu_action_account_report_fuente
msgid "Certificado de Retención en Fuente"
msgstr ""
#. module: l10n_co_reports
#: model:ir.actions.client,name:l10n_co_reports.action_account_report_ica
#: model:ir.ui.menu,name:l10n_co_reports.menu_action_account_report_ica
msgid "Certificado de Retención en ICA"
msgstr ""
#. module: l10n_co_reports
#: model:ir.actions.client,name:l10n_co_reports.action_account_report_iva
#: model:ir.ui.menu,name:l10n_co_reports.menu_action_account_report_iva
msgid "Certificado de Retención en IVA"
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.retention_report_wizard_form
msgid "Certificados de Retención"
msgstr ""
#. module: l10n_co_reports
#: model:ir.actions.report,name:l10n_co_reports.action_report_certification
msgid "Certification Report"
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "Ciudad Tercero:"
msgstr ""
#. module: l10n_co_reports
#: model:ir.model,name:l10n_co_reports.model_report_l10n_co_reports_report_certification
msgid "Colombian Certification Report"
msgstr ""
#. module: l10n_co_reports
#: model:ir.model,name:l10n_co_reports.model_report_l10n_co_reports_report_libro_diario
msgid "Colombian Libro Diario Report"
msgstr ""
#. module: l10n_co_reports
#: model:ir.model,name:l10n_co_reports.model_l10n_co_reports_retention_report_wizard
msgid "Colombian Retention Report Wizard"
msgstr ""
#. module: l10n_co_reports
#: model:ir.ui.menu,name:l10n_co_reports.account_reports_co_statements_menu
msgid "Colombian Statements"
msgstr ""
#. module: l10n_co_reports
#: model:ir.model,name:l10n_co_reports.model_l10n_co_report_handler
msgid "Columbian Report Custom Handler"
msgstr ""
#. module: l10n_co_reports
#: model:account.report.column,name:l10n_co_reports.l10n_co_reports_ica_type
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "Concepto"
msgstr ""
#. module: l10n_co_reports
#: model:account.report.column,name:l10n_co_reports.l10n_co_reports_fuente_communication
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "Concepto de retención"
msgstr ""
#. module: l10n_co_reports
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_reports_retention_report_wizard__create_uid
msgid "Created by"
msgstr ""
#. module: l10n_co_reports
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_reports_retention_report_wizard__create_date
msgid "Created on"
msgstr ""
#. module: l10n_co_reports
#: model:ir.model,name:l10n_co_reports.model_l10n_co_account_trial_balance_per_partner_report_handler
msgid "Custom handler for Colombian 'Trial balance per partner'"
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_libro_diario
msgid "DATE"
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_libro_diario
msgid "DEBIT"
msgstr ""
#. module: l10n_co_reports
#: model:ir.actions.client,name:l10n_co_reports.action_account_report_libro_diario
#: model:ir.actions.report,name:l10n_co_reports.action_report_libro_diario
#: model:ir.ui.menu,name:l10n_co_reports.menu_action_account_report_libro_diario
msgid "Daily Journal Report"
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid ""
"Dicha Retención fue consignada oportunamente a nombre de la Dirección de "
"Impuestos y Aduanas Nacionales en la Ciudad de"
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid ""
"Dicha Retención fue consignada oportunamente a nombre de la Secretaría de "
"Hacienda en la Ciudad de"
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "Dirección:"
msgstr ""
#. module: l10n_co_reports
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_account_trial_balance_per_partner_report_handler__display_name
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_fuente_report_handler__display_name
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_ica_report_handler__display_name
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_iva_report_handler__display_name
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_libro_diario_report_handler__display_name
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_report_handler__display_name
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_reports_retention_report_wizard__display_name
#: model:ir.model.fields,field_description:l10n_co_reports.field_report_l10n_co_reports_report_certification__display_name
#: model:ir.model.fields,field_description:l10n_co_reports.field_report_l10n_co_reports_report_libro_diario__display_name
msgid "Display Name"
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "Durante el año gravable de"
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid ""
"El presente certificado se expide en concordancia con las disposiciones "
"legales contenidas en el artículo 381 del Estatuto Tributario."
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_libro_diario
msgid "FROM"
msgstr ""
#. module: l10n_co_reports
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_reports_retention_report_wizard__declaration_date
msgid "Fecha de Declaración"
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "Fecha de Declaración:"
msgstr ""
#. module: l10n_co_reports
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_reports_retention_report_wizard__expedition_date
msgid "Fecha de Expedición"
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "Fecha de Expedición:"
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.retention_report_wizard_form
msgid "Fechas para Certificado"
msgstr ""
#. module: l10n_co_reports
#: model:ir.model,name:l10n_co_reports.model_l10n_co_fuente_report_handler
msgid "Fuente Report Custom Handler"
msgstr ""
#. module: l10n_co_reports
#: model:ir.model,name:l10n_co_reports.model_l10n_co_ica_report_handler
msgid "ICA Report Custom Handler"
msgstr ""
#. module: l10n_co_reports
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_account_trial_balance_per_partner_report_handler__id
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_fuente_report_handler__id
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_ica_report_handler__id
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_iva_report_handler__id
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_libro_diario_report_handler__id
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_report_handler__id
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_reports_retention_report_wizard__id
#: model:ir.model.fields,field_description:l10n_co_reports.field_report_l10n_co_reports_report_certification__id
#: model:ir.model.fields,field_description:l10n_co_reports.field_report_l10n_co_reports_report_libro_diario__id
msgid "ID"
msgstr ""
#. module: l10n_co_reports
#: model:ir.model,name:l10n_co_reports.model_l10n_co_iva_report_handler
msgid "IVA Report Custom Handler"
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.retention_report_wizard_form
msgid "Imprimir"
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_libro_diario
msgid "LABEL"
msgstr ""
#. module: l10n_co_reports
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_reports_retention_report_wizard__write_uid
msgid "Last Updated by"
msgstr ""
#. module: l10n_co_reports
#: model:ir.model.fields,field_description:l10n_co_reports.field_l10n_co_reports_retention_report_wizard__write_date
msgid "Last Updated on"
msgstr ""
#. module: l10n_co_reports
#: model:ir.model,name:l10n_co_reports.model_l10n_co_libro_diario_report_handler
msgid "Libro Diario Report Custom Handler"
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_libro_diario
msgid "MOVE"
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "Monto Total Operación"
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "Monto del Pago Sujeto Retención"
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "Monto del pago sujeto a retención"
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_libro_diario
msgid "NIT:"
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "NO REQUIRE FIRMA AUTOGRAFA."
msgstr ""
#. module: l10n_co_reports
#. odoo-python
#: code:addons/l10n_co_reports/report/libro_diario_report.py:0
msgid "No lines were provided to print."
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "Nombre/Razón Social:"
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_libro_diario
msgid "PARTNER"
msgstr ""
#. module: l10n_co_reports
#. odoo-python
#: code:addons/l10n_co_reports/models/trial_balance.py:0
msgid "Partner VAT"
msgstr ""
#. module: l10n_co_reports
#. odoo-python
#: code:addons/l10n_co_reports/models/trial_balance.py:0
msgid "Partners information"
msgstr ""
#. module: l10n_co_reports
#: model:ir.actions.client,name:l10n_co_reports.action_l10n_co_pl_report
msgid "Profit and Loss"
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "Retenido Consignado"
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "Retenido y consignado"
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid ""
"Señor contribuyente: Favor tener en cuenta que la base certificada por "
"nosotros corresponde a la sometida a retención durante el periodo gravable "
"según las normas vigentes sobre la materia y podría ser diferente a lo "
"facturado por usted durante el mismo periodo. al declarar tenerlo presente."
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_libro_diario
msgid "TO"
msgstr ""
#. module: l10n_co_reports
#. odoo-python
#: code:addons/l10n_co_reports/report/certification_report.py:0
msgid "You have to expand at least one partner."
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "con NIT:"
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "retención de ICA a"
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "retención de IVA a"
msgstr ""
#. module: l10n_co_reports
#: model_terms:ir.ui.view,arch_db:l10n_co_reports.report_certification
msgid "retención en la fuente a"
msgstr ""
+7
View File
@@ -0,0 +1,7 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import l10n_co_reports
from . import l10n_co_reports_fuente
from . import l10n_co_reports_ica
from . import l10n_co_reports_iva
from . import l10n_co_reports_libro_diario
from . import trial_balance
+124
View File
@@ -0,0 +1,124 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import json
from odoo import models
class L10n_CoReportHandler(models.AbstractModel):
_name = 'l10n_co.report.handler'
_inherit = ['account.report.custom.handler']
_description = 'Columbian Report Custom Handler'
def _custom_options_initializer(self, report, options, previous_options):
super()._custom_options_initializer(report, options, previous_options=previous_options)
for button in options['buttons']:
if button['name'] == 'PDF':
button['action'] = 'print_pdf'
def _get_column_values(self, report, options, grouped_values):
""" Retrieve the correct value for each column and format it accordingly.
This method is used by several reports, and some columns only apply to
one or more report(s), i.e 'percentage' and 'bimestre'.
:param options (dict): The report options.
:param values (dict): All the values for the current line.
:return (list of dicts): A list of dicts, with each dict representing a column.
"""
column_values = []
for column in options['columns']:
col_expr = column['expression_label']
current_value = grouped_values.get(column['column_group_key'], {})
if not current_value:
column_values.append(report._build_column_dict(None, None))
else:
col_val = current_value.get(col_expr)
if col_expr == 'percentage':
col_val = 15 if current_value['balance'] else 0
else:
if col_val is None:
column_values.append(report._build_column_dict(None, None))
continue
else:
if col_expr == 'bimestre' and current_value.get('bimestre'):
col_val = self._get_bimonth_name(current_value['bimestre'])
column_values.append(report._build_column_dict(col_val, column, options=options))
return column_values
def _get_partner_values(self, report, options, query_results, expand_function):
grouped_results = {}
for results in query_results:
grouped_results.setdefault(results['partner_id'], {})[results['column_group_key']] = results
lines = []
for partner_id, partner_values in grouped_results.items():
line_id = report._get_generic_line_id('res.partner', partner_id)
lines.append((0, {
'id': line_id,
'name': list(partner_values.values())[0]['partner_name'],
'level': 2,
'unfoldable': True,
'unfolded': line_id in options.get('unfolded_lines') or options.get('unfold_all'),
'expand_function': expand_function,
'columns': self._get_column_values(report, options, partner_values)
}))
return lines
def _get_grouped_values(self, report, options, query_results, group_by=None):
grouped_results = {}
for results in query_results:
grouped_results.setdefault(tuple(results[item] for item in group_by), {})[results['column_group_key']] = results
lines = []
for group, group_values in grouped_results.items():
parent_line_id = report._get_generic_line_id('res.partner', list(group_values.values())[0]['partner_id'])
markup = ''
for key, value in zip(group_by, group):
markup += '%s_%s_' % (key, value)
markup = markup[:-1]
lines.append({
'id': report._get_generic_line_id(None, None, markup=markup, parent_line_id=parent_line_id),
'name': '',
'unfoldable': False,
'columns': self._get_column_values(report, options, group_values),
'level': 3,
'parent_id': parent_line_id,
})
return {'lines': lines}
def _get_bimonth_name(self, bimonth_index):
bimonth_names = {
1: 'Enero - Febrero',
2: 'Marzo - Abril',
3: 'Mayo - Junio',
4: 'Julio - Agosto',
5: 'Septiembre - Octubre',
6: 'Noviembre - Diciembre',
}
return bimonth_names[bimonth_index]
def _get_domain(self, report, options, line_dict_id=None):
common_domain = [('partner_id', '!=', False)]
if line_dict_id:
partner_model, partner_id = report._get_model_info_from_id(line_dict_id)
if partner_model == 'res.partner' and partner_id:
common_domain += [('partner_id', '=', partner_id)]
return common_domain
def print_pdf(self, options, action_param):
return {
'type': 'ir.actions.act_window',
'view_mode': 'form',
'res_model': 'l10n_co_reports.retention_report.wizard',
'views': [(self.env.ref('l10n_co_reports.retention_report_wizard_form').id, 'form')],
'view_id': self.env.ref('l10n_co_reports.retention_report_wizard_form').id,
'target': 'new',
'context': {'options': options},
'data': {'options': json.dumps(options), 'output_format': 'pdf'},
}
@@ -0,0 +1,75 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import models
from odoo.tools import SQL, get_lang
class L10n_CoFuenteReportHandler(models.AbstractModel):
_name = 'l10n_co.fuente.report.handler'
_inherit = ['l10n_co.report.handler']
_description = 'Fuente Report Custom Handler'
def _dynamic_lines_generator(self, report, options, all_column_groups_expression_totals, warnings=None):
domain = self._get_domain(report, options)
query_results = self._get_query_results(report, options, domain)
return super()._get_partner_values(report, options, query_results, '_report_expand_unfoldable_line_fuente')
def _get_query_results(self, report, options, domain, expanded=False):
queries = []
for column_group_key, column_group_options in report._split_options_per_column_group(options).items():
query = report._get_report_query(column_group_options, 'strict_range', domain=domain)
origin_tax_id_expression = SQL('tax.id')
lang = self.env.user.lang or get_lang(self.env).code
origin_tax_desc_expression = SQL("COALESCE(tax.description->>%s,tax.description->>'en_US')", lang)
origin_tax_desc_expression = SQL("REGEXP_REPLACE(%s, '(<([^>]+)>)', '', 'g')", origin_tax_desc_expression)
expanded_columns = SQL('%s AS origin_tax_id, %s AS origin_tax_desc,', origin_tax_id_expression if expanded else '', origin_tax_desc_expression if expanded else '')
tax_base_amount_select = SQL("""
SUM(CASE
WHEN account_move_line.credit > 0
THEN account_move_line.tax_base_amount
WHEN account_move_line.debit > 0
THEN account_move_line.tax_base_amount * -1
ELSE 0
END)
""")
queries.append(SQL(
"""
SELECT
%(column_group_key)s AS column_group_key,
SUM(account_move_line.credit - account_move_line.debit) AS balance,
%(tax_base_amount_select)s AS tax_base_amount,
%(expanded_columns)s
rp.id AS partner_id,
rp.name AS partner_name
FROM %(table_references)s
JOIN res_partner rp ON account_move_line.partner_id = rp.id
JOIN account_tax tax ON account_move_line.tax_line_id = tax.id
WHERE %(search_condition)s
GROUP BY rp.id %(expanded_groupby)s
%(having_clause)s
""",
column_group_key=column_group_key,
tax_base_amount_select=tax_base_amount_select,
expanded_columns=expanded_columns,
table_references=query.from_clause,
search_condition=query.where_clause,
expanded_groupby=SQL(', %s', origin_tax_id_expression) if expanded else SQL(),
having_clause=SQL("HAVING %s != 0", tax_base_amount_select) if expanded else SQL(),
))
self.env.cr.execute(SQL(' UNION ALL ').join(queries))
return self.env.cr.dictfetchall()
def _get_domain(self, report, options, line_dict_id=None):
domain = super()._get_domain(report, options, line_dict_id=line_dict_id)
domain += [('tax_line_id.type_tax_use', '=', 'purchase')]
# Reports are categorized by the l10n_co_edi_type, which may not be present if l10n_co_edi is uninstalled
if 'l10n_co_edi_type' in self.env['account.tax']._fields:
domain += [('tax_line_id.l10n_co_edi_type.code', '=', '06')]
return domain
def _report_expand_unfoldable_line_fuente(self, line_dict_id, groupby, options, progress, offset, unfold_all_batch_data=None):
report = self.env['account.report'].browse(options['report_id'])
domain = self._get_domain(report, options, line_dict_id=line_dict_id)
query_results = self._get_query_results(report, options, domain, expanded=True)
return super()._get_grouped_values(report, options, query_results, group_by=['origin_tax_id'])
@@ -0,0 +1,82 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import models
from odoo.tools import SQL
class L10n_CoIcaReportHandler(models.AbstractModel):
_name = 'l10n_co.ica.report.handler'
_inherit = ['l10n_co.report.handler']
_description = 'ICA Report Custom Handler'
def _dynamic_lines_generator(self, report, options, all_column_groups_expression_totals, warnings=None):
domain = self._get_domain(report, options)
query_results = self._get_query_results(report, options, domain)
return super()._get_partner_values(report, options, query_results, '_report_expand_unfoldable_line_ica')
def _get_query_results(self, report, options, domain, expanded=False):
queries = []
for column_group_key, column_group_options in report._split_options_per_column_group(options).items():
query = report._get_report_query(column_group_options, 'strict_range', domain=domain)
bimestre_expression = SQL('FLOOR((EXTRACT(MONTH FROM account_move_line.date) + 1) / 2)')
ica_type_expression = SQL('account_move_line.name')
expanded_columns = SQL('%s AS bimestre, %s AS ica_type,', bimestre_expression if expanded else '', ica_type_expression if expanded else '')
expanded_having = SQL('''
HAVING SUM(
CASE
WHEN account_move_line.credit > 0
THEN account_move_line.tax_base_amount
WHEN account_move_line.debit > 0
THEN account_move_line.tax_base_amount * -1
ELSE 0
END
) != 0
''') if expanded else SQL()
queries.append(SQL(
"""
SELECT
%(column_group_key)s AS column_group_key,
SUM(account_move_line.credit - account_move_line.debit) AS balance,
SUM(CASE
WHEN account_move_line.credit > 0
THEN account_move_line.tax_base_amount
WHEN account_move_line.debit > 0
THEN account_move_line.tax_base_amount * -1
ELSE 0
END
) AS tax_base_amount,
%(expanded_columns)s
rp.id AS partner_id,
rp.name AS partner_name
FROM %(table_references)s
JOIN res_partner rp ON account_move_line.partner_id = rp.id
JOIN account_account aa ON account_move_line.account_id = aa.id
WHERE %(search_condition)s
GROUP BY rp.id %(expanded_groupby)s
%(expanded_having)s
""",
column_group_key=column_group_key,
expanded_columns=expanded_columns,
table_references=query.from_clause,
expanded_groupby=SQL(', %s, %s', bimestre_expression, ica_type_expression) if expanded else SQL(),
search_condition=query.where_clause,
expanded_having=expanded_having,
))
self.env.cr.execute(SQL(' UNION ALL ').join(queries))
return self.env.cr.dictfetchall()
def _get_domain(self, report, options, line_dict_id=None):
domain = super()._get_domain(report, options, line_dict_id=line_dict_id)
domain += [('tax_line_id.type_tax_use', '=', 'purchase')]
# Reports are categorized by the l10n_co_edi_type, which may not be present if l10n_co_edi is uninstalled
if 'l10n_co_edi_type' in self.env['account.tax']._fields:
domain += [('tax_line_id.l10n_co_edi_type.code', '=', '07')]
return domain
def _report_expand_unfoldable_line_ica(self, line_dict_id, groupby, options, progress, offset, unfold_all_batch_data=None):
report = self.env['account.report'].browse(options['report_id'])
domain = self._get_domain(report, options, line_dict_id=line_dict_id)
query_results = self._get_query_results(report, options, domain, expanded=True)
return super()._get_grouped_values(report, options, query_results, group_by=['bimestre', 'ica_type'])
@@ -0,0 +1,83 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import models
from odoo.tools import SQL
class L10n_CoIvaReportHandler(models.AbstractModel):
_name = 'l10n_co.iva.report.handler'
_inherit = ['l10n_co.report.handler']
_description = 'IVA Report Custom Handler'
def _dynamic_lines_generator(self, report, options, all_column_groups_expression_totals, warnings=None):
domain = self._get_domain(report, options)
query_results = self._get_query_results(report, options, domain)
return super()._get_partner_values(report, options, query_results, '_report_expand_unfoldable_line_iva')
def _get_query_results(self, report, options, domain, expanded=False):
queries = []
for column_group_key, column_group_options in report._split_options_per_column_group(options).items():
query = report._get_report_query(column_group_options, 'strict_range', domain=domain)
bimestre_expression = SQL('CAST(FLOOR((EXTRACT(MONTH FROM account_move_line.date) + 1) / 2) AS INT)')
bimestre_column = SQL('%s AS bimestre,', bimestre_expression if expanded else '')
bimestre_having = SQL(
'''
HAVING SUM(
CASE
WHEN account_move_line.credit > 0
THEN account_move_line.tax_base_amount
WHEN account_move_line.debit > 0
THEN account_move_line.tax_base_amount * -1
ELSE 0
END
) != 0
''',
) if expanded else SQL()
queries.append(SQL(
"""
SELECT
%(column_group_key)s AS column_group_key,
SUM((account_move_line.credit - account_move_line.debit) / 0.15) AS balance_15_over_19,
SUM(account_move_line.credit - account_move_line.debit) AS balance,
SUM(CASE
WHEN account_move_line.credit > 0
THEN account_move_line.tax_base_amount
WHEN account_move_line.debit > 0
THEN account_move_line.tax_base_amount * -1
ELSE 0
END
) AS tax_base_amount,
%(bimestre_column)s
rp.id AS partner_id,
rp.name AS partner_name
FROM %(table_references)s
JOIN res_partner rp ON account_move_line.partner_id = rp.id
WHERE %(search_condition)s
GROUP BY rp.id %(bimestre_groupby)s
%(bimestre_having)s
""",
column_group_key=column_group_key,
bimestre_column=bimestre_column,
bimestre_groupby=SQL(', %s', bimestre_expression) if expanded else SQL(),
bimestre_having=bimestre_having,
table_references=query.from_clause,
search_condition=query.where_clause,
))
self.env.cr.execute(SQL(' UNION ALL ').join(queries))
return self.env.cr.dictfetchall()
def _get_domain(self, report, options, line_dict_id=None):
domain = super()._get_domain(report, options, line_dict_id=line_dict_id)
domain += [('tax_line_id.type_tax_use', '=', 'purchase')]
# Reports are categorized by the l10n_co_edi_type, which may not be present if l10n_co_edi is uninstalled
if 'l10n_co_edi_type' in self.env['account.tax']._fields:
domain += [('tax_line_id.l10n_co_edi_type.code', '=', '05')]
return domain
def _report_expand_unfoldable_line_iva(self, line_dict_id, groupby, options, progress, offset, unfold_all_batch_data=None):
report = self.env['account.report'].browse(options['report_id'])
domain = self._get_domain(report, options, line_dict_id=line_dict_id)
query_results = self._get_query_results(report, options, domain, expanded=True)
return super()._get_grouped_values(report, options, query_results, group_by=['bimestre'])
@@ -0,0 +1,89 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import models
from odoo.tools import SQL
class LibroDiarioReportCustomHandler(models.AbstractModel):
_name = 'l10n_co.libro.diario.report.handler'
_inherit = 'l10n_co.report.handler'
_description = 'Libro Diario Report Custom Handler'
def _dynamic_lines_generator(self, report, options, all_column_groups_expression_totals, warnings=None):
domain = self._get_domain(report, options)
query_results = self._get_query_results(report, options, domain)
return self._transform_query_results_into_report_lines(report, options, query_results)
def _transform_query_results_into_report_lines(self, report, options, query_results):
processed_results = {}
for results in query_results:
processed_results.setdefault(results['line_id'], {})[results['column_group_key']] = results
lines = []
for key, value in processed_results.items():
line_id = report._get_generic_line_id('account.move', key)
columns = self._get_column_values(report, options, value)
columns_data = next(iter(value.values()))
parts = [
columns_data.get('move_name'),
columns_data.get('partner_name'),
columns_data.get('account_name'),
columns_data.get('line_label')
]
line_name = " ".join(str(p) for p in parts if p).strip()
lines.append((0, {
'id': line_id,
'name': line_name,
'level': 1,
'unfoldable': False,
'columns': columns
}))
return lines
def _get_query_results(self, report, options, domain):
queries = []
for column_group_key, column_group_options in report._split_options_per_column_group(options).items():
query = report._get_report_query(column_group_options, 'strict_range', domain=domain)
account_alias = query.left_join(lhs_alias='account_move_line', lhs_column='account_id', rhs_table='account_account', rhs_column='id', link='account_id')
account_code = self.env['account.account']._field_to_sql(account_alias, 'code', query)
account_name = self.env['account.account']._field_to_sql(account_alias, 'name')
account_id = SQL.identifier(account_alias, 'id')
account_name = SQL("%s || ' ' || (%s)", account_code, account_name)
queries.append(SQL(
"""
SELECT
%(column_group_key)s AS column_group_key,
account_move_line.id AS line_id,
account_move_line.date AS line_date,
account_move.id AS move_id,
account_move.name AS move_name,
%(account_id)s AS account_id,
%(account_name)s AS account_name,
res_partner.id AS partner_id,
res_partner.name AS partner_name,
account_move_line.name AS line_label,
account_move_line.debit AS line_debit,
account_move_line.credit AS line_credit
FROM %(table_references)s
JOIN account_move ON account_move_line.move_id = account_move.id
JOIN res_partner ON account_move_line.partner_id = res_partner.id
WHERE %(search_condition)s
ORDER BY account_move_line.date DESC
""",
column_group_key=column_group_key,
account_id=account_id,
account_name=account_name,
table_references=query.from_clause,
search_condition=query.where_clause,
))
self.env.cr.execute(SQL(' UNION ALL ').join(queries))
return self.env.cr.dictfetchall()
def _get_domain(self, report, options, line_dict_id=None):
domain = super()._get_domain(report, options, line_dict_id=line_dict_id)
domain += [('company_id', '=', self.env.company.id)]
return domain
def print_pdf(self, options, action_param):
return self.env.ref('l10n_co_reports.action_report_libro_diario').with_context(options=options).report_action([])
+43
View File
@@ -0,0 +1,43 @@
from odoo import models, _
class l10n_CoAccountTrialBalancePerPartnerReportHandler(models.AbstractModel):
_name = 'l10n_co.account.trial.balance.per.partner.report.handler'
_inherit = 'account.trial.balance.report.handler'
_description = "Custom handler for Colombian 'Trial balance per partner'"
def _custom_options_initializer(self, report, options, previous_options):
super()._custom_options_initializer(report, options, previous_options)
options['columns'].insert(0, {
'name': _('Partner VAT'),
'column_group_key': options['columns'][-1]['column_group_key'],
'expression_label': 'partner_vat',
'sortable': False,
'figure_type': 'string',
'blank_if_zero': True,
})
options['column_headers'][0].insert(0, {'name': _('Partners information'), 'colspan': 1})
xlsx_button_option = next((button_opt for button_opt in options['buttons'] if button_opt.get('action_param') == 'export_to_xlsx'), {})
xlsx_button_option['action_param'] = 'l10n_co_export_to_xlsx'
def l10n_co_export_to_xlsx(self, options):
# Force the unfold_all attribute when exporting xlsx file
options['unfold_all'] = True
report = self.env['account.report'].browse(options['report_id'])
return report.export_to_xlsx(options)
def _custom_line_postprocessor(self, report, options, lines):
partner_ids = {report._get_res_id_from_line_id(line['id'], 'res.partner') for line in lines}
partners = self.env['res.partner'].search_fetch(domain=[('id', 'in', list(partner_ids))], field_names=['vat'])
partner_vats = {partner.id: partner.vat or '' for partner in partners}
filtered_lines = []
for line in super()._custom_line_postprocessor(report, options, lines):
partner_id = report._get_res_id_from_line_id(line['id'], 'res.partner')
partner_vat = partner_vats.get(partner_id, '') if partner_id else ''
line['columns'][0].update({'is_zero': False, 'no_format': partner_vat})
filtered_lines.append(line)
return filtered_lines
+3
View File
@@ -0,0 +1,3 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import certification_report
from . import libro_diario_report
@@ -0,0 +1,59 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from datetime import datetime
from odoo import models, fields
from odoo.exceptions import UserError
from odoo.tools.translate import _
class ReportL10n_Co_ReportsReport_Certification(models.AbstractModel):
_name = 'report.l10n_co_reports.report_certification'
_description = "Colombian Certification Report"
def _get_report_values(self, docids, data=None):
docs = []
partner_doc = None
options = self.env.context.get('options')
report = self.env['account.report'].browse(options['report_id'])
lines = report._filter_out_folded_children(report._get_lines(options))
for line in lines:
model, model_id = report._get_model_info_from_id(line['id'])
if model == 'res.partner':
# The lines are always grouped by partner, and the partner lines always come first.
# So the partner_doc dict can be initialized here within the 'if'.
partner_doc = {
'partner_id': self.env[model].browse(model_id),
'lines': [],
}
# Add totals
for i, column in enumerate(line['columns']):
column_data = options['columns'][i % len(options['columns'])]
partner_doc[column_data['expression_label']] = column.get('name')
docs.append(partner_doc)
else:
line_dict = {}
for i, column in enumerate(line['columns']):
column_data = options['columns'][i % len(options['columns'])]
line_dict[column_data['expression_label']] = column.get('name')
# As mentioned above, at this stage of the iteration,
# the partner_doc dict (and the 'lines' key) will always be set.
partner_doc['lines'].append(line_dict)
# Get rid of partners without expanded lines.
docs = [doc for doc in docs if doc['lines']]
if not docs:
raise UserError(_('You have to expand at least one partner.'))
date_from = options.get('date', {}).get('date_from') or data['wizard_values'].get("declaration_date")
current_date = fields.Datetime.to_datetime(date_from) or datetime.now()
return {
'docs': docs,
'options': data['wizard_values'],
'report_name': 'report_%s' % report.get_external_id()[report.id],
'company': self.env.company,
'current_year': self.env.company.compute_fiscalyear_dates(current_date)['date_from'].year,
}
@@ -0,0 +1,191 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<template id="report_certification">
<t t-call="web.html_container">
<t t-foreach="docs" t-as="partner">
<t t-call="web.external_layout">
<div class="page">
<h2 style="padding-top: 15px;">
<span t-if="report_name.endswith('fuente')">CERTIFICADO DE RETENCIÓN POR TERCEROS</span>
<span t-if="report_name.endswith('ica')">CERTIFICADO DE RETENCIÓN EN ICA</span>
<span t-if="report_name.endswith('iva')">CERTIFICADO DE RETENCIÓN DE IVA</span>
</h2>
<div class="row">
<div class="col-6">
NIT: <t t-out="partner['partner_id'].vat"/>
</div>
<div class="col-6">
Fecha de Expedición: <t t-out="options['expedition_date']"/>
</div>
</div>
<div class="row">
<div class="col-6">
Nombre/Razón Social: <t t-out="partner['partner_id'].display_name"/>
</div>
<div class="col-6">
Fecha de Declaración: <t t-out="options['declaration_date']"/>
</div>
</div>
<div class="row">
<div class="col-12">
Ciudad Tercero: <t t-out="partner['partner_id'].city"/>
</div>
</div>
<div class="row">
<div class="col-12">
Dirección: <t t-out="partner['partner_id'].street"/>
</div>
</div>
<div class="row">
<div class="col-12">
Durante el año gravable de <t t-out="current_year"/>, practicó en la ciudad de
<t t-out="env.company.city"/>
<span t-if="report_name.endswith('fuente')"> retención en la fuente a</span>
<span t-if="report_name.endswith('ica')"> retención de ICA a</span>
<span t-if="report_name.endswith('iva')"> retención de IVA a</span>
<t t-out="partner['partner_id'].display_name"/> con NIT:
<t t-out="partner['partner_id'].vat"/>.
</div>
</div>
<div class="row">
<table class="o_ignore_layout_styling table" t-if="report_name.endswith('fuente')">
<colgroup>
<col span="1" style="width: 70%;"/>
<col span="1" style="width: 15%;"/>
<col span="1" style="width: 15%;"/>
</colgroup>
<thead>
<tr>
<th class="fw-bold">Concepto de retención</th>
<th class="fw-bold">Monto del pago sujeto a retención</th>
<th class="fw-bold">Retenido y consignado</th>
</tr>
</thead>
<tbody>
<tr t-foreach="partner['lines']" t-as="line">
<td><t t-out="line.get('origin_tax_desc')"/></td>
<td><t t-out="line.get('tax_base_amount')"/></td>
<td><t t-out="line.get('balance')"/></td>
</tr>
</tbody>
</table>
<table class="o_ignore_layout_styling table" t-if="report_name.endswith('ica')">
<colgroup>
<col span="1" style="width: 25%;"/>
<col span="1" style="width: 25%;"/>
<col span="1" style="width: 25%;"/>
<col span="1" style="width: 25%;"/>
</colgroup>
<thead>
<tr>
<th class="fw-bold">Bimestre</th>
<th class="fw-bold">Monto del pago sujeto a retención</th>
<th class="fw-bold">Retenido y consignado</th>
<th class="fw-bold">Concepto</th>
</tr>
</thead>
<tbody>
<tr t-foreach="partner['lines']" t-as="line">
<td><t t-out="line.get('bimestre')"/></td>
<td><t t-out="line.get('tax_base_amount')"/></td>
<td><t t-out="line.get('balance')"/></td>
<td><t t-out="line.get('ica_type')"/></td>
</tr>
</tbody>
</table>
<table class="o_ignore_layout_styling table" t-if="report_name.endswith('iva')">
<thead>
<tr>
<th class="fw-bold">Bimestre</th>
<th class="fw-bold">Monto Total Operación</th>
<th class="fw-bold">Monto del Pago Sujeto Retención</th>
<th class="fw-bold">Retenido Consignado</th>
<th class="fw-bold">%</th>
</tr>
</thead>
<tbody>
<tr t-foreach="partner['lines']" t-as="line">
<td><t t-out="line.get('bimestre')"/></td>
<td><t t-out="line.get('tax_base_amount')"/></td>
<td><t t-out="line.get('balance_15_over_19')"/></td>
<td><t t-out="line.get('balance')"/></td>
<td><t t-out="line.get('percentage')"/></td>
</tr>
</tbody>
</table>
</div>
<div class="row">
<div t-att-class="report_name.endswith('iva') and 'offset-1 col-11' or 'offset-5 col-7'"
style="border: 2px solid black;">
<div class="col-12 text-center">
<strong>TOTAL DE IMPUESTOS DESCONTABLES</strong>
</div>
<div t-if="report_name.endswith('iva')" class="col-4">
<div>
<strong>MONTO TOTAL OPERACIONAL:</strong>
</div>
<t t-out="partner.get('tax_base_amount', 0.0)"/>
</div>
<div t-att-class="not report_name.endswith('iva') and 'col-6' or 'col-4'">
<div>
<strong>MONTO DEL PAGO SUJETO A:</strong>
</div>
<t t-if="report_name.endswith('iva')">
<t t-out="partner.get('balance_15_over_19', 0.0)"/>
</t>
<t t-if="not report_name.endswith('iva')">
<t t-out="partner.get('tax_base_amount', 0.0)"/>
</t>
</div>
<div t-att-class="not report_name.endswith('iva') and 'col-6' or 'col-4'">
<div>
<strong>RETENIDO Y CONSIGNADO:</strong>
</div>
<t t-out="partner.get('balance', 0.0)"/>
</div>
</div>
</div>
<div class="row" style="margin-top: 50px;">
<div class="col-12" t-if="report_name.endswith('fuente')">
Señor contribuyente: Favor tener en cuenta que la base certificada por nosotros corresponde a la sometida a retención durante el periodo gravable según las normas vigentes sobre la materia y podría ser diferente a lo facturado por usted durante el mismo periodo. al declarar tenerlo presente.
</div>
</div>
<div class="row">
<div class="col-12">
El presente certificado se expide en concordancia con las disposiciones legales contenidas en el artículo 381 del Estatuto Tributario.
</div>
</div>
<div class="row">
<div class="col-12">
<t t-if="report_name.endswith('ica')">
Dicha Retención fue consignada oportunamente a nombre de la Secretaría de Hacienda en la Ciudad de
<t t-out="env.company.city"/>
</t>
<t t-else="">
Dicha Retención fue consignada oportunamente a nombre de la Dirección de Impuestos y Aduanas Nacionales en la Ciudad de
<t t-out="env.company.city"/>
</t>
</div>
</div>
<div class="row">
<div class="col-12">
NO REQUIRE FIRMA AUTOGRAFA. <t t-out="options['article']"/>
</div>
</div>
</div>
</t>
</t>
</t>
</template>
<record id="action_report_certification" model="ir.actions.report">
<field name="name">Certification Report</field>
<field name="model">l10n_co_reports.certification_report</field>
<field name="report_type">qweb-pdf</field>
<field name="report_name">l10n_co_reports.report_certification</field>
<field name="report_file">l10n_co_reports.report_certification</field>
<field name="group_ids" eval="[(4, ref('account.group_account_readonly'))]"/>
</record>
</data>
</odoo>
@@ -0,0 +1,33 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from datetime import datetime
from odoo import models, fields
from odoo.exceptions import UserError
from odoo.tools.translate import _
class LibroDiarioReport(models.AbstractModel):
_name = 'report.l10n_co_reports.report_libro_diario'
_description = "Colombian Libro Diario Report"
def _get_report_values(self, docids, data=None):
options = self.env.context.get('options')
report = self.env['account.report'].browse(options['report_id'])
lines = report._filter_out_folded_children(report._get_lines(options))
doc = {'lines': []}
labels = [column['expression_label'] for column in options['columns']]
for line in lines:
values = [column.get('name') for column in line['columns']]
doc['lines'].append(dict(zip(labels, values)))
if not doc['lines']:
raise UserError(_('No lines were provided to print.'))
return {
'docs': [doc],
'options': data,
'report_name': 'report_%s' % report.get_external_id()[report.id],
'company': self.env.company,
'date_range': [options['date']['date_from'], min(options['date']['date_to'], str(datetime.now().date()))],
}
@@ -0,0 +1,83 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<template id="report_libro_diario">
<t t-call="web.html_container">
<t t-foreach="docs" t-as="document">
<t t-call="web.external_layout">
<div class="page">
<h2 style="padding-top: 15px; text-align: center;">
<span>DAILY JOURNAL REPORT</span>
</h2>
<div style="border: 2px solid black;padding: 5px;">
<div class="row">
<div class="col-6 fw-bold">
<t t-out="company.display_name"/>
</div>
</div>
<div class="row">
<div class="col-12">
<t t-out="company.street"/>
</div>
</div>
<div class="row">
<div class="col-12">
<t t-out="company.city + ', ' + company.state_id.name + ', ' + company.zip"/>
</div>
</div>
<div class="row">
<div class="col-12">
<t t-out="company.country_id.name"/>
</div>
</div>
<div class="row">
<div class="col-6 fw-bold">
NIT: <t t-out="company.vat"/>
</div>
</div>
</div>
<div style="text-align: right;padding: 10px;">
FROM <t t-out="date_range[0]"/> TO <t t-out="date_range[1]"/>
</div>
<div class="row">
<table class="o_ignore_layout_styling table">
<thead>
<tr>
<th class="fw-bold">DATE</th>
<th class="fw-bold">MOVE</th>
<th class="fw-bold">ACCOUNT</th>
<th class="fw-bold">PARTNER</th>
<th class="fw-bold">LABEL</th>
<th class="fw-bold">DEBIT</th>
<th class="fw-bold">CREDIT</th>
</tr>
</thead>
<tbody style="font-size: 0.75em;">
<tr t-foreach="document['lines']" t-as="line">
<td><t t-esc="line.get('line_date')"/></td>
<td><t t-esc="line.get('move_name')"/></td>
<td><t t-esc="line.get('account_name')"/></td>
<td><t t-esc="line.get('partner_name')"/></td>
<td><t t-esc="line.get('line_label')"/></td>
<td><t t-esc="line.get('line_debit')"/></td>
<td><t t-esc="line.get('line_credit')"/></td>
</tr>
</tbody>
</table>
</div>
</div>
</t>
</t>
</t>
</template>
<record id="action_report_libro_diario" model="ir.actions.report">
<field name="name">Daily Journal Report</field>
<field name="model">account.move</field>
<field name="report_type">qweb-pdf</field>
<field name="report_name">l10n_co_reports.report_libro_diario</field>
<field name="report_file">l10n_co_reports.report_libro_diario</field>
<field name="group_ids" eval="[(4, ref('account.group_account_readonly'))]"/>
</record>
</data>
</odoo>
@@ -0,0 +1,2 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_l10n_co_reports_retention_report_wizard,l10n_co_reports.retention_report.wizard,model_l10n_co_reports_retention_report_wizard,account.group_account_user,1,1,1,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_l10n_co_reports_retention_report_wizard l10n_co_reports.retention_report.wizard model_l10n_co_reports_retention_report_wizard account.group_account_user 1 1 1 0
+2
View File
@@ -0,0 +1,2 @@
from . import test_co_withholding_reports
from . import test_trial_balance_groupby_partner
@@ -0,0 +1,185 @@
from odoo.addons.account_reports.tests.common import TestAccountReportsCommon
from odoo import Command
from odoo.tests import tagged
@tagged('post_install_l10n', 'post_install', '-at_install')
class TestL10nCoReportsWithholding(TestAccountReportsCommon):
@classmethod
@TestAccountReportsCommon.setup_country('co')
def setUpClass(cls):
super().setUpClass()
cls.report_ica = cls.env.ref('l10n_co_reports.l10n_co_reports_ica')
cls.report_iva = cls.env.ref('l10n_co_reports.l10n_co_reports_iva')
cls.report_fuente = cls.env.ref('l10n_co_reports.l10n_co_reports_fuente')
def _l10n_co_create_moves_with_taxes(self, taxes):
"""
Create three generic moves with different partners, dates and taxes applied to test various report elements in a uniform manner.
"""
move_1 = self.env['account.move'].create({
'move_type': 'in_invoice',
'partner_id': self.partner_a.id,
'invoice_date': '2025-01-01',
'invoice_line_ids': [Command.create({
'product_id': self.product_a.id,
'quantity': 1.0,
'name': 'product test 1',
'price_unit': 100,
'tax_ids': taxes[0].ids,
}), Command.create({
'product_id': self.product_b.id,
'quantity': 1.0,
'name': 'product test 2',
'price_unit': 100,
'tax_ids': taxes[1].ids,
})]
})
move_2 = self.env['account.move'].create({
'move_type': 'in_invoice',
'partner_id': self.partner_a.id,
'invoice_date': '2024-11-02',
'invoice_line_ids': [Command.create({
'product_id': self.product_a.id,
'quantity': 10.0,
'name': 'product test 1',
'price_unit': 100,
'tax_ids': taxes[2].ids,
})]
})
move_3 = self.env['account.move'].create({
'move_type': 'in_invoice',
'partner_id': self.partner_b.id,
'invoice_date': '2025-01-02',
'invoice_line_ids': [Command.create({
'product_id': self.product_a.id,
'quantity': 3.0,
'name': 'product test 1',
'price_unit': 100,
'tax_ids': taxes[3].ids,
}), Command.create({
'product_id': self.product_b.id,
'quantity': 3.0,
'name': 'product test 2',
'price_unit': 100,
'tax_ids': taxes[4].ids,
})]
})
(move_1 + move_2 + move_3).action_post()
def test_co_withholding_ica(self):
"""
Ensure that an ICA report is generated as expected
"""
tax_ica_1 = self.env['account.chart.template'].ref('l10n_co_tax_44')
tax_ica_2 = self.env['account.chart.template'].ref('l10n_co_tax_45')
tax_ica_3 = self.env['account.chart.template'].ref('l10n_co_tax_46')
self._l10n_co_create_moves_with_taxes([tax_ica_1, tax_ica_2, tax_ica_3, tax_ica_1, tax_ica_2])
options = self._generate_options(
self.report_ica, '2024-11-01', '2025-02-03',
)
lines = self.report_ica._get_lines(options)
self.assertLinesValues(
# pylint: disable=bad-whitespace
lines,
# Partner ID, bimestre, base, tax, ICA type
[ 0, 1, 2, 3, 4],
[
('partner_a', '', 1200.00, 5.93, ''),
('partner_b', '', 600.00, 5.38, ''),
],
options,
)
expanded_line = self.report_ica.get_expanded_lines(
options, lines[0]['id'], self.partner_a, lines[0]['expand_function'], 0, 0, None,
)
self.assertLinesValues(
# pylint: disable=bad-whitespace
expanded_line,
# Partner ID, bimestre, base, tax, ICA type
[ 0, 1, 2, 3, 4],
[
( '', 'Enero - Febrero', 100.00, 0.69, tax_ica_1.name),
( '', 'Enero - Febrero', 100.00, 1.10, tax_ica_2.name),
( '', 'Noviembre - Diciembre', 1000.00, 4.14, tax_ica_3.name),
],
options,
)
def test_co_withholding_iva(self):
"""
Ensure that an IVA report is generated as expected
"""
tax_iva_1 = self.env['account.chart.template'].ref('l10n_co_tax_12')
tax_iva_2 = self.env['account.chart.template'].ref('l10n_co_tax_13')
self._l10n_co_create_moves_with_taxes([tax_iva_1, tax_iva_2, tax_iva_1, tax_iva_2, tax_iva_1])
options = self._generate_options(
self.report_iva, '2024-11-01', '2025-02-03',
)
lines = self.report_iva._get_lines(options)
self.assertLinesValues(
# pylint: disable=bad-whitespace
lines,
# Partner ID, bimestre, retention, tax, base, RteIVA %
[ 0, 1, 2, 3, 4, 5],
[
('partner_a', '', 32.10, 214.00, 1200.00, '15.0%'),
('partner_b', '', 10.80, 72.0, 600.00, '15.0%'),
],
options,
)
expanded_line = self.report_iva.get_expanded_lines(
options, lines[0]['id'], self.partner_a, lines[0]['expand_function'], 0, 0, None,
)
self.assertLinesValues(
# pylint: disable=bad-whitespace
expanded_line,
# Partner ID, bimestre, retention, tax, base, RteIVA %
[ 0, 1, 2, 3, 4, 5],
[
( '', 'Enero - Febrero', 3.60, 24.00, 200.00, '15.0%'),
( '', 'Noviembre - Diciembre', 28.50, 190.00, 1000.00, '15.0%'),
],
options,
)
def test_co_withholding_fuente(self):
"""
Ensure that a Fuente report is generated as expected
"""
tax_fuente_1 = self.env['account.chart.template'].ref('l10n_co_tax_16')
tax_fuente_2 = self.env['account.chart.template'].ref('l10n_co_tax_17')
tax_fuente_3 = self.env['account.chart.template'].ref('l10n_co_tax_18')
self._l10n_co_create_moves_with_taxes([tax_fuente_1, tax_fuente_2, tax_fuente_3, tax_fuente_1, tax_fuente_2])
options = self._generate_options(
self.report_fuente, '2024-11-01', '2025-02-03',
)
lines = self.report_fuente._get_lines(options)
self.assertLinesValues(
# pylint: disable=bad-whitespace
lines,
# Partner ID, type, base, tax
[ 0, 1, 2, 3],
[
('partner_a', '', 1200.00, 100.60),
('partner_b', '', 600.00, 1.80),
],
options,
)
expanded_line = self.report_fuente.get_expanded_lines(
options, lines[0]['id'], self.partner_a, lines[0]['expand_function'], 0, 0, None,
)
self.assertLinesValues(
# pylint: disable=bad-whitespace
expanded_line,
# Partner ID, type, base, tax
[ 0, 1, 2, 3],
[
( '', tax_fuente_1.description.striptags(), 100.00, 0.10),
( '', tax_fuente_2.description.striptags(), 100.00, 0.50),
( '', tax_fuente_3.description.striptags(), 1000.00, 100.00),
],
options,
)
@@ -0,0 +1,110 @@
from odoo.addons.account_reports.tests.common import TestAccountReportsCommon
from odoo import fields, Command
from odoo.tests import tagged
@tagged('post_install_l10n', 'post_install', '-at_install')
class TestL10nCoReportsTrialBalanceReport(TestAccountReportsCommon):
@classmethod
@TestAccountReportsCommon.setup_country('co')
def setUpClass(cls):
super().setUpClass()
cls.partner_a.vat = '11111'
cls.partner_b.vat = '22222'
cls.account_asset = cls.env['account.account'].search([
('company_ids', '=', cls.company_data['company'].id),
('code', '=', '112000')
], limit=1)
cls.account_asset_name = cls.account_asset.display_name
cls.account_receivable_name = cls.company_data['default_account_receivable'].display_name
cls.report = cls.env.ref('l10n_co_reports.l10n_co_reports_trial_balance_per_partner')
cls.company_data['company'].totals_below_sections = False
def test_trial_balance_groupby_partner_id(self):
"""
Test the variant of the trial balance which has
- a sub-groupby on partner_id
- a partner vat column
- no details per partner for the unaffected earnings
"""
move_q4_2022 = self.env['account.move'].create([{
'move_type': 'entry',
'date': fields.Date.from_string('2022-12-01'),
'line_ids': [
Command.create({
'partner_id': self.partner_a.id,
'debit': 1000.0,
'credit': 0.0,
'name': 'move_line_1',
'account_id': self.account_asset.id
}),
Command.create({
'partner_id': self.partner_b.id,
'debit': 500.0,
'credit': 0.0,
'name': 'move_line_2',
'account_id': self.account_asset.id
}),
Command.create({
'partner_id': self.partner_b.id,
'debit': 500.0,
'credit': 0.0,
'name': 'move_line_3',
'account_id': self.account_asset.id
}),
Command.create({
'debit': 1300.0,
'credit': 0.0,
'name': 'move_line_4',
'account_id': self.account_asset.id
}),
Command.create({
'partner_id': self.partner_a.id,
'debit': 0.0,
'credit': 3000.0,
'name': 'move_line_5',
'account_id': self.company_data['default_account_receivable'].id
}),
Command.create({
'partner_id': self.partner_a.id,
'debit': 0.0,
'credit': 300.0,
'name': 'move_line_6',
'account_id': self.company_data['default_account_revenue'].id
}),
],
}])
move_q4_2022.action_post()
options = self._generate_options(self.report, '2023-01-01', '2023-03-31', default_options={'unfold_all': True})
self.assertLinesValues(
self.report._get_lines(options),
# [ Initial ] [ Q1 2023 ] [ End Balance ]
# Name Partner VAT Balance Debit Credit Balance
[0, 1, 2, 3, 4, 5],
[
('1 Assets',),
('11 Cash and Cash Equivalents',),
('1120 Savings Accounts',),
(self.account_asset_name, '', 3300.0, 0.0, 0.0, 3300.0),
('partner_a', '11111', 1000.0, 0.0, 0.0, 1000.0),
('partner_b', '22222', 1000.0, 0.0, 0.0, 1000.0),
('Unknown', '', 1300.0, 0.0, 0.0, 1300.0),
('13 Debtors',),
('1305 Clients',),
(self.account_receivable_name, '', -3000.0, 0.0, 0.0, -3000.0),
('partner_a', '11111', -3000.0, 0.0, 0.0, -3000.0),
('Result Brought Forward - company_1_data', '', -300.0, 0.0, 0.0, -300.0),
('Total', '', 0.0, 0.0, 0.0, 0.0),
],
options,
)
+3
View File
@@ -0,0 +1,3 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import retention_report
@@ -0,0 +1,17 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import api, fields, models
class L10n_Co_ReportsRetention_ReportWizard(models.TransientModel):
_name = 'l10n_co_reports.retention_report.wizard'
_description = "Colombian Retention Report Wizard"
expedition_date = fields.Date(string=u'Fecha de Expedición', default=fields.Date.context_today, required=True)
declaration_date = fields.Date(string=u'Fecha de Declaración', default=fields.Date.context_today, required=True)
article = fields.Char(string=u'Artículo', default='ART. 10 DECRETO 836/91', required=True)
def generate_report(self):
data = {'wizard_values': self.read()[0]}
return self.env.ref('l10n_co_reports.action_report_certification').report_action([], data=data)
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record model="ir.ui.view" id="retention_report_wizard_form">
<field name="name">l10n_co_reports.retention_report.wizard.form</field>
<field name="model">l10n_co_reports.retention_report.wizard</field>
<field name="arch" type="xml">
<form string="Certificados de Retención">
<group string="Fechas para Certificado">
<field name="expedition_date"/>
<field name="declaration_date"/>
</group>
<group>
<field name="article"/>
</group>
<footer>
<button name="generate_report" type="object"
string="Imprimir" class="oe_highlight"/>
</footer>
</form>
</field>
</record>
</data>
</odoo>