From 092abfce5884eb83115dab51e9d96eec4547c0de Mon Sep 17 00:00:00 2001 From: Bakry Date: Sun, 22 Dec 2024 18:45:48 +0300 Subject: [PATCH] fix termination and holiday balance --- .../hr_termination/models/hr_termination.py | 30 ++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/odex25_hr/hr_termination/models/hr_termination.py b/odex25_hr/hr_termination/models/hr_termination.py index 4f3d350c3..c620160cd 100644 --- a/odex25_hr/hr_termination/models/hr_termination.py +++ b/odex25_hr/hr_termination/models/hr_termination.py @@ -164,9 +164,9 @@ class HrTermination(models.Model): cron_run_date = datetime.strptime(str(leave.holiday_ids[-1].cron_run_date), "%Y-%m-%d").date() date_to_check = (datetime.utcnow() + timedelta(hours=3)).date() last_working_date = datetime.strptime(str(rec.last_work_date), "%Y-%m-%d").date() - if cron_run_date < date_to_check: - date_to_check = cron_run_date - to_work_days = (last_working_date - date_to_check).days + #if cron_run_date < date_to_check: + # date_to_check = cron_run_date + #to_work_days = (last_working_date - date_to_check).days first_hiring_date = datetime.strptime(str(leave.hiring_date), "%Y-%m-%d").date() last_work_date = datetime.strptime(str(rec.last_work_date), "%Y-%m-%d").date() @@ -176,22 +176,32 @@ class HrTermination(models.Model): if item.date_from <= working_years < item.date_to: holiday_duration = item.duration ###get last cron date to compute leave_balance_date - to_work_days2 = 0 + diff_days = 0 + new_balance=0 + """the last working date less than cron run date""" if cron_run_date < last_working_date: - to_work_days2 = (last_working_date - cron_run_date).days + diff_days = (last_working_date - cron_run_date).days + for i in range(1, diff_days + 1): + cala_date = cron_run_date + timedelta(days=i) + balance_day = leave.remaining_leaves_of_day_by_date(rec.employee_id, str(cala_date), + leave.holiday_status_id , is_month=False, is_years=False) + new_balance = new_balance + balance_day else: - to_work_days2 = -(cron_run_date - last_working_date).days - upcoming_leave2 = leave.remaining_leaves_of_day_by_date(rec.employee_id, str(date_to_check),\ - leave.holiday_status_id , is_month=False, is_years=False) * to_work_days2 + diff_days = -(cron_run_date - last_working_date).days + for i in range(1, -diff_days + 1): + cala_date = last_working_date + timedelta(days=i) + balance_day = leave.remaining_leaves_of_day_by_date(rec.employee_id, str(cala_date), + leave.holiday_status_id , is_month=False, is_years=False) + new_balance = new_balance - balance_day ####################### END #upcoming_leave = ((holiday_duration / 12) / 30.39) * to_work_days - leave_balance = round(rec.employee_id.remaining_leaves + upcoming_leave2, 2) + leave_balance = round(rec.employee_id.remaining_leaves + new_balance, 2) exceed_days = leave.holiday_status_id.number_of_save_days + holiday_duration if leave_balance > exceed_days: rec.leave_balance = exceed_days else: - rec.leave_balance = round(rec.employee_id.remaining_leaves + upcoming_leave2, 2) + rec.leave_balance = round(rec.employee_id.remaining_leaves + new_balance, 2) self._compute_holiday_amount() def current_date_hijri(self):