From 9c833d16370f289bb63cd8ffddd57024896b3527 Mon Sep 17 00:00:00 2001 From: zhouzhou <123@qq.com> Date: Thu, 12 Dec 2024 15:11:38 +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 --- .../views/soong_user_role_views.xml | 2 +- .../models/yuthon_hr_department.py | 19 ++++++++++ .../views/inherit_hr_job_views.xml | 1 + .../views/yuthon_hr_department_views.xml | 1 + .../models/yuthon_employee_performance.py | 4 +-- .../static/others/performance_template.xlsx | Bin 0 -> 13019 bytes ...n_performance_indicators__wizard_views.xml | 34 ++++++++++++++++++ .../yuthon_performance_indicators_wizard.py | 23 ++++++++++++ 8 files changed, 81 insertions(+), 3 deletions(-) create mode 100644 yuthon_performance/static/others/performance_template.xlsx create mode 100644 yuthon_performance/wizard/yuthon_performance_indicators__wizard_views.xml create mode 100644 yuthon_performance/wizard/yuthon_performance_indicators_wizard.py diff --git a/soong_workflow/views/soong_user_role_views.xml b/soong_workflow/views/soong_user_role_views.xml index cc760d191..d0eed59b1 100644 --- a/soong_workflow/views/soong_user_role_views.xml +++ b/soong_workflow/views/soong_user_role_views.xml @@ -45,7 +45,7 @@ - + diff --git a/yuthon_hr_employee/models/yuthon_hr_department.py b/yuthon_hr_employee/models/yuthon_hr_department.py index b3675c76d..cb0eaebf0 100644 --- a/yuthon_hr_employee/models/yuthon_hr_department.py +++ b/yuthon_hr_employee/models/yuthon_hr_department.py @@ -14,6 +14,8 @@ class YuthonHrDepartment(models.Model): department_function = fields.Char(string="部门职能") is_institution = fields.Boolean(string="是否机构") is_global_department = fields.Boolean(string="是否全局部门") + yuthon_company = fields.Selection([('thtz', '天河投资集团'), ('thwg', '天河物管'), + ('thlc', '天河粮储')], default='thtz', store=True, compute="compute_company",string="所属公司") create_date = fields.Date(string="创建时间", default=fields.Date.today()) start_date = fields.Date(string="生效日期", default=fields.Date.today()) expiration_date = fields.Date(string="失效日期", default=fields.Date.today()) @@ -55,4 +57,21 @@ class YuthonHrDepartment(models.Model): domain = expression.AND([search_domain, domain]) return self._search(domain, limit=limit, order=order) + @api.depends('name', 'parent_id') + def _compute_company(self): + company_mapping = { + '天河投资集团': 'thtz', + '天河物管': 'thwg', + '天河粮储': 'thlc', + '天河投资本部': 'thtjbb', + } + for record in self: + department = record + while department: + if department.name in company_mapping: + record.yuthon_company = company_mapping[department.name] + break + department = department.parent_id + else: + record.yuthon_company = 'thtz' diff --git a/yuthon_hr_employee/views/inherit_hr_job_views.xml b/yuthon_hr_employee/views/inherit_hr_job_views.xml index ac2faeaf0..24c6f9c2e 100644 --- a/yuthon_hr_employee/views/inherit_hr_job_views.xml +++ b/yuthon_hr_employee/views/inherit_hr_job_views.xml @@ -67,6 +67,7 @@ 所属部门 1 + [('yuthon_company', '=' , yuthon_company)] 1 diff --git a/yuthon_hr_employee/views/yuthon_hr_department_views.xml b/yuthon_hr_employee/views/yuthon_hr_department_views.xml index 77befe18e..75dc1da49 100644 --- a/yuthon_hr_employee/views/yuthon_hr_department_views.xml +++ b/yuthon_hr_employee/views/yuthon_hr_department_views.xml @@ -25,6 +25,7 @@ + diff --git a/yuthon_performance/models/yuthon_employee_performance.py b/yuthon_performance/models/yuthon_employee_performance.py index 9cbbf5610..17f5ae5c7 100644 --- a/yuthon_performance/models/yuthon_employee_performance.py +++ b/yuthon_performance/models/yuthon_employee_performance.py @@ -37,8 +37,8 @@ class YuthonEmployeePerformance(models.Model): performance_records = super().create(vals_list) for performance in performance_records: self.env['yuthon.assessment.tasks'].create({ - 'name': performance.name, # 使用创建的 performance 记录的 name - 'performance_id': performance.id, # 建立关联关系 + 'name': performance.name, + 'performance_id': performance.id, 'index_statu': performance.index_statu, 'assessment_time': performance.assessment_time, 'performance_type': 'employs' diff --git a/yuthon_performance/static/others/performance_template.xlsx b/yuthon_performance/static/others/performance_template.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..9d28239021637fdd2c367daa0aa8ff2fc6658190 GIT binary patch literal 13019 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 ABme*a literal 0 HcmV?d00001 diff --git a/yuthon_performance/wizard/yuthon_performance_indicators__wizard_views.xml b/yuthon_performance/wizard/yuthon_performance_indicators__wizard_views.xml new file mode 100644 index 000000000..29ffec9b8 --- /dev/null +++ b/yuthon_performance/wizard/yuthon_performance_indicators__wizard_views.xml @@ -0,0 +1,34 @@ + + + + 绩效模板 下载 + self + /yuthon_performance/static/others/performance_template.xlsx + + + 审批意见弹窗 + yuthon.performance.indicators.wizard + +
+ +
+
+ + + + + + + + +
+ +
+
+
+
\ No newline at end of file diff --git a/yuthon_performance/wizard/yuthon_performance_indicators_wizard.py b/yuthon_performance/wizard/yuthon_performance_indicators_wizard.py new file mode 100644 index 000000000..d2d52a886 --- /dev/null +++ b/yuthon_performance/wizard/yuthon_performance_indicators_wizard.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +from odoo import models, fields, api, _, SUPERUSER_ID +from odoo.exceptions import ValidationError, UserError +import xlrd +import base64 +import datetime +from datetime import datetime + + +class YuthonPerformanceIndicatorsWizard(models.Model): + _name = 'yuthon.performance.indicators.wizard' + excel_file = fields.Binary(string="上传Excel表") + excel_name = fields.Char(string="文件名") + + def confirm(self): + """ + 导入excel文件,按行读取数据并处理 + :return: 导入员工信息表并更新 + """ + if not self.excel_file: + raise ValidationError('请上传文件。') + book = xlrd.open_workbook(file_contents=base64.decodebytes(self.excel_file)) + sh = book.sheet_by_index(0) \ No newline at end of file