# -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. from odoo import api, models class FichePayeParser(models.AbstractModel): _name = 'report.l10n_fr_hr_payroll.report_l10n_fr_fiche_paye' def get_payslip_lines(self, objs): res = [] ids = [] for item in objs: if item.appears_on_payslip is True and not item.salary_rule_id.parent_rule_id: ids.append(item.id) if ids: res = self.env['hr.payslip.line'].browse(ids) return res def get_total_by_rule_category(self, obj, code): category_total = 0 category_id = self.env['hr.salary.rule.category'].search([('code', '=', code)], limit=1).id if category_id: line_ids = self.env['hr.payslip.line'].search([('slip_id', '=', obj.id), ('category_id', 'child_of', category_id)]) for line in line_ids: category_total += line.total return category_total def get_employer_line(self, obj, parent_line): return self.env['hr.payslip.line'].search([('slip_id', '=', obj.id), ('salary_rule_id.parent_rule_id.id', '=', parent_line.salary_rule_id.id)], limit=1) @api.model def render_html(self, docids, data=None): payslip = self.env['hr.payslip'].browse(docids) docargs = { 'doc_ids': docids, 'doc_model': 'hr.payslip', 'data': data, 'docs': payslip, 'lang': "fr_FR", 'get_payslip_lines': self.get_payslip_lines, 'get_total_by_rule_category': self.get_total_by_rule_category, 'get_employer_line': self.get_employer_line, } return self.env['report'].render('l10n_fr_hr_payroll.report_l10n_fr_fiche_paye', docargs)