diff --git a/yuthon_catering/data/yuthon_catering_cron.xml b/yuthon_catering/data/yuthon_catering_cron.xml
index 0c769482d..f84144a17 100644
--- a/yuthon_catering/data/yuthon_catering_cron.xml
+++ b/yuthon_catering/data/yuthon_catering_cron.xml
@@ -14,5 +14,18 @@
-1
+
+ 定时任务:自动补全当天餐饮收集数据
+
+ code
+ model.cron_fill_today_missing()
+
+
+ 1
+ days
+
+ -1
+
+
-
\ No newline at end of file
+
diff --git a/yuthon_catering/models/yuthon_catering.py b/yuthon_catering/models/yuthon_catering.py
index e21226ee7..2961ee57e 100644
--- a/yuthon_catering/models/yuthon_catering.py
+++ b/yuthon_catering/models/yuthon_catering.py
@@ -308,7 +308,7 @@ class YuthonCatering(models.Model):
def fill_march6_missing_catering(self):
"""表3月9日缺失员工的餐饮收集任务数据"""
from datetime import date as date_cls
- target_date = date_cls(2026, 3, 9)
+ target_date = date_cls(2026, 3, 10)
conf_records = self.env['yuthon.catering.conf'].search([])
if not conf_records:
return
@@ -330,6 +330,30 @@ class YuthonCatering(models.Model):
if create_vals:
self.create(create_vals)
+ def cron_fill_today_missing(self):
+ """定时任务:自动补全当天缺失的餐饮收集数据,每天晚21:00执行"""
+ today = fields.Date.today()
+ conf_records = self.env['yuthon.catering.conf'].search([])
+ if not conf_records:
+ return
+ employee_ids = conf_records.mapped('employee_ids')
+ if not employee_ids:
+ return
+ create_vals = []
+ for employee in employee_ids:
+ existing = self.search([
+ ('employee_id', '=', employee.id),
+ ('date', '=', today),
+ ], limit=1)
+ if not existing:
+ create_vals.append({
+ 'date': today,
+ 'employee_id': employee.id,
+ 'state': 'unconfirmed',
+ })
+ if create_vals:
+ self.create(create_vals)
+
def batch_generate_catering(self):
"""批量生成2025-12、2026-01、2026-02的餐饮收集任务数据,排除节假日"""
from datetime import date as date_cls
diff --git a/yuthon_catering/views/yuthon_catering.xml b/yuthon_catering/views/yuthon_catering.xml
index ad8079e85..f7c4fa97a 100644
--- a/yuthon_catering/views/yuthon_catering.xml
+++ b/yuthon_catering/views/yuthon_catering.xml
@@ -13,7 +13,7 @@
-
+
diff --git a/yuthon_hr_employee/models/yuthon_hr_employee.py b/yuthon_hr_employee/models/yuthon_hr_employee.py
index c302d0e47..964a09861 100644
--- a/yuthon_hr_employee/models/yuthon_hr_employee.py
+++ b/yuthon_hr_employee/models/yuthon_hr_employee.py
@@ -843,30 +843,29 @@ class YuthonHrEmployee(models.Model):
id_number = record.identification_id.upper()
if len(id_number) != 18:
record._clear_info()
- raise UserError("身份证号码长度应为18位")
+ # raise UserError("身份证号码长度应为18位")
+ # try:
+ if not (all(c.isdigit() for c in id_number[:-1]) and (
+ id_number[-1].isdigit() or id_number[-1] == 'X')):
+ raise ValueError("身份证号码包含无效字符")
- try:
- if not (all(c.isdigit() for c in id_number[:-1]) and (
- id_number[-1].isdigit() or id_number[-1] == 'X')):
- raise ValueError("身份证号码包含无效字符")
+ year = int(id_number[6:10])
+ month = int(id_number[10:12])
+ day = int(id_number[12:14])
+ record.birthday = date(year, month, day)
+ record.birthday_month = month
- year = int(id_number[6:10])
- month = int(id_number[10:12])
- day = int(id_number[12:14])
- record.birthday = date(year, month, day)
- record.birthday_month = month
+ today = date.today()
+ if year is not None:
+ record.old = today.year - year - ((today.month, today.day) < (month, day))
+ else:
+ record.old = 0
+ gender_code = int(id_number[-2])
+ record.user_sex = 'girl' if gender_code % 2 == 0 else 'boy'
- today = date.today()
- if year is not None:
- record.old = today.year - year - ((today.month, today.day) < (month, day))
- else:
- record.old = 0
- gender_code = int(id_number[-2])
- record.user_sex = 'girl' if gender_code % 2 == 0 else 'boy'
-
- except ValueError as e:
- record._clear_info()
- raise UserError(str(e) or "身份证号码格式不正确") # Raise UserError
+ # except ValueError as e:
+ # record._clear_info()
+ # raise UserError(str(e) or "身份证号码格式不正确")
else:
record._clear_info()
self.is_identification = False