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>
29 lines
976 B
Python
29 lines
976 B
Python
"""Check GL entry date distribution for income accounts."""
|
|
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()
|
|
|
|
r = frappe.db.sql("""
|
|
SELECT EXTRACT(YEAR FROM posting_date)::int as y,
|
|
EXTRACT(MONTH FROM posting_date)::int as m,
|
|
COUNT(*)
|
|
FROM "tabGL Entry"
|
|
WHERE account LIKE %s AND credit > 0
|
|
GROUP BY y, m
|
|
ORDER BY y, m
|
|
""", ('4020%',))
|
|
print("GL entries for 4020 (Mensualite fibre) by month:")
|
|
for row in r:
|
|
print(f" {int(row[0])}-{int(row[1]):02d}: {row[2]} entries")
|
|
|
|
# Total GL entry date range
|
|
r2 = frappe.db.sql("""
|
|
SELECT MIN(posting_date), MAX(posting_date), COUNT(*)
|
|
FROM "tabGL Entry" WHERE credit > 0 AND account NOT LIKE %s AND account NOT LIKE %s
|
|
""", ('Comptes%', '%payer%'))
|
|
print(f"\nAll income GL: min={r2[0][0]} max={r2[0][1]} count={r2[0][2]}")
|
|
|
|
frappe.destroy()
|