chore: use native Azərbaycan spelling in user-facing strings

Replaces "Azeri" / "Azerbaijani" / "Azerbaijan" with the native form
"Azərbaycan" in labels, descriptions, comments and docs.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ali 2026-05-14 10:57:16 +00:00
parent a90fe340d5
commit 08e31c6815
12 changed files with 25 additions and 25 deletions

View File

@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
## Overview ## Overview
Invoice Az is a Frappe application that integrates with Azerbaijan government systems: Invoice Az is a Frappe application that integrates with Azərbaycan government systems:
**E-Taxes Integration (e-taxes.gov.az):** **E-Taxes Integration (e-taxes.gov.az):**
- Downloading and importing purchase invoices from e-taxes - Downloading and importing purchase invoices from e-taxes
@ -15,7 +15,7 @@ Invoice Az is a Frappe application that integrates with Azerbaijan government sy
- Managing authentication via ASAN Login with automatic token renewal - Managing authentication via ASAN Login with automatic token renewal
**AMAS Integration (e-social.gov.az):** **AMAS Integration (e-social.gov.az):**
- Importing employees from AMAS (Azerbaijan Employment Management System) - Importing employees from AMAS (Azərbaycan Employment Management System)
- MyGovID/ASAN authentication for accessing AMAS - MyGovID/ASAN authentication for accessing AMAS
- Automatic employee synchronization with ERPNext - Automatic employee synchronization with ERPNext
@ -586,7 +586,7 @@ bench --site [site-name] console
### Core Modules ### Core Modules
1. **Authentication Module** (`invoice_az/auth.py`) 1. **Authentication Module** (`invoice_az/auth.py`)
- ASAN Login integration for Azerbaijan government authentication - ASAN Login integration for Azərbaycan government authentication
- Token management with automatic renewal every 4 minutes via cron job - Token management with automatic renewal every 4 minutes via cron job
- Activity tracking to prevent unnecessary token renewals - Activity tracking to prevent unnecessary token renewals
- Retry logic with exponential backoff for failed requests - Retry logic with exponential backoff for failed requests
@ -609,7 +609,7 @@ bench --site [site-name] console
- Customer mapping system (separate from suppliers) - Customer mapping system (separate from suppliers)
- Create Sales Orders and Sales Invoices - Create Sales Orders and Sales Invoices
- E-Taxes Sales tracking records - E-Taxes Sales tracking records
- Azerbaijani character normalization for matching - Azərbaycan character normalization for matching
4. **Sales Send API** (`invoice_az/send_sales_api.py`) 4. **Sales Send API** (`invoice_az/send_sales_api.py`)
- Send Sales Invoices to e-taxes system - Send Sales Invoices to e-taxes system
@ -738,7 +738,7 @@ bench --site [site-name] console
- **Bulk Operations**: Support for syncing multiple entities at once - **Bulk Operations**: Support for syncing multiple entities at once
- **Batch Processing**: Load reference data from invoices in batches - **Batch Processing**: Load reference data from invoices in batches
- **Error Handling**: Comprehensive error logging and user-friendly error messages - **Error Handling**: Comprehensive error logging and user-friendly error messages
- **Azerbaijani Support**: Character normalization for Ə, Ü, Ö, Ğ, İ, Ç, Ş characters - **Azərbaycan Support**: Character normalization for Ə, Ü, Ö, Ğ, İ, Ç, Ş characters
- **Two-step Signing**: Create draft invoice/act, then sign with ASAN Imza - **Two-step Signing**: Create draft invoice/act, then sign with ASAN Imza
- **Retry Signing**: Retry signing for failed/pending invoices/acts - **Retry Signing**: Retry signing for failed/pending invoices/acts
- **VAT Import**: Import VAT account operations as Journal Entries with configurable account mappings - **VAT Import**: Import VAT account operations as Journal Entries with configurable account mappings
@ -929,7 +929,7 @@ Supported act types for Purchase Invoices with Individual suppliers:
5. System shows operation selection dialog with columns: 5. System shows operation selection dialog with columns:
- Date, TIN, Name, Operation Type, Classification Code, Amount - Date, TIN, Name, Operation Type, Classification Code, Amount
6. Creates Journal Entries using account mappings: 6. Creates Journal Entries using account mappings:
- API returns technical operation types (SUB_TO_SUB, etc.) which are mapped to Azerbaijani names - API returns technical operation types (SUB_TO_SUB, etc.) which are mapped to Azərbaycan names
- API returns taxCodeInfo with code (e.g., "114117") and description - API returns taxCodeInfo with code (e.g., "114117") and description
- Looks up mapping in E-Taxes Settings with priority: - Looks up mapping in E-Taxes Settings with priority:
- First: operation_type + classification_code (if taxCodeInfo.code exists) - First: operation_type + classification_code (if taxCodeInfo.code exists)
@ -965,7 +965,7 @@ Supported act types for Purchase Invoices with Individual suppliers:
### Workflow: Importing Employees from AMAS ### Workflow: Importing Employees from AMAS
AMAS (e-social.gov.az) is Azerbaijan's Employment Management System maintained by the Ministry of Labour and Social Protection. AMAS (e-social.gov.az) is Azərbaycan's Employment Management System maintained by the Ministry of Labour and Social Protection.
**Prerequisites:** **Prerequisites:**
1. User must have MyGovID authentication (same as ASAN Login) 1. User must have MyGovID authentication (same as ASAN Login)

