diff options
Diffstat (limited to 'addons/l10n_in/models/res_partner.py')
| -rw-r--r-- | addons/l10n_in/models/res_partner.py | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/addons/l10n_in/models/res_partner.py b/addons/l10n_in/models/res_partner.py new file mode 100644 index 00000000..f14e3953 --- /dev/null +++ b/addons/l10n_in/models/res_partner.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import api, fields, models, _ + + +class ResPartner(models.Model): + _inherit = 'res.partner' + + l10n_in_gst_treatment = fields.Selection([ + ('regular', 'Registered Business - Regular'), + ('composition', 'Registered Business - Composition'), + ('unregistered', 'Unregistered Business'), + ('consumer', 'Consumer'), + ('overseas', 'Overseas'), + ('special_economic_zone', 'Special Economic Zone'), + ('deemed_export', 'Deemed Export'), + ], string="GST Treatment") + + @api.onchange('company_type') + def onchange_company_type(self): + res = super().onchange_company_type() + if self.country_id and self.country_id.code == 'IN': + self.l10n_in_gst_treatment = (self.company_type == 'company') and 'regular' or 'consumer' + return res + + @api.onchange('country_id') + def _onchange_country_id(self): + res = super()._onchange_country_id() + if self.country_id and self.country_id.code != 'IN': + self.l10n_in_gst_treatment = 'overseas' + elif self.country_id and self.country_id.code == 'IN': + self.l10n_in_gst_treatment = (self.company_type == 'company') and 'regular' or 'consumer' + return res + + @api.onchange('vat') + def onchange_vat(self): + if self.vat and self.check_vat_in(self.vat): + state_id = self.env['res.country.state'].search([('l10n_in_tin', '=', self.vat[:2])], limit=1) + if state_id: + self.state_id = state_id + + @api.model + def _commercial_fields(self): + res = super()._commercial_fields() + return res + ['l10n_in_gst_treatment'] |
