← Files DataARCHIVED FILE

templates/data-app/examples/fleet-operations/content/dashboard/invoices.js

907 Bytes · Oct 5, 2026 · 12:04 UTC

↓ Download file

export const invoiceStatuses = ["All", "Unpaid", "Due soon", "Paid"];
export function invoiceSummary(rows) {
  const totals = { paid: 0, dueSoon: 0, unpaid: 0 };
  for (const row of rows) {
    const key = row.status === "Paid" ? "paid" : row.status === "Due soon" ? "dueSoon" : "unpaid";
    totals[key] += row.amount;
  }
  return { ...totals, billed: totals.paid + totals.dueSoon + totals.unpaid };
}
export function filterInvoices(rows, status, search = "", formatAmount = String) {
  const term = search.trim().toLowerCase();
  return rows.filter(row => (status === "All" || (status === "Unpaid"
    ? ["Outstanding", "Overdue"].includes(row.status) : row.status === status))
    && (!term || [row.customer, row.region, row.dueDate, row.contact,
      row.status === "Outstanding" ? "Unpaid" : row.status, formatAmount(row.amount)]
      .some(value => String(value).toLowerCase().includes(term))));
}

SHA-256: 14fabf846bfb98569ae52a1cf91cfd5983b66b2e1d4559315aec8d8b4e0cf49c