diff --git a/soong_workflow/models/soong_workflow_log.py b/soong_workflow/models/soong_workflow_log.py index 85da32668..409383330 100644 --- a/soong_workflow/models/soong_workflow_log.py +++ b/soong_workflow/models/soong_workflow_log.py @@ -31,9 +31,9 @@ class SoongWorkflowLog(models.Model): done_by = fields.Many2one(comodel_name="res.users", string="审批人") lase_click_date = fields.Datetime(string="操作时间") approval_state = fields.Selection([ - ('0', '未审批'), + ('0', '待审批'), ('1', '审批中'), - ('2', '审批通过'), + ('2', '已审批'), ], string='审批状态', default='0') comment = fields.Char(string="意见") diff --git a/soong_workflow/models/soong_workflow_mixin.py b/soong_workflow/models/soong_workflow_mixin.py index 538a6f001..7bfdc8012 100644 --- a/soong_workflow/models/soong_workflow_mixin.py +++ b/soong_workflow/models/soong_workflow_mixin.py @@ -295,8 +295,7 @@ class SoongWorkflowMixin(models.AbstractModel): "default_is_automatic": next_state.is_automatic, "default_employee_ids": employee_ids, "default_node_btn_id": btn_rec.id, - "default_node_link_len": '转交2' if len( - btn_rec.node_id.out_link_ids) > 1 and btn_rec.name == '转交' else '', + "default_node_link_len": '转交2' if len(btn_rec.node_id.out_link_ids) > 1 and btn_rec.name == '转交' else '', }, } @@ -306,38 +305,56 @@ class SoongWorkflowMixin(models.AbstractModel): record_obj = self.env["soong.workflow.record"].search([("res_model", "=", rec._name), ("res_id", "=", rec.id)]) current_user_id = self.env.user.id button_ids = self.workflow_id.node_ids.search([('node_name', '=', self.state), ('workflow_id', '=', self.workflow_id.id)]).button_ids - user_ids_list = [] - if self.state != 'end': - if button_ids: - self_state = button_ids[0] - else: - raise UserError('请配置节点按钮') - employee_user_role_ids = self.env['hr.employee'].search( - ['|', ('user_role_id', '=', self_state.users_role_id.id), - ('user_role_ids', 'in', self_state.users_role_id.id)]) - employee_user_role_id = self.env['hr.employee'].search( - ['|', ('user_role_id', '=', self_state.users_role_id.id), - ('user_role_ids', 'in', self_state.users_role_id.id), '|', - ('department_id', '=', self.department_id.id), - ('department_ids', 'in', self.department_id.id)]) - employee_ids = employee_user_role_ids if not self_state.is_automatic else employee_user_role_id - for employee in employee_ids: - if employee.user_id: - user_ids_list.append((4, employee.user_id.id)) - if not record_obj: - record_obj = self.env["soong.workflow.record"].create({ - "res_model": rec._name, - "res_id": rec.id, - "workflow_id": rec.workflow_id.id, - "node_id": rec.node_id.id, - "done_by": self.env.uid, - "users_ids": [(4, current_user_id)], - }) - record_obj.update({"workflow_id": rec.workflow_id.id, - "node_id": rec.node_id.id, - "done_by": self.env.uid, - "users_ids": user_ids_list, - }) + # state_list = [i.node_name for i in self.workflow_id.node_ids] + # self_state = state_list.index(self.state) + # next_state = self.workflow_id.node_ids[self_state + 1].button_ids[0] + if self.state in ['申请人', 'start', '拟办']: + if not record_obj: + self.env["soong.workflow.record"].create({ + "res_model": rec._name, + "res_id": rec.id, + "workflow_id": rec.workflow_id.id, + "node_id": rec.node_id.id, + "done_by": self.env.uid, + "users_ids": [(4, current_user_id)], + "self_users": self.env.user.name, + }) + else: + if self.state not in ['end']: + if button_ids: + self_state = button_ids[0] + else: + raise UserError('请配置节点按钮') + employee_user_role_ids = self.env['hr.employee'].search( + ['|', ('user_role_id', '=', self_state.users_role_id.id), + ('user_role_ids', 'in', self_state.users_role_id.id)]) + employee_user_role_id = self.env['hr.employee'].search( + ['|', ('user_role_id', '=', self_state.users_role_id.id), + ('user_role_ids', 'in', self_state.users_role_id.id), '|', + ('department_id', '=', self.department_id.id), + ('department_ids', 'in', self.department_id.id)]) + employee_ids = employee_user_role_ids if not self_state.is_automatic else employee_user_role_id + user_ids_list = [] + for employee in employee_ids: + if employee.user_id: + user_ids_list.append((4, employee.user_id.id)) + if not record_obj: + record_obj = self.env["soong.workflow.record"].create({ + "res_model": rec._name, + "res_id": rec.id, + "workflow_id": rec.workflow_id.id, + "node_id": rec.node_id.id, + "done_by": self.env.uid, + "users_ids": [(4, current_user_id)], + "self_users": self.env.user.name, + }) + record_obj.update({"workflow_id": rec.workflow_id.id, + "node_id": rec.node_id.id, + "done_by": self.env.uid, + "users_ids": user_ids_list, + "self_users": ','.join([employee.name for employee in employee_ids]), + }) + def unlink(self): self.mapped("log_ids").unlink() diff --git a/soong_workflow/models/soong_workflow_record.py b/soong_workflow/models/soong_workflow_record.py index 1f7962332..b4a6692b1 100644 --- a/soong_workflow/models/soong_workflow_record.py +++ b/soong_workflow/models/soong_workflow_record.py @@ -13,7 +13,7 @@ class SoongWorkflowRecord(models.Model): _order = 'write_date' def get_no_read_count(self): - return self.search_count([('approve_state', '=', 'pending'), ('reclaim_state', '=', False), ('users_ids', 'in', [self.env.user_id])]) + return self.search_count([('approve_state', '=', 'pending'), ('self_users', '=', self.env.user.name)]) @api.depends("res_model", "res_id") def compute_name(self): @@ -27,6 +27,7 @@ class SoongWorkflowRecord(models.Model): res_model = fields.Char(string="Res Model", required=True) res_id = fields.Integer(string="Res ID", required=True) users_ids = fields.Many2many('res.users', string="用户") + self_users = fields.Char(string="当前经办人") workflow_id = fields.Many2one(comodel_name="soong.workflow", string="审批类型", ondelete="restrict") node_id = fields.Many2one(comodel_name="soong.workflow.node", string="当前节点") approve_state = fields.Selection([("start", "开始"), ("pending", "审批中"), ("end", "结束")], default="start", string="审批状态", compute="_compute_node_id") diff --git a/soong_workflow/views/soong_workflow_record.xml b/soong_workflow/views/soong_workflow_record.xml index 6eff957c6..5b8c28c11 100644 --- a/soong_workflow/views/soong_workflow_record.xml +++ b/soong_workflow/views/soong_workflow_record.xml @@ -24,7 +24,8 @@ - + + diff --git a/soong_workflow/wizard/soong_workflow_comment_wizard.py b/soong_workflow/wizard/soong_workflow_comment_wizard.py index c05f0ae2d..8e3434bee 100644 --- a/soong_workflow/wizard/soong_workflow_comment_wizard.py +++ b/soong_workflow/wizard/soong_workflow_comment_wizard.py @@ -169,7 +169,7 @@ class SoongWorkflowCommentWizard(models.TransientModel): # "lase_click_date": fields.Datetime.now(), } ) - record_obj.update({"approval_state": "1"}) + record_obj.update({"approval_state": "0"}) # partner_ids = self.employee_ids.user_id.partner_id.ids # self.with_context(lang=self.env.lang)._message_auto_subscribe_notify(partner_ids, 'soong_workflow.message_soong_workflow_distribute') return self.node_btn_id.with_context(cx).run()