38 lines
1.4 KiB
Python
38 lines
1.4 KiB
Python
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
|