@accounter/client
Version:
Accounter client application
2 lines • 10.8 kB
JavaScript
import{Bl as e,Cd as t,Fa as n,Ia as r,Kl as i,La as a,Ml as o,Nd as s,Pa as c,Rd as l,Tu as u,Xn as d,Yi as f,er as p,fs as m,gd as h,hd as g,ku as _,ld as v,ln as y,nr as b}from"./index-BdWApCqi.js";import{t as x}from"./page-layout-9Fp4HhGU.js";var S=l(s(),1),C=(e,t)=>f(t,{minimumFractionDigits:0}).format(e),w=u();function T(e){return{id:e.id,chargeId:e.chargeId,date:e.date,description:e.description??``,reference:e.reference??``,amountILS:e.revenueLocal.raw,amountUSD:e.revenueDefaultForeign.raw,originalAmount:e.revenueOriginal.formatted}}var E=({recordData:e})=>{let n=T(d(r,e));return(0,w.jsx)(`div`,{className:`p-2 bg-background rounded-lg border border-border/30 text-sm`,children:(0,w.jsxs)(t,{to:_.CHARGES.DETAIL(n.chargeId),target:`_blank`,rel:`noreferrer`,onClick:e=>e.stopPropagation(),className:`flex items-start justify-between gap-2`,children:[(0,w.jsxs)(`div`,{className:`flex-1`,children:[(0,w.jsx)(`p`,{className:`font-medium text-foreground`,children:n.reference}),(0,w.jsx)(`p`,{className:`font-medium text-foreground`,children:n.description}),(0,w.jsxs)(`div`,{className:`flex gap-4 mt-1 text-xs text-muted-foreground`,children:[(0,w.jsx)(`span`,{children:n.chargeId}),(0,w.jsx)(`span`,{children:n.date})]})]}),(0,w.jsxs)(`div`,{className:`invisible md:visible md:text-right flex-shrink-0`,children:[(0,w.jsx)(`p`,{className:`text-sm font-medium text-foreground`,children:C(n.amountILS,m.Ils)}),(0,w.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:C(n.amountUSD,m.Usd)}),(0,w.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:n.originalAmount})]}),(0,w.jsx)(`div`,{className:`md:invisible ml-2 text-right`,children:(0,w.jsx)(`p`,{className:`text-xs font-medium text-foreground`,children:C(n.amountILS,m.Ils)})})]})})};function D(e){return{id:e.id,name:e.name,revenueILS:e.revenueLocal.raw,revenueUSD:e.revenueDefaultForeign.raw,records:e.records.map(e=>({id:e.id,data:e}))}}var O=({clientData:e})=>{let[t,n]=(0,S.useState)(!1),r=D(d(c,e)),i=()=>{n(e=>!e)},a=(0,S.useMemo)(()=>r.records.slice().sort((e,t)=>e.data.date.localeCompare(t.data.date)),[r.records]);return(0,w.jsxs)(`div`,{children:[(0,w.jsxs)(`button`,{onClick:i,className:`w-full flex items-center justify-between p-2 bg-background rounded-lg border border-border/50 hover:bg-accent/5 transition-colors`,children:[(0,w.jsxs)(`div`,{className:`flex items-center gap-3 flex-1`,children:[t?(0,w.jsx)(h,{className:`size-4 text-muted-foreground flex-shrink-0`}):(0,w.jsx)(g,{className:`size-4 text-muted-foreground flex-shrink-0`}),(0,w.jsxs)(`div`,{className:`text-left`,children:[(0,w.jsx)(`p`,{className:`font-medium text-foreground text-sm`,children:r.name}),(0,w.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[r.records?.length||0,` record`,r.records?.length===1?``:`s`]})]})]}),(0,w.jsxs)(`div`,{className:`hidden md:grid grid-cols-2 gap-4 text-right flex-shrink-0`,children:[(0,w.jsx)(`div`,{children:(0,w.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:C(r.revenueILS,m.Ils)})}),(0,w.jsx)(`div`,{children:(0,w.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:C(r.revenueUSD,m.Usd)})})]}),(0,w.jsxs)(`div`,{className:`md:hidden ml-4 text-right`,children:[(0,w.jsx)(`p`,{className:`text-xs font-medium text-foreground`,children:C(r.revenueILS,m.Ils)}),(0,w.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:C(r.revenueUSD,m.Usd)})]})]}),t&&a&&(0,w.jsx)(`div`,{className:`mt-3 ml-2 space-y-3 border-l-2 border-border/50 pl-2`,children:a.map(e=>(0,w.jsx)(E,{recordData:e.data},e.id))})]})};function k(e){return{code:e.code,name:e.name,revenues:{ILS:e.revenueLocal.raw,USD:e.revenueDefaultForeign.raw},clients:e.clients.map(e=>({id:e.id,data:e}))}}var A=({countryData:t})=>{let[r,i]=(0,S.useState)(!1),a=k(d(n,t)),o=()=>{i(e=>!e)},s={ILS:a.revenues.ILS,USD:a.revenues.USD},c=a.clients.slice().sort((e,t)=>t.data.revenueDefaultForeign.raw-e.data.revenueDefaultForeign.raw);return(0,w.jsxs)(e,{className:`border border-border`,children:[(0,w.jsxs)(`button`,{onClick:()=>o(),className:`w-full px-4 py-2 hover:bg-accent/5 transition-colors flex items-center justify-between`,children:[(0,w.jsxs)(`div`,{className:`flex items-center gap-2 flex-1`,children:[r?(0,w.jsx)(h,{className:`size-5 text-muted-foreground flex-shrink-0`}):(0,w.jsx)(g,{className:`size-5 text-muted-foreground flex-shrink-0`}),(0,w.jsxs)(`div`,{className:`text-left`,children:[(0,w.jsx)(`p`,{className:`font-semibold text-foreground text-lg`,children:a.name}),(0,w.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[a.clients.length,` clients`]})]})]}),(0,w.jsxs)(`div`,{className:`hidden md:grid grid-cols-2 gap-4 text-right flex-shrink-0`,children:[(0,w.jsxs)(`div`,{children:[(0,w.jsx)(`p`,{className:`text-sm text-muted-foreground mb-1`,children:`ILS`}),(0,w.jsx)(`p`,{className:`font-semibold text-foreground`,children:C(a.revenues.ILS,m.Ils)})]}),(0,w.jsxs)(`div`,{children:[(0,w.jsx)(`p`,{className:`text-sm text-muted-foreground mb-1`,children:`USD`}),(0,w.jsx)(`p`,{className:`font-semibold text-foreground`,children:C(a.revenues.USD,m.Usd)})]})]})]}),(0,w.jsxs)(`div`,{className:`md:hidden px-2 py-2 bg-accent/5 border-t border-border flex gap-4`,children:[(0,w.jsxs)(`div`,{children:[(0,w.jsx)(`p`,{className:`text-xs text-muted-foreground mb-1`,children:`ILS`}),(0,w.jsx)(`p`,{className:`font-semibold text-foreground`,children:C(a.revenues.ILS,m.Ils)})]}),(0,w.jsxs)(`div`,{children:[(0,w.jsx)(`p`,{className:`text-xs text-muted-foreground mb-1`,children:`USD`}),(0,w.jsx)(`p`,{className:`font-semibold text-foreground`,children:C(a.revenues.USD,m.Usd)})]})]}),r&&(0,w.jsx)(`div`,{className:`border-t border-border`,children:(0,w.jsxs)(`div`,{className:`space-y-2 p-3 bg-muted/30`,children:[c.map(e=>(0,w.jsx)(O,{clientData:e.data},e.id)),(0,w.jsx)(`div`,{className:`pt-2 border-t border-border/50 mt-4`,children:(0,w.jsxs)(`div`,{className:`flex items-center justify-between p-2`,children:[(0,w.jsx)(`p`,{className:`font-semibold text-foreground text-sm`,children:`Clients Subtotal`}),(0,w.jsxs)(`div`,{className:`hidden md:grid grid-cols-2 gap-4 text-right`,children:[(0,w.jsx)(`div`,{children:(0,w.jsx)(`p`,{className:`font-semibold text-foreground`,children:C(s.ILS,m.Ils)})}),(0,w.jsx)(`div`,{children:(0,w.jsx)(`p`,{className:`font-semibold text-foreground`,children:C(s.USD,m.Usd)})})]}),(0,w.jsxs)(`div`,{className:`md:hidden ml-4 text-right`,children:[(0,w.jsx)(`p`,{className:`text-sm font-semibold text-foreground`,children:C(s.ILS,m.Ils)}),(0,w.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:C(s.USD,m.Usd)})]})]})})]})})]},a.code)},j=()=>{let[t,n]=(0,S.useState)(new Date().getFullYear()-1),[{data:r,fetching:s}]=o({query:a,variables:{filters:{year:t}}}),{setFiltersContext:c}=(0,S.useContext)(p),l=(0,S.useMemo)(()=>`Annual Revenue Report for ${t}`,[t]),{totalClients:u,totalRevenueIls:d,totalRevenueUsd:f}=(0,S.useMemo)(()=>{let e={totalClients:0,totalRevenueIls:0,totalRevenueUsd:0};return r?.annualRevenueReport?.countries?.map(t=>{e.totalClients+=t.clients.length,e.totalRevenueIls+=t.revenueLocal.raw,e.totalRevenueUsd+=t.revenueDefaultForeign.raw}),e},[r?.annualRevenueReport?.countries]),h=(0,S.useCallback)(()=>{let e=[];e.push(`Country,Client,charge ID,Date,Description,Revenue ILS,Revenue USD`),e.push(`Annual,,,,TOTAL,${d.toFixed(2)},${f.toFixed(2)}`),[...r?.annualRevenueReport?.countries??[]].sort((e,t)=>t.revenueDefaultForeign.raw-e.revenueDefaultForeign.raw).map(t=>{e.push(`${t.name},,,,TOTAL,${t.revenueLocal.raw.toFixed(2)},${t.revenueDefaultForeign.raw.toFixed(2)}`),t.clients.sort((e,t)=>t.revenueDefaultForeign.raw-e.revenueDefaultForeign.raw).map(n=>{n.records&&n.records.length>0?(e.push(`${t.name},${n.name},,,TOTAL,${n.revenueLocal.raw.toFixed(2)},${n.revenueDefaultForeign.raw.toFixed(2)}`),n.records.sort((e,t)=>e.date.localeCompare(t.date)).map(r=>{e.push(`${t.name},${n.name},${r.chargeId},${r.date},${r.description},${r.revenueLocal.raw.toFixed(2)},${r.revenueDefaultForeign.raw.toFixed(2)}`)})):e.push(`${t.name},${n.name},,,,,`)})});let n=e.join(`
`),i=new Blob([n],{type:`text/csv;charset=utf-8;`}),a=document.createElement(`a`),o=URL.createObjectURL(i);a.setAttribute(`href`,o),a.setAttribute(`download`,`annual-revenue-${t}.csv`),a.style.visibility=`hidden`,document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(o)},[t,r,d,f]);(0,S.useEffect)(()=>{c((0,w.jsxs)(`div`,{className:`flex items-center justify-end gap-2`,children:[(0,w.jsx)(y,{value:new Date(t,0,1),onChange:e=>e&&n(e?.getFullYear()),popoverProps:{withinPortal:!0},minDate:new Date(2010,0,1),maxDate:new Date}),(0,w.jsxs)(i,{onClick:h,variant:`outline`,size:`sm`,className:`flex items-center gap-2 bg-transparent`,children:[(0,w.jsx)(v,{className:`h-4 w-4`}),(0,w.jsx)(`span`,{className:`hidden sm:inline`,children:`Export CSV`})]})]}))},[t,s,c,h]);let g=(0,S.useMemo)(()=>r?.annualRevenueReport.countries.slice().sort((e,t)=>t.revenueDefaultForeign.raw-e.revenueDefaultForeign.raw),[r]);return(0,w.jsx)(x,{title:`Annual Revenue Report`,description:l,children:s?(0,w.jsx)(b,{}):(0,w.jsx)(`div`,{className:`min-h-screen bg-background`,children:(0,w.jsx)(`main`,{className:`container mx-auto px-2 py-2 max-w-7xl`,children:(0,w.jsxs)(`div`,{className:`space-y-2`,children:[(0,w.jsxs)(e,{className:`border border-border bg-accent/10`,children:[(0,w.jsxs)(`div`,{className:`w-full px-4 py-2 pl-12 transition-colors flex items-center justify-between`,children:[(0,w.jsx)(`div`,{className:`flex items-center gap-2 flex-1`,children:(0,w.jsxs)(`div`,{className:`text-left`,children:[(0,w.jsx)(`p`,{className:`font-semibold text-foreground text-lg`,children:`Total Revenue`}),(0,w.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[u,` clients`]})]})}),(0,w.jsxs)(`div`,{className:`hidden md:grid grid-cols-2 gap-4 text-right flex-shrink-0`,children:[(0,w.jsxs)(`div`,{children:[(0,w.jsx)(`p`,{className:`text-sm text-muted-foreground mb-1`,children:`ILS`}),(0,w.jsx)(`p`,{className:`font-semibold text-foreground`,children:C(d,m.Ils)})]}),(0,w.jsxs)(`div`,{children:[(0,w.jsx)(`p`,{className:`text-sm text-muted-foreground mb-1`,children:`USD`}),(0,w.jsx)(`p`,{className:`font-semibold text-foreground`,children:C(f,m.Usd)})]})]})]}),(0,w.jsxs)(`div`,{className:`md:hidden px-2 py-2 bg-accent/5 border-t border-border flex gap-4`,children:[(0,w.jsxs)(`div`,{children:[(0,w.jsx)(`p`,{className:`text-xs text-muted-foreground mb-1`,children:`ILS`}),(0,w.jsx)(`p`,{className:`font-semibold text-foreground`,children:C(d,m.Ils)})]}),(0,w.jsxs)(`div`,{children:[(0,w.jsx)(`p`,{className:`text-xs text-muted-foreground mb-1`,children:`USD`}),(0,w.jsx)(`p`,{className:`font-semibold text-foreground`,children:C(f,m.Usd)})]})]})]}),g?.map(e=>(0,w.jsx)(A,{countryData:e},e.id))]})})})})};export{j as AnnualRevenueReport};