summaryrefslogtreecommitdiff
path: root/addons/l10n_in/models/res_partner.py
diff options
context:
space:
mode:
Diffstat (limited to 'addons/l10n_in/models/res_partner.py')
-rw-r--r--addons/l10n_in/models/res_partner.py46
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']