odoo18/addons_extensions/hr_payroll_extended/models/hr_leave.py

31 lines
1.1 KiB
Python

from odoo import models
class HrLeave(models.Model):
_inherit = "hr.leave"
def _refresh_payroll_extended_payslips(self):
payslips = self.env["hr.payslip"].sudo().search([
("employee_id", "in", self.mapped("employee_id").ids),
("state", "in", ("draft", "verify")),
])
for leave in self:
impacted = payslips.filtered(
lambda slip: slip.employee_id == leave.employee_id
and leave.date_from
and leave.date_to
and slip.date_from <= leave.date_to.date()
and slip.date_to >= leave.date_from.date()
)
for payslip in impacted:
payslip.mapped("worked_days_line_ids").unlink()
payslip.mapped("line_ids").unlink()
payslip.write({"edited": False})
payslip._compute_worked_days_line_ids()
payslip.compute_sheet()
def action_validate(self, check_state=True):
res = super().action_validate(check_state=check_state)
self._refresh_payroll_extended_payslips()
return res