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,