from odoo import models, fields from odoo.exceptions import UserError class UserCompanyRequest(models.Model): _name = 'user.company.request' _rec_name = 'user_id' user_id = fields.Many2one('res.partner', string='User') user_company_id = fields.Many2one('res.partner', string='Company') user_input = fields.Char(string='User Input') is_approve = fields.Selection([ ('approved', 'Approve'), ('rejected', 'Reject'), ], string='Approval') def write(self, vals): is_approve = vals.get('is_approve') if self.is_approve and is_approve: raise UserError('Tidak dapat mengubah approval yang sudah diisi') if not self.is_approve and is_approve: if is_approve == 'approved': self.user_id.parent_id = self.user_company_id.id else: new_company = self.env['res.partner'].create({ 'name': self.user_input }) self.user_id.parent_id = new_company.id return super(UserCompanyRequest, self).write(vals)