diff --git a/approvals/views/approval_request_views.xml b/approvals/views/approval_request_views.xml
index a5d30a39c..69dd44ee9 100644
--- a/approvals/views/approval_request_views.xml
+++ b/approvals/views/approval_request_views.xml
@@ -177,7 +177,7 @@
-
+
diff --git a/yuthon_approval/__manifest__.py b/yuthon_approval/__manifest__.py
index 4a1529041..edf62d46b 100644
--- a/yuthon_approval/__manifest__.py
+++ b/yuthon_approval/__manifest__.py
@@ -17,7 +17,7 @@
'views/inherit_approval_category_views.xml',
'views/inherit_approval_request_views.xml',
'views/approval_process_views.xml',
- 'views/demo_request_view.xml',
+ 'views/demo_approval_request.xml',
'wizard/approval_notice_wizard_views.xml',
],
'installable': True,
diff --git a/yuthon_approval/models/__init__.py b/yuthon_approval/models/__init__.py
index 1f482b075..189efbb49 100644
--- a/yuthon_approval/models/__init__.py
+++ b/yuthon_approval/models/__init__.py
@@ -1,4 +1,4 @@
-from . import demo_request
+from . import demo_approval_request
from . import inherit_approval_category
from . import inherit_approval_approver
from . import inherit_approval_process
diff --git a/yuthon_approval/models/demo_approval_request.py b/yuthon_approval/models/demo_approval_request.py
new file mode 100644
index 000000000..7c002c352
--- /dev/null
+++ b/yuthon_approval/models/demo_approval_request.py
@@ -0,0 +1,12 @@
+# -*- coding: utf-8 -*-
+from odoo import api, fields, models, tools, _
+from odoo.exceptions import ValidationError
+
+
+class DemoApprovalRequest(models.Model):
+ _inherit = "approval.request"
+ _description = '默认审批 demo.approval.request'
+
+ demo1 = fields.Char(string="demo1")
+ demo2 = fields.Char(string="demo2")
+ demo3 = fields.Char(string="demo3")
diff --git a/yuthon_approval/models/demo_request.py b/yuthon_approval/models/demo_request.py
deleted file mode 100644
index e67a8b50f..000000000
--- a/yuthon_approval/models/demo_request.py
+++ /dev/null
@@ -1,8 +0,0 @@
-# -*- coding: utf-8 -*-
-from odoo import api, fields, models, tools, _
-from odoo.exceptions import ValidationError
-
-
-class ApprovalCategory(models.Model):
- _name = 'demo.request'
- _inherit = ["approval.request"]
diff --git a/yuthon_approval/models/inherit_approval_process.py b/yuthon_approval/models/inherit_approval_process.py
index 93fc3c8f0..ec106c07d 100644
--- a/yuthon_approval/models/inherit_approval_process.py
+++ b/yuthon_approval/models/inherit_approval_process.py
@@ -8,37 +8,25 @@ class ApprovalProcess(models.Model):
_name = 'approval.process'
_rec_name = 'approval_category_id'
- approvals_other_user_ids = fields.Many2many('res.users', string="传阅人")
approval_category_id = fields.Many2one('approval.category', string="流程名称")
+ approvals_other_user_ids = fields.Many2many('res.users', string="传阅人", compute="_compute_other_user", store=True)
user_ids = fields.One2many('approval.users', 'approval_process_id', string="审批流程")
other_user_ids = fields.One2many('approval.other.users', 'approval_process_id', string="传阅人流程")
- def _create_users(self):
- self.ensure_one()
- user_ids = []
- users_user_ids = self.user_ids
- if users_user_ids:
- for user in users_user_ids:
- if user.approval_department_id:
- department = self.sudo().env["hr.department"].browse(user.approval_department_id.id)
- employees = self.sudo().env["hr.employee"].search([("department_id", "=", department.id)])
- for employee in employees:
- user_ids.append(employee.user_id.id)
- if user.approval_job_lv_id:
- job_lv = self.sudo().env["yuthon.job.lv"].browse(user.approval_job_lv_id.id)
- employees = self.sudo().env["hr.employee"].search([("job_lv_id", "=", job_lv.id)])
- for employee in employees:
- user_ids.append(employee.user_id.id)
- if user.user_ids:
- user_ids += user.user_ids.ids
- return user_ids
+ @api.model_create_multi
+ def create(self, vals_list):
+ res = super(ApprovalProcess, self).create(vals_list)
+ for vals in vals_list:
+ approval_category_id = self.env['approval.category'].search([('id', '=', vals['approval_category_id'])])
+ approval_category_id.write({'approval_process_id': res.id})
+ return res
- @api.onchange('other_user_ids')
- def onchange_approvals_other_user_ids(self):
- user_ids_list = []
- for other_user in self.other_user_ids:
- user_ids_list += other_user.user_ids.ids
- self.approvals_other_user_ids = user_ids_list
+ @api.depends('other_user_ids')
+ def _compute_other_user(self):
+ other_user_list = []
+ for other in self.other_user_ids:
+ other_user_list += other.user_ids.ids
+ self.approvals_other_user_ids = other_user_list
class ApprovalUsers(models.Model):
@@ -47,14 +35,23 @@ class ApprovalUsers(models.Model):
sequence = fields.Integer(default=1, string="审批顺序")
approval_process_id = fields.Many2one('approval.process', string='审批流程')
approval_department_id = fields.Many2one('hr.department', string='审批部门')
- approval_job_lv_id = fields.Many2one('yuthon.job.lv', string='审批角色')
- user_ids = fields.Many2many('res.users', string="审批人")
+ approval_user_role_id = fields.Many2one('yuthon.user.role', string='审批角色')
+ user_ids = fields.Many2many('res.users', string="审批人", compute="compute_user_ids", store=True, readonly=False)
- @api.constrains('sequence')
- def _constrains_sequence(self):
- for res in self:
- if res.sequence <= 0:
- raise ValidationError('审批阶段:必须大于0')
+ @api.depends('approval_department_id', 'approval_user_role_id')
+ def compute_user_ids(self):
+ for employee in self:
+ employee_ids = employee.env['hr.employee']
+ department_domain = ('department_id', '=', employee.approval_department_id.id)
+ user_role_domain = ('user_role_ids', '=', employee.approval_user_role_id.id)
+ if employee.approval_department_id and not employee.approval_user_role_id:
+ employee.user_ids = employee_ids.search([department_domain]).user_id
+ elif employee.approval_user_role_id and not employee.approval_department_id:
+ employee.user_ids = employee_ids.search([user_role_domain]).user_id
+ elif employee.approval_user_role_id and employee.approval_department_id:
+ employee.user_ids = employee_ids.search([department_domain, user_role_domain]).user_id
+ else:
+ employee.user_ids = []
class ApprovalOtherUsers(models.Model):
@@ -62,5 +59,24 @@ class ApprovalOtherUsers(models.Model):
approval_process_id = fields.Many2one('approval.process', string='审批流程')
approval_department_id = fields.Many2one('hr.department', string='审批部门')
- approval_job_lv_id = fields.Many2one('yuthon.job.lv', string='审批角色')
- user_ids = fields.Many2many('res.users', string="审批人")
+ approval_user_role_id = fields.Many2one('yuthon.user.role', string='审批角色')
+ user_ids = fields.Many2many('res.users', string="传阅人", compute="compute_user_ids", store=True, readonly=False)
+
+ @api.depends('approval_department_id', 'approval_user_role_id')
+ def compute_user_ids(self):
+ res_users_list = []
+ for employee in self:
+ employee_ids = employee.env['hr.employee']
+ department_domain = ('department_id', '=', employee.approval_department_id.id)
+ user_role_domain = ('user_role_ids', '=', employee.approval_user_role_id.id)
+ if employee.approval_department_id and not employee.approval_user_role_id:
+ employee.user_ids = employee_ids.search([department_domain]).user_id
+ res_users_list += employee.user_ids.ids
+ elif employee.approval_user_role_id and not employee.approval_department_id:
+ employee.user_ids = employee_ids.search([user_role_domain]).user_id
+ res_users_list += employee.user_ids.ids
+ elif employee.approval_user_role_id and employee.approval_department_id:
+ employee.user_ids = employee_ids.search([department_domain, user_role_domain]).user_id
+ res_users_list += employee.user_ids.ids
+ else:
+ employee.user_ids = []
diff --git a/yuthon_approval/security/ir.model.access.csv b/yuthon_approval/security/ir.model.access.csv
index 03cdee64d..f84146a1d 100644
--- a/yuthon_approval/security/ir.model.access.csv
+++ b/yuthon_approval/security/ir.model.access.csv
@@ -1,5 +1,4 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
-access_demo_request,demo_request,model_demo_request,base.group_user,1,1,1,1
access_approval_process,approval_process,model_approval_process,base.group_user,1,1,1,1
access_approval_users,approval_users,model_approval_users,base.group_user,1,1,1,1
access_approval_other_users,approval_other_users,model_approval_other_users,base.group_user,1,1,1,1
diff --git a/yuthon_approval/views/approval_process_views.xml b/yuthon_approval/views/approval_process_views.xml
index 3d117d4ec..c6be68dc1 100644
--- a/yuthon_approval/views/approval_process_views.xml
+++ b/yuthon_approval/views/approval_process_views.xml
@@ -26,7 +26,7 @@
-
+
@@ -36,7 +36,7 @@
-
+
diff --git a/yuthon_approval/views/demo_approval_request.xml b/yuthon_approval/views/demo_approval_request.xml
new file mode 100644
index 000000000..432b9bbdb
--- /dev/null
+++ b/yuthon_approval/views/demo_approval_request.xml
@@ -0,0 +1,15 @@
+
+
+
+ approvals.category.type.code.demo.request
+ approval.request
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/yuthon_approval/views/demo_request_view.xml b/yuthon_approval/views/demo_request_view.xml
deleted file mode 100644
index a4174f4bf..000000000
--- a/yuthon_approval/views/demo_request_view.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-
-
-
- approvals.category.type.code.demo.request
- demo.request
-
-
-
-
-
\ No newline at end of file
diff --git a/yuthon_hr_employee/models/inherit_res_user.py b/yuthon_hr_employee/models/inherit_res_user.py
index 4c4f2dedb..bb2c57a26 100644
--- a/yuthon_hr_employee/models/inherit_res_user.py
+++ b/yuthon_hr_employee/models/inherit_res_user.py
@@ -14,6 +14,7 @@ class ResUsers(models.Model):
employee_data = {
'name': employee.name,
'company_id': employee.env.company.id,
+ 'user_id': employee.id,
}
self.env['hr.employee'].create(employee_data)
else:
diff --git a/yuthon_hr_employee/models/yuthon_hr_employee.py b/yuthon_hr_employee/models/yuthon_hr_employee.py
index 49834998d..08567b346 100644
--- a/yuthon_hr_employee/models/yuthon_hr_employee.py
+++ b/yuthon_hr_employee/models/yuthon_hr_employee.py
@@ -26,7 +26,7 @@ class YuthonHrEmployee(models.Model):
('part_time', '兼职人员'), ('practice', '正式工')], string="用工形式")
user_number = fields.Char(string="员工编号")
job_lv_id = fields.Many2one('yuthon.job.lv', string="最新职级")
- main_user_role = fields.Many2many('yuthon.user.role', string="角色")
+ user_role_ids = fields.Many2many('yuthon.user.role', string="角色")
# 个人信息
user_salary = fields.Float(string="基本工资")
job_lv_salary = fields.Float(string="职级工资")
diff --git a/yuthon_hr_employee/views/yuthon_hr_employee_views.xml b/yuthon_hr_employee/views/yuthon_hr_employee_views.xml
index b17629308..6f7da077c 100644
--- a/yuthon_hr_employee/views/yuthon_hr_employee_views.xml
+++ b/yuthon_hr_employee/views/yuthon_hr_employee_views.xml
@@ -101,7 +101,7 @@
-
+
diff --git a/yuthon_hr_employee/wizard/hr_employee_wizard.py b/yuthon_hr_employee/wizard/hr_employee_wizard.py
index ee078b23e..7527087a9 100644
--- a/yuthon_hr_employee/wizard/hr_employee_wizard.py
+++ b/yuthon_hr_employee/wizard/hr_employee_wizard.py
@@ -54,7 +54,7 @@ class YuthonHrEmployeeWizard(models.Model):
'department_id': department_id.id,
'user_sex': 'boy' if row[2].value == '男' else 'girl',
'birthday': datetime.strptime(row[3].value, '%Y-%m-%d').date(),
- 'main_user_role': role_list_ids,
+ 'user_role_ids': role_list_ids,
'mobile_phone': row[5].value,
'work_phone': row[6].value,
'work_email': row[7].value,