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