from odoo import api, models
from odoo.addons.iap import jsonrpc

DEFAULT_IAP_ENDPOINT = "https://l10n-in-edi.api.odoo.com"
DEFAULT_IAP_TEST_ENDPOINT = "https://l10n-in-edi-demo.api.odoo.com"
IAP_SERVICE_NAME = 'l10n_in_edi'
TEST_GST_NUMBER = '24FANCY1234AAZA'


class IapAccount(models.Model):
    _inherit = 'iap.account'

    @api.model
    def _l10n_in_connect_to_server(self, is_production, params, url_path, config_parameter, timeout=25):
        IrConfigParam = self.env['ir.config_parameter'].sudo()
        user_token = self.get(IAP_SERVICE_NAME)
        params.update({
            "dbuuid": IrConfigParam.get_param("database.uuid"),
            "account_token": user_token.sudo().account_token,
        })
        gsp_provider = IrConfigParam.get_param("l10n_in.gsp_provider")
        if gsp_provider:
            params.update({"gsp_provider": gsp_provider})
        if params.get('gstin') == TEST_GST_NUMBER:
            default_endpoint = DEFAULT_IAP_TEST_ENDPOINT
        else:
            default_endpoint = DEFAULT_IAP_ENDPOINT if is_production else DEFAULT_IAP_TEST_ENDPOINT
        endpoint = IrConfigParam.get_param(config_parameter, default_endpoint)
        url = "%s%s" % (endpoint, url_path)
        return jsonrpc(url, params=params, timeout=timeout)
