Finance-Accounts/ar-aging-app
bahawal.baloch 2135dc873c Implement MySQL support in AR aging app. Update README with configuration instructions, modify requirements for PyMySQL and dotenv, and refactor database setup to use MySQL. Adjust models and queries for compatibility with MySQL, including column size specifications. Enhance Vite config for API proxying. 2026-07-29 18:52:37 +05:00
..
backend Implement MySQL support in AR aging app. Update README with configuration instructions, modify requirements for PyMySQL and dotenv, and refactor database setup to use MySQL. Adjust models and queries for compatibility with MySQL, including column size specifications. Enhance Vite config for API proxying. 2026-07-29 18:52:37 +05:00
docs Initial commit: AR aging app with root gitignore. 2026-07-29 18:07:21 +05:00
frontend Implement MySQL support in AR aging app. Update README with configuration instructions, modify requirements for PyMySQL and dotenv, and refactor database setup to use MySQL. Adjust models and queries for compatibility with MySQL, including column size specifications. Enhance Vite config for API proxying. 2026-07-29 18:52:37 +05:00
.dockerignore Implement MySQL support in AR aging app. Update README with configuration instructions, modify requirements for PyMySQL and dotenv, and refactor database setup to use MySQL. Adjust models and queries for compatibility with MySQL, including column size specifications. Enhance Vite config for API proxying. 2026-07-29 18:52:37 +05:00
.gitignore Stop tracking SQLite WAL/SHM runtime files. 2026-07-29 18:07:50 +05:00
Makefile Initial commit: AR aging app with root gitignore. 2026-07-29 18:07:21 +05:00
README.md Implement MySQL support in AR aging app. Update README with configuration instructions, modify requirements for PyMySQL and dotenv, and refactor database setup to use MySQL. Adjust models and queries for compatibility with MySQL, including column size specifications. Enhance Vite config for API proxying. 2026-07-29 18:52:37 +05:00
docker-compose.yml Implement MySQL support in AR aging app. Update README with configuration instructions, modify requirements for PyMySQL and dotenv, and refactor database setup to use MySQL. Adjust models and queries for compatibility with MySQL, including column size specifications. Enhance Vite config for API proxying. 2026-07-29 18:52:37 +05:00
example.env Implement MySQL support in AR aging app. Update README with configuration instructions, modify requirements for PyMySQL and dotenv, and refactor database setup to use MySQL. Adjust models and queries for compatibility with MySQL, including column size specifications. Enhance Vite config for API proxying. 2026-07-29 18:52:37 +05:00

README.md

Amazon Accounts Receivable Aging Dashboard

Automates the Finance team's month-end Amazon Accounts Receivable Aging workbook: upload the month's Amazon Custom Unified Transaction files → get a structurally- and financially-identical Accounts Receivable Aging workbook, with validation, settlement reconciliation, exceptions, drill-down, and an audit trail.

Amazon only (no Walmart/TikTok/Temu/Shein/eBay/Shopify). Reverse-engineered from the Jan-2026 files; the USA receivable reproduces to the penny (11,110,433 = Detail!D11). See docs/accounts-receivable-logic.md.

Layout

backend/
  app/core/        # streaming parser + receivable engine (stdlib + openpyxl only)
  app/api/         # FastAPI app (uploads, jobs, endpoints) — Phase 3
  tests/           # unit + Jan-2026 reconciliation integration test
  cli.py           # process files from the command line
frontend/          # React + TS + Vite dashboard — Phase 4
docs/

Run the app

# 1. Configure MySQL (hosted RDS) + data paths
cp example.env .env   # then fill in MYSQL_* credentials

# Option A — Docker (backend + Vite hot reload)
docker compose up --build
# → http://localhost:5173  (API on :8000; uploads/exports on the ar_data volume)

# Option B — local processes
make install          # backend deps + npm install
make backend          # terminal 1 → FastAPI on :8000
make frontend         # terminal 2 → dashboard on http://localhost:5173

Then open http://localhost:5173New Closing → pick the month → drag in the three Amazon files → Run processing → review → Download Full A/R Aging Excel.

Uploads and exports are stored under AR_DATA_DIR (default backend/data locally, /data in Docker). The app connects to MySQL using MYSQL_* variables from .env.

Run the engine headless (CLI)

cd backend && pip install -r requirements.txt
python cli.py "/path/USA…01 to 10 January,2026.xlsx" \
              "/path/USA…11 to 20 January,2026.xlsx" \
              "/path/USA…21 to 31 January,2026.xlsx" \
              --month-end 2026-01-31 --lag 2 --reserve-standard 125.44 --out AR_Aging_Jan26.xlsx

Tests

make test        # 16 fast tests (engine, export, API, robustness)
make test-all    # + Jan-2026 reconciliation & sample-comparison (integration, ~4 min)
# point tests at the sample files if not in the repo root:
AR_SAMPLE_DIR="/path/to/samples" make test-all

Status — all phases complete (incl. v2 multi-market)

  • Engine — settlement classification + receivable; USA = 11,110,433 verified to the penny
  • Multi-marketplace — all 13 markets (CA/UK/AU/IE + localized FR/DE/IT/ES/NL/PL/SV/TR) reconcile to the penny vs the Jan-26 workbook; per-market currency & FX; settlement-owner logic for cross-market EU chains; helper-row & pivot-sheet detection
  • AR roll-forward — opening balance (auto carry-forward) + net revenue payouts = closing; AR Ledger · Finance Summary · Journal Entry (per-marketplace) · Reconciliation Control w/ sign-off
  • Header mapping — localized alias tables + admin rules UI (/api/mapping-rules); unmapped amounts are never silently excluded
  • Storage-fee detection — canonical + description-based (potential/missing storage exceptions)
  • Excel — Full audit workbook + Summary Finance pack
  • Tests — ~60 fast + integration (USA reconciliation, sample comparison, 13-market benchmark)