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:
parent
a90fe340d5
commit
08e31c6815
14
CLAUDE.md
14
CLAUDE.md
|
|
@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
|||
|
||||
## 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):**
|
||||
- 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
|
||||
|
||||
**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
|
||||
- Automatic employee synchronization with ERPNext
|
||||
|
||||
|
|
@ -586,7 +586,7 @@ bench --site [site-name] console
|
|||
### Core Modules
|
||||
|
||||
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
|
||||
- Activity tracking to prevent unnecessary token renewals
|
||||
- Retry logic with exponential backoff for failed requests
|
||||
|
|
@ -609,7 +609,7 @@ bench --site [site-name] console
|
|||
- Customer mapping system (separate from suppliers)
|
||||
- Create Sales Orders and Sales Invoices
|
||||
- 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`)
|
||||
- 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
|
||||
- **Batch Processing**: Load reference data from invoices in batches
|
||||
- **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
|
||||
- **Retry Signing**: Retry signing for failed/pending invoices/acts
|
||||
- **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:
|
||||
- Date, TIN, Name, Operation Type, Classification Code, Amount
|
||||
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
|
||||
- Looks up mapping in E-Taxes Settings with priority:
|
||||
- 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
|
||||
|
||||
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:**
|
||||
1. User must have MyGovID authentication (same as ASAN Login)
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
## Общая информация
|
||||
|
||||
**Название проекта:** Invoice Az (Invoices Azerbaijan)
|
||||
**Название проекта:** Invoice Az (Invoices Azərbaycan)
|
||||
**Версия:** 0.0.1
|
||||
**Автор:** Jey ERP (info@jeyerp.az)
|
||||
**Лицензия:** Unlicense (Общественное достояние)
|
||||
|
|
|
|||
|
|
@ -331,7 +331,7 @@ Same as Invoice Az app license.
|
|||
|
||||
- **CLAUDE.md** - E-Taxes integration patterns (critical patterns documented)
|
||||
- **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
|
||||
|
||||
---
|
||||
|
|
|
|||
|
|
@ -630,8 +630,8 @@ frappe.db.commit()
|
|||
| **Agricultural Goods** | Products from agriculture (fruits, vegetables, grains, etc.) |
|
||||
| **Tax Free** | Product exempt from VAT (0% tax rate) |
|
||||
| **Taxable** | Product subject to 5% agricultural tax |
|
||||
| **E-Taxes** | Azerbaijan government tax reporting system |
|
||||
| **ASAN Imza** | Digital signature system for Azerbaijan |
|
||||
| **E-Taxes** | Azərbaycan government tax reporting system |
|
||||
| **ASAN Imza** | Digital signature system for Azərbaycan |
|
||||
| **Act** | Agricultural product purchase act (document type in E-Taxes) |
|
||||
| **Tax Rate** | E-Taxes API code for tax calculation ("taxFree", "tax2") |
|
||||
| **Serial Number** | Unique identifier for E-Taxes document |
|
||||
|
|
@ -648,7 +648,7 @@ frappe.db.commit()
|
|||
- `USER_GUIDE_TAX_TYPE.md` - End-user guide
|
||||
|
||||
**External Resources:**
|
||||
- E-Taxes API Documentation (Azerbaijan government)
|
||||
- E-Taxes API Documentation (Azərbaycan government)
|
||||
- ASAN Imza Integration Guide
|
||||
- Frappe Framework Documentation: https://frappeframework.com/docs
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
ƏMAS (e-social.gov.az) Integration API
|
||||
|
||||
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:
|
||||
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()
|
||||
|
||||
# Map Azerbaijani values
|
||||
# Map Azərbaycan values
|
||||
if gender_str in ("kişi", "kisi", "male", "m", "erkək", "erkek"):
|
||||
return "Male"
|
||||
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()
|
||||
|
||||
# Map Azerbaijani values
|
||||
# Map Azərbaycan values
|
||||
if status_str in ("evli", "married", "nikahli", "nikаhlı"):
|
||||
return "Married"
|
||||
elif status_str in ("subay", "subаy", "single", "bekar", "bekаr"):
|
||||
|
|
|
|||
|
|
@ -373,7 +373,7 @@ def get_default_settings():
|
|||
|
||||
@frappe.whitelist()
|
||||
def normalize_azeri_text(text):
|
||||
"""Normalization of Azerbaijani text for matching"""
|
||||
"""Normalization of Azərbaycan text for matching"""
|
||||
if not text:
|
||||
return text
|
||||
|
||||
|
|
|
|||
|
|
@ -1871,7 +1871,7 @@ function show_object_picker_dialog(frm, objects, customerName, taxId) {
|
|||
setTimeout(function() {
|
||||
// Show first confirmation dialog
|
||||
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>' +
|
||||
__('Customer: {0}', [frm.doc.customer]) + '<br>' +
|
||||
__('Object: {0}', [selectedObject.name]) + '<br>' +
|
||||
|
|
|
|||
|
|
@ -64,10 +64,10 @@
|
|||
},
|
||||
{
|
||||
"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",
|
||||
"fieldtype": "Check",
|
||||
"label": "Consider Azerbaijani Characters"
|
||||
"label": "Consider Azərbaycan Characters"
|
||||
},
|
||||
{
|
||||
"fieldname": "default_item_settings_section",
|
||||
|
|
|
|||
|
|
@ -1075,7 +1075,7 @@ def create_act_on_etaxes(token, payload, serial_number):
|
|||
if response.status_code not in [200, 201]:
|
||||
try:
|
||||
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["message"], dict) and "az" in error_data["message"]:
|
||||
return {
|
||||
|
|
@ -1455,7 +1455,7 @@ def cancel_act_on_etaxes(purchase_invoice_name):
|
|||
}
|
||||
|
||||
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}"
|
||||
try:
|
||||
error_data = response.json()
|
||||
|
|
|
|||
|
|
@ -588,7 +588,7 @@ def create_invoice_on_etaxes(token, payload, serial_number):
|
|||
if response.status_code not in [200, 201]:
|
||||
try:
|
||||
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["message"], dict) and "az" in error_data["message"]:
|
||||
return {
|
||||
|
|
@ -970,7 +970,7 @@ def cancel_invoice_on_etaxes(sales_invoice_name):
|
|||
}
|
||||
|
||||
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}"
|
||||
try:
|
||||
error_data = response.json()
|
||||
|
|
|
|||
|
|
@ -120,7 +120,7 @@ def fetch_supplier_data_from_etaxes(supplier_name):
|
|||
if response.status_code not in [200, 201]:
|
||||
try:
|
||||
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["message"], dict) and "az" in error_data["message"]:
|
||||
return {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
# ======= 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
|
||||
|
||||
import frappe
|
||||
|
|
|
|||
Loading…
Reference in New Issue