UNPKG

@accounter/client

Version:
1 lines 11.6 kB
import{$ as e,Al as t,An as n,B as r,C as i,Ci as a,Cu as o,Dn as s,Du as c,En as l,G as u,H as d,Id as f,Ji as p,K as m,Ki as h,Kl as g,Ll as _,Mi as v,Ml as y,Oi as b,On as ee,Q as te,Ti as x,U as S,Un as C,Uu as w,V as T,W as E,Wl as ne,Xa as re,Y as ie,Z as D,ds as O,jd as k,jn as A,kn as j,md as M,q as N,qi as P,wi as ae,xd as F}from"./index-CSYTUOOk.js";var I=f(k(),1),L=o(),R=({amount:e})=>!e||e.raw===0?(0,L.jsx)(`span`,{className:`text-sm text-gray-400`,children:`—`}):(0,L.jsx)(`span`,{className:g(`text-sm font-medium whitespace-nowrap`,e.raw>0?`text-green-700`:`text-red-600`),children:e.formatted}),z=({balance:e,currency:t})=>{if(e===0)return(0,L.jsx)(`span`,{className:`text-sm text-gray-400`,children:`—`});let n=p(e,t);return(0,L.jsx)(`span`,{className:g(`text-sm font-medium whitespace-nowrap`,e>0?`text-green-700`:`text-red-600`),children:n})},B=({business:e})=>(0,L.jsx)(F,{to:c.BUSINESSES.DETAIL(e.id),target:`_blank`,rel:`noopener noreferrer`,onClick:e=>e.stopPropagation(),className:`inline-flex items-center font-semibold whitespace-nowrap`,children:e.name}),V=({counterAccount:e})=>e?(0,L.jsx)(F,{to:c.BUSINESSES.DETAIL(e.id),target:`_blank`,rel:`noopener noreferrer`,onClick:e=>e.stopPropagation(),className:`inline-flex items-center font-semibold whitespace-nowrap text-sm`,children:e.name}):(0,L.jsx)(`span`,{className:`text-sm text-gray-400`,children:`—`}),H=({row:e,currency:t})=>{let n=e.foreignAmount&&e.foreignAmount.currency===t?e.foreignAmount:null;return!n||n.raw===0?(0,L.jsx)(`span`,{className:`text-sm text-gray-400`,children:`—`}):(0,L.jsx)(`span`,{className:g(`text-sm font-medium whitespace-nowrap`,n.raw>0?`text-green-700`:`text-red-600`),children:n.formatted})},U=({row:e,currency:t})=>{let n=e[`${t.toLowerCase()}Balance`]??0;if(n===0)return(0,L.jsx)(`span`,{className:`text-sm text-gray-400`,children:`—`});let r=p(n,t);return(0,L.jsx)(`span`,{className:g(`text-sm font-medium whitespace-nowrap`,n>0?`text-green-700`:`text-red-600`),children:r})},W=({date:e})=>e?(0,L.jsx)(`span`,{className:`text-sm font-medium whitespace-nowrap`,children:y(new Date(e),`dd/MM/yy`)}):(0,L.jsx)(`span`,{className:`text-sm text-gray-400`,children:`—`}),G=()=>[{accessorKey:`business.name`,id:`businessName`,header:`Business Name`,cell:({row:e})=>(0,L.jsx)(B,{business:e.original.business}),enableSorting:!1,enableHiding:!1},{accessorKey:`invoiceDate`,id:`date`,header:({column:e})=>(0,L.jsx)(A,{column:e,title:`Date`}),cell:({row:e})=>(0,L.jsx)(W,{date:e.original.invoiceDate}),sortingFn:`datetime`},{accessorKey:`amount.raw`,id:`amount`,header:({column:e})=>(0,L.jsx)(A,{column:e,title:`Amount`}),cell:({row:e})=>(0,L.jsx)(R,{amount:e.original.amount}),sortingFn:`basic`},{accessorKey:`ilsBalance`,id:`ilsBalance`,header:({column:e})=>(0,L.jsx)(A,{column:e,title:`Amount Balance`}),cell:({row:e})=>(0,L.jsx)(z,{balance:e.original.ilsBalance,currency:O.Ils}),sortingFn:`basic`}],K=()=>Object.values(O).filter(e=>e!==O.Ils).sort((e,t)=>{let n=h.includes(e),r=h.includes(t);return n&&!r?-1:!n&&r?1:e.localeCompare(t)}).flatMap(e=>[{id:`${e.toLowerCase()}Amount`,accessorFn:t=>t.foreignAmount?.currency===e?t.foreignAmount.raw:null,header:({column:t})=>(0,L.jsx)(A,{column:t,title:`${e} Amount`}),cell:({row:t})=>(0,L.jsx)(H,{row:t.original,currency:e}),sortingFn:`basic`,enableHiding:!0},{id:`${e.toLowerCase()}Balance`,accessorFn:t=>t[`${e.toLowerCase()}Balance`]??null,header:({column:t})=>(0,L.jsx)(A,{column:t,title:`${e} Balance`}),cell:({row:t})=>(0,L.jsx)(U,{row:t.original,currency:e}),sortingFn:`basic`,enableHiding:!0}]),q=()=>[{accessorKey:`reference`,id:`reference`,header:`Reference`,cell:({row:e})=>(0,L.jsx)(`p`,{className:`text-sm whitespace-nowrap`,children:e.original.reference??``}),enableSorting:!1},{accessorKey:`details`,id:`details`,header:`Details`,cell:({row:e})=>(0,L.jsx)(`p`,{className:`text-sm whitespace-nowrap`,children:e.original.details??``}),enableSorting:!1},{accessorKey:`counterAccount.name`,id:`counterAccount`,header:`Counter Account`,cell:({row:e})=>(0,L.jsx)(V,{counterAccount:e.original.counterAccount}),enableSorting:!1}],oe=()=>[...G(),...K(),...q()],se=e=>{let t={};for(let n of Object.values(O).filter(e=>e!==O.Ils)){let r=e.has(n),i=`${n.toLowerCase()}Amount`,a=`${n.toLowerCase()}Balance`;r||(t[i]=!1,t[a]=!1)}return t},ce=({row:e})=>(0,L.jsx)(u,{onClick:t=>{t.stopPropagation(),window.open(c.CHARGES.DETAIL(e.original.chargeId),`_blank`,`noopener noreferrer`)},className:`cursor-pointer hover:bg-gray-50 transition-colors`,children:e.getVisibleCells().map(e=>(0,L.jsx)(d,{children:m(e.column.columnDef.cell,e.getContext())},e.id))}),le=({ledgerRecords:e,businessName:t,fromDate:n,toDate:r})=>(0,L.jsx)(C,{createFileVariables:(0,I.useCallback)(async()=>{let i=J(e);return{fileName:`business_${t}_ledger_records${n?`_${n}`:``}${r?`_${r}`:``}`,fileContent:i}},[e,t,n,r])}),J=e=>{let t=``,n=Array.from(new Set(e.filter(e=>e.foreignAmount?.currency).map(e=>e.foreignAmount.currency)));t+=`Sorting Date,Date,Amount,Amount Balance,${Y(n)}Reference,Details,Counter Account\r\n`;for(let r of e){let e=ue(r,n);t+=e}return t};function Y(e){let t=``;return e.map(e=>{let n=P(e);t+=`${e}(${n}) Amount,${e}(${n}) Balance,`}),t}function X(e,t){let n=``;return t.map(t=>{e.foreignAmount&&e.foreignAmount.currency===t?n+=`${e.foreignAmount.raw},${e[`${t.toLowerCase()}Balance`]??0},`:n+=`,,`}),n}function ue(e,t){let n=``,r=e.invoiceDate?y(new Date(e.invoiceDate),`yyy-MM-dd`):null,i=e.invoiceDate?y(new Date(e.invoiceDate),`dd/MM/yy`):null,a=e.amount.raw,{ilsBalance:o,reference:s,details:c}=e,l=e.counterAccount?.name??``;return n+=`${r},${i},${a},${o},${X(e,t)}${Z(s??``)},${Z(c??``)},${Z(l)},\r\n`,n}function Z(e){return e===``?``:Number.isNaN(Number(e))?String(e).replace(/"/g,`""`).replace(/,/g,`.`):Number(e).toFixed(2).toString()}var Q=`businessLedger`,$={SORTING:`${Q}_sorting`,COLUMN_VISIBILITY:`${Q}_columnVisibility`};function de({businessID:o,filter:c}){let[f,p]=(0,I.useState)(()=>{try{let e=localStorage.getItem($.SORTING);return e?JSON.parse(e):[]}catch{return[]}}),[h,g]=(0,I.useState)([]),[y,C]=(0,I.useState)(``),[k,A]=(0,I.useState)({pageIndex:0,pageSize:50});(0,I.useEffect)(()=>{try{localStorage.setItem($.SORTING,JSON.stringify(f))}catch(e){console.warn(`Failed to save sorting to localStorage:`,e)}},[f]);let{fromDate:P,ownerIds:F,toDate:R}=c??{},[{data:z,fetching:B}]=t({query:re,variables:{filters:{fromDate:P,ownerIds:F,toDate:R,businessIDs:[o]}}}),V=(0,I.useMemo)(()=>z?.businessTransactionsFromLedgerRecords.__typename===`CommonError`?[]:z?.businessTransactionsFromLedgerRecords.businessTransactions.sort((e,t)=>e.invoiceDate>t.invoiceDate?1:-1)??[],[z]),H=(0,I.useMemo)(()=>{let e=[];for(let t=0;t<V.length;t++){let{__typename:n,...r}=V[t],i=t===0?r.amount.raw:(e[t-1].ilsBalance??0)+r.amount.raw,a={};Object.values(O).map(n=>{if(n!==O.Ils){let i=`${n.toLowerCase()}Balance`;a[i]=t===0?(r.foreignAmount?.currency===n?r.foreignAmount?.raw:0)??0:(e[t-1]?.[i]??0)+(r.foreignAmount?.currency===n?r.foreignAmount?.raw:0)}}),e.push({...r,ilsBalance:i,...a})}return e},[V]),U=(0,I.useMemo)(()=>new Set(V.filter(e=>e.foreignAmount?.currency).map(e=>e.foreignAmount.currency)),[V]),W=oe(),G=(0,I.useMemo)(()=>se(U),[U]),[K,q]=(0,I.useState)(()=>{try{let e=localStorage.getItem($.COLUMN_VISIBILITY);if(e){let t=JSON.parse(e);return{...G,...t}}}catch{}return G});(0,I.useEffect)(()=>{try{localStorage.setItem($.COLUMN_VISIBILITY,JSON.stringify(K))}catch(e){console.warn(`Failed to save column visibility to localStorage:`,e)}},[K]),(0,I.useEffect)(()=>{q(e=>({...G,...e}))},[G]);let J=N({data:H,columns:W,getCoreRowModel:ie(),getSortedRowModel:e(),getFilteredRowModel:D(),getPaginationRowModel:te(),onSortingChange:p,onColumnFiltersChange:g,onColumnVisibilityChange:q,onGlobalFilterChange:C,onPaginationChange:A,globalFilterFn:`includesString`,state:{sorting:f,columnFilters:h,columnVisibility:K,globalFilter:y,pagination:k}}),Y=V[0]?.business.name??`unknown`;return B?(0,L.jsxs)(`div`,{className:`flex flex-col gap-4 max-w-[90vw] m-2`,children:[(0,L.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,L.jsx)(_,{className:`h-10 w-64`}),(0,L.jsx)(_,{className:`h-10 w-32`})]}),(0,L.jsx)(_,{className:`size-10`})]}),(0,L.jsx)(`div`,{className:`rounded-md border overflow-x-auto`,children:(0,L.jsxs)(r,{children:[(0,L.jsx)(E,{children:(0,L.jsx)(u,{children:Array.from({length:8}).map((e,t)=>(0,L.jsx)(S,{children:(0,L.jsx)(_,{className:`h-4 w-24`})},t))})}),(0,L.jsx)(T,{children:Array.from({length:5}).map((e,t)=>(0,L.jsx)(u,{children:Array.from({length:8}).map((e,t)=>(0,L.jsx)(d,{children:(0,L.jsx)(_,{className:`h-4 w-full`})},t))},t))})]})})]}):(0,L.jsxs)(`div`,{className:`flex flex-col gap-4 max-w-[90vw] m-2`,children:[(0,L.jsxs)(`div`,{className:`flex items-center justify-between gap-4 flex-wrap`,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-4 flex-wrap`,children:[(0,L.jsxs)(`div`,{className:`relative flex-1 min-w-[200px] max-w-sm`,children:[(0,L.jsx)(w,{className:`absolute left-2.5 top-2.5 h-4 w-4 text-gray-500`}),(0,L.jsx)(v,{placeholder:`Search reference, details, business...`,value:y??``,onChange:e=>C(e.target.value),className:`pl-8`})]}),(0,L.jsxs)(a,{children:[(0,L.jsx)(b,{asChild:!0,children:(0,L.jsxs)(ne,{variant:`outline`,size:`sm`,children:[(0,L.jsx)(M,{className:`mr-2 h-4 w-4`}),`Columns`]})}),(0,L.jsx)(x,{align:`end`,className:`max-h-96 overflow-y-auto`,children:J.getAllColumns().filter(e=>e.getCanHide()).map(e=>(0,L.jsx)(ae,{className:`capitalize`,checked:e.getIsVisible(),onCheckedChange:t=>e.toggleVisibility(!!t),children:e.id},e.id))})]})]}),(0,L.jsx)(le,{ledgerRecords:H,businessName:Y,fromDate:c?.fromDate??void 0,toDate:c?.toDate??void 0})]}),(0,L.jsx)(`div`,{className:`rounded-md border overflow-x-auto`,children:(0,L.jsxs)(r,{children:[(0,L.jsx)(E,{className:`sticky top-0 z-20 bg-white border-b`,children:J.getHeaderGroups().map(e=>(0,L.jsx)(u,{children:e.headers.map(e=>(0,L.jsx)(S,{colSpan:e.colSpan,children:e.isPlaceholder?null:m(e.column.columnDef.header,e.getContext())},e.id))},e.id))}),(0,L.jsx)(T,{children:J.getRowModel().rows?.length?J.getRowModel().rows.map(e=>(0,L.jsx)(ce,{row:e},e.id)):(0,L.jsx)(u,{children:(0,L.jsx)(d,{colSpan:W.length,className:`h-24 text-center`,children:`No transactions found.`})})})]})}),(0,L.jsxs)(`div`,{className:`flex items-center justify-between gap-4 flex-wrap`,children:[(0,L.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,L.jsxs)(`p`,{className:`text-sm text-gray-700`,children:[`Showing`,` `,J.getState().pagination.pageIndex*J.getState().pagination.pageSize+1,` to`,` `,Math.min((J.getState().pagination.pageIndex+1)*J.getState().pagination.pageSize,J.getFilteredRowModel().rows.length),` `,`of `,J.getFilteredRowModel().rows.length,` transactions`]})}),(0,L.jsxs)(`div`,{className:`flex items-center gap-6`,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,L.jsx)(`p`,{className:`text-sm font-medium`,children:`Rows per page:`}),(0,L.jsxs)(l,{value:String(J.getState().pagination.pageSize),onValueChange:e=>{J.setPageSize(Number(e))},children:[(0,L.jsx)(j,{className:`h-8 w-[70px]`,children:(0,L.jsx)(n,{placeholder:J.getState().pagination.pageSize})}),(0,L.jsx)(s,{side:`top`,children:[25,50,100,200,500].map(e=>(0,L.jsx)(ee,{value:String(e),children:e},e))})]})]}),(0,L.jsx)(i,{className:`w-fit mx-0`,currentPageIndex:J.getState().pagination.pageIndex,totalPages:J.getPageCount(),onChange:e=>J.setPageIndex(e)})]})]})]})}export{de as t};