Backend services: - targo-hub: extract deepGetValue to helpers.js, DRY disconnect reasons lookup map, compact CAPABILITIES, consolidate vision.js prompts/schemas, extract dispatch scoring weights, trim section dividers across 9 files - modem-bridge: extract getSession() helper (6 occurrences), resetIdleTimer(), consolidate DM query factory, fix duplicate username fill bug, trim headers (server.js -36%, tplink-session.js -47%, docker-compose.yml -57%) Frontend: - useWifiDiagnostic: extract THRESHOLDS const, split processDiagnostic into 6 focused helpers (processOnlineStatus, processWanIPs, processRadios, processMeshNodes, processClients, checkRadioIssues) - EquipmentDetail: merge duplicate ROLE_LABELS, remove verbose comments Documentation (17 → 13 files, -1,400 lines): - New consolidated README.md (architecture, services, dependencies, auth) - Merge ECOSYSTEM-OVERVIEW into ARCHITECTURE.md - Merge MIGRATION-PLAN + ARCHITECTURE-COMPARE + FIELD-GAP + CHANGELOG → MIGRATION.md - Merge COMPETITIVE-ANALYSIS into PLATFORM-STRATEGY.md - Update ROADMAP.md with current phase status - Delete CONTEXT.md (absorbed into README) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
33 lines
1.2 KiB
Python
33 lines
1.2 KiB
Python
"""Check invoice naming and legacy_invoice_id mapping."""
|
|
import frappe, os, sys
|
|
sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 1)
|
|
os.chdir("/home/frappe/frappe-bench/sites")
|
|
frappe.init(site="erp.gigafibre.ca", sites_path=".")
|
|
frappe.connect()
|
|
|
|
# Check invoice names
|
|
r = frappe.db.sql('SELECT name, legacy_invoice_id FROM "tabSales Invoice" WHERE legacy_invoice_id > 0 LIMIT 10')
|
|
print("Invoice names with legacy_invoice_id:")
|
|
for row in r:
|
|
print(f" name={row[0]} legacy_id={row[1]}")
|
|
|
|
# Check item parent vs invoice name
|
|
r2 = frappe.db.sql("""
|
|
SELECT sii.parent, sii.idx, sii.item_name, si.legacy_invoice_id
|
|
FROM "tabSales Invoice Item" sii
|
|
JOIN "tabSales Invoice" si ON si.name = sii.parent
|
|
WHERE si.legacy_invoice_id > 0
|
|
LIMIT 10
|
|
""")
|
|
print("\nItem parent → legacy_invoice_id:")
|
|
for row in r2:
|
|
print(f" parent={row[0]} idx={row[1]} legacy_id={row[3]} name={row[2][:50]}")
|
|
|
|
# Count
|
|
r3 = frappe.db.sql('SELECT COUNT(*) FROM "tabSales Invoice" WHERE legacy_invoice_id > 0')
|
|
print(f"\nInvoices with legacy_invoice_id: {r3[0][0]}")
|
|
r4 = frappe.db.sql('SELECT COUNT(*) FROM "tabSales Invoice" WHERE legacy_invoice_id IS NULL OR legacy_invoice_id = 0')
|
|
print(f"Invoices without legacy_invoice_id: {r4[0][0]}")
|
|
|
|
frappe.destroy()
|