31 lines
1.1 KiB
Python
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
|