# -*- coding: utf-8 -*- from odoo import api, fields, models, tools, _ from odoo.exceptions import UserError class ApprovalCategory(models.Model): _inherit = 'approval.category' _description = '审批框架拓展' approval_department_ids = fields.Many2many('hr.department', string="审批所属部门") approval_process_id = fields.Many2one('approval.process', string="审批流程") is_enable = fields.Boolean(string="启用", default=True) category_start_date = fields.Date(string="开始日期", default=fields.Date.today()) category_end_date = fields.Date(string="结束日期") new_approval_type = fields.Selection( string='审批分类', selection=[('business', '业务单据'), ('oa', 'OA审批'), ('branch', '分支'), ], default="oa") def unlink(self): for res in self: if res.new_approval_type == 'business' or res.new_approval_type == 'branch': raise UserError('不允许删除业务/分支审批!') return super(ApprovalCategory, self).unlink() @api.onchange('approval_process_id') def onchange_approval_process_ids(self): for record in self: category_approver = [] record.approver_ids = None for approver in record.approval_process_id.user_ids: if len(approver.user_ids) > 1: for user in approver.user_ids: category_approver.append((0, 0, { 'user_id': user.id, 'role_id': approver.approval_user_role_id.id, 'category_id': record.id, })) else: category_approver.append((0, 0, { 'user_id': approver.user_ids.id, 'role_id': approver.approval_user_role_id.id, 'category_id': record.id, })) record.approver_ids = category_approver