@@ -31,8 +31,8 @@ class GoApprovals(models.Model):
|
||||
date_start = fields.Datetime(string="开始时间", default=fields.Datetime.now)
|
||||
date_end = fields.Datetime(string="结束时间", default=fields.Datetime.now)
|
||||
meal = fields.Selection([('yes', '是'), ('no', '否')], string="误餐费", default=None)
|
||||
days = fields.Integer(string="天数")
|
||||
hours = fields.Integer(string="小时")
|
||||
days = fields.Float(string="天数")
|
||||
hours = fields.Float(string="小时")
|
||||
urgency_level = fields.Selection([('normal', '普件'), ('urgent', '急件'), ('emergency', '特急件')], string='紧急度',
|
||||
default='normal')
|
||||
active = fields.Boolean('Active', default=True, tracking=True)
|
||||
|
||||
@@ -1297,13 +1297,16 @@ class HrAttendance(models.Model):
|
||||
def action_update_attendance(self):
|
||||
pass #todo 待过
|
||||
|
||||
|
||||
def update_attendance(self, employee, current_date):
|
||||
current_date_str = fields.Date.to_string(current_date)
|
||||
current_date_start = datetime.combine(current_date, datetime.min.time()) # 当天 00:00:00 datetime类型
|
||||
current_date_end = datetime.combine(current_date, datetime.max.time()) # 当天 23:59:59 datetime类型
|
||||
|
||||
# ====================== 1. 请假审批 ======================
|
||||
leave_domain = [
|
||||
('employee_id', '=', employee.id),
|
||||
('date_from', '<=', fields.Datetime.to_string(datetime.combine(current_date, datetime.max.time()))),
|
||||
('date_to', '>=', fields.Datetime.to_string(datetime.combine(current_date, datetime.min.time()))),
|
||||
('date_from', '<=', fields.Datetime.to_string(current_date_end)),
|
||||
('date_to', '>=', fields.Datetime.to_string(current_date_start)),
|
||||
('state', '=', 'validate')
|
||||
]
|
||||
leave_records = self.env['hr.leave'].search(leave_domain)
|
||||
@@ -1325,22 +1328,33 @@ class HrAttendance(models.Model):
|
||||
'is_abnormal': False,
|
||||
'absenteeism_card': False
|
||||
})
|
||||
else:
|
||||
self.write({
|
||||
'workflow_id': False,
|
||||
'is_workflow': False,
|
||||
})
|
||||
return
|
||||
|
||||
# ====================== 2. 外出审批(按天 + 按小时,全部统一datetime) ======================
|
||||
go_approval_domain = [
|
||||
('employee_ids', 'in', employee.id),
|
||||
('start_date', '<=', current_date_str),
|
||||
('end_date', '>=', current_date_str),
|
||||
('work_end', '=', True),
|
||||
]
|
||||
go_approval_record = self.env['go.approval'].search(go_approval_domain, limit=1)
|
||||
if go_approval_record:
|
||||
go_approval_records = self.env['go.approval'].search(go_approval_domain)
|
||||
|
||||
match_record = False
|
||||
for go in go_approval_records:
|
||||
# 按天匹配
|
||||
if go.start_date and go.end_date:
|
||||
if go.start_date <= current_date <= go.end_date:
|
||||
match_record = go
|
||||
break
|
||||
# 按小时匹配
|
||||
if go.date_start and go.date_end:
|
||||
go_start = fields.Datetime.from_string(go.date_start)
|
||||
go_end = fields.Datetime.from_string(go.date_end)
|
||||
if go_start <= current_date_end and go_end >= current_date_start:
|
||||
match_record = go
|
||||
break
|
||||
|
||||
if match_record:
|
||||
workflow = self.env['soong.workflow.record'].search([
|
||||
('code', '=', go_approval_record.code)
|
||||
('code', '=', match_record.code)
|
||||
], limit=1)
|
||||
if workflow and workflow.approve_state == 'end':
|
||||
self.write({
|
||||
@@ -1352,7 +1366,11 @@ class HrAttendance(models.Model):
|
||||
'is_abnormal': False,
|
||||
'absenteeism_card': False
|
||||
})
|
||||
|
||||
else:
|
||||
self.write({
|
||||
'workflow_id': False,
|
||||
'is_workflow': False,
|
||||
})
|
||||
|
||||
class card_remind_form(models.Model):
|
||||
_name = 'card.remind.form'
|
||||
|
||||
Reference in New Issue
Block a user