diff --git a/soong_workflow/models/soong_workflow_entrust.py b/soong_workflow/models/soong_workflow_entrust.py index e536d8ca8..787415965 100644 --- a/soong_workflow/models/soong_workflow_entrust.py +++ b/soong_workflow/models/soong_workflow_entrust.py @@ -49,56 +49,57 @@ class SoongWorkflowEntrust(models.Model): # 如果是全部流程 if self.is_enable: all_work_list = [] - if self.env['ir.model'].search([('id', '=', self.model_id.id)]).name == '全部流程': - all_work_ids = self.env['soong.workflow'].search([('is_enable', '=', True)]) - else: - all_work_ids = self.env['soong.workflow'].search([('is_enable', '=', True), ('model_id', '=', self.model_id.id)]) - # 便利出所有的记录集,查出与本人相关的 - for work_id in all_work_ids: - state_dict = {} - for state in work_id.node_ids: - node_data_list = [] - for node in state.button_ids: - if node.name == '转交': - if node.btn_hide: - if node.review_type == 'user_role': - node_data = {'users_role_id': node.users_role_id.id} - elif node.review_type == 'individual': - node_data = {'reviewer_id': node.reviewer_id.id, } + for model_id in self.model_ids: + if self.env['ir.model'].search([('id', '=', model_id.id)]).name == '全部流程': + all_work_ids = self.env['soong.workflow'].search([('is_enable', '=', True)]) + else: + all_work_ids = self.env['soong.workflow'].search([('is_enable', '=', True), ('model_id', '=', model_id.id)]) + # 便利出所有的记录集,查出与本人相关的 + for work_id in all_work_ids: + state_dict = {} + for state in work_id.node_ids: + node_data_list = [] + for node in state.button_ids: + if node.name == '转交': + if node.btn_hide: + if node.review_type == 'user_role': + node_data = {'users_role_id': node.users_role_id.id} + elif node.review_type == 'individual': + node_data = {'reviewer_id': node.reviewer_id.id, } + else: + node_data = [] + node_data_list.append(node_data) + state_dict[state.name + '-' + str(work_id.id)] = node_data_list + all_work_list.append(state_dict) + # 查找委托人当前关联的流程 + reviewer_id = self.env['res.users'].search([('id', '=', self.entrust_user_id.id)]) + users_role_id = reviewer_id.employee_id.user_role_id.id + for work in all_work_list: + # 判断角色是否在里面 + users_role = [key for key, items in work.items() if + any(item.get('users_role_id') == users_role_id for item in items)] + for role in users_role: + workflow = int(role.split('-')[-1]) + work_code = role.split('-')[0] + workflow_id = self.env['soong.workflow'].search([('id', '=', workflow)]) + for flow in workflow_id.node_ids: + if flow.name == work_code and flow.button_ids[-1].name != '转交': + flow.write({ + 'button_ids': [(0, 0, { + "name": _("转交"), + "workflow_id": workflow_id.id, + "sequence": 999, + "review_type": "individual", + "btn_hide": True, + "action_type": 'code', + "reviewer_id": self.entrust_user_id2.id, + "has_comment": True, + })] + }) + if self.workflow_data: + self.workflow_data = self.workflow_data + work_code + '-' + str(workflow_id.id) + ',' else: - node_data = [] - node_data_list.append(node_data) - state_dict[state.name + '-' + str(work_id.id)] = node_data_list - all_work_list.append(state_dict) - # 查找委托人当前关联的流程 - reviewer_id = self.env['res.users'].search([('id', '=', self.entrust_user_id.id)]) - users_role_id = reviewer_id.employee_id.user_role_id.id - for work in all_work_list: - # 判断角色是否在里面 - users_role = [key for key, items in work.items() if - any(item.get('users_role_id') == users_role_id for item in items)] - for role in users_role: - workflow = int(role.split('-')[-1]) - work_code = role.split('-')[0] - workflow_id = self.env['soong.workflow'].search([('id', '=', workflow)]) - for flow in workflow_id.node_ids: - if flow.name == work_code and flow.button_ids[-1].name != '转交': - flow.write({ - 'button_ids': [(0, 0, { - "name": _("转交"), - "workflow_id": workflow_id.id, - "sequence": 999, - "review_type": "individual", - "btn_hide": True, - "action_type": 'code', - "reviewer_id": self.entrust_user_id2.id, - "has_comment": True, - })] - }) - if self.workflow_data: - self.workflow_data = self.workflow_data + work_code + '-' + str(workflow_id.id) + ',' - else: - self.workflow_data = work_code + '-' + str(workflow_id.id) + ',' + self.workflow_data = work_code + '-' + str(workflow_id.id) + ',' else: for de in self: work_ids_list = de.workflow_data.split(',')[0:-1] diff --git a/yuthon_hr_employee/models/inherit_res_groups.py b/yuthon_hr_employee/models/inherit_res_groups.py index 6a2719c04..c8fc31159 100644 --- a/yuthon_hr_employee/models/inherit_res_groups.py +++ b/yuthon_hr_employee/models/inherit_res_groups.py @@ -38,6 +38,7 @@ class ResGroups(models.Model): for employee in self.employee_ids: if employee.user_id: all_user_ids.add(employee.user_id.id) + # 2. 添加选中部门及其子部门的所有员工对应的用户 def get_department_employees(department_id, is_initial_call=False): """ @@ -54,7 +55,7 @@ class ResGroups(models.Model): else: dept_id = department_id.id else: - return valid_user_ids # 无效输入,返回空集 + return valid_user_ids # 查询当前部门的员工 employee_ids = self.env['hr.employee'].search([('department_id', '=', dept_id)]) valid_user_ids.update([user.user_id.id for user in employee_ids if user.user_id]) @@ -63,7 +64,7 @@ class ResGroups(models.Model): for child in child_ids: valid_user_ids.update(get_department_employees(child, is_initial_call=False)) return valid_user_ids - all_user_ids = set() + for department_id in self.department_ids: all_user_ids.update(get_department_employees(department_id, is_initial_call=True)) diff --git a/yuthon_hr_employee_approval/data/process_code_data.xml b/yuthon_hr_employee_approval/data/process_code_data.xml index 26adae08b..54112c0a2 100644 --- a/yuthon_hr_employee_approval/data/process_code_data.xml +++ b/yuthon_hr_employee_approval/data/process_code_data.xml @@ -14,7 +14,13 @@ 3 - + + 合同审查表-编号 + contract_review_approval_code + CH%(y)s%(month)s%(day)s + 3 + + 参保方案申请表-编号 yuthon_enrollment_approval_code diff --git a/yuthon_hr_employee_approval/models/contract_review_approval.py b/yuthon_hr_employee_approval/models/contract_review_approval.py index e9d79c702..826ea24e2 100644 --- a/yuthon_hr_employee_approval/models/contract_review_approval.py +++ b/yuthon_hr_employee_approval/models/contract_review_approval.py @@ -7,7 +7,7 @@ class ContractReviewApproval(models.Model): _inherit = ['soong.workflow.mixin', 'mail.thread.main.attachment', 'mail.activity.mixin'] code = fields.Char(string="编号", - default=lambda self: self.env['ir.sequence'].next_by_code('yuthon_appointment_approval_code')) + default=lambda self: self.env['ir.sequence'].next_by_code('contract_review_approval_code')) name = fields.Char(string='合同名称') user_id = fields.Many2one('res.users', string='合同经办人') is_issues = fields.Boolean(string='是否上会')