summaryrefslogtreecommitdiff
path: root/indoteknik_api/models/res_users.py
blob: c4e19bf31b541b1d20220e88849c8f2ac9f0edd4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
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