From e4dc33e94406b02e43c275b5ad6ded8a92795f6e Mon Sep 17 00:00:00 2001 From: Emil Kowalski <36730035+emilkowalski@users.noreply.github.com> Date: Thu, 5 Oct 2023 10:16:12 +0200 Subject: [PATCH] Update customers view (#196) * Update tables * Add new customers, add search, polish * Make search reusable, update customers * polish --- .../15-final/app/dashboard/customers/page.tsx | 18 +++- .../15-final/app/dashboard/invoices/page.tsx | 4 +- dashboard/15-final/app/lib/data.ts | 55 ++++++++--- dashboard/15-final/app/lib/definitions.ts | 10 ++ dashboard/15-final/app/lib/dummy-data.js | 74 +++++++++----- dashboard/15-final/app/ui/button.tsx | 2 +- dashboard/15-final/app/ui/customers/table.tsx | 92 +++++++++++++----- .../15-final/app/ui/invoices/buttons.tsx | 6 +- .../15-final/app/ui/invoices/pagination.tsx | 13 +-- dashboard/15-final/app/ui/invoices/status.tsx | 6 +- dashboard/15-final/app/ui/invoices/table.tsx | 31 +++--- .../15-final/app/ui/{invoices => }/search.tsx | 25 +++-- .../public/customers/ada-lovelace.png | Bin 4336 -> 0 bytes .../public/customers/delba-de-oliveira.png | Bin 0 -> 5824 bytes .../public/customers/emil-kowalski.png | Bin 0 -> 6268 bytes .../15-final/public/customers/evil-rabbit.png | Bin 0 -> 1019 bytes .../public/customers/grace-hopper.png | Bin 3753 -> 0 bytes .../public/customers/guillermo-rauch.png | Bin 0 -> 6284 bytes .../15-final/public/customers/hedy-lammar.png | Bin 5012 -> 0 bytes .../public/customers/jared-palmer.png | Bin 0 -> 6460 bytes .../public/customers/lee-robinson.png | Bin 0 -> 5653 bytes .../public/customers/margaret-hamilton.png | Bin 3950 -> 0 bytes .../15-final/public/customers/steph-dietz.png | Bin 0 -> 7151 bytes .../15-final/public/customers/tom-occhino.png | Bin 0 -> 8229 bytes 24 files changed, 232 insertions(+), 104 deletions(-) rename dashboard/15-final/app/ui/{invoices => }/search.tsx (55%) delete mode 100644 dashboard/15-final/public/customers/ada-lovelace.png create mode 100644 dashboard/15-final/public/customers/delba-de-oliveira.png create mode 100644 dashboard/15-final/public/customers/emil-kowalski.png create mode 100644 dashboard/15-final/public/customers/evil-rabbit.png delete mode 100644 dashboard/15-final/public/customers/grace-hopper.png create mode 100644 dashboard/15-final/public/customers/guillermo-rauch.png delete mode 100644 dashboard/15-final/public/customers/hedy-lammar.png create mode 100644 dashboard/15-final/public/customers/jared-palmer.png create mode 100644 dashboard/15-final/public/customers/lee-robinson.png delete mode 100644 dashboard/15-final/public/customers/margaret-hamilton.png create mode 100644 dashboard/15-final/public/customers/steph-dietz.png create mode 100644 dashboard/15-final/public/customers/tom-occhino.png diff --git a/dashboard/15-final/app/dashboard/customers/page.tsx b/dashboard/15-final/app/dashboard/customers/page.tsx index 531ecce..c45ee90 100644 --- a/dashboard/15-final/app/dashboard/customers/page.tsx +++ b/dashboard/15-final/app/dashboard/customers/page.tsx @@ -1,9 +1,23 @@ +import { fetchFilteredCustomers } from '@/app/lib/data'; import CustomersTable from '@/app/ui/customers/table'; -export default function Page() { +export default async function Page({ + searchParams, +}: { + searchParams: + | { + query: string | undefined; + page: string | undefined; + } + | undefined; +}) { + const query = searchParams?.query || ''; + + const customers = await fetchFilteredCustomers(query); + return (
- +
); } diff --git a/dashboard/15-final/app/dashboard/invoices/page.tsx b/dashboard/15-final/app/dashboard/invoices/page.tsx index 7b19125..11bfce8 100644 --- a/dashboard/15-final/app/dashboard/invoices/page.tsx +++ b/dashboard/15-final/app/dashboard/invoices/page.tsx @@ -1,5 +1,5 @@ import Pagination from '@/app/ui/invoices/pagination'; -import Search from '@/app/ui/invoices/search'; +import Search from '@/app/ui/search'; import { CreateInvoice } from '@/app/ui/invoices/buttons'; import Table from '@/app/ui/invoices/table'; import { fetchFilteredInvoices } from '@/app/lib/data'; @@ -29,7 +29,7 @@ export default async function Page({

Invoices

- +
diff --git a/dashboard/15-final/app/lib/data.ts b/dashboard/15-final/app/lib/data.ts index 2ddced7..f6d291f 100644 --- a/dashboard/15-final/app/lib/data.ts +++ b/dashboard/15-final/app/lib/data.ts @@ -44,7 +44,7 @@ export async function fetchCounts() { export async function fetchTotalAmountByStatus() { try { - const data = await sql`SELECT + const data = await sql`SELECT SUM(CASE WHEN status = 'paid' THEN amount ELSE 0 END) AS "paid", SUM(CASE WHEN status = 'pending' THEN amount ELSE 0 END) AS "pending" FROM invoices`; @@ -61,8 +61,8 @@ export async function fetchTotalAmountByStatus() { export async function fetchLatestInvoices() { try { const data = await sql` - SELECT invoices.amount, customers.name, customers.image_url, customers.email - FROM invoices + SELECT invoices.amount, customers.name, customers.image_url, customers.email + FROM invoices JOIN customers ON invoices.customer_id = customers.id ORDER BY invoices.date DESC LIMIT 5`; @@ -92,7 +92,7 @@ export async function fetchFilteredInvoices( invoices.amount, invoices.date, invoices.status, - customers.name, + customers.name, customers.email, customers.image_url FROM invoices @@ -161,7 +161,7 @@ export async function fetchInvoiceById(id: string) { export async function fetchCustomerNames() { try { const data = await sql` - SELECT + SELECT id, name FROM customers @@ -179,17 +179,17 @@ export async function fetchCustomerNames() { export async function fetchCustomersTable() { try { const data = await sql` - SELECT + SELECT customers.id, customers.name, customers.email, customers.image_url, COUNT(invoices.id) AS total_invoices, - SUM(CASE WHEN invoices.status = 'pending' THEN invoices.amount ELSE 0 END) AS total_pending, - SUM(CASE WHEN invoices.status = 'paid' THEN invoices.amount ELSE 0 END) AS total_paid - FROM customers - LEFT JOIN invoices ON customers.id = invoices.customer_id - GROUP BY customers.id, customers.name, customers.email, customers.image_url + SUM(CASE WHEN invoices.status = 'pending' THEN invoices.amount ELSE 0 END) AS total_pending, + SUM(CASE WHEN invoices.status = 'paid' THEN invoices.amount ELSE 0 END) AS total_paid + FROM customers + LEFT JOIN invoices ON customers.id = invoices.customer_id + GROUP BY customers.id, customers.name, customers.email, customers.image_url ORDER BY customers.name ASC `; @@ -205,3 +205,36 @@ export async function fetchCustomersTable() { throw new Error('Failed to fetch customer table.'); } } + +export async function fetchFilteredCustomers(query: string) { + try { + const data = await sql` + SELECT + customers.id, + customers.name, + customers.email, + customers.image_url, + COUNT(invoices.id) AS total_invoices, + SUM(CASE WHEN invoices.status = 'pending' THEN invoices.amount ELSE 0 END) AS total_pending, + SUM(CASE WHEN invoices.status = 'paid' THEN invoices.amount ELSE 0 END) AS total_paid + FROM customers + LEFT JOIN invoices ON customers.id = invoices.customer_id + WHERE + customers.name ILIKE ${`%${query}%`} OR + customers.email ILIKE ${`%${query}%`} + GROUP BY customers.id, customers.name, customers.email, customers.image_url + ORDER BY customers.name ASC + `; + + const customers = data.rows.map((customer) => ({ + ...customer, + total_pending: formatCurrency(customer.total_pending), + total_paid: formatCurrency(customer.total_paid), + })); + + return customers; + } catch (err) { + console.error('Database Error:', err); + throw new Error('Failed to fetch customer table.'); + } +} diff --git a/dashboard/15-final/app/lib/definitions.ts b/dashboard/15-final/app/lib/definitions.ts index 8586ef4..0d609f2 100644 --- a/dashboard/15-final/app/lib/definitions.ts +++ b/dashboard/15-final/app/lib/definitions.ts @@ -65,6 +65,16 @@ export type CustomersTable = { total_paid: number; }; +export type FormattedCustomersTable = { + id: string; + name: string; + email: string; + image_url: string; + total_invoices: number; + total_pending: string; + total_paid: string; +}; + export type CustomerName = { id: string; name: string; diff --git a/dashboard/15-final/app/lib/dummy-data.js b/dashboard/15-final/app/lib/dummy-data.js index 7cfa132..9a2ee95 100644 --- a/dashboard/15-final/app/lib/dummy-data.js +++ b/dashboard/15-final/app/lib/dummy-data.js @@ -10,28 +10,52 @@ const users = [ const customers = [ { - id: '93980f8c-a5e4-484c-a469-2d12ca8fdde3', - name: 'Ada Lovelace', - email: 'ada@lovelace.com', - image_url: '/customers/ada-lovelace.png', + id: '3958dc9e-712f-4377-85e9-fec4b6a6442a', + name: 'Delba de Oliveira', + email: 'delba@oliveira.com', + image_url: '/customers/delba-de-oliveira.png', }, { - id: 'e53120f8-0301-437b-924a-0288f4ec6040', - name: 'Grace Hopper', - email: 'grace@hopper.com', - image_url: '/customers/grace-hopper.png', - }, - { - id: '030fab4c-18d7-4ed2-814c-4171cc67bca8', - name: 'Hedy Lammar', - email: 'hedy@lammar.com', - image_url: '/customers/hedy-lammar.png', + id: '3958dc9e-742f-4377-85e9-fec4b6a6442a', + name: 'Lee Robinson', + email: 'lee@robinson.com', + image_url: '/customers/lee-robinson.png', }, { id: '3958dc9e-737f-4377-85e9-fec4b6a6442a', - name: 'Margaret Hamilton', - email: 'margaret@hamilton.com', - image_url: '/customers/margaret-hamilton.png', + name: 'Guillermo Rauch', + email: 'guillermo@rauch.com', + image_url: '/customers/guillermo-rauch.png', + }, + { + id: '50ca3e18-62cd-11ee-8c99-0242ac120002', + name: 'Jared Palmer', + email: 'jared@palmer.com', + image_url: '/customers/jared-palmer.png', + }, + { + id: '3958dc9e-787f-4377-85e9-fec4b6a6442a', + name: 'Steph Dietz', + email: 'steph@dietz.com', + image_url: '/customers/steph-dietz.png', + }, + { + id: '76d65c26-f784-44a2-ac19-586678f7c2f2', + name: 'Tom Occhino', + email: 'tom@occhino.com', + image_url: '/customers/tom-occhino.png', + }, + { + id: 'd6e15727-9fe1-4961-8c5b-ea44a9bd81aa', + name: 'Evil Rabbit', + email: 'evil@rabbit.com', + image_url: '/customers/evil-rabbit.png', + }, + { + id: '126eed9c-c90c-4ef6-a4a8-fcf7408d3c66', + name: 'Emil Kowalski', + email: 'emil@kowalski.com', + image_url: '/customers/emil-kowalski.png', }, ]; @@ -49,7 +73,7 @@ const invoices = [ date: '2022-11-14', }, { - customer_id: customers[2].id, + customer_id: customers[4].id, amount: 3040, status: 'paid', date: '2022-10-29', @@ -61,19 +85,19 @@ const invoices = [ date: '2023-09-10', }, { - customer_id: customers[0].id, + customer_id: customers[5].id, amount: 34577, status: 'pending', date: '2023-08-05', }, { - customer_id: customers[1].id, + customer_id: customers[7].id, amount: 54246, status: 'pending', date: '2023-07-16', }, { - customer_id: customers[2].id, + customer_id: customers[6].id, amount: 8945, status: 'pending', date: '2023-06-27', @@ -85,13 +109,13 @@ const invoices = [ date: '2023-06-09', }, { - customer_id: customers[2].id, + customer_id: customers[4].id, amount: 1250, status: 'paid', date: '2023-06-17', }, { - customer_id: customers[0].id, + customer_id: customers[5].id, amount: 8945, status: 'paid', date: '2023-06-07', @@ -103,7 +127,7 @@ const invoices = [ date: '2023-08-19', }, { - customer_id: customers[2].id, + customer_id: customers[5].id, amount: 8945, status: 'paid', date: '2023-06-03', @@ -115,7 +139,7 @@ const invoices = [ date: '2023-06-18', }, { - customer_id: customers[3].id, + customer_id: customers[0].id, amount: 8945, status: 'paid', date: '2023-10-04', diff --git a/dashboard/15-final/app/ui/button.tsx b/dashboard/15-final/app/ui/button.tsx index f65aa1d..ff6253b 100644 --- a/dashboard/15-final/app/ui/button.tsx +++ b/dashboard/15-final/app/ui/button.tsx @@ -9,7 +9,7 @@ export function Button({ children, className, ...rest }: ButtonProps) {
- +
+
+ {customers?.map((customer) => ( +
+
+
+
+
+ +

{customer.name}

+
+
+

+ {customer.email} +

+
+
+
+
+

Pending

+

{customer.total_pending}

+
+
+

Paid

+

{customer.total_paid}

+
+
+
+

{customer.total_invoices} invoices

+
+
+ ))} +
+
+ - - - - - - + {customers.map((customer) => ( - - + - - - - diff --git a/dashboard/15-final/app/ui/invoices/buttons.tsx b/dashboard/15-final/app/ui/invoices/buttons.tsx index f3e348b..eed4d4f 100644 --- a/dashboard/15-final/app/ui/invoices/buttons.tsx +++ b/dashboard/15-final/app/ui/invoices/buttons.tsx @@ -6,7 +6,7 @@ export function CreateInvoice() { return ( Create Invoice{' '} @@ -18,7 +18,7 @@ export function UpdateInvoice({ id }: { id: string }) { return ( @@ -29,7 +29,7 @@ export function DeleteInvoice({ id }: { id: string }) { return (
- diff --git a/dashboard/15-final/app/ui/invoices/pagination.tsx b/dashboard/15-final/app/ui/invoices/pagination.tsx index 71f6f39..044a854 100644 --- a/dashboard/15-final/app/ui/invoices/pagination.tsx +++ b/dashboard/15-final/app/ui/invoices/pagination.tsx @@ -16,8 +16,8 @@ export default function Pagination({ const searchParams = useSearchParams(); const allPages = Array.from({ length: totalPages }, (_, i) => i + 1); - const PreviousPageTag = currentPage === 1 ? 'p' : Link; - const NextPageTag = currentPage === totalPages ? 'p' : Link; + const PreviousPageTag = Link; + const NextPageTag = Link; const createPageUrl = (pageNumber: number) => { const params = new URLSearchParams(searchParams); @@ -30,9 +30,10 @@ export default function Pagination({ @@ -48,7 +49,7 @@ export default function Pagination({ className={clsx( i === 0 && 'rounded-l-md', i === allPages.length - 1 && 'rounded-r-md', - 'flex h-10 w-10 items-center justify-center text-sm ring-1 ring-inset ring-gray-300', + 'flex h-10 w-10 items-center justify-center text-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-100', { 'z-10 bg-blue-600 text-white ring-blue-600': currentPage === page, @@ -63,7 +64,7 @@ export default function Pagination({ Pending - + ) : null} {status === 'paid' ? ( <> Paid - + ) : null} diff --git a/dashboard/15-final/app/ui/invoices/table.tsx b/dashboard/15-final/app/ui/invoices/table.tsx index 94fb312..891c2c7 100644 --- a/dashboard/15-final/app/ui/invoices/table.tsx +++ b/dashboard/15-final/app/ui/invoices/table.tsx @@ -27,11 +27,11 @@ export default async function InvoicesTable({ } `; return ( -
+
-
+
{invoices?.map((invoice) => (
+ Name + Email + Total Invoices + Total Pending + Total Paid
+
{customer.name}

+ {customer.email} + {customer.total_invoices} + {customer.total_pending} + {customer.total_paid}
- + - - - - - {invoices?.map((invoice) => ( - + - - - - - diff --git a/dashboard/15-final/app/ui/invoices/search.tsx b/dashboard/15-final/app/ui/search.tsx similarity index 55% rename from dashboard/15-final/app/ui/invoices/search.tsx rename to dashboard/15-final/app/ui/search.tsx index a7a3977..bb58994 100644 --- a/dashboard/15-final/app/ui/invoices/search.tsx +++ b/dashboard/15-final/app/ui/search.tsx @@ -4,7 +4,7 @@ import { MagnifyingGlassIcon } from '@heroicons/react/24/outline'; import { usePathname, useRouter, useSearchParams } from 'next/navigation'; import { useDebouncedCallback } from 'use-debounce'; -export default function Search() { +export default function Search({ placeholder }: { placeholder: string }) { const searchParams = useSearchParams(); const { replace } = useRouter(); const pathname = usePathname(); @@ -22,22 +22,19 @@ export default function Search() { }, 300); return ( -
+
-
- - { - handleSearch(e.target.value); - }} - defaultValue={searchParams.get('query')?.toString()} - /> -
+ { + handleSearch(e.target.value); + }} + defaultValue={searchParams.get('query')?.toString()} + /> +
); } diff --git a/dashboard/15-final/public/customers/ada-lovelace.png b/dashboard/15-final/public/customers/ada-lovelace.png deleted file mode 100644 index 962308e9ea3ecc9be82461f09d43306142709e5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4336 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 e9HZxw$NvMl diff --git a/dashboard/15-final/public/customers/delba-de-oliveira.png b/dashboard/15-final/public/customers/delba-de-oliveira.png new file mode 100644 index 0000000000000000000000000000000000000000..08db1b8e854c6e3d83f431518aa8a3d2b5c250c1 GIT binary patch literal 5824 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 KMNUMnLSTaFb|M-8 literal 0 HcmV?d00001 diff --git a/dashboard/15-final/public/customers/emil-kowalski.png b/dashboard/15-final/public/customers/emil-kowalski.png new file mode 100644 index 0000000000000000000000000000000000000000..da327a7f81662289848b9a571c6b2fe3715e7533 GIT binary patch literal 6268 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 B{%!yO literal 0 HcmV?d00001 diff --git a/dashboard/15-final/public/customers/evil-rabbit.png b/dashboard/15-final/public/customers/evil-rabbit.png new file mode 100644 index 0000000000000000000000000000000000000000..fe7990ff2f533d3d053a97f631800721e1dc64b6 GIT binary patch literal 1019 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 WLj=Co%Z9=L0000}YN0f`qj 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 literal 0 HcmV?d00001 diff --git a/dashboard/15-final/public/customers/margaret-hamilton.png b/dashboard/15-final/public/customers/margaret-hamilton.png deleted file mode 100644 index 3abc4394abd9660252b150d3509152c0cf35f33e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3950 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 IM6N<$f>OzYp#T5? diff --git a/dashboard/15-final/public/customers/steph-dietz.png b/dashboard/15-final/public/customers/steph-dietz.png new file mode 100644 index 0000000000000000000000000000000000000000..e99f15aa2f7dcf15dfd86618b5da3e3ab6ffd8f3 GIT binary patch literal 7151 zcmViNxR*V!{a0Q4;zOr8j_;p@aZlm&QF9ix3aLu6QM1 zHnuk8{L&I!JHYyfP>zpvW-@Y6J5nJhSU|tm*9+<6d@#Qcuvl7eG#ns+;kIyJ#sq&- zUfRSA|E6Ufn;;?^)A*jrpwnu~qx%naVapd+)csraV-+w1D_wZ%vJ}fRG8tiUqd+a% zYPU5GsjWdD_vj3ubWg)5m(AjNp5A|ibH`r{j@Igv-5EtjFYHZAdQ2XgDqZG=}Faaoj0tCuA8r+@rMf5F8(_~M=%H;!O_y3$w^3*%}6 zcL-tGL9eSmpU>r05K~f&mBJuM$_oYFSpPz9U4LIr5If zo`I-z9rcPH?%$}NNOkeNh625WuCsr9sELT)CDxO&2%TYn1S@7F<7E(56G_7ppS^NL zu3dRX&aYgMe7-0S1b2DS?98kzFRo}-D-}x6bP<;D@Sv*r>4GkZ>MIw^s!b*W3OId5 z>eBswU+&%hTt55gBRM)eQa5$6xY=@EF0IVNON!!SA$g?r9E5YiiDXmAgc(uKK8={oAcXiD4ICMC9Qp3A|E65Jcu_rT(C^9# zGO!nEAr9s0>J?jSkw%hM(i!j;yF*R$fGA)(#QRZaHmSCAUlV3dGz^BSy{a* zKCH<6@GJz}*xi!T;faJ!N)ukA-jQ$wPzXl>c6Se@g*bfUo4+9`bzitvih`!}#`kaEl270NP!11j z5NbxAy}TsLvn9!dD9)bCYz9x6k-1_XG41F*mmt{s{((IF;)#r5>E-h)asValZLQ1Y zue>bd(O7oy+)>Ym02km%Lz(d_GR~gJ7#TGfWu#Iq>-uAmLdCO&Q}K*b&sc+QhfFjY zsDN}U#?k~?lQ$hA$O8t4uMOlub9xwk(0P-=%pxaY5~$g5YEB`<-@z!G^s zr!nn$X{}*VFxJvhD&(b@PfHrlzxiNII?bk>KUbA@Z4U~5QM2bsy@>@oLL5;>T$Kv5 za$4`IY+bi@pz6^R$GdvuTSnGq`_* z+U7|PiOWkFM6+FMASs|cVX^ceE_(s@d$7I(Ap>ay9^NM?0evWaBrkmJW$B^t8|>*N zaIjJ?$>r6HnvA^j7gmvxdQ!%M_qHCXbqL>LJW5bIhEV4gQ9z+J!aAz6-E8Byqb~aS z$2Sx&t}HCetG~1=OEbPWLnHt!JcMW9rhta7mWasW*EF(=%Pa>iuOgj~VAUQJ9l*+A zG=gAr^3>I9SY%#4ySpy?wYmzN0~TdjsLtl)2S50}y!G~5C~H}3MN@;n_Ufzh#_M0# zm{-ij2N4EQuHj&)zT4}z6hU;meH_o2a$xAWn#y~luDDL0V%(E)_>r34qBsg(43<^&f0 zA%MfP*RJ9?!i9;4*%iO^Hin#+@$}hLq{joSAt`9`^0O~!2BoC5*2r3n_%gCZJ&#hM zs8SO}B9Kcz`K`8+iL=}6?N(L6t2 zNV8$w3nttAg zOL}^3)=g`?FvdEawlraF-am_kQ=Of|J$&gPb9>PcNaQJb>gg-;>T9p7>oE^dNl6ch zpVwc1;|%aM?U=-^8h*V^093PZQ?O%!Vw4j1hw7qM$jJ6^twuxE9^QwGxH304FKv9T zcZc%m@fVVILuAjCTv}d|*Is!+7Rm*U6=KcD4>tgekvM=rT*PSu?a<2doIDLMP=Uf( zG7k4P5gu&_e}zPxmCUcUbPitGaAPzhO-jVxUGt$Ukt@2CaDG(yJh%Wr@4C3#_CQF`qX>KFvA z7Np-g2Kc_5xF<^u+cVR##4agQMj?`7NqlI4l)b!k4p!)igO+QiT#-2>lnH|X?p^|d$-~w5!5E|f z+D8GbfEZ*uc40m*fAEc$HR}~~L__F10VvqxRiUu`#xWA%i6$f0&72`ioaFguNS!kY z(0*kp6i>MlO(e#wPGnNM;~Jcas$*)I7EITi>qHtC?Ay{|7Fe;X!Xh}u0gkN#_~u~= zG&$(``hZyILfow6q0S6(DLV|rZ4ZQz6ATFb(OqPu2e)S(D}X>M4D)Ed5tm2%a&Bc+ zrg<|;EUMlaeu+A;AjR4=G<~F;@w=pvaq+pR8PM;~{Q1j9L^+3mbfj8*;!uL^B+bg%fKB9+Df#MXd@yQRR{A}} z*3J_d^+695D+c|bBm`r)C$cBe5vjj6=z|ngvbTRE)#5733fiy%(Gl92K^HNYlMG73 z5Dea++g7k2ARAXI1&Ltc9DxW+gyY&G?@ldh!)gc@??TzfCw2L=zxsRaJXr2nH$92j zYU9FZ{g`CONT%_qJys%YoU9_Pn~axy4*2oHqBM^?=q7sT)QikBs*LVn z#DtEF=>sqNGKW}Zd&Q2zK@bjsdHEzCoNKdo2zT^xcA(&ZO3Qj>**iH!_RS=y#2}b6 z7L444kLAw*&s0hU9>#N3z$v9UwWKqJ2XZEMlOJ{h8T58DfL}gTw6k+0yZ0J$ZFNzV zlAkHSGGNWd9ttn0)7tl?5OStQVZ1v81g4H?Y`W77q;0NYm@Sw#TAI!+O!17g2&dJ8S*fGglL2TT z2Kp02^0IBO&Xp z&?Gn7U5yI{^}Y3dSjGeW*b`#hE35Oe3tqI{>`M9as#IUTCgtZY%LwPMZSA23qWvnv z1(0*90gEe#l`1#dszQHHGpx}LSrpU-F-O)>)?!mZxAeiQBrLI{94 z>!+o7E(dH`kRs|{c@RlCK=b+>rkj)-hGi`w=2vri;1~&?(4R2tFj-hFpI6!f*03Y3b z5jAfxNNZdUMw|?tq8_!-T{tp>`c_?pMZB)`MonB(0D=K>DFdS}dfNJsIq0Kt{`vJ= zTG)Lc_AxlrqsB-XI}HnRE3WB5gV0d;@x&?#FZ_}RRc};4j`;;F=y9lFtYc`wIM!&b zX(Jq}CXL%pw179!zYP#H6>yzyyJx!kLRPiPHfpaHLimzAy)-AYm%wW>@DWokwTr^< zxTbk-G&=HlZ3BbMCJ0|pjR348c+;@f*4~jtoIPO}x*B|(mza_qC6nIRy5mt`&at6H zrF$fn)G{^>&vx)hcORPGDo|3GFAPLb$9U~Ls6i4_#T*78L&KU?iaBYty7C1QNg3s2 zk>o5M<`;eASb+m2VLA(tzPG!pZC9mSR+=xDiBxeuGBg2v3!}6u#tNWRx1mBKy&|+|1M!N-S zM(VdWkU?{@4@!P^;i4307nEt!v~N)jn_7krfdONWIFx0Ao~P>+0um&)=U;j?nG7Y= z9+QcUHx4a%5#x@DC_wkUy?$4=9zO)8?1Mqx*YheMeOKmySkTL**&(ot!2RgTkG2O= zJ8i%!XoGwvCdM9UbxcNzbZd^HVKKV)X`>DL0x&Q$5da^I3l5}quni&S?P$(+5TOAk z46A;h5&qdMO_8j0GtmJ_i$^gD|BFKG@xmyC1$M_2atI zd#BC5G#gD>0KQyZLK4BuoUT=XDN*+8?3|anlC2<#1lF!)zJ?IG{5a(!n@%?I?dUH(QpC zdpG3Di?4}at|AlXl8(NIG1;Bl_vGV`Ka*Vya=Q4;n#od;&QOWu8fiVwBtnDXT>Ekm$Eus z?Dog<@#pK%R7R(+cb=SL*58z0d3IUec(JHL5-b!Di^QyH&hnAMc`hHs8J>%tM>iml zDN`x}qn9ya3Ub$*6VMm}E2I>f?V)V!*IJnS9m`dCOe$MK{MR&VQ>k40a1!eMSnMO6 zBnP&mw?r;2xC5^9=Jj{wVEc*e9hg~q##2W{W^>^}135Us>zG?ic$+clDrt3*#R7EF z`xE)bOKAw^OC1v@x@jht(ekRI!6T?dFXh@62#_kx4jzM5G{0$N%R-(zDlnTI!Q${Z zZZOE943SUmLjl`+?_k1}mDMX(g~OxzX;bUu(qdMDb_e*F(`F_mFWwr(I2-{{{M*0& zyWG5a2fh!Xk=3}6Y{t=MvOny~X=|Wai?a;Q8#vF`gr z5dwzLu&Z5qp2R*hJ<`@JogV5uzCXbj56Zl>G$UIF9o7!5ZS3nNy+FyTEY5AVCr~EF z1~+cVi*VoH{k`8&)WZ!!#IP+0cm$fVhcSX@5KO2e=pX;+Z)6SAR#NJX_6QmXmCn<- zU}(B+T8%|FrZF7r*35(hD5#1|$#Rbi5v#LWa*BXnI`bef_gw8InQ42RHA0DLdJsOZ z?E$1?mQgBXWN`+p03O+KvIvKP#&e~Rf@Q%b;6Msi4+B>|zjI$czkOf6_x<0J?|kRm z>h5s@8k4pl>>_&m$xr@H)&QAwkD6o2Q!50KivhfmCJ$yfb!pD~Lf60|NBeOko{4TA zB9%z0fju1`>LFIy;IgLn04|7x*x>3G0mdX2dw07f&pd@|kx7eiamM5#3cil>fNoCP zm^M!wZG&paun|XR@FH5^r~mb~Y;Nwz4}bV4mi-nbz;r9un{WPH9zR;Q2q3T<@eHDg z2{zMzMTQ7=40L1sz@XZ+`V|aTpz$ug;9M`O<1$w>o6hYlVi_SLPXNk&;8dfuK+XeE+)% zAn+O(U%ma-yB5iWI&g8KGjv51BwMu{+oG61jKG`@QHxB=wAjH(S7-Me2e20Dh6T1) zlaZ~rk;ZQ-O~~fz0#S9PJ>-2;Kt4bu@QT?PZdOP`A;6d@Gabw@IL78wIZT?|NE-#E zCj#!FiRA5{zbn6n*~c>M* zIq~qtv9!LS>Nqdw-)RIr_t><-uHAWZtPf^^AKQD0Dg>5IXLSgpc$b|w?(txKPYzlm zL;sN-AS;IZl0<4jS&`kP7?-jsjW1IkH!|_fHQxB-Q(If{*v%(f$u`D`veTySgxb`` zdk3fS7?V+Ie)~@Tg)eT+YBk&P={l^zVw=nsMUlV5VWwvpa!cB>1Gs*B4ML}_f?d6) zk0ixsr4hqsKid>spB>P;XFM&mJWT_0M{ccD1JQbF=Fsew(e{YRgWuUbXksr+b`qNL zjiC_mk$_!qM)ZPvJlZ@^H*;MlSx69sQ}!-l?m#*2AIg8<+|ZVdUc?Os+#i=l?Nq`^ zT|6GPM4A&~PA0aYQQ)-QBQJaB?nA?d2ewV(;F4dAY_dq0tN2FAhSw-z!DE+U(%@pq zr*NA`9j(#YVNVa`x5AbS?7pUxP!t3t&Rp_T}}DXFz)=rWC-GznK-T+ z%Rl_|1JuNkX_UEL#9Dj;z`$J+L^kA9-~9NoBBCs}>4c)cO1_KzL+%A1+YIu)sh`O>2&c z(U>ZfBqoiKV{)4NeKxmtXu-gyT2ZEqy9~L2C?=vb!&+hN1|9=HBKtn=u47`BG0CL! zvk&jd+qX8<1vI@=LS#3xcf^a=AMWF$*_X=wqC?$O9%-iawEHlTp{{1#Gf2kkrntvE lZpv<^2(2<$)^;(s{6B25YtGsg<79B$nT{>~|Kb_P&_Aa)l>Uf%Hk zCw%8S-?>JQU-%pPYBrj<^TB%&ymY4!_rOle>aZ4 zoA6jR!oCpvmY4~c){;FT{sBWi&r+41P!`pZ8Y<>k^zYnEqO|9H&JLqJ32!{eF zXR`=J!}M%RHzXJLy!r0FhFgck*dTSe}&t8OWS)a?Tzu1hQKhNazyWEHvsK-swnlQ}% z`fS+{BgN(B0`y>y=h?kZi{a9O+p0l;pxO-6Gjw{dr4}~~FD%PMxm?81Py$|Wh!zas z_WSSRle@Q2&gb#^x4wuM&Yc1+0;f?&ty;&*<{n}J5B3hrSkG6GE0*91$MMx~eMi^a zJF>pD@1f9*B5w(Vi4^g3ws({jq#Wr#^~`fLkc zo>)2Dg4dQ*?I02L@Fom}b`zT`i_GE%UitcU%$+`sp4&vTTp)UJ;q49vgFe{9Q6z&l z5&<9H{bU`tZa+Xim&Ne#C~EaGd<-Rz*QYu8^F{Y`!RDWnE^^#B%3ISk`Z-8XSza49 zH`M0OUI~A3t|@?I(A^eKu(&WmIeOISxG;NdTBEBc%I)MFv7WT?rO+-xH+FihlsQy>RF`w^~M*VbW{0)!PCL@IJ+z6+E!XLXwP}8u!^TmFinn}3 zQVZfWz|T4<_pqI&%MEmygWLc&1tzL>lp}4~kmMsb?a`#}pwsTxJjtBXXHN91ulyGy z9Y-3Ec?9kHIF2?6Krk3YJRHKt<}PBLBAWRE%56UaqZ0^(BD!E*Ebr4{lytedYO#R) z)(XN=qGG!O!x0a+wHaDHd>#X%BT0Q&!(nLBK<#>)3u&Y6@If9AQ8@skDTZU%^Byx3 zBY3{G&uf|p_zZftjq=vVXpf%Yxe2b-fa^BUY?gq`9*wZWHL%<;@9K5l(-%}^SF#`m zR5SO#S~N(|<7b^EqhgwctdN!yyX;yTyKVU3<%vGtpj0mDO*^b*5H3Kkb~{aMt=@rq z7^VjgF)|p($k-SfwHB6_pJU_sGAy@^^k59pXb{;#1^1ut;@NIN$`t8Tlr_=E1u|kh zEg;zDJ?XW^4mK7S(J{S$p9JTnK}{$v&{C=VYU#d`BA; z&o!CzKHI|*5oGjr)L?dt7V}5ATf@WrauM=HcrA-HgCSeVBM=O+wg}SE8a)ppUIT@Y zA7{^>;c*(Feux39hP=UStrw9Pi(+sri4Pt=o{49lC>Y;4RYj-uB zEa9R(`yt$hOLr2j=+aEh55M8(@3e#!W|**atmidE#)kr!*?Ek1GKth^3U0H4Ms|~n z?x4}5Ng4zfi=jzt%dsb`87|Pq#GoJJV+Q<#0~i{Jq1B6`=@8|5++4PV{k5G^=f1U)Phw;%NY>~;FNe(jKOuar}8<=5ztZ!_4IR0H55xkNr%Z8?2yP zFW~em*I>lEs1WZa6Aa0G6aJ8+Ak^q7XIJ-nAo7JS zN(6{T%cW&a6iYsaRTq2PMdn=waWY#EL#le1Loqx6tB_&cv^Ckip*RAO1Y+SBh6V@W ziwp1=NXEqw!${BylZg=0!$S;rKjy}UF+38+@PrTJ!(O~{^#Z0MJ_PCc!~Gl#riJSY zs`r@3Yurekb(R3=Yr^sqtZ1a(XS$K&jzTu$b~}okLDEf=p7pS7*g-o9J3{C+9Uk-` zWBmXNby|eIj*3>zq~<JY;KQeNB-CIVfFnxm>P-U=KMO|d%TJ> zsTf9yxGVrf+!~?`%{J>X^ zc@bLYCAs+Q1`Q&-M2uzFaC&tGu`p58FTf~Vbae6p!_Cs0@jTwJOt=o?@w4aH+{_~q zjUgN<;_=QdybEFc;;)^+^5P?eQe&`)Sd1skZyX>tIE)};zf!K@&8JH!7OT8Z0E?Lt zn)jFS%8gmpy(UuAb4VmddCxFny#TCG3<1{GQFi*5u3jUb-6gNBA{ZFc8doQI4~5wP z1llb4G1gaazmqqNqYau`?G3VuM#s@w=(BxV7iE2RlMl5#Hlz&|$h8?-nT;j<T*>1X^Wy`M1rTJW>td!kLqp85>1$Y7*P)TiD4T z;v;&b=+v=OuH!J*z=d!85^dt*Y?=nCWr^Bl45TJdtTu7s(m8JYES%~dX<3>^w{ck7 z!^EjcdXOmW3oD5bFfoqU%W+3yanm6?M4D+SHduxb6{4v0PQHL>7$&)61BXQix9=`s zFLS7gTVWoS>s1U6L~;3r)9?mN+FHUO0clr6&x4%ig9Ymu+mc#Bs0zI>z zN0HZe%pR7u$(YD&e*0hjTLj_*7>$u7b(`KB#R5J7~%S5)s zUNbp|5hAK+EGw&PpN6M)7e_fL|NSfrS{j(^UM*K7-BAL86iC5ehgQsNXYldEdDb{b znSd~NuczM=Zme(O?VtVxj~+ZhC3}b$rjsxUC>PF7)7Wjq6EWsl28RsMFuj*1lJ2Gw z*k;4Kymts+IEwk_2Mnh@&7BUJO6Bk!hHf1%UVQ;CUcZ3x*#MqDeS~y+0TW|$jEF0U zSP3{KhHW&ejODoTK5oVpOr+6e4hB3i8oe*WNPV=mQzwg{3kkz4)?^P&ZmwLZX~FbS zhG>);ynzP^mVo>3FB0AS*xV~(qtrrz#X3p;ddL#e<3sldIJ<|3jD$lRlxi$LHRP%- z)JV$~=2yvDOxDR7!9rRr3qvE5C}ekWheo~o;3)=&qL`XZApQC^oVaj-o@TuyjNiL= z5A}8fvojZ1+f2m`x+r^Jgd$%D2~7nBX}a?C-M^k*CBDsfQ8f4|_WsSa|k~H*r|- zT~t`#di0{HEs2GH{yYB$T~e@YCZovpCvU%xvy>_>6C9SeGFauuPXwME9pwW(gl&d3 z7wl)gW^zRhOM{!U{9fIR^qDp0{l?Z78ZOCpYLYn~g|q~l8+-Wm@BcP(lsq2X{}^}f zFY&x04cpbV^gn$M3ZhEh1&E;HN$EumO)suHnVevBy0l;%$(63tz-YasWU6@!Qzm$&t-e@hjJ- zu*ZV_`&69e%c6y+PfQ|D06NU&bi=ZgL^PxY+Th|tem}h96Kn^!xh~-TC(HO>zxQ8Z z*9xezc#EEDTDF3oG`1S1s+5yxvn=>1f!gwq-H|jK_J9A^zeC>VDj9BzGDW#v>QtL7 zMYvrsF@WpeeGOA*E+RRc#NPgaZqFnu2$JhPc)W~Xq2T241u#8(65s#T?;x|jhTPTx zo<7^fAH280hPa;_p;(m9A@41eH4i16!#w6^t8o3=Mb=x9Ol+1K2YWQu#`*?HdlDl- z5tA(BggJ3dwj!zIU%%be_0XFYvUiKxP=Ht<2Q_qy8_#j9gKB~b8<(Av8C-e!oA}b- z`*marCEOwFf9;pQhadjn2MpC6Cb5MW$@7CJs|1cJ`$V7CA|W>x9}pc(;D5jK4i1VW z%e1bCtmee@1eTXpRR*!>sX76sUaV*bv$n7`@5)SDTD0S5J{iyOOpH-AlloOh^SJm`Ovm5kd5U)5-)%MA7k+J zIXqchQPL|#|H{=%$dC~K=#3xK({-gxl_I&~lLdU?%QqC=JfRRGLn$mQb5_A_UV83e z(8IQB6kF6|8ucb@Zni@~s_S+%4++y6o;EvvZ_uv>Ht5yKnQ4UQ<}e=jps==x5wfm3 zzyDuQC>AL@HrXe(*a1=4;(cVZ9fH$8{MFw=A{1qb@MsOUzxx}%+3$>*pem{cDJ@LR z!3sw3(f#`xPNTG>@Jc@cBE^LUsQ}2#AxPEQM?84+(PLb=c$S4cLNe~-c~ShQH{NH- zu-R+&Fg!YfL#hQu&M|!StcXxusbOUP7VE5_p6%zk;b33y6sdupdiHz+c?!m_zx)!u z__ddr!xlZ(qJ%+&C)n-p?qhL&5ziNwsAiMTFzVWFSJQ`@i>hq);-CCbwMf~c!#{lW zH~%H;*C7{A*RyVAS<5`OiD)9K^<{$HKze)x*@FyAKpt17Mp!cm8oRp~o<1o{!!C8t zmE~QQ2cjm8HheOT<(nTNF*Jy(+v&@Y_OY76bNn7enTtIoR6WEPo-WH#lX$ShDb)%+ zfBEuxBnJX2ABO0eXlf9tsWdL!xQxSm5pVtBA7lBGdDVPGnKQ{_MY6QN@=tzCSw(=1 zy~Rx-w9 z_u}9GyB}z1rl@M4{=x+;I5H#bVvMDzymRnrah5#s2E7<%6I^0G#uyo*r3?)u_?#MQ zxf&7!gSh!yW!L}sQ~a!QKOo!+r3ZD%6YO`*4XonX(GYh}2Cnc8e(LGHgYV4##5r-ch|&+9#P)n0*lr3e`pGp)yYpZ@GkF zDW0=4GYC^Ea4FJ?0v;mJjBo)mLQYap>eA8~%J6T$GmoFVaTDu{J2=f=@6yRhMChIQ zCAK>Z-Ex&O29w_9;smu%v3InXhsAPL>)Pb_C_8pbB?l3lo1F7G%pt*sIOWEToqgQ< zc%Grzr(hC-oldtO5mfXn8eBG5Z&bNq0;bzjK5F+TIqZf-=n=h=98^k%v>FnUDXP~| zdcq;{l^JRl7a;1jfKH3vlj0qu_?zIOvYSQiEWGqihrjQ&MCEScqr3MQ0WL-5{zz;5 z!~{j)F!F~*6^26G*g!0%YM6LUyw@WhcRXH$v_Ah%7U-{?U(V|tKY!2>n|V{D6c&r5fkZ=uLXF%G_Jt+SPj3J(}vur~fhn@tfU`up!x# zgem$pzTft@q!u0Jhca>AT4RCma}0yI5!-oVt4=HV+=DSv-Eh7zXur&xpskUrK#um z8KRkN0dM~49n4LASMyND)RHnf*5-x;cqAVMwdH(U8bzJC6JB%qL%pa)mM@e_E|5f* zP^na8hVLU94q&!1sV^5u*j9P-P}on-nZY7^K5068tf?!j+cs&w9?mk^Aj z>Ef}{Ew7Grq*0(S#R|~lUd;ZG)KtKbxwbU9MV1Rc6E@16i18CoBrrCXBG^O}az(k? z-#%auIKh1L;p~|+n#bERpC69nE_KYWe&frWXVfu0F-nzSk17FGa*~E3>uW>Ca6CWD zO)F|MhvoH?N>xO!vL2Ikkv^|RzA43C%7A#gMS~t|MaOShsO)*v|H(Bvv~^{3rZf$v zLb1sli$tGO%TZZ1SV-(WppQ~?j^E5e!9rA z;l*i|ocU)?a7T`rD&t1_&%38YfP8Z?a|SvKwzuW*iwl$6hYQ9&!ll9C=sB zJj95?YgL_*AxA`ukiP)3+Zi^wghu(r9UUBZPkvn=k^R2iDG)EJ{Ez(J^V z9I`nrb4M=}NvV*3(qVKhX}x+!uQy4qF+^u)Pw9d}WcbOUAr*s5FRluI5!_;=!z$$KB?Sj>C0L8 z#cyBX1j&c5f9)mglG9q81XY<+5w=m1KkM7OWHeP(o!ypm#7j*j&HEIxD*RhtDU)|y zJUBOd0;?2yOTu=%(s4v|dhGQI(`ol#1Ui~9^|cw1Go+{OefmC)Es0qts!6ViOsM>h zzprgr8s9uhQkr+Eu0iR-K-IZIy%z`F#NW2 zS}tKH9fTu!#9S#zq!5&(X%-k6q7Ec)N<3#x^zyrSW{9cd(6dtO zR*4g5rUv`-OnuAZs6*jCnoNOqyQdo!-HkZ`1q<6v6rEpxadoqSHD4xNbgK5f4`N9u&5 zAxpMHG0m1qXsIkCszvsGdx}6Y0><{UB`p_e=75ZYCC-CH$`~1lAl!$y?om3BHmHN^ zlrnz#wXdO;-@>VhBwRDn*Ii_u!~0K>#`)QEwwMb0EcPM*S8GkJxk9akSPPk#dZ!aw zZa6^gbbUXI5UHMMZ&T?J-MB=Lv{J=#z2D`q7B`!Hp-g0b*|S3rRvE%^A5m0aIV5CX zd+|lW`wVuOhg&QWPoAwXFKZm3?O}$jrN&+_$Aa7@2uKem{a2DLQGi3xB#W?Z2Uu1@ zxXL>CXsMxHc9g7TnAEIX?KjF-iUUx>{e?6BqOFo6f~&b#kx z{#9rpf%O8zRdPdmz&guAot#tJktD~}>5-H&g&2Fe_4OURbZv|YltGQ6&=j>Bzt7ee z^ES42IIYU7Xk2qznj7*@jN8w7M+roqofv9xnQ93GlCqE*PEfYk(pkPJ9iri=dTsPO zcL71URwNG@1-iYqa_L4(-azCA$Hpho*vRAdhqtsA2Iaj^Zcr%C&iXb-*6ftY+w2~S>$Cw$wQYzCA-Q|^dpX%-@AF2TFf#`CV!3LCz61Ov{kZCY|-QN9t|JiIvkRMNXUcqPy{cY`X2t@ z?YBA5DbWCReaE2AG_V@I=xFvx&^|cJS`5DC5h#K8Rm><*O=NG`L_d&x$AAJcsjp;#kC#ma{kz06l93ZOZ>f3r@9bMDp6>-4SnN+!*Kk6 XwK26$>bAPD00000NkvXXu0mjfqH*=Q literal 0 HcmV?d00001
+ Customer + Email + Amount + Date + Status
{invoice.name}

+ {invoice.email} + {formatCurrency(invoice.amount)} + {formatDateToLocal(invoice.date)} + +