Я не мог понять, где число листов появилось бы на листе, поэтому я не мог точно отследить то, что вы просите, но я могу предложить некоторые подсказки.
Под hr_payroll.hr_payslip.get_worked_day_lines()
есть вспомогательная функция was_on_leave()
.
def was_on_leave(employee_id, datetime_day, context=None):
res = False
day = datetime_day.strftime("%Y-%m-%d")
holiday_ids = self.pool.get('hr.holidays').search(cr, uid, [
('state','=','validate'),
('employee_id','=',employee_id),
('type','=','remove'),
('date_from','<=',day),
('date_to','>=',day)])
if holiday_ids:
res = self.pool.get('hr.holidays').browse(
cr,
uid,
holiday_ids,
context=context)[0].holiday_status_id.name
return res
Как видите, похоже, что вы уже получаете правильное состояние. («validate» на экране отображается как «Approve».) Вы не упомянули, правильно ли вы установили тип праздника сотрудника. («Удалить» отображается как «Оставить заявку» на экране.)
Кроме этого, либо даты неверны, либо я смотрю на что-то не связанное.