diff --git a/yuthon_hr_employee/models/yuthon_medical_manage.py b/yuthon_hr_employee/models/yuthon_medical_manage.py index 269dbea9c..f6dd6904e 100644 --- a/yuthon_hr_employee/models/yuthon_medical_manage.py +++ b/yuthon_hr_employee/models/yuthon_medical_manage.py @@ -73,10 +73,18 @@ class YuthonMedicalManage(models.Model): ], order='start_date desc', limit=1) rule = valid_rules - # 基础额度计算(根据年龄递增规则) + id_card = employee.identification_id.strip() if employee.identification_id else '' + birth_str = id_card[6:14] + birth_date = datetime.strptime(birth_str, '%Y%m%d').date() + + # 计算周岁(今天 - 出生日期) + today = fields.Date.today() + age = 0 + if birth_date: + age = today.year - birth_date.year base_quota = rule.base_amount - if employee.old >= rule.starting_age and rule.increase_interval_years > 0 and rule.increment_amount > 0: - exceed_age_years = employee.old - rule.starting_age + if age >= rule.starting_age and rule.increase_interval_years > 0 and rule.increment_amount > 0: + exceed_age_years = age - rule.starting_age increment_times = exceed_age_years // rule.increase_interval_years base_quota += rule.increment_amount * increment_times