Files
enterprise-addons/l10n_ch_hr_payroll/models/l10n_ch_declaration_statistic.py
T

52 lines
2.2 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
from ..api.swissdec_declarations import SwissdecDeclaration, SwissdecInstitution
from odoo import models
class L10nCHInsuranceReport(models.Model):
_name = "l10n.ch.statistic.report"
_inherit = ['l10n.ch.swissdec.transmitter']
_description = "Monthly Statistic Report"
def action_prepare_data(self):
self.ensure_one()
super().action_prepare_data()
declaration, _institutions = self.env["l10n.ch.employee.yearly.values"]._get_monthly_statistic(year=self.year, month=int(self.month), company_id=self.company_id)
self.l10n_ch_declare_salary_data = declaration
def _get_institutions(self):
return [SwissdecInstitution("BFS", pay_agreement=self.company_id.l10n_ch_statistics_convention, payroll_unit=self.company_id.l10n_ch_statistics_payroll_unit)]
def _get_declaration(self):
self.ensure_one()
swissdec_declaration = SwissdecDeclaration()
return swissdec_declaration.create_declare_salary(
institutions_to_process=self._get_institutions(),
company_id=self.company_id,
staff=self.l10n_ch_declare_salary_data,
declaration_year=self.year,
test_case=self.test_transmission,
substitution_declaration_id=self.substituted_declaration_id.swissdec_declaration_id,
CurrentMonth=(self.year, int(self.month), False)
)
def generate_statistic_report(self):
self.ensure_one()
declaration = self._get_declaration()
report = self.company_id._l10n_ch_swissdec_request(
route='generate_report',
data=declaration,
is_test=self.test_transmission,
report_type="StatisticReport"
)
report_pdf = report.get("StatisticReport")
if report_pdf:
attachment = self.env['ir.attachment'].create({
'name': f"Statistic_Report_{self.year}_{self.month.zfill(2)}.pdf",
'datas': report_pdf,
'res_id': self.id,
'res_model': self._name,
})
self.message_post(attachment_ids=[attachment.id])