diff --git a/soong_workflow/models/soong_workflow_record.py b/soong_workflow/models/soong_workflow_record.py index b3c29b161..fa228e304 100644 --- a/soong_workflow/models/soong_workflow_record.py +++ b/soong_workflow/models/soong_workflow_record.py @@ -11,7 +11,7 @@ _logger = logging.getLogger(__name__) class SoongWorkflowRecord(models.Model): _name = "soong.workflow.record" _description = "工作流记录" - _order = 'write_date2' + _order = 'write_date2 desc' _rec_name = 'code' def get_no_read_count(self): diff --git a/soong_workflow/wizard/soong_workflow_comment_wizard.py b/soong_workflow/wizard/soong_workflow_comment_wizard.py index 615361480..ffb81357c 100644 --- a/soong_workflow/wizard/soong_workflow_comment_wizard.py +++ b/soong_workflow/wizard/soong_workflow_comment_wizard.py @@ -494,35 +494,54 @@ class SoongWorkflowCommentWizard(models.TransientModel): if self.node_btn_name == '结束': current_user = self.env.user current_datetime = fields.Datetime.now() - log_records = record_id.log_ids - if record_id.log_ids2: - log_records = record_id.log_ids2 - elif record_id.log_ids: + is_admin = current_user.has_group('soong_workflow.group_soong_workflow_manager') + if is_admin: + record_id.log_ids[-1].comment = self.comment + record_id.log_ids[-1].approval_state = "3" + record_id.log_ids[-1].lase_click_date = fields.Datetime.now() + record_id.work_end = True + self.env['soong.workflow.record'].search([('code', '=', record_id.code)]).write({'approve_state': 'end', + "employee_ids": False, + "node_id": False, }) + else: log_records = record_id.log_ids + if record_id.log_ids2: + log_records = record_id.log_ids2 + elif record_id.log_ids: + log_records = record_id.log_ids - if log_records: - # 查找当前用户的日志记录并更新 - user_log = log_records.filtered(lambda log: log.done_by == current_user) - if user_log: - user_log.write({ - 'comment': self.comment, - 'approval_state': "3", - 'lase_click_date': current_datetime - }) - last_log = log_records[-1] if log_records else None - if last_log: - same_name_logs = log_records.filtered( - lambda log: log.name == last_log.name - and log.node_btn_name == '4' - and log.id != last_log.id - ) + if log_records: + # 查找当前用户的日志记录并更新 + user_log = log_records.filtered(lambda log: log.done_by == current_user) + if user_log: + user_log.write({ + 'comment': self.comment, + 'approval_state': "3", + 'lase_click_date': current_datetime + }) + last_log = log_records[-1] if log_records else None + if last_log: + same_name_logs = log_records.filtered( + lambda log: log.name == last_log.name + and log.node_btn_name == '4' + and log.id != last_log.id + ) - # 判断是否需要更新工作流状态 - if same_name_logs: - all_approved = all(log.approval_state == '3' for log in same_name_logs) - all_approved = all_approved and (last_log.approval_state == '3') - if all_approved: - # 所有符合条件的记录都已批准,更新工作流状态 + # 判断是否需要更新工作流状态 + if same_name_logs: + all_approved = all(log.approval_state == '3' for log in same_name_logs) + all_approved = all_approved and (last_log.approval_state == '3') + if all_approved: + # 所有符合条件的记录都已批准,更新工作流状态 + self.env['soong.workflow.record'].search([ + ('code', '=', record_id.code) + ]).write({ + 'approve_state': 'end', + 'employee_ids': False, + 'node_id': False, + }) + record_id.work_end = True + else: self.env['soong.workflow.record'].search([ ('code', '=', record_id.code) ]).write({ @@ -531,15 +550,6 @@ class SoongWorkflowCommentWizard(models.TransientModel): 'node_id': False, }) record_id.work_end = True - else: - self.env['soong.workflow.record'].search([ - ('code', '=', record_id.code) - ]).write({ - 'approve_state': 'end', - 'employee_ids': False, - 'node_id': False, - }) - record_id.work_end = True # 给申请人发消息 biz_record = self.env[self.res_model].browse(self.res_id) diff --git a/yuthon_hr_attendance/models/hr_attendance.py b/yuthon_hr_attendance/models/hr_attendance.py index 05863070c..4c55ac0e0 100644 --- a/yuthon_hr_attendance/models/hr_attendance.py +++ b/yuthon_hr_attendance/models/hr_attendance.py @@ -1035,6 +1035,7 @@ class HrAttendance(models.Model): record.shift_name = '' else: record.shift_name = '行政班次' + self._update_vacation_report(record) return record diff --git a/yuthon_hr_attendance/models/hr_attendance_detail_wechat.py b/yuthon_hr_attendance/models/hr_attendance_detail_wechat.py index 4070ffcd0..fa94c0230 100644 --- a/yuthon_hr_attendance/models/hr_attendance_detail_wechat.py +++ b/yuthon_hr_attendance/models/hr_attendance_detail_wechat.py @@ -252,6 +252,7 @@ class HrAttendanceDetail(models.Model): attendance.write({ 'check_in': check_in_time, 'check_out': check_out_time, + 'shift_id': planning_slots.id, 'is_early_card': is_early_card, 'is_late_card': is_late_card, 'is_abnormal': is_abnormal, @@ -262,6 +263,7 @@ class HrAttendanceDetail(models.Model): else: self.env['hr.attendance'].create({ 'employee_id': employee.id, + 'shift_id': planning_slots.id, 'current_data': current_data, 'check_in': check_in_time, 'check_out': check_out_time, diff --git a/yuthon_hr_attendance/models/hr_attendance_month.py b/yuthon_hr_attendance/models/hr_attendance_month.py index 1d3d94312..e771e1cf0 100644 --- a/yuthon_hr_attendance/models/hr_attendance_month.py +++ b/yuthon_hr_attendance/models/hr_attendance_month.py @@ -105,7 +105,7 @@ class HrAttendanceMonthDetail(models.Model): actual_attendance_days = fields.Integer(string="实际出勤天数") compensatory_leave = fields.Integer(string="调休") leave_of_absence = fields.Integer(string="事假", digits=(16, 3)) - statutory_leave = fields.Integer(string="加班时(法定假)") + statutory_leave = fields.Integer(string="加班时(法定)") work_overtime = fields.Integer(string="加班") entry_date = fields.Date(related='employee_id.entry_date', string="入职日期") expected_date = fields.Date(string="离职日期") diff --git a/yuthon_hr_attendance/views/overtime_approval.xml b/yuthon_hr_attendance/views/overtime_approval.xml index 9267cfc75..cdfc65c51 100644 --- a/yuthon_hr_attendance/views/overtime_approval.xml +++ b/yuthon_hr_attendance/views/overtime_approval.xml @@ -88,8 +88,9 @@ + - + diff --git a/yuthon_hr_attendance/views/yuthon_vacation_reports_views.xml b/yuthon_hr_attendance/views/yuthon_vacation_reports_views.xml index fd417f95a..0deb02c57 100644 --- a/yuthon_hr_attendance/views/yuthon_vacation_reports_views.xml +++ b/yuthon_hr_attendance/views/yuthon_vacation_reports_views.xml @@ -19,6 +19,7 @@ + @@ -90,7 +91,7 @@