nxtgauge-backend-rust/crates/db/migrations/20260721040000_create_invoices.down.sql

5 lines
155 B
MySQL
Raw Normal View History

feat: generate a GST invoice automatically after a successful Tracecoin/PayU purchase crates/invoice (InvoiceService, GST computation, HTML rendering) was fully built but never wired to anything and never had its tables — invoices/invoice_line_items/billing_profiles/invoice_number_seq never existed in any active migration (same root cause as everything else this session: only in scripts/init-db.sql, which the real db-migrate job never runs). Created them, matching InvoiceService's actual columns exactly rather than init-db.sql's older, simpler invoices shape. Fixed a real bug in InvoiceService::create while at it: four money fields (total, and three line-item amounts) were bound as i64 against columns/read-models that are i32 everywhere else — would have failed every insert with a Postgres type mismatch the first time this code ever actually ran against a real table. Wired invoice generation into apps/payments' PayU verify_payment handler (the actual success callback) — right after the wallet is credited, a one-line-item GST invoice is generated from the purchased package and PayU's billing fields (firstname/email/phone), using a new INVOICE_SELLER_* env-configurable seller identity. Generation failures are logged, not surfaced to the buyer, since the payment and wallet credit have already succeeded by that point. Also added the missing user-facing endpoints to fetch what got generated: GET /api/payments/invoices (list) and GET /api/payments/invoices/{id} (detail + line items) — previously only admin-side invoice viewing existed. NOTE: the frontend (nxtgauge-frontend-solid, a separate repo) has an existing invoice-viewing page at src/routes/dashboard/wallet/invoices/ but it calls /wallet/me/invoices (no /api/ prefix) via a different, apparently-dead API helper (api.get, not apiFetch) that every other live page avoids — same dead-code pattern as the earlier apps/leads discovery. The live purchase flow (CreditsPage.tsx) has no invoice UI at all yet. Not fixed here since it's out of this repo's scope this session — flagging for a frontend pass.
2026-07-21 03:02:47 +05:30
DROP TABLE IF EXISTS invoice_line_items;
DROP TABLE IF EXISTS invoices;
DROP TABLE IF EXISTS billing_profiles;
DROP SEQUENCE IF EXISTS invoice_number_seq;