partner.py 1.74 KB
from odoo import fields, models, api

ADDRESS_FIELDS = ('street', 'street2', 'zip', 'city', 'state_id', 'country_id',
                  'village_id', 'sub_district_id', 'district_id')


class ResPartner(models.Model):
    _inherit = 'res.partner'
    district_id = fields.Many2one('res.district', string="Kabupaten/Kota")
    sub_district_id = fields.Many2one('res.district.sub', string="Kecamatan")
    village_id = fields.Many2one('res.district.village', string="Desa/Kelurahan")

    @api.model
    def _address_fields(self):
        """Returns the list of address fields that are synced from the parent."""
        return list(ADDRESS_FIELDS)

    @api.onchange('village_id')
    def _onchange_village_id(self):
        if self.village_id and self.village_id.sub_district_id != self.sub_district_id:
            self.sub_district_id = self.village_id.sub_district_id

    @api.onchange('sub_district_id')
    def _onchange_sub_district_id(self):
        if self.sub_district_id and self.sub_district_id.district_id != self.district_id:
            self.district_id = self.sub_district_id.district_id
        if not self.sub_district_id or self.sub_district_id != self.village_id.sub_district_id:
            self.village_id = False

    @api.onchange('district_id')
    def _onchange_district_id(self):
        if self.district_id and self.district_id.state_id != self.state_id:
            self.state_id = self.district_id.state_id
        if not self.district_id or self.district_id != self.sub_district_id.district_id:
            self.sub_district_id = False

    @api.onchange('state_id')
    def _onchange_state_id(self):
        if not self.state_id or self.state_id != self.district_id.state_id:
            self.district_id = False