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
111
112
113
114
115
|
from odoo import models, fields, api
from odoo.exceptions import UserError, ValidationError
from datetime import datetime
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')
])
email_finance = fields.Char(string='Email Finance')
email_sales = fields.Char(string='Email Sales')
user_payment_terms_sales = fields.Many2one('res.users', string='Users Update Payment Terms')
date_payment_terms_sales = fields.Datetime(string='Date Update Payment Terms')
user_payment_terms_purchase = fields.Many2one('res.users', string='Users Update Payment Terms')
date_payment_terms_purchase = fields.Datetime(string='Date Update Payment Terms')
@api.constrains('property_payment_term_id')
def updated_by_payment_term(self):
for rec in self:
rec.user_payment_terms_sales = self.env.user.id
rec.date_payment_terms_sales = datetime.utcnow()
@api.constrains('property_supplier_payment_term_id')
def updated_by_payment_term(self):
for rec in self:
rec.user_payment_terms_purchase = self.env.user.id
rec.date_payment_terms_purchase = datetime.utcnow()
@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')
|