Remove E-Taxes Obligation Pact doctype and its loader

Drops the obl-pact-list integration entirely: the doctype directory,
loader/bulk-loader entries, REFERENCE_SECTIONS row, reference-list
allow-list entry, and the existence-check guard on Presented
Certificate's sazis_code. sazis_code is now a plain Data field —
no Link target to validate against.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ali 2026-05-15 16:07:06 +00:00
parent 69f2acec86
commit b5df6a4333
7 changed files with 4 additions and 177 deletions

View File

@ -618,17 +618,6 @@ const REFERENCE_SECTIONS = [
{ label: 'Bank Name', field: 'bank_name' } { label: 'Bank Name', field: 'bank_name' }
] ]
}, },
{
doctype: 'E-Taxes Obligation Pact',
html_fieldname: 'obligation_pacts_list_html',
list_route: '/app/e-taxes-obligation-pact',
columns: [
{ label: 'Code', field: 'code', link_to_item: true },
{ label: 'Name', field: 'name_az' },
{ label: 'Validity', field: 'validity_date', format: 'date' },
{ label: 'Expire', field: 'expire_date', format: 'date' }
]
},
{ {
doctype: 'E-Taxes Presented Certificate', doctype: 'E-Taxes Presented Certificate',
html_fieldname: 'presented_certificates_list_html', html_fieldname: 'presented_certificates_list_html',
@ -818,18 +807,10 @@ const DATA_LOADERS = [
method: 'invoice_az.company_api.load_company_bank_accounts', method: 'invoice_az.company_api.load_company_bank_accounts',
freezeMessage: __('Loading bank accounts from E-Taxes...') freezeMessage: __('Loading bank accounts from E-Taxes...')
}, },
{
key: 'load_obligation_pacts',
label: __('Load Obligation Pacts (Sazişlər)'),
description: __('Load sub-contractor obligation pacts (oil fields / sazişlər) from E-Taxes'),
default: 1,
method: 'invoice_az.company_api.load_company_obligation_pacts',
freezeMessage: __('Loading obligation pacts from E-Taxes...')
},
{ {
key: 'load_presented_certificates', key: 'load_presented_certificates',
label: __('Load Presented Certificates'), label: __('Load Presented Certificates'),
description: __('Load presented/accepted e-certificates from E-Taxes. Requires obligation pacts for links to resolve.'), description: __('Load presented/accepted e-certificates from E-Taxes.'),
default: 1, default: 1,
method: 'invoice_az.company_api.load_company_presented_certificates', method: 'invoice_az.company_api.load_company_presented_certificates',
freezeMessage: __('Loading presented certificates from E-Taxes...') freezeMessage: __('Loading presented certificates from E-Taxes...')

View File

@ -11,7 +11,6 @@ OBJECT_LIST_URL = f"{BASE_URL}/api/po/profile/public/v1/object/list"
CASH_REGISTER_LIST_URL = f"{BASE_URL}/api/po/profile/public/v2/profile/cashRegister/list" CASH_REGISTER_LIST_URL = f"{BASE_URL}/api/po/profile/public/v2/profile/cashRegister/list"
POS_TERMINAL_LIST_URL = f"{BASE_URL}/api/po/profile/public/v2/profile/posTerminal/list" POS_TERMINAL_LIST_URL = f"{BASE_URL}/api/po/profile/public/v2/profile/posTerminal/list"
BANK_ACCOUNT_LIST_URL = f"{BASE_URL}/api/po/profile/public/v1/profile/bankAccount/list" BANK_ACCOUNT_LIST_URL = f"{BASE_URL}/api/po/profile/public/v1/profile/bankAccount/list"
OBL_PACT_LIST_URL = f"{BASE_URL}/api/po/edi-legal/public/v1/application/sub-contractor/obl-pact-list"
PRESENTED_CERT_LIST_URL = f"{BASE_URL}/api/po/edi-legal/public/v1/application/contractor/presented-accepted-e-certificates" PRESENTED_CERT_LIST_URL = f"{BASE_URL}/api/po/edi-legal/public/v1/application/contractor/presented-accepted-e-certificates"
PAGE_SIZE = 200 PAGE_SIZE = 200
@ -485,56 +484,9 @@ def load_company_bank_accounts(company):
# ======= OBLIGATION PACTS (sub-contractor obl-pact-list) ======= # ======= OBLIGATION PACTS (sub-contractor obl-pact-list) =======
@frappe.whitelist() @frappe.whitelist()
def load_company_obligation_pacts(company):
"""Load obligation pacts (sazişlər — oil fields/agreements) from E-Taxes."""
try:
record_etaxes_activity()
if not company or not frappe.db.exists("Company", company):
return {"success": False, "message": f"Company '{company}' not found."}
headers, err = _auth_headers()
if err:
return err
response, err = _etaxes_request("GET", OBL_PACT_LIST_URL, headers)
if err:
return err
data = response.json() or {}
pacts = data.get("oblPacts") or []
created, updated = 0, 0
for item in pacts:
pact = item.get("oblPact") or {}
code = pact.get("code")
if not code:
continue
values = {
"name_az": _get(pact, "name", "az"),
"validity_date": _safe_date(item.get("validityDate")),
"expire_date": _safe_date(item.get("expireDate")),
"company": company,
}
c, u = _upsert("E-Taxes Obligation Pact", code, values, "code")
created += c
updated += u
frappe.db.commit()
return _summarize(created, updated, len(pacts), "Obligation pacts loaded")
except Exception as e:
frappe.log_error(
f"Unexpected error: {e}\n{frappe.get_traceback()}",
"E-Taxes Obligation Pact Load",
)
return {"success": False, "message": f"Error: {e}"}
# ======= PRESENTED / ACCEPTED E-CERTIFICATES ======= # ======= PRESENTED / ACCEPTED E-CERTIFICATES =======
def _map_certificate(cert, company): def _map_certificate(cert, company):
sazis_code = cert.get("sazisKodu")
return { return {
"cert_no": cert.get("certNo"), "cert_no": cert.get("certNo"),
"cert_category": cert.get("certCategory"), "cert_category": cert.get("certCategory"),
@ -543,7 +495,7 @@ def _map_certificate(cert, company):
"taxpayer_full_name": cert.get("taxPayerFullName"), "taxpayer_full_name": cert.get("taxPayerFullName"),
"voen": cert.get("voen"), "voen": cert.get("voen"),
"sazis_name": cert.get("sazisName"), "sazis_name": cert.get("sazisName"),
"sazis_code": sazis_code if sazis_code and frappe.db.exists("E-Taxes Obligation Pact", sazis_code) else None, "sazis_code": cert.get("sazisKodu") or None,
"contract_start_date": _parse_compact_date(cert.get("contractStartDate")), "contract_start_date": _parse_compact_date(cert.get("contractStartDate")),
"contract_end_date": _parse_compact_date(cert.get("contractEndDate")), "contract_end_date": _parse_compact_date(cert.get("contractEndDate")),
"cert_start_date": _parse_compact_date(cert.get("certStartDate")), "cert_start_date": _parse_compact_date(cert.get("certStartDate")),
@ -646,7 +598,6 @@ def _process_company_data_bulk(company, selections, user):
"load_cash_registers": (load_company_cash_registers, "Cash Registers"), "load_cash_registers": (load_company_cash_registers, "Cash Registers"),
"load_pos_terminals": (load_company_pos_terminals, "POS Terminals"), "load_pos_terminals": (load_company_pos_terminals, "POS Terminals"),
"load_bank_accounts": (load_company_bank_accounts, "Bank Accounts"), "load_bank_accounts": (load_company_bank_accounts, "Bank Accounts"),
"load_obligation_pacts": (load_company_obligation_pacts, "Obligation Pacts"),
"load_presented_certificates": (load_company_presented_certificates, "Presented Certificates"), "load_presented_certificates": (load_company_presented_certificates, "Presented Certificates"),
} }
@ -716,7 +667,6 @@ _REFERENCE_LIST_FIELDS = {
"E-Taxes Cash Register": ["name", "number", "model", "ecash_status", "object", "installed_at"], "E-Taxes Cash Register": ["name", "number", "model", "ecash_status", "object", "installed_at"],
"E-Taxes POS Terminal": ["name", "registration_number", "serial_number", "status", "registration_date"], "E-Taxes POS Terminal": ["name", "registration_number", "serial_number", "status", "registration_date"],
"E-Taxes Bank Account": ["name", "number", "currency", "status", "bank_name"], "E-Taxes Bank Account": ["name", "number", "currency", "status", "bank_name"],
"E-Taxes Obligation Pact": ["name", "code", "name_az", "validity_date", "expire_date"],
"E-Taxes Presented Certificate": ["name", "cert_no", "taxpayer_full_name", "cert_category"], "E-Taxes Presented Certificate": ["name", "cert_no", "taxpayer_full_name", "cert_category"],
} }

View File

@ -1,80 +0,0 @@
{
"actions": [],
"autoname": "field:code",
"creation": "2026-04-21 12:00:00",
"doctype": "DocType",
"engine": "InnoDB",
"field_order": [
"code",
"name_az",
"validity_date",
"expire_date",
"company_section",
"company"
],
"fields": [
{
"fieldname": "code",
"fieldtype": "Data",
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Code",
"length": 40,
"read_only": 1,
"reqd": 1,
"unique": 1
},
{
"fieldname": "name_az",
"fieldtype": "Data",
"in_list_view": 1,
"label": "Name (AZ)",
"length": 500,
"read_only": 1
},
{
"fieldname": "validity_date",
"fieldtype": "Date",
"in_list_view": 1,
"label": "Validity Date",
"read_only": 1
},
{
"fieldname": "expire_date",
"fieldtype": "Date",
"in_list_view": 1,
"label": "Expire Date",
"read_only": 1
},
{
"fieldname": "company_section",
"fieldtype": "Section Break",
"label": "Link"
},
{
"fieldname": "company",
"fieldtype": "Link",
"in_standard_filter": 1,
"label": "Company",
"options": "Company",
"read_only": 1
}
],
"index_web_pages_for_search": 1,
"links": [],
"modified": "2026-04-21 12:00:00",
"modified_by": "Administrator",
"module": "Invoice Az",
"name": "E-Taxes Obligation Pact",
"naming_rule": "By fieldname",
"owner": "Administrator",
"permissions": [
{"create": 1, "delete": 1, "email": 1, "export": 1, "print": 1, "read": 1, "report": 1, "role": "System Manager", "share": 1, "write": 1},
{"create": 1, "email": 1, "export": 1, "print": 1, "read": 1, "report": 1, "role": "Accounts User", "share": 1, "write": 1}
],
"sort_field": "modified",
"sort_order": "DESC",
"states": [],
"track_changes": 1,
"title_field": "name_az"
}

View File

@ -1,8 +0,0 @@
# Copyright (c) 2025, Jey ERP and contributors
# For license information, please see license.txt
from frappe.model.document import Document
class ETaxesObligationPact(Document):
pass

View File

@ -1,16 +0,0 @@
# Copyright (c) 2025, Jey ERP and Contributors
# See license.txt
from frappe.tests import IntegrationTestCase, UnitTestCase
EXTRA_TEST_RECORD_DEPENDENCIES = []
IGNORE_TEST_RECORD_DEPENDENCIES = []
class UnitTestETaxesObligationPact(UnitTestCase):
pass
class IntegrationTestETaxesObligationPact(IntegrationTestCase):
pass

View File

@ -101,10 +101,10 @@
}, },
{ {
"fieldname": "sazis_code", "fieldname": "sazis_code",
"fieldtype": "Link", "fieldtype": "Data",
"in_standard_filter": 1, "in_standard_filter": 1,
"label": "Agreement Code", "label": "Agreement Code",
"options": "E-Taxes Obligation Pact", "length": 40,
"read_only": 1 "read_only": 1
}, },
{ {