73 lines
3.0 KiB
Python
73 lines
3.0 KiB
Python
# Part of Flectra See LICENSE file for full copyright and licensing details.
|
|
|
|
from flectra import api, fields, models
|
|
|
|
|
|
class ResConfigSettings(models.TransientModel):
|
|
_inherit = 'res.config.settings'
|
|
|
|
country_id = fields.Many2one('res.country', string='Country',
|
|
compute='_get_gst_details',
|
|
inverse='_set_gst_details')
|
|
state_id = fields.Many2one('res.country.state', string='State',
|
|
domain="[('country_id', '=', country_id)]",
|
|
compute='_get_gst_details',
|
|
inverse='_set_gst_details')
|
|
gstin_number = fields.Char(string='GSTIN', size=15,
|
|
compute='_get_gst_details',
|
|
inverse='_set_gst_details')
|
|
gst_type = fields.Selection([('regular', 'Regular'),
|
|
('unregistered', 'Unregistered'),
|
|
('composite', 'Composite'),
|
|
('volunteer', 'Volunteer')],
|
|
string='GST Type',
|
|
compute='_get_gst_details',
|
|
inverse='_set_gst_details')
|
|
gst_applied = fields.Boolean(string='GST Applied')
|
|
|
|
@api.multi
|
|
@api.depends('company_id', 'gst_applied')
|
|
def _get_gst_details(self):
|
|
""" Get GST configuration details from company """
|
|
self.ensure_one()
|
|
self.country_id = self.company_id.country_id.id
|
|
self.state_id = self.company_id.state_id.id
|
|
self.gstin_number = self.company_id.vat
|
|
self.gst_type = self.company_id.gst_type
|
|
|
|
@api.multi
|
|
def _set_gst_details(self):
|
|
""" Set GST configuration details in a company """
|
|
self.ensure_one()
|
|
if self.gst_type:
|
|
partner = self.company_id.partner_id
|
|
partner.write({
|
|
'country_id': self.country_id.id,
|
|
'state_id': self.state_id.id,
|
|
'vat': self.gstin_number,
|
|
'gst_company_partner': True,
|
|
})
|
|
self.company_id.gst_type = self.gst_type
|
|
|
|
@api.onchange('company_id')
|
|
def onchange_company_id(self):
|
|
self.gst_applied = False
|
|
if self.company_id and self.company_id.gst_type:
|
|
self.gst_applied = True
|
|
|
|
@api.onchange('gstin_number', 'country_id')
|
|
def get_state(self):
|
|
""" Get state value automatically from GSTIN and country """
|
|
if self.gstin_number and self.country_id:
|
|
state_code = self.gstin_number[:2]
|
|
state_id = self.env['res.country.state'].search([
|
|
('l10n_in_tin', '=', state_code),
|
|
('country_id', '=', self.country_id.id)])
|
|
self.state_id = state_id
|
|
|
|
@api.onchange('gst_type')
|
|
def onchange_gst_type(self):
|
|
""" If gst type is unregistered then GSTIN Number should be blank"""
|
|
if self.gst_type == 'unregistered':
|
|
self.gstin_number = False
|