From 477e22833eec10571d0d3bd2e72fb12ea5d801ae Mon Sep 17 00:00:00 2001 From: zhouzhou <123@qq.com> Date: Sat, 7 Sep 2024 16:42:33 +0800 Subject: [PATCH] =?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 --- .../models/yuthon_hr_employee.py | 16 ++++- .../views/yuthon_hr_employee_views.xml | 69 +++++++++++++++++++ 2 files changed, 84 insertions(+), 1 deletion(-) diff --git a/yuthon_hr_employee/models/yuthon_hr_employee.py b/yuthon_hr_employee/models/yuthon_hr_employee.py index 11cfa7472..5cb0e39e4 100644 --- a/yuthon_hr_employee/models/yuthon_hr_employee.py +++ b/yuthon_hr_employee/models/yuthon_hr_employee.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- from odoo import api, fields, models from datetime import datetime +from odoo.exceptions import UserError, ValidationError nation_list = [('a', '汉族'), ('b', '壮族'), ('v', '满族'), ('d', '回族'), ('e', '苗族'), ('f', '维吾尔族'), ('g', '土家族'), ('h', '彝族'), ('i', '蒙古族'), ('j', '藏族'), ('k', '布依族'), ('l', '侗族'), @@ -34,7 +35,7 @@ class YuthonHrEmployee(models.Model): confirmation_date = fields.Date(string="转正时间") company_old = fields.Char(string="司龄", compute='_compute_company_old') user_sex = fields.Selection([('girl', '女'), ('boy', '男')], string="性别") - user_state = fields.Selection([('in', '在职'), ('leave', '离职'), ('withdraw', '退休')], string="员工状态") + user_state = fields.Selection([('in', '在职'), ('leave', '离职'), ('withdraw', '退休')], string="员工状态",compute='_compute_user_state') user_number_start_time = fields.Date(string="身份中有效开始时间") user_number_end_time = fields.Date(string="身份证有效到期时间") nation = fields.Selection(nation_list, string="民族") @@ -159,3 +160,16 @@ class YuthonHrEmployee(models.Model): record.retire_years = 0 else: record.retire_years = 0 + + @api.depends('new_start_contract_data', 'new_end_contract_data') + def _compute_user_state(self): + for record in self: + today = datetime.now().date() + if record.new_start_contract_data >= record.new_end_contract_data: + raise ValidationError('合同开始日期不能大于合同结束日期') + if record.new_start_contract_data <= today <= record.new_end_contract_data: + record.user_state = 'in' + else: + record.user_state = 'leave' + + diff --git a/yuthon_hr_employee/views/yuthon_hr_employee_views.xml b/yuthon_hr_employee/views/yuthon_hr_employee_views.xml index 3c5e8b3b6..9b22dbde4 100644 --- a/yuthon_hr_employee/views/yuthon_hr_employee_views.xml +++ b/yuthon_hr_employee/views/yuthon_hr_employee_views.xml @@ -203,6 +203,35 @@ 上级领导 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -213,4 +242,44 @@ code action = model.action_hr_employee() + + + + 在职 + hr.employee + kanban,tree,form + [('user_state','=','in')] + + + + 离职 + hr.employee + kanban,tree,form + [('user_state','=','leave')] + + + + 退休 + hr.employee + kanban,tree,form + [('user_state','=','withdraw')] + + + + + + + \ No newline at end of file