company.py
2.05 KB
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
import logging
from odoo import models, fields, api
class Company(models.Model):
_name = 'res.company'
_inherit = 'res.company'
test = fields.Char()
district_id = fields.Many2one(
'res.district', compute='_compute_address', inverse='_inverse_district',
string="Kab/Kota", domain="[('state_id', '=?', state_id)]"
)
sub_district_id = fields.Many2one(
'res.district.sub', compute='_compute_address', inverse='_inverse_sub_district',
string="Kab/Kota", domain="[('district_id', '=?', district_id)]"
)
village_id = fields.Many2one(
'res.district.village', compute='_compute_address', inverse='_inverse_village',
string="Desa/Kelurahan", domain="[('sub_district_id', '=?', sub_district_id)]"
)
def _get_company_address_field_names(self):
""" Return a list of fields coming from the address partner to match
on company address fields. Fields are labeled same on both models. """
return ['street', 'street2', 'city', 'zip', 'state_id', 'country_id',
'district_id', 'sub_district_id', 'village_id']
def _inverse_district(self):
for company in self:
company.partner_id.district_id = company.district_id
def _inverse_sub_district(self):
for company in self:
company.partner_id.sub_district_id = company.sub_district_id
def _inverse_village(self):
for company in self:
company.partner_id.village_id = company.village_id
@api.onchange('village_id')
def _onchange_village(self):
if self.village_id.sub_district_id:
self.sub_district_id = self.village_id.sub_district_id
@api.onchange('sub_district_id')
def _onchange_sub_district(self):
if self.sub_district_id.district_id:
self.district_id = self.sub_district_id.district_id
@api.onchange('district_id')
def _onchange_district(self):
if self.district_id.state_id:
self.state_id = self.district_id.state_id