from odoo import models, fields from odoo.exceptions import UserError from odoo.http import request 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): user = self.get_user_by_email(self.user_id.email) user.user_company_name = self.user_input 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 self.user_id.customer_type = self.user_company_id.customer_type self.user_id.npwp = self.user_company_id.npwp self.user_id.sppkp = self.user_company_id.sppkp self.user_id.nama_wajib_pajak = self.user_company_id.nama_wajib_pajak self.user_id.alamat_lengkap_text = self.user_company_id.alamat_lengkap_text self.user_id.industry_id = self.user_company_id.industry_id.id self.user_id.company_type_id = self.user_company_id.company_type_id.id self.user_id.user_id = self.user_company_id.user_id self.user_id.property_account_receivable_id = self.user_company_id.property_account_receivable_id self.user_id.property_account_payable_id = self.user_company_id.property_account_payable_id self.user_company_id.active = True # tambahkan send email kalau bisnis berhsil di buat user.send_company_request_approve_mail() else: new_company = self.env['res.partner'].create({ 'name': self.user_input }) self.user_id.parent_id = new_company.id # tambahkan send email kalau bisnis ditolak di buat user.send_company_request_reject_mail() return super(UserCompanyRequest, self).write(vals) def get_user_by_email(self, email): return request.env['res.users'].search([ ('login', '=', email), ('active', 'in', [True, False]) ])