XH_Digital_Management/common/utils/update_annualeave.py

38 lines
1.4 KiB
Python
Raw Normal View History

from datetime import datetime
from django.db import IntegrityError
from application.hrm_mgnt.models import EmployeeInformation, AnnualLeaveRecord
def update_year_annualeave():
today = datetime.today()
if today.month == 1 and today.day == 1:
current_year = today.year
if AnnualLeaveRecord.objects.filter(year=current_year).exists():
print("年假记录已经更新过,不再执行。")
return
employees = EmployeeInformation.objects.filter(status='在职')
for employee in employees:
# 获取上一年的记录
previous_record = AnnualLeaveRecord.objects.filter(employee_name=employee.name, year=current_year - 1).first()
if previous_record:
new_total_annual_leave = min(previous_record.total_annual_leave + 1, 15)
else:
new_total_annual_leave = 7
# 创建新的年假记录
try:
AnnualLeaveRecord.objects.create(
year=current_year,
employee_name=employee.name,
primary_department=employee.primary_department,
total_annual_leave=new_total_annual_leave,
used_annual_leave=0,
remaining_annual_leave=new_total_annual_leave
)
except IntegrityError:
continue