32 lines
1.4 KiB
Python
32 lines
1.4 KiB
Python
# -*- coding: utf-8 -*-
|
|
from odoo import fields, models, api
|
|
from odoo.exceptions import UserError, ValidationError
|
|
from datetime import datetime, date, time, timedelta
|
|
|
|
|
|
class SoongBouncedWizard(models.Model):
|
|
_name = 'soong.bounced.wizard'
|
|
_description = '收回弹窗'
|
|
|
|
res_id = fields.Integer()
|
|
res_model = fields.Char()
|
|
|
|
def action_bounced(self):
|
|
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)]})
|
|
related_record = self.env[self.res_model].browse(self.res_id)
|
|
if hasattr(related_record, 'self_users_ids'):
|
|
related_record.self_users_ids = [(6, 0, [self.env.user.id])]
|
|
log_ids[-1].unlink()
|
|
log_ids[-2].write({'approval_state': '1'})
|
|
record.write({'state': log_ids[-2].name}) |