company.py 2.05 KB
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