Merge pull request #30757 from nextchamp-saqib/einv-401-fix
fix(india): 401 & 403 client error while generating IRN
diff --git a/erpnext/regional/india/e_invoice/utils.py b/erpnext/regional/india/e_invoice/utils.py
index a97ad79..a3abe86 100644
--- a/erpnext/regional/india/e_invoice/utils.py
+++ b/erpnext/regional/india/e_invoice/utils.py
@@ -12,6 +12,7 @@
import frappe
import jwt
+import requests
from frappe import _, bold
from frappe.core.page.background_jobs.background_jobs import get_info
from frappe.integrations.utils import make_get_request, make_post_request
@@ -829,14 +830,25 @@
return self.e_invoice_settings.auth_token
def make_request(self, request_type, url, headers=None, data=None):
- if request_type == "post":
- res = make_post_request(url, headers=headers, data=data)
- else:
- res = make_get_request(url, headers=headers, data=data)
+ try:
+ if request_type == "post":
+ res = make_post_request(url, headers=headers, data=data)
+ else:
+ res = make_get_request(url, headers=headers, data=data)
+
+ except requests.exceptions.HTTPError as e:
+ if e.response.status_code in [401, 403] and not hasattr(self, "token_auto_refreshed"):
+ self.auto_refresh_token()
+ headers = self.get_headers()
+ return self.make_request(request_type, url, headers, data)
self.log_request(url, headers, data, res)
return res
+ def auto_refresh_token(self):
+ self.fetch_auth_token()
+ self.token_auto_refreshed = True
+
def log_request(self, url, headers, data, res):
headers.update({"password": self.credentials.password})
request_log = frappe.get_doc(