From 72cf279a646f32b4b9666e386f552bed53d32472 Mon Sep 17 00:00:00 2001 From: Ali <010109ali@gmail.com> Date: Thu, 12 Feb 2026 13:48:29 +0400 Subject: [PATCH] refactor: rename EMAS to AMAS throughout application MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit renames all references from "emas" to "amas" in the invoice_az application, including: **DocType Changes:** - Renamed DocType: "Emas Employees" → "Amas Employees" - Updated autoname: EMAS-EMP-{####} → AMAS-EMP-{####} - Updated Python class: EmasEmployees → AmasEmployees **Files Renamed:** - invoice_az/emas_api.py → amas_api.py - client/emas_employees.js → amas_employees.js - doctype/emas_employees/ → amas_employees/ (entire directory) **Code Updates:** - Python: All EMAS_ constants → AMAS_ constants - Python: All emas_ functions → amas_ functions - JavaScript: All emas references → amas references - API paths: invoice_az.emas_api → invoice_az.amas_api **Database Migration:** - Asan Login fields renamed: - emas_section → amas_section - emas_auth_status → amas_auth_status - emas_account_name → amas_account_name - emas_account_number → amas_account_number - column_break_emas → column_break_amas - emas_account_oid → amas_account_oid - emas_last_activity → amas_last_activity - emas_session → amas_session - emas_csrf_token → amas_csrf_token **Preserved (Not Changed):** - User-facing text with "ƏMAS" (Azerbaijani ə character) - API requirements: ":eroom:emas", "domain": "emas" - Report ID: "emasValidEmploymentContractOnline" Co-Authored-By: Claude Sonnet 4.5 --- invoice_az/{emas_api.py => amas_api.py} | 316 +++++++++--------- .../{emas_employees.js => amas_employees.js} | 2 +- invoice_az/client/employee.js | 22 +- invoice_az/hooks.py | 4 +- .../__init__.py | 0 .../amas_employees.js} | 2 +- .../amas_employees.json} | 6 +- .../amas_employees.py} | 2 +- .../amas_employees_list.js} | 8 +- .../doctype/asan_login/asan_login.js | 128 +++---- .../doctype/asan_login/asan_login.json | 38 +-- 11 files changed, 264 insertions(+), 264 deletions(-) rename invoice_az/{emas_api.py => amas_api.py} (88%) rename invoice_az/client/{emas_employees.js => amas_employees.js} (98%) rename invoice_az/invoice_az/doctype/{emas_employees => amas_employees}/__init__.py (100%) rename invoice_az/invoice_az/doctype/{emas_employees/emas_employees.js => amas_employees/amas_employees.js} (94%) rename invoice_az/invoice_az/doctype/{emas_employees/emas_employees.json => amas_employees/amas_employees.json} (99%) rename invoice_az/invoice_az/doctype/{emas_employees/emas_employees.py => amas_employees/amas_employees.py} (83%) rename invoice_az/invoice_az/doctype/{emas_employees/emas_employees_list.js => amas_employees/amas_employees_list.js} (97%) diff --git a/invoice_az/emas_api.py b/invoice_az/amas_api.py similarity index 88% rename from invoice_az/emas_api.py rename to invoice_az/amas_api.py index ee5bcb5..3f78e15 100644 --- a/invoice_az/emas_api.py +++ b/invoice_az/amas_api.py @@ -20,36 +20,36 @@ from urllib.parse import unquote import frappe import requests -# Increase header limit - EMAS returns many Set-Cookie headers +# Increase header limit - AMAS returns many Set-Cookie headers http.client._MAXHEADERS = 1000 -# EMAS Base URL -EMAS_BASE_URL = "https://eroom.e-social.gov.az" +# AMAS Base URL +AMAS_BASE_URL = "https://eroom.e-social.gov.az" -# EMAS API Endpoints -EMAS_SSO_CALLBACK = "/ssoAsan/v2" -EMAS_CHANGE_ACCOUNT = "/service/aas.changeAccount" -EMAS_EXECUTE_REPORT = "/service/magusbi.executeReport" -EMAS_GET_DOMAINS = "/service/aas.domains" -EMAS_GET_ACCOUNTS = "/request/accounts" +# AMAS API Endpoints +AMAS_SSO_CALLBACK = "/ssoAsan/v2" +AMAS_CHANGE_ACCOUNT = "/service/aas.changeAccount" +AMAS_EXECUTE_REPORT = "/service/magusbi.executeReport" +AMAS_GET_DOMAINS = "/service/aas.domains" +AMAS_GET_ACCOUNTS = "/request/accounts" # MyGovID OAuth API MYGOVID_API_URL = "https://api.mygovid.gov.az" MYGOVID_AUTH_CODES_URL = f"{MYGOVID_API_URL}/ssoauth/oauth2/auth/codes" -# EMAS OAuth Client ID (from HAR analysis) -EMAS_CLIENT_ID = "64942e33ec8d49059333a1e0ebad7fe2" -EMAS_REDIRECT_URI = f"{EMAS_BASE_URL}{EMAS_SSO_CALLBACK}" +# AMAS OAuth Client ID (from HAR analysis) +AMAS_CLIENT_ID = "64942e33ec8d49059333a1e0ebad7fe2" +AMAS_REDIRECT_URI = f"{AMAS_BASE_URL}{AMAS_SSO_CALLBACK}" -# EMAS request headers -EMAS_HEADERS = { +# AMAS request headers +AMAS_HEADERS = { "Accept": "text/plain, */*; q=0.01", "Accept-Language": "en-US,en;q=0.9", "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", "X-Requested-With": "XMLHttpRequest", - "Origin": EMAS_BASE_URL, - "Referer": f"{EMAS_BASE_URL}/", + "Origin": AMAS_BASE_URL, + "Referer": f"{AMAS_BASE_URL}/", "X-MAGUS-RECAPTCHA": "null", } @@ -63,7 +63,7 @@ MYGOVID_HEADERS = { def generate_request_number(): - """Generate a unique request number for EMAS API calls""" + """Generate a unique request number for AMAS API calls""" # Format: 1XXXXXXXXXXXXXXX (alphanumeric) chars = string.ascii_uppercase + string.digits return "1" + "".join(random.choices(chars, k=13)) @@ -85,12 +85,12 @@ def parse_cookies_from_response(response): @frappe.whitelist() -def connect_emas(asan_login_name): +def connect_amas(asan_login_name): """ - Connect to EMAS using MyGovID JWT token. + Connect to AMAS using MyGovID JWT token. - This is the main entry point for EMAS connection. - If MyGovID token exists - uses it to get EMAS session automatically. + This is the main entry point for AMAS connection. + If MyGovID token exists - uses it to get AMAS session automatically. If not - returns error asking user to login with MyGovID first. """ try: @@ -105,7 +105,7 @@ def connect_emas(asan_login_name): } # Step 1: Get authorization code from MyGovID - auth_code_result = get_emas_auth_code(doc.mygovid_token) + auth_code_result = get_amas_auth_code(doc.mygovid_token) if not auth_code_result.get("success"): # Token might be expired @@ -129,20 +129,20 @@ def connect_emas(asan_login_name): # Step 3: Save session data (but don't save account yet - user must select) session_data = session_result.get("session_data") - doc.emas_session = json.dumps(session_data) - doc.emas_csrf_token = session_data.get("xsrf_token") - doc.emas_auth_status = "Connected" - doc.emas_last_activity = frappe.utils.now_datetime() + doc.amas_session = json.dumps(session_data) + doc.amas_csrf_token = session_data.get("xsrf_token") + doc.amas_auth_status = "Connected" + doc.amas_last_activity = frappe.utils.now_datetime() # Clear any previous account selection - user must choose - doc.emas_account_oid = None - doc.emas_account_name = None - doc.emas_account_number = None + doc.amas_account_oid = None + doc.amas_account_name = None + doc.amas_account_number = None doc.save(ignore_permissions=True) frappe.db.commit() # Step 4: Fetch available accounts from /request/accounts - accounts_result = get_emas_accounts(asan_login_name) + accounts_result = get_amas_accounts(asan_login_name) accounts = accounts_result.get("accounts", []) if accounts_result.get("success") else [] return { @@ -161,7 +161,7 @@ def connect_emas(asan_login_name): return {"success": False, "message": f"Error: {str(e)}"} -def get_emas_auth_code(mygovid_token): +def get_amas_auth_code(mygovid_token): """ Get EMAS authorization code using MyGovID JWT token. @@ -172,10 +172,10 @@ def get_emas_auth_code(mygovid_token): state = generate_state() payload = { - "client_id": EMAS_CLIENT_ID, + "client_id": AMAS_CLIENT_ID, "state": state, "response_type": "code", - "redirect_uri": EMAS_REDIRECT_URI + "redirect_uri": AMAS_REDIRECT_URI } headers = MYGOVID_HEADERS.copy() @@ -266,7 +266,7 @@ def exchange_code_for_session(code, state): """ try: # Build SSO callback URL - callback_url = f"{EMAS_REDIRECT_URI}?code={code}&state={state}" + callback_url = f"{AMAS_REDIRECT_URI}?code={code}&state={state}" # Create session to capture cookies session = requests.Session() @@ -347,15 +347,15 @@ def exchange_code_for_session(code, state): return {"success": False, "message": f"Error: {str(e)}"} -def get_emas_session_data(asan_login_name): +def get_amas_session_data(asan_login_name): """Get EMAS session data from document""" doc = frappe.get_doc("Asan Login", asan_login_name) - if not doc.emas_session: + if not doc.amas_session: return None try: - return json.loads(doc.emas_session) + return json.loads(doc.amas_session) except (json.JSONDecodeError, TypeError): return None @@ -368,7 +368,7 @@ def refresh_csrf_token_internal(asan_login_name): """ import re - session_data = get_emas_session_data(asan_login_name) + session_data = get_amas_session_data(asan_login_name) if not session_data: return None, None @@ -378,13 +378,13 @@ def refresh_csrf_token_internal(asan_login_name): try: # Make GET request to dashboard to get fresh CSRF token response = requests.get( - f"{EMAS_BASE_URL}/core.dashboard", + f"{AMAS_BASE_URL}/core.dashboard", cookies=cookies, timeout=30 ) if response.status_code != 200: - return session_data, doc.emas_csrf_token + return session_data, doc.amas_csrf_token # Update cookies from response for cookie in response.cookies: @@ -402,7 +402,7 @@ def refresh_csrf_token_internal(asan_login_name): csrf_token = unquote(cookies["XSRF-TOKEN"]) if csrf_token: - doc.emas_csrf_token = csrf_token + doc.amas_csrf_token = csrf_token session_data["xsrf_token"] = csrf_token # Update token from page config if available @@ -411,8 +411,8 @@ def refresh_csrf_token_internal(asan_login_name): session_data["token"] = html_config.get("token") # Save updated session - doc.emas_session = json.dumps(session_data) - doc.emas_last_activity = frappe.utils.now_datetime() + doc.amas_session = json.dumps(session_data) + doc.amas_last_activity = frappe.utils.now_datetime() doc.save(ignore_permissions=True) frappe.db.commit() @@ -420,10 +420,10 @@ def refresh_csrf_token_internal(asan_login_name): except Exception as e: frappe.log_error(f"CSRF refresh error: {str(e)}", "ƏMAS API Error") - return session_data, doc.emas_csrf_token + return session_data, doc.amas_csrf_token -def make_emas_request(asan_login_name, endpoint, data): +def make_amas_request(asan_login_name, endpoint, data): """ Make an authenticated request to EMAS API. @@ -443,8 +443,8 @@ def make_emas_request(asan_login_name, endpoint, data): doc = frappe.get_doc("Asan Login", asan_login_name) # Build request headers with fresh CSRF token - headers = EMAS_HEADERS.copy() - csrf_token = csrf_token or doc.emas_csrf_token or session_data.get("xsrf_token", "") + headers = AMAS_HEADERS.copy() + csrf_token = csrf_token or doc.amas_csrf_token or session_data.get("xsrf_token", "") headers["X-CSRF-TOKEN"] = csrf_token headers["MAGUS-REQUEST-NUMBER"] = generate_request_number() @@ -463,7 +463,7 @@ def make_emas_request(asan_login_name, endpoint, data): data["currentTabToken"] = token try: - url = f"{EMAS_BASE_URL}{endpoint}" + url = f"{AMAS_BASE_URL}{endpoint}" response = requests.post( url, @@ -482,11 +482,11 @@ def make_emas_request(asan_login_name, endpoint, data): # Update CSRF token if changed - IMPORTANT: decode URL-encoded token! if "XSRF-TOKEN" in new_cookies: decoded_token = unquote(new_cookies["XSRF-TOKEN"]) - doc.emas_csrf_token = decoded_token + doc.amas_csrf_token = decoded_token session_data["xsrf_token"] = decoded_token - doc.emas_session = json.dumps(session_data) - doc.emas_last_activity = frappe.utils.now_datetime() + doc.amas_session = json.dumps(session_data) + doc.amas_last_activity = frappe.utils.now_datetime() doc.save(ignore_permissions=True) frappe.db.commit() @@ -525,7 +525,7 @@ def make_emas_request(asan_login_name, endpoint, data): # Update token if present in response if result.get("token"): session_data["token"] = result.get("token") - doc.emas_session = json.dumps(session_data) + doc.amas_session = json.dumps(session_data) doc.save(ignore_permissions=True) frappe.db.commit() @@ -543,7 +543,7 @@ def make_emas_request(asan_login_name, endpoint, data): "message": "CSRF token expired. Please reconnect to ƏMAS." } elif response.status_code == 401: - doc.emas_auth_status = "Error" + doc.amas_auth_status = "Error" doc.save(ignore_permissions=True) frappe.db.commit() return { @@ -568,7 +568,7 @@ def make_emas_request(asan_login_name, endpoint, data): @frappe.whitelist() -def get_emas_accounts(asan_login_name): +def get_amas_accounts(asan_login_name): """ Get list of organizations/accounts user has access to in EMAS. Fetches from /request/accounts endpoint. @@ -583,8 +583,8 @@ def get_emas_accounts(asan_login_name): doc = frappe.get_doc("Asan Login", asan_login_name) # Build request headers with fresh CSRF token - headers = EMAS_HEADERS.copy() - csrf_token = csrf_token or doc.emas_csrf_token or session_data.get("xsrf_token", "") + headers = AMAS_HEADERS.copy() + csrf_token = csrf_token or doc.amas_csrf_token or session_data.get("xsrf_token", "") headers["X-CSRF-TOKEN"] = csrf_token headers["MAGUS-REQUEST-NUMBER"] = generate_request_number() @@ -604,7 +604,7 @@ def get_emas_accounts(asan_login_name): # Make request to /request/accounts response = requests.post( - f"{EMAS_BASE_URL}{EMAS_GET_ACCOUNTS}", + f"{AMAS_BASE_URL}{AMAS_GET_ACCOUNTS}", data=data, headers=headers, cookies=cookies, @@ -620,10 +620,10 @@ def get_emas_accounts(asan_login_name): # Update CSRF token if changed if "XSRF-TOKEN" in new_cookies: decoded_token = unquote(new_cookies["XSRF-TOKEN"]) - doc.emas_csrf_token = decoded_token + doc.amas_csrf_token = decoded_token session_data["xsrf_token"] = decoded_token - doc.emas_session = json.dumps(session_data) + doc.amas_session = json.dumps(session_data) doc.save(ignore_permissions=True) frappe.db.commit() @@ -649,7 +649,7 @@ def get_emas_accounts(asan_login_name): @frappe.whitelist() -def change_emas_account(asan_login_name, account_oid, account_name, account_number, role_name="chairman"): +def change_amas_account(asan_login_name, account_oid, account_name, account_number, role_name="chairman"): """ Select/switch to a specific organization account in EMAS. """ @@ -664,9 +664,9 @@ def change_emas_account(asan_login_name, account_oid, account_name, account_numb "domain": "emas" } - result = make_emas_request( + result = make_amas_request( asan_login_name, - EMAS_CHANGE_ACCOUNT, + AMAS_CHANGE_ACCOUNT, data ) @@ -685,19 +685,19 @@ def change_emas_account(asan_login_name, account_oid, account_name, account_numb # Store selected account info doc = frappe.get_doc("Asan Login", asan_login_name) - doc.emas_account_oid = account_oid - doc.emas_account_name = account_name - doc.emas_account_number = account_number - doc.emas_auth_status = "Connected" - doc.emas_last_activity = frappe.utils.now_datetime() + doc.amas_account_oid = account_oid + doc.amas_account_name = account_name + doc.amas_account_number = account_number + doc.amas_auth_status = "Connected" + doc.amas_last_activity = frappe.utils.now_datetime() # Update session with token from response token = response_data.get("token") if token: - session_data = get_emas_session_data(asan_login_name) + session_data = get_amas_session_data(asan_login_name) if session_data: session_data["token"] = token - doc.emas_session = json.dumps(session_data) + doc.amas_session = json.dumps(session_data) doc.save(ignore_permissions=True) frappe.db.commit() @@ -724,7 +724,7 @@ def get_employees_report(asan_login_name, offset=0, limit=100): try: doc = frappe.get_doc("Asan Login", asan_login_name) - if not doc.emas_account_oid: + if not doc.amas_account_oid: return { "success": False, "message": "No ƏMAS account selected. Please select an organization first." @@ -737,7 +737,7 @@ def get_employees_report(asan_login_name, offset=0, limit=100): "attributes[newExcel]": "true" } - result = make_emas_request(asan_login_name, EMAS_EXECUTE_REPORT, data) + result = make_amas_request(asan_login_name, AMAS_EXECUTE_REPORT, data) if not result.get("success"): return result @@ -780,7 +780,7 @@ def get_contract_stats(asan_login_name): try: doc = frappe.get_doc("Asan Login", asan_login_name) - if not doc.emas_account_oid: + if not doc.amas_account_oid: return { "success": False, "message": "No ƏMAS account selected. Please select an organization first." @@ -792,7 +792,7 @@ def get_contract_stats(asan_login_name): "pagination[limit]": "100" } - result = make_emas_request(asan_login_name, EMAS_EXECUTE_REPORT, data) + result = make_amas_request(asan_login_name, AMAS_EXECUTE_REPORT, data) if not result.get("success"): return result @@ -822,7 +822,7 @@ def get_contract_stats(asan_login_name): @frappe.whitelist() -def check_emas_connection(asan_login_name): +def check_amas_connection(asan_login_name): """ Check if EMAS connection is active. """ @@ -831,11 +831,11 @@ def check_emas_connection(asan_login_name): return { "success": True, - "emas_auth_status": doc.emas_auth_status or "Not Connected", - "emas_account_name": doc.emas_account_name, - "emas_account_number": doc.emas_account_number, - "emas_last_activity": str(doc.emas_last_activity) if doc.emas_last_activity else None, - "has_session": bool(doc.emas_session), + "amas_auth_status": doc.amas_auth_status or "Not Connected", + "amas_account_name": doc.amas_account_name, + "amas_account_number": doc.amas_account_number, + "amas_last_activity": str(doc.amas_last_activity) if doc.amas_last_activity else None, + "has_session": bool(doc.amas_session), "has_mygovid_token": bool(doc.mygovid_token) } @@ -848,14 +848,14 @@ def check_emas_connection(asan_login_name): @frappe.whitelist() -def refresh_emas_session(asan_login_name): +def refresh_amas_session(asan_login_name): """ Refresh EMAS session by making a GET request to get fresh CSRF token. Use this when you get CSRF_TOKEN_MISMATCH errors. """ try: doc = frappe.get_doc("Asan Login", asan_login_name) - session_data = get_emas_session_data(asan_login_name) + session_data = get_amas_session_data(asan_login_name) if not session_data: return { @@ -867,7 +867,7 @@ def refresh_emas_session(asan_login_name): # Make GET request to EMAS dashboard to get fresh CSRF token response = requests.get( - f"{EMAS_BASE_URL}/core.dashboard", + f"{AMAS_BASE_URL}/core.dashboard", cookies=cookies, timeout=30 ) @@ -889,7 +889,7 @@ def refresh_emas_session(asan_login_name): match = re.search(r'name="csrf-token" content="([^"]+)"', response.text) if match: new_csrf_token = match.group(1) - doc.emas_csrf_token = new_csrf_token + doc.amas_csrf_token = new_csrf_token session_data["xsrf_token"] = new_csrf_token # Also update from cookie if available @@ -897,7 +897,7 @@ def refresh_emas_session(asan_login_name): decoded_token = unquote(cookies["XSRF-TOKEN"]) # Prefer meta tag token, but update session data if not match: - doc.emas_csrf_token = decoded_token + doc.amas_csrf_token = decoded_token session_data["xsrf_token"] = decoded_token # Parse config for updated token @@ -905,8 +905,8 @@ def refresh_emas_session(asan_login_name): if html_config.get("token"): session_data["token"] = html_config.get("token") - doc.emas_session = json.dumps(session_data) - doc.emas_last_activity = frappe.utils.now_datetime() + doc.amas_session = json.dumps(session_data) + doc.amas_last_activity = frappe.utils.now_datetime() doc.save(ignore_permissions=True) frappe.db.commit() @@ -924,20 +924,20 @@ def refresh_emas_session(asan_login_name): @frappe.whitelist() -def disconnect_emas(asan_login_name): +def disconnect_amas(asan_login_name): """ Disconnect from EMAS by clearing session data. """ try: doc = frappe.get_doc("Asan Login", asan_login_name) - doc.emas_session = None - doc.emas_csrf_token = None - doc.emas_account_oid = None - doc.emas_account_name = None - doc.emas_account_number = None - doc.emas_auth_status = "Not Connected" - doc.emas_last_activity = None + doc.amas_session = None + doc.amas_csrf_token = None + doc.amas_account_oid = None + doc.amas_account_name = None + doc.amas_account_number = None + doc.amas_auth_status = "Not Connected" + doc.amas_last_activity = None doc.save(ignore_permissions=True) frappe.db.commit() @@ -965,18 +965,18 @@ def get_connected_asan_logins(): asan_logins = frappe.get_all( "Asan Login", filters={ - "emas_auth_status": "Connected", - "emas_account_oid": ["is", "set"] + "amas_auth_status": "Connected", + "amas_account_oid": ["is", "set"] }, - fields=["name", "emas_account_name", "emas_account_number", "emas_account_oid"] + fields=["name", "amas_account_name", "amas_account_number", "amas_account_oid"] ) result = [] for al in asan_logins: result.append({ "name": al.name, - "organization_name": al.emas_account_name or "Unknown", - "organization_voen": al.emas_account_number or "" + "organization_name": al.amas_account_name or "Unknown", + "organization_voen": al.amas_account_number or "" }) return { @@ -993,7 +993,7 @@ def get_connected_asan_logins(): # Exact list of API fields that map 1:1 to Əmas Employees DocType fields -EMAS_EMPLOYEE_FIELDS = [ +AMAS_EMPLOYEE_FIELDS = [ "full_name", "identification_number", "ssn", @@ -1039,8 +1039,8 @@ def import_employees(asan_login_name, employees): employees = json.loads(employees) doc = frappe.get_doc("Asan Login", asan_login_name) - organization_name = doc.emas_account_name - organization_voen = doc.emas_account_number + organization_name = doc.amas_account_name + organization_voen = doc.amas_account_number imported_count = 0 updated_count = 0 @@ -1080,17 +1080,17 @@ def import_employees(asan_login_name, employees): fin = str(fin).strip() existing = frappe.db.exists( - "Emas Employees", + "Amas Employees", {"identification_number": fin, "organization_voen": organization_voen} ) if existing: - employee_doc = frappe.get_doc("Emas Employees", existing) + employee_doc = frappe.get_doc("Amas Employees", existing) update_employee_from_data(employee_doc, emp_data) employee_doc.save(ignore_permissions=True) updated_count += 1 else: - employee_doc = frappe.new_doc("Emas Employees") + employee_doc = frappe.new_doc("Amas Employees") employee_doc.asan_login = asan_login_name employee_doc.organization_name = organization_name employee_doc.organization_voen = organization_voen @@ -1116,7 +1116,7 @@ def import_employees(asan_login_name, employees): # Check if exists existing = frappe.db.exists( - "Emas Employees", + "Amas Employees", { "identification_number": fin, "organization_voen": organization_voen @@ -1124,7 +1124,7 @@ def import_employees(asan_login_name, employees): ) if existing: - employee_doc = frappe.get_doc("Emas Employees", existing) + employee_doc = frappe.get_doc("Amas Employees", existing) # First populate basic fields from list data update_employee_from_data(employee_doc, emp_data) # Then overlay with detailed data @@ -1135,7 +1135,7 @@ def import_employees(asan_login_name, employees): employee_doc.save(ignore_permissions=True) updated_count += 1 else: - employee_doc = frappe.new_doc("Emas Employees") + employee_doc = frappe.new_doc("Amas Employees") employee_doc.asan_login = asan_login_name employee_doc.organization_name = organization_name employee_doc.organization_voen = organization_voen @@ -1186,7 +1186,7 @@ def update_employee_from_data(employee_doc, emp_data): Hard 1:1 mapping - API field names match DocType field names exactly. """ # Map all API fields directly to DocType fields - for field in EMAS_EMPLOYEE_FIELDS: + for field in AMAS_EMPLOYEE_FIELDS: value = emp_data.get(field) if value is not None: setattr(employee_doc, field, str(value)) @@ -1200,7 +1200,7 @@ def update_employee_from_data(employee_doc, emp_data): employee_doc.import_date = frappe.utils.now_datetime() -def parse_emas_date(date_str): +def parse_amas_date(date_str): """ Parse date string from ƏMAS into YYYY-MM-DD format for Frappe Date fields. ƏMAS dates can be in various formats. @@ -1256,7 +1256,7 @@ def resolve_designation(position_text, create_if_missing): @frappe.whitelist() -def create_employees_from_emas(asan_login_name, employees, company, create_designation=0): +def create_employees_from_amas(asan_login_name, employees, company, create_designation=0): """ Create Employee records directly from ƏMAS API data. @@ -1283,8 +1283,8 @@ def create_employees_from_emas(asan_login_name, employees, company, create_desig return {"success": False, "message": "Company is required"} doc = frappe.get_doc("Asan Login", asan_login_name) - organization_name = doc.emas_account_name - organization_voen = doc.emas_account_number + organization_name = doc.amas_account_name + organization_voen = doc.amas_account_number created_count = 0 updated_count = 0 @@ -1340,42 +1340,42 @@ def create_employees_from_emas(asan_login_name, employees, company, create_desig fin = str(fin).strip() # 1. Save/update Emas Employees record - emas_existing = None + amas_existing = None if doc_oid: - emas_existing = frappe.db.exists("Emas Employees", {"doc_oid": str(doc_oid)}) - if not emas_existing: - emas_existing = frappe.db.exists( - "Emas Employees", + amas_existing = frappe.db.exists("Amas Employees", {"doc_oid": str(doc_oid)}) + if not amas_existing: + amas_existing = frappe.db.exists( + "Amas Employees", {"identification_number": fin, "organization_voen": organization_voen} ) - if emas_existing: - emas_doc = frappe.get_doc("Emas Employees", emas_existing) + if amas_existing: + amas_doc = frappe.get_doc("Amas Employees", amas_existing) # Always populate basic fields from list data first - update_employee_from_data(emas_doc, emp_data) + update_employee_from_data(amas_doc, emp_data) # Then overlay with detail data if available if detail_data: - update_employee_from_detail_data(emas_doc, detail_data) + update_employee_from_detail_data(amas_doc, detail_data) # Ensure FIN is set (required field) - if not emas_doc.identification_number: - emas_doc.identification_number = fin - emas_doc.save(ignore_permissions=True) + if not amas_doc.identification_number: + amas_doc.identification_number = fin + amas_doc.save(ignore_permissions=True) else: - emas_doc = frappe.new_doc("Emas Employees") - emas_doc.asan_login = asan_login_name - emas_doc.organization_name = organization_name - emas_doc.organization_voen = organization_voen + amas_doc = frappe.new_doc("Amas Employees") + amas_doc.asan_login = asan_login_name + amas_doc.organization_name = organization_name + amas_doc.organization_voen = organization_voen # Set FIN first (required field) - emas_doc.identification_number = fin + amas_doc.identification_number = fin # Always populate basic fields from list data first - update_employee_from_data(emas_doc, emp_data) + update_employee_from_data(amas_doc, emp_data) # Then overlay with detail data if available if detail_data: - update_employee_from_detail_data(emas_doc, detail_data) + update_employee_from_detail_data(amas_doc, detail_data) # Ensure FIN is still set after mapping - if not emas_doc.identification_number: - emas_doc.identification_number = fin - emas_doc.insert(ignore_permissions=True) + if not amas_doc.identification_number: + amas_doc.identification_number = fin + amas_doc.insert(ignore_permissions=True) # 2. Create/update Employee record existing_employee = frappe.db.exists("Employee", {"passport_number": fin}) @@ -1393,16 +1393,16 @@ def create_employees_from_emas(asan_login_name, employees, company, create_desig if detail_data: # Get from detail data if 'iamasBean' in detail_data and detail_data.get('iamasBean'): - dob = parse_emas_date(detail_data['iamasBean'].get('birthDate')) + dob = parse_amas_date(detail_data['iamasBean'].get('birthDate')) if 'EmasContractDetailsEnt' in detail_data and isinstance(detail_data.get('EmasContractDetailsEnt'), list) and len(detail_data['EmasContractDetailsEnt']) > 0: details = detail_data['EmasContractDetailsEnt'][0] - doj = parse_emas_date(details.get('beginDate')) - contract_end = parse_emas_date(details.get('endDate')) + doj = parse_amas_date(details.get('beginDate')) + contract_end = parse_amas_date(details.get('endDate')) else: # Fallback to list data - dob = parse_emas_date(emp_data.get("birthday")) - doj = parse_emas_date(emp_data.get("begin_date")) - contract_end = parse_emas_date(emp_data.get("end_date")) + dob = parse_amas_date(emp_data.get("birthday")) + doj = parse_amas_date(emp_data.get("begin_date")) + contract_end = parse_amas_date(emp_data.get("end_date")) # Map status raw_status = "" @@ -1471,8 +1471,8 @@ def create_employees_from_emas(asan_login_name, employees, company, create_desig created_count += 1 # Link Emas Employees → Employee - emas_doc.employee = emp.name - emas_doc.save(ignore_permissions=True) + amas_doc.employee = emp.name + amas_doc.save(ignore_permissions=True) except Exception as e: fin_val = emp_data.get("identification_number", "?") @@ -1516,25 +1516,25 @@ def get_edit_form_data(asan_login_name, doc_oid, doc_no, doc_type): "docNo": doc_no, "docType": doc_type } - return make_emas_request(asan_login_name, "/service/eroom.getEditForm", data) + return make_amas_request(asan_login_name, "/service/eroom.getEditForm", data) def get_staff_data(asan_login_name, staff_oid): """Call embas.getStaffData for position info""" data = {"staffOid": staff_oid} - return make_emas_request(asan_login_name, "/service/embas.getStaffData", data) + return make_amas_request(asan_login_name, "/service/embas.getStaffData", data) def get_person_data(asan_login_name, entity_oid): """Call refdata.getPersonDataByEntOid for personal data""" data = {"entityOid": entity_oid} # Fixed: was "entOid", should be "entityOid" - return make_emas_request(asan_login_name, "/service/refdata.getPersonDataByEntOid", data) + return make_amas_request(asan_login_name, "/service/refdata.getPersonDataByEntOid", data) def get_address_data(asan_login_name, address_oid): """Call refdata.getAddressData for work address""" data = {"addressOid": address_oid} - return make_emas_request(asan_login_name, "/service/refdata.getAddressData", data) + return make_amas_request(asan_login_name, "/service/refdata.getAddressData", data) def get_doc_main_data(asan_login_name, doc_oid, doc_no, doc_type): @@ -1544,7 +1544,7 @@ def get_doc_main_data(asan_login_name, doc_oid, doc_no, doc_type): "docNo": doc_no, "docType": doc_type } - return make_emas_request(asan_login_name, "/service/eroom.getDocMainData", data) + return make_amas_request(asan_login_name, "/service/eroom.getDocMainData", data) def get_contract_attachments(asan_login_name, doc_oid, attach_type="attachType_5"): @@ -1556,7 +1556,7 @@ def get_contract_attachments(asan_login_name, doc_oid, attach_type="attachType_5 "docOid[]": doc_oid, "attachType": attach_type } - return make_emas_request(asan_login_name, "/service/eroom.getAttachListByType", data) + return make_amas_request(asan_login_name, "/service/eroom.getAttachListByType", data) def download_contract_file(asan_login_name, file_id): @@ -1565,7 +1565,7 @@ def download_contract_file(asan_login_name, file_id): Returns HTML content of the employment contract. """ data = {"fileId": file_id} - return make_emas_request(asan_login_name, "/request/readFromStorage", data) + return make_amas_request(asan_login_name, "/request/readFromStorage", data) @frappe.whitelist() @@ -1750,8 +1750,8 @@ def update_employee_from_detail_data(employee_doc, detail_data): # Dates employee_doc.main_contract_begin_date = str(details.get('mainContractBeginDate') or '') - employee_doc.contract_begin_date = parse_emas_date(details.get('beginDate')) - employee_doc.contract_end_date = parse_emas_date(details.get('endDate')) + employee_doc.contract_begin_date = parse_amas_date(details.get('beginDate')) + employee_doc.contract_end_date = parse_amas_date(details.get('endDate')) employee_doc.emp_job_start_date = str(details.get('empJobStartDate') or '') employee_doc.begin_date = str(details.get('beginDate') or '') employee_doc.end_date = str(details.get('endDate') or '') @@ -1800,8 +1800,8 @@ def update_employee_from_detail_data(employee_doc, detail_data): employee_doc.marital_status = person.get('maritalStatus') employee_doc.military_status = person.get('militaryStatus') employee_doc.document_number = person.get('documentNumber') - employee_doc.document_issue_date = parse_emas_date(person.get('issueDate')) - employee_doc.document_expiry_date = parse_emas_date(person.get('expireDate')) + employee_doc.document_issue_date = parse_amas_date(person.get('issueDate')) + employee_doc.document_expiry_date = parse_amas_date(person.get('expireDate')) employee_doc.document_issued_by = person.get('issuedBy') employee_doc.personal_address = person.get('address') employee_doc.personal_city = person.get('city') @@ -1855,10 +1855,10 @@ def on_delete_employee(doc, method): """ When an Employee is deleted, also delete linked Emas Employees records. """ - emas_records = frappe.get_all( - "Emas Employees", + amas_records = frappe.get_all( + "Amas Employees", filters={"employee": doc.name}, fields=["name"] ) - for rec in emas_records: - frappe.delete_doc("Emas Employees", rec.name, ignore_permissions=True) + for rec in amas_records: + frappe.delete_doc("Amas Employees", rec.name, ignore_permissions=True) diff --git a/invoice_az/client/emas_employees.js b/invoice_az/client/amas_employees.js similarity index 98% rename from invoice_az/client/emas_employees.js rename to invoice_az/client/amas_employees.js index 3579b21..540168e 100644 --- a/invoice_az/client/emas_employees.js +++ b/invoice_az/client/amas_employees.js @@ -1,4 +1,4 @@ -frappe.ui.form.on('Emas Employees', { +frappe.ui.form.on('Amas Employees', { refresh: function(frm) { // Add "View Contract" button if contract HTML exists if (frm.doc.contract_html && frm.doc.contract_html.trim().length > 0) { diff --git a/invoice_az/client/employee.js b/invoice_az/client/employee.js index 0b27956..ca1ec19 100644 --- a/invoice_az/client/employee.js +++ b/invoice_az/client/employee.js @@ -8,26 +8,26 @@ if (frappe.listview_settings['Employee']) { const orig_onload = frappe.listview_settings['Employee'].onload; frappe.listview_settings['Employee'].onload = function(listview) { if (orig_onload) orig_onload(listview); - add_emas_load_button(listview); + add_amas_load_button(listview); }; } else { frappe.listview_settings['Employee'] = { onload: function(listview) { - add_emas_load_button(listview); + add_amas_load_button(listview); } }; } -function add_emas_load_button(listview) { +function add_amas_load_button(listview) { listview.page.add_inner_button(__('Load from ƏMAS'), function() { - start_emas_employee_import(listview); + start_amas_employee_import(listview); }); } // Step 1: Get default connected Asan Login → fetch employees from ƏMAS API -function start_emas_employee_import(listview) { +function start_amas_employee_import(listview) { frappe.call({ - method: 'invoice_az.emas_api.get_connected_asan_logins', + method: 'invoice_az.amas_api.get_connected_asan_logins', freeze: true, freeze_message: __('Checking ƏMAS connection...'), callback: function(r) { @@ -52,20 +52,20 @@ function start_emas_employee_import(listview) { } // Use the first (default) connected login - fetch_employees_from_emas(listview, asan_logins[0].name, asan_logins[0].organization_name); + fetch_employees_from_amas(listview, asan_logins[0].name, asan_logins[0].organization_name); } }); } // Step 2: Fetch employees from ƏMAS API -function fetch_employees_from_emas(listview, asan_login_name, organization_name) { +function fetch_employees_from_amas(listview, asan_login_name, organization_name) { frappe.show_alert({ message: __('Fetching employees from ƏMAS...'), indicator: 'blue' }, 3); frappe.call({ - method: 'invoice_az.emas_api.get_employees_report', + method: 'invoice_az.amas_api.get_employees_report', args: { asan_login_name: asan_login_name, offset: 0, @@ -140,7 +140,7 @@ function show_employee_selection(listview, asan_login_name, organization_name, e // Build table (e-taxes style) let invoiceTable = '
' + - '' + + '
' + '' + '' + '' + @@ -274,7 +274,7 @@ function create_employees(listview, asan_login_name, selected_employees, company ); frappe.call({ - method: 'invoice_az.emas_api.create_employees_from_emas', + method: 'invoice_az.amas_api.create_employees_from_amas', args: { asan_login_name: asan_login_name, employees: selected_employees, diff --git a/invoice_az/hooks.py b/invoice_az/hooks.py index 82e3ba8..f89031b 100644 --- a/invoice_az/hooks.py +++ b/invoice_az/hooks.py @@ -12,7 +12,7 @@ doctype_js = { "Sales Invoice": "client/sales_invoice.js", "Journal Entry": "client/journal_entry.js", "Supplier": "client/supplier.js", - "Emas Employees": "client/emas_employees.js" + "Amas Employees": "client/amas_employees.js" } doctype_list_js = { @@ -55,7 +55,7 @@ doc_events = { "on_update": "invoice_az.api.update_mapped_statuses" }, "Employee": { - "on_trash": "invoice_az.emas_api.on_delete_employee" + "on_trash": "invoice_az.amas_api.on_delete_employee" } } diff --git a/invoice_az/invoice_az/doctype/emas_employees/__init__.py b/invoice_az/invoice_az/doctype/amas_employees/__init__.py similarity index 100% rename from invoice_az/invoice_az/doctype/emas_employees/__init__.py rename to invoice_az/invoice_az/doctype/amas_employees/__init__.py diff --git a/invoice_az/invoice_az/doctype/emas_employees/emas_employees.js b/invoice_az/invoice_az/doctype/amas_employees/amas_employees.js similarity index 94% rename from invoice_az/invoice_az/doctype/emas_employees/emas_employees.js rename to invoice_az/invoice_az/doctype/amas_employees/amas_employees.js index 510a49e..4d04d83 100644 --- a/invoice_az/invoice_az/doctype/emas_employees/emas_employees.js +++ b/invoice_az/invoice_az/doctype/amas_employees/amas_employees.js @@ -1,7 +1,7 @@ // Copyright (c) 2026, Your Company and contributors // For license information, please see license.txt -frappe.ui.form.on('Emas Employees', { +frappe.ui.form.on('Amas Employees', { refresh: function(frm) { // Form view - show employee details if (!frm.is_new()) { diff --git a/invoice_az/invoice_az/doctype/emas_employees/emas_employees.json b/invoice_az/invoice_az/doctype/amas_employees/amas_employees.json similarity index 99% rename from invoice_az/invoice_az/doctype/emas_employees/emas_employees.json rename to invoice_az/invoice_az/doctype/amas_employees/amas_employees.json index 85e470c..8a76ac6 100644 --- a/invoice_az/invoice_az/doctype/emas_employees/emas_employees.json +++ b/invoice_az/invoice_az/doctype/amas_employees/amas_employees.json @@ -1,7 +1,7 @@ { "actions": [], "allow_rename": 1, - "autoname": "format:EMAS-EMP-{####}", + "autoname": "format:AMAS-EMP-{####}", "creation": "2026-02-06 10:00:00", "doctype": "DocType", "engine": "InnoDB", @@ -934,7 +934,7 @@ "modified": "2026-02-10 10:00:00", "modified_by": "Administrator", "module": "Invoice Az", - "name": "Emas Employees", + "name": "Amas Employees", "naming_rule": "Expression", "owner": "Administrator", "permissions": [ @@ -955,4 +955,4 @@ "states": [], "title_field": "full_name", "track_changes": 1 -} +} \ No newline at end of file diff --git a/invoice_az/invoice_az/doctype/emas_employees/emas_employees.py b/invoice_az/invoice_az/doctype/amas_employees/amas_employees.py similarity index 83% rename from invoice_az/invoice_az/doctype/emas_employees/emas_employees.py rename to invoice_az/invoice_az/doctype/amas_employees/amas_employees.py index d0e78cc..0e23f94 100644 --- a/invoice_az/invoice_az/doctype/emas_employees/emas_employees.py +++ b/invoice_az/invoice_az/doctype/amas_employees/amas_employees.py @@ -4,5 +4,5 @@ from frappe.model.document import Document -class EmasEmployees(Document): +class AmasEmployees(Document): pass diff --git a/invoice_az/invoice_az/doctype/emas_employees/emas_employees_list.js b/invoice_az/invoice_az/doctype/amas_employees/amas_employees_list.js similarity index 97% rename from invoice_az/invoice_az/doctype/emas_employees/emas_employees_list.js rename to invoice_az/invoice_az/doctype/amas_employees/amas_employees_list.js index af6dd31..fb0b1da 100644 --- a/invoice_az/invoice_az/doctype/emas_employees/emas_employees_list.js +++ b/invoice_az/invoice_az/doctype/amas_employees/amas_employees_list.js @@ -1,7 +1,7 @@ // Copyright (c) 2026, Your Company and contributors // For license information, please see license.txt -frappe.listview_settings['Emas Employees'] = { +frappe.listview_settings['Amas Employees'] = { onload: function(listview) { listview.page.add_inner_button(__('Import from ƏMAS'), function() { show_import_employees_dialog(); @@ -11,7 +11,7 @@ frappe.listview_settings['Emas Employees'] = { function show_import_employees_dialog() { frappe.call({ - method: 'invoice_az.emas_api.get_connected_asan_logins', + method: 'invoice_az.amas_api.get_connected_asan_logins', callback: function(r) { if (r.message && r.message.success) { const asan_logins = r.message.asan_logins || []; @@ -83,7 +83,7 @@ function load_employees_for_import(asan_login_name, organization_name) { loading_dialog.show(); frappe.call({ - method: 'invoice_az.emas_api.get_employees_report', + method: 'invoice_az.amas_api.get_employees_report', args: { 'asan_login_name': asan_login_name, 'offset': 0, @@ -239,7 +239,7 @@ function import_selected_employees(asan_login_name, employees, selected_indices) progress_dialog.show(); frappe.call({ - method: 'invoice_az.emas_api.import_employees', + method: 'invoice_az.amas_api.import_employees', args: { 'asan_login_name': asan_login_name, 'employees': selected_employees diff --git a/invoice_az/invoice_az/doctype/asan_login/asan_login.js b/invoice_az/invoice_az/doctype/asan_login/asan_login.js index f5ac70b..a17c5a9 100644 --- a/invoice_az/invoice_az/doctype/asan_login/asan_login.js +++ b/invoice_az/invoice_az/doctype/asan_login/asan_login.js @@ -7,7 +7,7 @@ frappe.ui.form.on('Asan Login', { } // Add EMAS buttons - add_emas_buttons(frm); + add_amas_buttons(frm); // Кнопка для MyGovID Login frm.add_custom_button(__('MyGovID Login'), function() { @@ -967,7 +967,7 @@ function startMyGovIDLogin(frm) { // ƏMAS (e-social.gov.az) Integration Functions // ============================================ -function add_emas_buttons(frm) { +function add_amas_buttons(frm) { // Only show ƏMAS buttons if user is authenticated with e-taxes or MyGovID const is_authenticated = frm.doc.auth_status === 'Authenticated' || frm.doc.auth_status === 'Fully Authenticated' || @@ -978,9 +978,9 @@ function add_emas_buttons(frm) { } // Check current ƏMAS status - const emas_status = frm.doc.emas_auth_status || 'Not Connected'; + const amas_status = frm.doc.amas_auth_status || 'Not Connected'; - if (emas_status === 'Connected' && frm.doc.emas_account_oid) { + if (amas_status === 'Connected' && frm.doc.amas_account_oid) { // ƏMAS is connected - show employee buttons frm.add_custom_button(__('Get Employees'), function() { show_employees_dialog(frm); @@ -991,36 +991,36 @@ function add_emas_buttons(frm) { }, __('ƏMAS')); frm.add_custom_button(__('Refresh Session'), function() { - refresh_emas_session(frm); + refresh_amas_session(frm); }, __('ƏMAS')); frm.add_custom_button(__('Disconnect'), function() { - disconnect_emas(frm); + disconnect_amas(frm); }, __('ƏMAS')); - } else if (emas_status === 'Connected' && !frm.doc.emas_account_oid) { + } else if (amas_status === 'Connected' && !frm.doc.amas_account_oid) { // Connected but no account selected frm.add_custom_button(__('Select Organization'), function() { show_accounts_dialog(frm); }, __('ƏMAS')); frm.add_custom_button(__('Refresh Session'), function() { - refresh_emas_session(frm); + refresh_amas_session(frm); }, __('ƏMAS')); frm.add_custom_button(__('Disconnect'), function() { - disconnect_emas(frm); + disconnect_amas(frm); }, __('ƏMAS')); } else { // Not connected - show connect button frm.add_custom_button(__('Connect ƏMAS'), function() { - start_emas_connection(frm); + start_amas_connection(frm); }, __('ƏMAS')); } } -function start_emas_connection(frm) { +function start_amas_connection(frm) { // Show loading indicator frappe.show_alert({ message: __('Connecting to ƏMAS...'), @@ -1028,7 +1028,7 @@ function start_emas_connection(frm) { }, 3); frappe.call({ - method: 'invoice_az.emas_api.connect_emas', + method: 'invoice_az.amas_api.connect_amas', args: { 'asan_login_name': frm.doc.name }, @@ -1060,7 +1060,7 @@ function start_emas_connection(frm) { __('MyGovID authentication required. Do you want to login with MyGovID now?'), function() { // Start MyGovID login, then connect to ƏMAS - start_mygovid_then_emas(frm); + start_mygovid_then_amas(frm); } ); } else { @@ -1074,7 +1074,7 @@ function start_emas_connection(frm) { }); } -function start_mygovid_then_emas(frm) { +function start_mygovid_then_amas(frm) { // Show MyGovID login dialog with ƏMAS callback frappe.show_alert({ message: __('Starting MyGovID authentication...'), @@ -1090,22 +1090,22 @@ function start_mygovid_then_emas(frm) { fieldtype: 'HTML', options: `
-
-
+
+
-
+

Waiting for confirmation on your phone

Please check your phone and confirm the authentication request in ASAN Sign app.

-
' + __('Full Name') + '${frappe.utils.escape_html(voen)} ${frappe.utils.escape_html(role)} - ${frappe.utils.escape_html(role)} -
'; - dialog.$wrapper.find('#emas_employees_table').html(table_html); + dialog.$wrapper.find('#amas_employees_table').html(table_html); // Pagination info const showing_from = offset + 1; @@ -1545,12 +1545,12 @@ function render_employees_table(dialog, employees, offset, limit, has_more) { } pagination_html += '

'; - dialog.$wrapper.find('#emas_pagination').html(pagination_html); + dialog.$wrapper.find('#amas_pagination').html(pagination_html); } function show_contract_stats(frm) { frappe.call({ - method: 'invoice_az.emas_api.get_contract_stats', + method: 'invoice_az.amas_api.get_contract_stats', args: { 'asan_login_name': frm.doc.name }, @@ -1565,8 +1565,8 @@ function show_contract_stats(frm) { fieldtype: 'HTML', options: `
-

${frm.doc.emas_account_name || 'Organization'}

-

VOEN: ${frm.doc.emas_account_number || ''}

+

${frm.doc.amas_account_name || 'Organization'}

+

VOEN: ${frm.doc.amas_account_number || ''}


@@ -1613,9 +1613,9 @@ function show_contract_stats(frm) { }); } -function refresh_emas_session(frm) { +function refresh_amas_session(frm) { frappe.call({ - method: 'invoice_az.emas_api.refresh_emas_session', + method: 'invoice_az.amas_api.refresh_amas_session', args: { 'asan_login_name': frm.doc.name }, @@ -1639,12 +1639,12 @@ function refresh_emas_session(frm) { }); } -function disconnect_emas(frm) { +function disconnect_amas(frm) { frappe.confirm( __('Are you sure you want to disconnect from ƏMAS?'), function() { frappe.call({ - method: 'invoice_az.emas_api.disconnect_emas', + method: 'invoice_az.amas_api.disconnect_amas', args: { 'asan_login_name': frm.doc.name }, diff --git a/invoice_az/invoice_az/doctype/asan_login/asan_login.json b/invoice_az/invoice_az/doctype/asan_login/asan_login.json index 855e562..d4bc2ec 100644 --- a/invoice_az/invoice_az/doctype/asan_login/asan_login.json +++ b/invoice_az/invoice_az/doctype/asan_login/asan_login.json @@ -25,15 +25,15 @@ "choose_taxpayer_response", "mygovid_section", "mygovid_token", - "emas_section", - "emas_auth_status", - "emas_account_name", - "emas_account_number", - "column_break_emas", - "emas_account_oid", - "emas_last_activity", - "emas_session", - "emas_csrf_token" + "amas_section", + "amas_auth_status", + "amas_account_name", + "amas_account_number", + "column_break_amas", + "amas_account_oid", + "amas_last_activity", + "amas_session", + "amas_csrf_token" ], "fields": [ { @@ -155,13 +155,13 @@ "label": "Last Activity Time" }, { - "fieldname": "emas_section", + "fieldname": "amas_section", "fieldtype": "Section Break", "label": "ƏMAS (e-social.gov.az)" }, { "default": "Not Connected", - "fieldname": "emas_auth_status", + "fieldname": "amas_auth_status", "fieldtype": "Select", "in_list_view": 1, "label": "ƏMAS Status", @@ -169,41 +169,41 @@ "read_only": 1 }, { - "fieldname": "emas_account_name", + "fieldname": "amas_account_name", "fieldtype": "Data", "label": "ƏMAS Account Name", "read_only": 1 }, { - "fieldname": "emas_account_number", + "fieldname": "amas_account_number", "fieldtype": "Data", "label": "ƏMAS Account VOEN", "read_only": 1 }, { - "fieldname": "column_break_emas", + "fieldname": "column_break_amas", "fieldtype": "Column Break" }, { - "fieldname": "emas_account_oid", + "fieldname": "amas_account_oid", "fieldtype": "Small Text", "hidden": 1, - "label": "EMAS Account OID" + "label": "AMAS Account OID" }, { - "fieldname": "emas_last_activity", + "fieldname": "amas_last_activity", "fieldtype": "Datetime", "label": "ƏMAS Last Activity", "read_only": 1 }, { - "fieldname": "emas_session", + "fieldname": "amas_session", "fieldtype": "Small Text", "hidden": 1, "label": "ƏMAS Session" }, { - "fieldname": "emas_csrf_token", + "fieldname": "amas_csrf_token", "fieldtype": "Small Text", "hidden": 1, "label": "ƏMAS CSRF Token"