summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models/res_partner.py
blob: eee19b2f1136f6b438208e692fa80629eb13f9f4 (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
from odoo import models, fields, api
from odoo.exceptions import UserError, ValidationError

class GroupPartner(models.Model):
    _name = 'group.partner'

    name = fields.Char(string='Name')

class ResPartner(models.Model):
    _inherit = 'res.partner'

    reference_number = fields.Char(string="Reference Number")
    company_type_id = fields.Many2one('res.partner.company_type', string='Company Type')
    custom_pricelist_id = fields.Many2one('product.pricelist', string='Price Matrix')
    group_partner_id = fields.Many2one('group.partner', string='Group Partner')
    customer_type = fields.Selection([
        ('pkp', 'PKP'),
        ('nonpkp', 'Non PKP')
    ])
    sppkp = fields.Char(string="SPPKP")
    counter = fields.Integer(string="Counter", default=0)
    leadtime = fields.Integer(string="Leadtime", default=0)
    digital_invoice_tax = fields.Boolean(string="Digital Invoice & Faktur Pajak")
    is_potential = fields.Boolean(string='Potential')
    pakta_integritas = fields.Boolean(string='Pakta Integritas')
    
    use_so_approval = fields.Boolean(string='Use SO Approval')
    use_only_ready_stock = fields.Boolean(string='Use Only Ready Stock')
    web_role = fields.Selection([
        ('manager', 'Manager'),
        ('director', 'Director'),
        ('procurement', 'Procurement'),
    ], string='Web Role')
    site_id = fields.Many2one('res.partner.site', string='Site')
    main_parent_id = fields.Many2one('res.partner', string='Main Parent', compute='_compute_main_parent_id')
    pareto_status = fields.Selection([
        ('PR', 'Pareto Repeating'),
        ('PPR', 'Potensi Pareto Repeating'),
        ('PNR', 'Pareto Non Repeating'),
        ('NP', 'Non Pareto')
    ])
    
    @api.onchange('site_id')
    def _onchange_site_id(self):
        for rec in self:
            if not rec.site_id: continue
            site = rec.site_id

            rec.street = site.street
            rec.street2 = site.street2
            rec.city = site.city
            rec.state_id = site.state_id
            rec.country_id = site.country_id
            rec.zip = site.zip
    
    def get_main_parent(self):
        partner = self
        
        while partner.parent_id:
            partner = partner.parent_id
        
        return partner
    
    def _compute_main_parent_id(self):
        for partner in self:
            partner.main_parent_id = partner.get_main_parent()

    def get_child_ids(self):
        partner = self.env['res.partner'].search([('id', '=', self.id)], limit=1)
        partner_child_ids = [x['id'] for x in partner.child_ids] + [partner.id]
        if partner.parent_id:
            partner_child_ids += [x['id'] for x in partner.parent_id.child_ids]
            partner_child_ids += [partner.parent_id.id]
        return partner_child_ids
    
    def get_approve_partner_ids(self, type=False):
        parent = self.parent_id or self
        partners = self.search([('parent_id', '=', parent.id), ('web_role', '!=', False)])
        
        if type == 'email_comma_sep':
            return ",".join([x.email for x in partners])
        
        return partners

    @api.constrains('kota_id')
    def update_product_solr_flag(self):
        for partner in self:
            partner.city = partner.kota_id.name

    def unlink(self):
        if self._name == 'res.partner':
            raise UserError('Maaf anda tidak bisa delete contact')