diff --git a/soong_workflow/models/soong_workflow_mixin.py b/soong_workflow/models/soong_workflow_mixin.py index 107aa1032..732ed99c0 100644 --- a/soong_workflow/models/soong_workflow_mixin.py +++ b/soong_workflow/models/soong_workflow_mixin.py @@ -245,6 +245,18 @@ class SoongWorkflowMixin(models.AbstractModel): # 继续正常流程 if btn_rec.has_comment: return self.with_context(cx)._add_comment(log_obj, btn_rec) + if btn_rec.name == '收回': + return { + 'name': '收回弹窗', + 'type': 'ir.actions.act_window', + 'view_mode': 'form', + 'res_model': 'soong.bounced.wizard', + "target": "new", + 'context': { + 'default_res_id': self.id, + "default_res_model": self._name, + } + } else: return btn_rec.with_context(cx).run() @@ -402,19 +414,7 @@ class SoongWorkflowMixin(models.AbstractModel): # 收回 def action_withdraw(self): - wizard = self.env.ref("soong_workflow.soong_bounced_wizard_form_view") - return { - 'name': '收回弹窗', - 'type': 'ir.actions.act_window', - 'view_mode': 'form', - 'res_model': 'soong.bounced.wizard', - "views": [(wizard.id, "form")], - "view_id": wizard.id, - "target": "new", - 'context': { - 'default_mixin_id': self.id, - } - } + pass def _remove_default_header(self, view_type, res): """ diff --git a/soong_workflow/security/ir.model.access.csv b/soong_workflow/security/ir.model.access.csv index 2c8845315..21ef21a8e 100644 --- a/soong_workflow/security/ir.model.access.csv +++ b/soong_workflow/security/ir.model.access.csv @@ -42,4 +42,4 @@ access_role_group_wizard,role_group_wizard,model_role_group_wizard,soong_workflo access_soong_workflow_record_revoke_wizard,soong_workflow_record_revoke_wizard,model_soong_workflow_record_revoke_wizard,soong_workflow.group_soong_workflow_user,1,1,1,1 access_soong_workflow_line,soong_workflow_line,model_soong_workflow_line,soong_workflow.group_soong_workflow_user,1,1,1,1 access_project_project_line,project_project_line,model_project_project_line,soong_workflow.group_soong_workflow_user,1,1,1,1 -access_soong_bounced_wizard, soong_bounced_wizard,model_soong_bounced_wizard,soong_workflow.group_soong_workflow_user,1,1,1,1 \ No newline at end of file +access_soong_bounced_wizard,soong_bounced_wizard,model_soong_bounced_wizard,base.group_user,1,1,1,1 \ No newline at end of file diff --git a/soong_workflow/wizard/soong_bounced_wizard.py b/soong_workflow/wizard/soong_bounced_wizard.py index 3b152efc0..6490441e5 100644 --- a/soong_workflow/wizard/soong_bounced_wizard.py +++ b/soong_workflow/wizard/soong_bounced_wizard.py @@ -8,16 +8,22 @@ class SoongBouncedWizard(models.Model): _name = 'soong.bounced.wizard' _description = '收回弹窗' - mixin_id = fields.Many2one('soong.workflow.mixin') + res_id = fields.Integer() + res_model = fields.Char() def action_bounced(self): - for record in self.mixin_id: - log_ids = record.log_ids.sorted('sequence') - if log_ids[-1].approval_state == '2': - raise UserError('当前状态不可以收回') - employee_id = self.env.user.employee_id.id - self.env['soong.workflow.record'].search([('code', '=', self.code)]).write( - {'employee_ids': [(6, 0, [employee_id])]}) - log_ids[-1].unlink() - log_ids[-2].write({'approval_state': '1'}) - record.write({'state': log_ids[-2].name}) \ No newline at end of file + record = self.env[self.res_model].search([('id', '=', self.res_id)]) + log_ids = record.log_ids.sorted('sequence') + if log_ids[-1].approval_state == '1': + raise UserError('当前状态不可以收回') + employee_id = self.env.user.employee_ids.id + workflow_id = (self.env['soong.workflow.record'].search([('code', '=', record.code)])) + if employee_id: + workflow_id.write({'employee_ids': [(6, 0, [employee_id])]}) + if workflow_id.users_ids: + last_user = workflow_id.users_ids[-1] + if last_user.employee_ids.id != employee_id: + workflow_id.write({'users_ids': [(3, last_user.id)]}) + log_ids[-1].unlink() + log_ids[-2].write({'approval_state': '1'}) + record.write({'state': log_ids[-2].name}) \ No newline at end of file diff --git a/soong_workflow/wizard/soong_bounced_wizard_views.xml b/soong_workflow/wizard/soong_bounced_wizard_views.xml index f57e80d69..118c68c08 100644 --- a/soong_workflow/wizard/soong_bounced_wizard_views.xml +++ b/soong_workflow/wizard/soong_bounced_wizard_views.xml @@ -8,7 +8,8 @@

确认要收回吗?

- + +