From 8be81d2791655c9ba2788f41a04fa8274e694cd7 Mon Sep 17 00:00:00 2001 From: zhou <123@> Date: Mon, 17 Mar 2025 17:04:45 +0800 Subject: [PATCH 1/2] =?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_holiday/models/inherit_hr_leave.py | 45 ++++++++++++------- yuthon_holiday/views/hr_leave_batch.xml | 4 +- .../views/yuthon_fixes_approval_views.xml | 1 + .../models/overtime_approval.py | 11 +++++ yuthon_hr_attendance/views/card_approval.xml | 1 + yuthon_hr_attendance/views/duty_approval.xml | 1 + yuthon_hr_attendance/views/go_approval.xml | 1 + .../views/overtime_approval.xml | 7 +-- .../models/yuthon_hr_employee.py | 14 ++++++ .../views/yuthon_hr_employee_views.xml | 26 +++++++++-- 10 files changed, 86 insertions(+), 25 deletions(-) diff --git a/yuthon_holiday/models/inherit_hr_leave.py b/yuthon_holiday/models/inherit_hr_leave.py index 6e2bd2c4a..b93c8dc79 100644 --- a/yuthon_holiday/models/inherit_hr_leave.py +++ b/yuthon_holiday/models/inherit_hr_leave.py @@ -219,6 +219,8 @@ class HolidaysRequestBatch(models.Model): leave_by_day = fields.Boolean(string='请假单位(天)', default=True) urgency_level = fields.Selection([('normal', '普件'), ('urgent', '急件'), ('emergency', '特急件')], string='紧急度', default='normal') + start_date = fields.Date(string="开始时间") + end_date = fields.Date(string="结束时间") custom_document_ids = fields.Many2many( string='文件', comodel_name='ir.attachment', @@ -246,23 +248,6 @@ class HolidaysRequestBatch(models.Model): self.leave_ids.action_validate() self.hour_leave_ids.action_validate() - @api.onchange('hour_leave_ids', 'leave_ids', 'users_id') - def _onchange_name(self): - employee_name = self.users_id.name - if self.is_day or self.is_hour: - number_day = 0 - number_hours = 0 - for leave in self.leave_ids: - if leave.number_of_days_display: - number_day += leave.number_of_days_display - for hour_leave in self.hour_leave_ids: - if hour_leave.number_of_hours_text: - hours_str = re.search(r'\d+', hour_leave.number_of_hours_text).group() - number_hours += float(hours_str) - self.name = f"{employee_name}的休假:{number_day + (number_hours * 0.125)}天" - else: - self.name = f'{employee_name}的休假' - @api.model_create_multi def create(self, vals_list): for vals in vals_list: @@ -279,6 +264,32 @@ class HolidaysRequestBatch(models.Model): raise ValidationError("休假时长必须为 2、4、6 或 8 小时才可以保存!") return super(HolidaysRequestBatch, self).create(vals_list) + @api.onchange('leave_ids', 'hour_leave_ids', 'employee_id') + def _onchange_leave_dates(self): + all_dates = [] + for leave in self.leave_ids: + if leave.request_date_from: + all_dates.append(leave.request_date_from) + if leave.request_date_to: + all_dates.append(leave.request_date_to) + for hour_leave in self.hour_leave_ids: + if hour_leave.request_date_from: + all_dates.append(hour_leave.request_date_from) + if all_dates: + self.start_date = min(all_dates) + self.end_date = max(all_dates) + else: + self.start_date = False + self.end_date = False + + if self.employee_id and self.start_date and self.end_date: + start = datetime.strptime(str(self.start_date), '%Y-%m-%d') + end = datetime.strptime(str(self.end_date), '%Y-%m-%d') + date_diff = (end - start).days + self.name = f"{self.employee_id.name}的休假{date_diff}天" + else: + self.name = f"{self.employee_id.name}" + class HrLeaveLine(models.Model): _name = 'hr.leave.line' diff --git a/yuthon_holiday/views/hr_leave_batch.xml b/yuthon_holiday/views/hr_leave_batch.xml index 6c18debb9..87d5b7b40 100644 --- a/yuthon_holiday/views/hr_leave_batch.xml +++ b/yuthon_holiday/views/hr_leave_batch.xml @@ -57,6 +57,8 @@ + + @@ -210,8 +212,8 @@ hr.leave.batch tree,form {} + [('users_id', '=', uid)] - [] 假期修正审批 yuthon.fixes.approval + [('users_id', '=', uid)] tree,form diff --git a/yuthon_hr_attendance/models/overtime_approval.py b/yuthon_hr_attendance/models/overtime_approval.py index d4cb6d354..09c64b783 100644 --- a/yuthon_hr_attendance/models/overtime_approval.py +++ b/yuthon_hr_attendance/models/overtime_approval.py @@ -125,6 +125,17 @@ class OvertimeApprovals(models.Model): if self.meal == 'yes': meal_number +=1 employee_id.write({'meal_number':meal_number}) + holiday_status_id = self.env['hr.leave.type'].search([('name', '=', '补休')]) + allocation = self.env['hr.leave.allocation'].create({ + 'employee_id': employee_id.id, + 'name': '补休', + 'number_of_days': self.duration/7, + 'holiday_status_id': holiday_status_id.id, + 'allocation_type': 'regular', + "number_of_days_display": self.duration/7, + }) + if allocation: + allocation.sudo().action_validate() @api.depends('users_id', 'duration') def _compute_name(self): diff --git a/yuthon_hr_attendance/views/card_approval.xml b/yuthon_hr_attendance/views/card_approval.xml index d68380264..ccb25db7b 100644 --- a/yuthon_hr_attendance/views/card_approval.xml +++ b/yuthon_hr_attendance/views/card_approval.xml @@ -60,6 +60,7 @@ 补卡 card.approval + [('users_id', '=', uid)] tree,form \ No newline at end of file diff --git a/yuthon_hr_attendance/views/duty_approval.xml b/yuthon_hr_attendance/views/duty_approval.xml index 8488acd38..86ed76d36 100644 --- a/yuthon_hr_attendance/views/duty_approval.xml +++ b/yuthon_hr_attendance/views/duty_approval.xml @@ -82,6 +82,7 @@ 值班 duty.approval + [('users_id', '=', uid)] tree,form \ No newline at end of file diff --git a/yuthon_hr_attendance/views/go_approval.xml b/yuthon_hr_attendance/views/go_approval.xml index 77c5eb9a5..25c4c4458 100644 --- a/yuthon_hr_attendance/views/go_approval.xml +++ b/yuthon_hr_attendance/views/go_approval.xml @@ -75,6 +75,7 @@ 外出 go.approval + [('users_id', '=', uid)] tree,form \ No newline at end of file diff --git a/yuthon_hr_attendance/views/overtime_approval.xml b/yuthon_hr_attendance/views/overtime_approval.xml index 42391f763..ad4375701 100644 --- a/yuthon_hr_attendance/views/overtime_approval.xml +++ b/yuthon_hr_attendance/views/overtime_approval.xml @@ -17,9 +17,9 @@ overtime.approval
- - - +
+
@@ -77,6 +77,7 @@ 加班 overtime.approval + [('users_id', '=', uid)] tree,form \ No newline at end of file diff --git a/yuthon_hr_employee/models/yuthon_hr_employee.py b/yuthon_hr_employee/models/yuthon_hr_employee.py index 7708be964..7fc124a41 100644 --- a/yuthon_hr_employee/models/yuthon_hr_employee.py +++ b/yuthon_hr_employee/models/yuthon_hr_employee.py @@ -107,6 +107,9 @@ class YuthonHrEmployee(models.Model): normal_overtime_hours = fields.Float(string="正常加班时间(小时)") weekend_overtime_hours = fields.Float(string="周末加班时间(小时)") holiday_overtime_hours = fields.Float(string="节假日加班时间(小时)") + overtime_this_month = fields.Float(string="本月加班时") + overtime_last_month = fields.Float(string="上月加班时") + result_overtime = fields.Float(string="结算时") holiday_hours = fields.Float(string="假期额度") all_overtime_hours = fields.Float(string="总加班小时", compute="_compute_all_overtime_hours", store=True) replacement_card_count = fields.Integer(string="补卡次数") @@ -417,3 +420,14 @@ class YuthonHrEmployee(models.Model): domain = expression.AND([search_domain, domain]) return self._search(domain, limit=limit, order=order) + def put_overtime_return(self): + uid = self.user_id.id + action = { + 'name': '加班详情', + 'type': 'ir.actions.act_window', + 'res_model': 'overtime.approval', + 'view_mode': 'tree', + 'domain': [('users_id', '=', uid)], + } + return action + diff --git a/yuthon_hr_employee/views/yuthon_hr_employee_views.xml b/yuthon_hr_employee/views/yuthon_hr_employee_views.xml index c8f361fed..83471ede3 100644 --- a/yuthon_hr_employee/views/yuthon_hr_employee_views.xml +++ b/yuthon_hr_employee/views/yuthon_hr_employee_views.xml @@ -132,10 +132,28 @@ - - - - + + + + + + + +