View File

@ -16,7 +16,7 @@
## Общая информация ## Общая информация
**Название проекта:** Invoice Az (Invoices Azerbaijan) **Название проекта:** Invoice Az (Invoices Azərbaycan)
**Версия:** 0.0.1 **Версия:** 0.0.1
**Автор:** Jey ERP (info@jeyerp.az) **Автор:** Jey ERP (info@jeyerp.az)
**Лицензия:** Unlicense (Общественное достояние) **Лицензия:** Unlicense (Общественное достояние)

View File

@ -331,7 +331,7 @@ Same as Invoice Az app license.
- **CLAUDE.md** - E-Taxes integration patterns (critical patterns documented) - **CLAUDE.md** - E-Taxes integration patterns (critical patterns documented)
- **Invoice Az App** - Main application repository - **Invoice Az App** - Main application repository
- **E-Taxes API** - Azerbaijan government tax system - **E-Taxes API** - Azərbaycan government tax system
- **ASAN Imza** - Digital signature system - **ASAN Imza** - Digital signature system
--- ---

View File

@ -630,8 +630,8 @@ frappe.db.commit()
| **Agricultural Goods** | Products from agriculture (fruits, vegetables, grains, etc.) | | **Agricultural Goods** | Products from agriculture (fruits, vegetables, grains, etc.) |
| **Tax Free** | Product exempt from VAT (0% tax rate) | | **Tax Free** | Product exempt from VAT (0% tax rate) |
| **Taxable** | Product subject to 5% agricultural tax | | **Taxable** | Product subject to 5% agricultural tax |
| **E-Taxes** | Azerbaijan government tax reporting system | | **E-Taxes** | Azərbaycan government tax reporting system |
| **ASAN Imza** | Digital signature system for Azerbaijan | | **ASAN Imza** | Digital signature system for Azərbaycan |
| **Act** | Agricultural product purchase act (document type in E-Taxes) | | **Act** | Agricultural product purchase act (document type in E-Taxes) |
| **Tax Rate** | E-Taxes API code for tax calculation ("taxFree", "tax2") | | **Tax Rate** | E-Taxes API code for tax calculation ("taxFree", "tax2") |
| **Serial Number** | Unique identifier for E-Taxes document | | **Serial Number** | Unique identifier for E-Taxes document |
@ -648,7 +648,7 @@ frappe.db.commit()
- `USER_GUIDE_TAX_TYPE.md` - End-user guide - `USER_GUIDE_TAX_TYPE.md` - End-user guide
**External Resources:** **External Resources:**
- E-Taxes API Documentation (Azerbaijan government) - E-Taxes API Documentation (Azərbaycan government)
- ASAN Imza Integration Guide - ASAN Imza Integration Guide
- Frappe Framework Documentation: https://frappeframework.com/docs - Frappe Framework Documentation: https://frappeframework.com/docs

View File

@ -2,7 +2,7 @@
ƏMAS (e-social.gov.az) Integration API ƏMAS (e-social.gov.az) Integration API
This module provides functions to interact with ƏMAS (Employment Management System) This module provides functions to interact with ƏMAS (Employment Management System)
of Azerbaijan's Ministry of Labour and Social Protection. of Azərbaycan's Ministry of Labour and Social Protection.
ƏMAS uses MyGovID/ASAN authentication. The flow is: ƏMAS uses MyGovID/ASAN authentication. The flow is:
1. Get MyGovID JWT token via ASAN Sign (same as existing MyGovID Login) 1. Get MyGovID JWT token via ASAN Sign (same as existing MyGovID Login)
@ -1352,7 +1352,7 @@ def map_gender(amas_gender):
gender_str = str(amas_gender).strip().lower() gender_str = str(amas_gender).strip().lower()
# Map Azerbaijani values # Map Azərbaycan values
if gender_str in ("kişi", "kisi", "male", "m", "erkək", "erkek"): if gender_str in ("kişi", "kisi", "male", "m", "erkək", "erkek"):
return "Male" return "Male"
elif gender_str in ("qadın", "qadin", "female", "f", "qız", "qiz"): elif gender_str in ("qadın", "qadin", "female", "f", "qız", "qiz"):
@ -1372,7 +1372,7 @@ def map_marital_status(amas_status):
status_str = str(amas_status).strip().lower() status_str = str(amas_status).strip().lower()
# Map Azerbaijani values # Map Azərbaycan values
if status_str in ("evli", "married", "nikahli", "nikаhlı"): if status_str in ("evli", "married", "nikahli", "nikаhlı"):
return "Married" return "Married"
elif status_str in ("subay", "subаy", "single", "bekar", "bekаr"): elif status_str in ("subay", "subаy", "single", "bekar", "bekаr"):

