import { createResource, createSignal, createMemo, Show } from 'solid-js'; import AdminShell from '~/components/AdminShell'; const API = '/api/gateway'; async function loadInvoices(): Promise { try { const res = await fetch(`${API}/api/admin/invoices`); if (!res.ok) throw new Error('Failed to load'); const data = await res.json(); return Array.isArray(data) ? data : (data.invoices || []); } catch { return []; } } export default function InvoicePage() { const [invoices] = createResource(loadInvoices); const [search, setSearch] = createSignal(''); const filteredInvoices = createMemo(() => { const q = search().toLowerCase(); const all = invoices() ?? []; if (!q) return all; return all.filter((inv) => (inv.invoice_number || inv.id || '').toLowerCase().includes(q) || (inv.user_id || '').toLowerCase().includes(q) || (inv.package_name || '').toLowerCase().includes(q) || (inv.status || '').toLowerCase().includes(q) ); }); return (

Invoice Management

View and download all platform invoices.

setSearch(e.currentTarget.value)} style="padding:8px 12px;border:1px solid #e2e8f0;border-radius:6px;font-size:14px;min-width:320px" />
0}> {filteredInvoices().map((item) => ( ))}
Invoice # User Package Total (₹) Tax (₹) Status Date Actions
Loading...
Failed to load. Is the backend running?
No records found.
{item.invoice_number || item.id} {item.user_id || '—'} {item.package_name || '—'} ₹{item.total != null ? (item.total / 100).toFixed(2) : '—'} ₹{item.tax != null ? (item.tax / 100).toFixed(2) : '—'} {item.status || '—'} {item.created_at ? new Date(item.created_at).toLocaleString() : '—'}
); }