from odoo import models from odoo.http import request class ResUsers(models.Model): _inherit = 'res.users' def api_single_response(self, res_user, with_detail=''): config = self.env['ir.config_parameter'] partner = res_user.partner_id main_partner = partner.get_main_parent() WEB_ROLE_ALIAS = { 'manager': 2, 'director': 3 } payment_term = ( main_partner.previous_payment_term_id if main_partner.is_cbd_locked else main_partner.property_payment_term_id ) partner_tempo = False is_tempo_request = request.env['user.pengajuan.tempo.request'].search([('user_company_id', '=', main_partner.id)], limit=1) tempo_progres = ( 'review' if is_tempo_request.state_tempo in ('draft', 'approval_sales', 'approval_finance') else 'rejected' if is_tempo_request.state_tempo == 'reject' else 'approve' if is_tempo_request.state_tempo == 'approval_director' else '' ) if payment_term: partner_tempo = True if 'tempo' in payment_term.name.lower() else False data = { 'id': res_user.id, 'parent_id': res_user.parent_id.id or None, 'parent_name': res_user.parent_id.name or None, 'site': partner.site_id.name or None, 'partner_id': partner.id, 'name': res_user.name, 'email': res_user.login, 'phone': res_user.phone or '', 'mobile': res_user.mobile or '', 'external': res_user.share, 'company': main_partner.company_type == 'company', 'pricelist': res_user.property_product_pricelist.sudo().get_tier_name(), 'web_role': WEB_ROLE_ALIAS[partner.web_role] if partner.web_role else None, 'feature': { 'so_approval': main_partner.use_so_approval, 'only_ready_stock': main_partner.use_only_ready_stock }, 'partner_tempo': partner_tempo, 'tempo_progres': tempo_progres } return data def api_address_response(self, user): data = { 'id': user.id, 'type': user.type or '', 'name': user.name or '', 'mobile': user.mobile or '', 'phone': user.phone or '', 'email': user.email or '', 'street': user.street or '', 'street2': user.street2 or '', 'city': None, 'state_id': 0, 'district': None, 'sub_district': None, 'zip': user.zip or '', 'company_type_id': user.company_type_id.id or '', 'industry_id': user.industry_id.id or '', 'tax_name': user.nama_wajib_pajak or '', 'npwp': user.npwp or '', 'sppkp': user.sppkp or '', 'rajaongkir_city_id': user.kecamatan_id.rajaongkir_id or 0, 'alamat_wajib_pajak': user.alamat_lengkap_text or '', 'alamat_bisnis': user.street or '', 'company_type': user.customer_type or 'nonpkp', 'longtitude': user.longtitude or None, 'latitude': user.latitude or None, 'address_map': user.address_map or None, } if user.state_id: data['state_id'] = { 'id': user.state_id.id, 'name': user.state_id.name } or 0 if user.kota_id: data['city'] = { 'id': user.kota_id.id, 'name': user.kota_id.name } or None if user.kecamatan_id: data['district'] = { 'id': user.kecamatan_id.id, 'name': user.kecamatan_id.name } if user.kelurahan_id: data['sub_district'] = { 'id': user.kelurahan_id.id, 'name': user.kelurahan_id.name } return data