View File

@ -373,7 +373,7 @@ def get_default_settings():
@frappe.whitelist() @frappe.whitelist()
def normalize_azeri_text(text): def normalize_azeri_text(text):
"""Normalization of Azerbaijani text for matching""" """Normalization of Azərbaycan text for matching"""
if not text: if not text:
return text return text

View File

@ -1871,7 +1871,7 @@ function show_object_picker_dialog(frm, objects, customerName, taxId) {
setTimeout(function() { setTimeout(function() {
// Show first confirmation dialog // Show first confirmation dialog
frappe.confirm( frappe.confirm(
__('Send this Sales Invoice to Azerbaijan E-Taxes system?') + '<br><br>' + __('Send this Sales Invoice to Azərbaycan E-Taxes system?') + '<br><br>' +
__('Invoice: {0}', [frm.doc.name]) + '<br>' + __('Invoice: {0}', [frm.doc.name]) + '<br>' +
__('Customer: {0}', [frm.doc.customer]) + '<br>' + __('Customer: {0}', [frm.doc.customer]) + '<br>' +
__('Object: {0}', [selectedObject.name]) + '<br>' + __('Object: {0}', [selectedObject.name]) + '<br>' +

View File

@ -64,10 +64,10 @@
}, },
{ {
"default": "1", "default": "1",
"description": "Consider replacement of Azerbaijani letters with Latin equivalents when matching", "description": "Consider replacement of Azərbaycan letters with Latin equivalents when matching",
"fieldname": "consider_azeri_chars", "fieldname": "consider_azeri_chars",
"fieldtype": "Check", "fieldtype": "Check",
"label": "Consider Azerbaijani Characters" "label": "Consider Azərbaycan Characters"
}, },
{ {
"fieldname": "default_item_settings_section", "fieldname": "default_item_settings_section",

View File

@ -1075,7 +1075,7 @@ def create_act_on_etaxes(token, payload, serial_number):
if response.status_code not in [200, 201]: if response.status_code not in [200, 201]:
try: try:
error_data = response.json() error_data = response.json()
# Try to get Azerbaijani message first # Try to get Azərbaycan message first
if isinstance(error_data, dict) and "message" in error_data: if isinstance(error_data, dict) and "message" in error_data:
if isinstance(error_data["message"], dict) and "az" in error_data["message"]: if isinstance(error_data["message"], dict) and "az" in error_data["message"]:
return { return {
@ -1455,7 +1455,7 @@ def cancel_act_on_etaxes(purchase_invoice_name):
} }
else: else:
# Other error - try to get Azerbaijani message # Other error - try to get Azərbaycan message
error_msg = f"E-Taxes returned status {response.status_code}" error_msg = f"E-Taxes returned status {response.status_code}"
try: try:
error_data = response.json() error_data = response.json()

View File

@ -588,7 +588,7 @@ def create_invoice_on_etaxes(token, payload, serial_number):
if response.status_code not in [200, 201]: if response.status_code not in [200, 201]:
try: try:
error_data = response.json() error_data = response.json()
# Try to get Azerbaijani message first # Try to get Azərbaycan message first
if isinstance(error_data, dict) and "message" in error_data: if isinstance(error_data, dict) and "message" in error_data:
if isinstance(error_data["message"], dict) and "az" in error_data["message"]: if isinstance(error_data["message"], dict) and "az" in error_data["message"]:
return { return {
@ -970,7 +970,7 @@ def cancel_invoice_on_etaxes(sales_invoice_name):
} }
else: else:
# Other error - try to get Azerbaijani message # Other error - try to get Azərbaycan message
error_msg = f"E-Taxes returned status {response.status_code}" error_msg = f"E-Taxes returned status {response.status_code}"
try: try:
error_data = response.json() error_data = response.json()

View File

@ -120,7 +120,7 @@ def fetch_supplier_data_from_etaxes(supplier_name):
if response.status_code not in [200, 201]: if response.status_code not in [200, 201]:
try: try:
error_data = response.json() error_data = response.json()
# Try to get Azerbaijani message first # Try to get Azərbaycan message first
if isinstance(error_data, dict) and "message" in error_data: if isinstance(error_data, dict) and "message" in error_data:
if isinstance(error_data["message"], dict) and "az" in error_data["message"]: if isinstance(error_data["message"], dict) and "az" in error_data["message"]:
return { return {

View File

@ -1,5 +1,5 @@
# ======= VAT OPERATIONS API MODULE ======= # ======= VAT OPERATIONS API MODULE =======
# Module for importing VAT Account operations from E-Taxes Azerbaijan # Module for importing VAT Account operations from E-Taxes Azərbaycan
# and creating Journal Entries in ERPNext # and creating Journal Entries in ERPNext
import frappe import frappe