Files
enterprise-addons/l10n_co_reports/report/certification_report.py
T

60 lines
2.6 KiB
Python

# -*- 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,
}