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