Files
enterprise-addons/l10n_co_reports/models/trial_balance.py
T

44 lines
2.1 KiB
Python

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