1
0
forked from Mapan/odoo17e
odoo17e-kedaikipas58/addons/l10n_fr_hr_payroll/report/fiche_paye.py
2024-12-10 09:04:09 +07:00

36 lines
1.3 KiB
Python

# -*- 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'
_description = "French Pay Slip"
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, line):
code = line.code or ''
return line.slip_id.line_ids.filtered(lambda line: line.code == '%sP' % code)
@api.model
def _get_report_values(self, docids, data=None):
payslip = self.env['hr.payslip'].browse(docids)
return {
'doc_ids': docids,
'doc_model': 'hr.payslip',
'data': data,
'docs': payslip,
'lang': "fr_FR",
'get_total_by_rule_category': self.get_total_by_rule_category,
'get_employer_line': self._get_employer_line,
}