From e23aabeb6c783251b44eebced9e531b44b1a3095 Mon Sep 17 00:00:00 2001
From: zhouzhou <123@qq.com>
Date: Mon, 2 Dec 2024 00:06:34 +0800
Subject: [PATCH 1/4] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
yuthon_hr_attendance/models/card_approval.py | 18 +++++++++++++++---
yuthon_hr_attendance/models/duty_approval.py | 1 +
yuthon_hr_attendance/models/go_approval.py | 3 ++-
yuthon_hr_attendance/models/hr_attendance.py | 10 ++++++++++
yuthon_hr_attendance/views/card_approval.xml | 3 +++
5 files changed, 31 insertions(+), 4 deletions(-)
diff --git a/yuthon_hr_attendance/models/card_approval.py b/yuthon_hr_attendance/models/card_approval.py
index a80a95f75..b4808db7e 100644
--- a/yuthon_hr_attendance/models/card_approval.py
+++ b/yuthon_hr_attendance/models/card_approval.py
@@ -11,7 +11,7 @@ class CardApprovals(models.Model):
_rec_name = 'name'
yuthon_company = fields.Selection(related='users_id.employee_id.yuthon_company', string="公司")
- name = fields.Char(string="标题")
+ name = fields.Char(string="标题", compute='_compute_name')
code = fields.Char(string="编号",default=lambda self: self.env['ir.sequence'].next_by_code('overtime_approval'))
users_id = fields.Many2one('res.users', string="申请人", default=lambda self: self.env.user.id)
department_id = fields.Many2one(related='users_id.employee_id.department_id', string="部门")
@@ -19,7 +19,7 @@ class CardApprovals(models.Model):
related_issues_id = fields.Many2one('issue.library', string="关联议题")
reason_application = fields.Html(string="申请事由")
replacement_time = fields.Selection([('work', '上班卡'), ('quitting', '下班卡'), ('all', '全天卡')], string="补卡")
- actual_punch = fields.Datetime(string="实际打卡")
+ actual_punch = fields.Date(string="实际打卡日期")
documents_ids = fields.Many2many('ir.attachment', string="附件")
@api.onchange('is_issues')
@@ -40,6 +40,18 @@ class CardApprovals(models.Model):
raise UserError("已经创建了相关的上会记录,不能取消勾选")
def card_approval(self):
- pass
+ for record in self:
+ hr_attendance_id = self.env['hr.attendance'].search([('employee_id', '=', record.users_id.employee_id.id), ('current_data', '=', record.actual_punch)])
+ hr_attendance_id.write({'is_no_card': False})
+
+ @api.depends('users_id', 'replacement_time', 'actual_punch')
+ def _compute_name(self):
+ for record in self:
+ if record.users_id and record.actual_punch:
+ record.name = f"{record.users_id.name}补卡{record.actual_punch.strftime('%Y-%m-%d')}"
+ else:
+ record.name = False
+
+
diff --git a/yuthon_hr_attendance/models/duty_approval.py b/yuthon_hr_attendance/models/duty_approval.py
index 6461bc836..1cb801170 100644
--- a/yuthon_hr_attendance/models/duty_approval.py
+++ b/yuthon_hr_attendance/models/duty_approval.py
@@ -46,6 +46,7 @@ class DutyApprovals(models.Model):
elif self.related_issues_id:
raise UserError("已经创建了相关的上会记录,不能取消勾选")
+
class DutyApprovalsLine(models.Model):
_name = 'duty.approval.line'
_description = "值班人明细行"
diff --git a/yuthon_hr_attendance/models/go_approval.py b/yuthon_hr_attendance/models/go_approval.py
index ea956851e..fa825d219 100644
--- a/yuthon_hr_attendance/models/go_approval.py
+++ b/yuthon_hr_attendance/models/go_approval.py
@@ -70,4 +70,5 @@ class GoApprovalsLine(models.Model):
for record in self:
if record.date_start and record.date_end:
if record.date_start >= record.date_end:
- raise UserError("开始时间必须小于结束时间!")
\ No newline at end of file
+ raise UserError("开始时间必须小于结束时间!")
+
diff --git a/yuthon_hr_attendance/models/hr_attendance.py b/yuthon_hr_attendance/models/hr_attendance.py
index 5a0912ee1..ab78e5995 100644
--- a/yuthon_hr_attendance/models/hr_attendance.py
+++ b/yuthon_hr_attendance/models/hr_attendance.py
@@ -113,6 +113,7 @@ class HrAttendance(models.Model):
"views": [[form_id, "form"]],
"context": {
'default_users_id': self.employee_id.user_id.id,
+ 'default_replacement_time':replacement_time
}
}
@@ -121,12 +122,21 @@ class HrAttendance(models.Model):
def button_card_approval(self):
form_id = self.env.ref('yuthon_hr_attendance.card_approval_form').id
+ replacement_time = ''
+ for record in self:
+ if not record.check_in:
+ replacement_time = 'work'
+ elif not record.check_out:
+ replacement_time = 'quitting'
+ elif not record.check_in and not record.check_out:
+ replacement_time = 'all'
return {
"type": "ir.actions.act_window",
"name": "补卡申请",
"res_model": "card.approval",
"views": [[form_id, "form"]],
"context": {
+ 'default_actual_punch':self.current_data,
'default_users_id': self.employee_id.user_id.id,
}
}
diff --git a/yuthon_hr_attendance/views/card_approval.xml b/yuthon_hr_attendance/views/card_approval.xml
index bbf0eb827..9f14406cb 100644
--- a/yuthon_hr_attendance/views/card_approval.xml
+++ b/yuthon_hr_attendance/views/card_approval.xml
@@ -17,6 +17,9 @@
card.approval