1import{q as A,n as f,j as i,ao as b,r as m}from"./vendor-react-2cb5d109.js";import{p as T,dK as y,M as c,d4 as N,bZ as _}from"./vendor-vy-bde48d53.js";import{H as g}from"./vendor-misc-09f7f1da.js";import{q as C,e as L,p as v,aA as M,w as x,z as D}from"./app-core-47ba8b05.js";import{a as I,R as O}from"./ReportPage-b8142e1c.js";import{R as Y}from"./RevenueReportToolbar-1ae08560.js";import{a$ as j,u as w}from"./vendor-mui-c34240eb.js";import{c as J,o as U}from"./vendor-vy-ds-da93fbfd.js";import{T as G,M as $}from"./filter-field-builders-d16afaab.js";import"./VyLayout-20044627.js";import"./use-account-f5081143.js";import"./reference-data-query-options-consts-650f2d3a.js";import"./use-subsidiaries-8dc9e8d5.js";import"./use-descope-sdk-5ae34fa9.js";import"./breadcrumbs-context-0c78adb5.js";import"./breadcrumb-routes-44c27586.js";import"./app-router-b196f9b3.js";import"./AiCopilotProvider-549ad299.js";import"./use-jobs-a8040d6f.js";import"./VyPageLayoutTabs-bb33aa5c.js";import"./page-frame-c2a7254f.js";import"./picker-value-utils-d352bb2c.js";import"./use-trigger-report-job-5eafb877.js";import"./use-catalog-products-list-c0194d38.js";import"./use-meters-85139a64.js";(function(){try{var t=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{};t.SENTRY_RELEASE={id:"a44d049e7c59"};var e=new t.Error().stack;e&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[e]="90d00efa-01b3-4641-a9fe-5853fd350d3f",t._sentryDebugIdIdentifier="sentry-dbid-90d00efa-01b3-4641-a9fe-5853fd350d3f")}catch{}})();async function P(){const e=await L().getJournalEntriesReport();return v(y,e)}function H(t){const e=A(C.journalEntriesReport(),()=>P(),{suspense:!0,...t});return T(e.data,"getJournalEntriesReportQuery data"),e}function Q(t,e){const[n,s]=f.useState(()=>new Set),r=f.useCallback(()=>{var l;const o=j(t),a=new Set;for(let u=0;u<o.length;u++){const p=o[u].model,d=(l=o[u+1])==null?void 0:l.model;(!d||d.journalEntryKey!==p.journalEntryKey)&&a.add(o[u].id)}s(a)},[t]);return f.useEffect(()=>{r();const o=t.current;if(!(o!=null&&o.subscribeEvent))return;const a=[o.subscribeEvent("sortedRowsSet",r),o.subscribeEvent("filteredRowsSet",r)];return()=>{for(const l of a)l()}},[t,r,e]),n}const S={AR:"Accounts receivable",Revenue:"Revenue",DeferredRevenue:"Deferred revenue",UnbilledRevenue:"Unbilled revenue",BadDebtExpense:"Bad debt expense",Cash:"Cash"};function F(t){return S[t]}const q=[{field:"customerName",headerName:"Customer",width:220,renderCell:({row:t})=>i.jsx(M,{customerId:t.customerId,name:t.customerName})},{field:"periodDate",headerName:"Date",width:120},{field:"description",headerName:"JE description",flex:1,minWidth:260},{field:"account",headerName:"Account",width:180,valueGetter:(t,e)=>F(e.account)},{field:"debit",headerName:"Debit",type:"number",width:140},{field:"credit",headerName:"Credit",type:"number",width:140}],B={pagination:{paginationModel:{pageSize:50}}},k=({rows:t,apiRef:e})=>{const n=f.useRef(null),s=e??n,r=Q(s,t),o=f.useCallback(a=>r.has(a.id)?"je-last-line":"",[r]);return i.jsx(J,{sx:{display:"flex",flexDirection:"column",height:"100%","& .je-last-line":{"& .MuiDataGrid-cell":{borderBottom:a=>`2px solid ${a.palette.divider}`}}},children:i.jsx(U,{apiRef:s,rows:t,columns:q,pagination:!0,paginationMode:"client",initialState:B,getRowClassName:o})})},h=[{label:"Equals",value:c.EQUALS},{label:"Greater than",value:c.GREATER_THAN},{label:"Less than",value:c.LESS_THAN},{label:"Greater than or equal",value:c.GREATER_THAN_OR_EQUAL},{label:"Less than or equal",value:c.LESS_THAN_OR_EQUAL}],K=Object.entries(S).map(([t,e])=>({value:t,label:e})),V=[{id:"description",label:"Description",inputType:"text",operators:G},{id:"account",label:"Account",inputType:"select",operators:$,options:K},{id:"debit",label:"Debit",inputType:"number",operators:h},{id:"credit",label:"Credit",inputType:"number",operators:h}];function z(t,e){if(e.field==="description"){const r=String(e.value??"").trim().toLowerCase();return r?t.description.toLowerCase().includes(r):!0}if(e.field==="account"){const r=Array.isArray(e.value)?e.value.map(String):[];if(r.length===0)return!0;const o=r.includes(t.account);return e.operator===c.NOT_IN?!o:o}if(e.field!=="debit"&&e.field!=="credit")return!0;const n=t[e.field],s=Number(e.value);if(Number.isNaN(s))return!0;switch(e.operator){case c.EQUALS:return n===s;case c.GREATER_THAN:return n>s;case c.GREATER_THAN_OR_EQUAL:return n>=s;case c.LESS_THAN:return n<s;case c.LESS_THAN_OR_EQUAL:return n<=s;default:return!0}}function W(t,e){const n=e.month?b(e.month).format("YYYY-MM"):null,s=e.customerSearch.trim().toLowerCase();return t.filter(r=>{if(n&&r.periodMonth!==n||s&&!r.customerName.toLowerCase().includes(s))return!1;for(const o of e.filters)if(!z(r,o))return!1;return!0})}function X(t){return t.flatMap(e=>{var p,d;const n=b(e.date),s=n.format("YYYY-MM"),r=n.format("MMM YYYY"),o=n.format("MM/DD/YYYY"),a=((p=e.lines[0])==null?void 0:p.customerName)??"",l=`${o} - ${a}${e.isCorrection?" - Correction":""}`,u=`${e.accountId}|${((d=e.lines[0])==null?void 0:d.customerId)??""}|${n.format("YYYY-MM-DD")}${e.isCorrection?"|correction":""}`;return e.lines.map(E=>{const R=`${u}|${E.account}`;
1return{...E,id:R,journalEntryKey:u,periodMonth:s,periodLabel:r,periodDate:o,description:l}})})}const Z=()=>{const{data:t}=H(),e=m.useMemo(()=>N().startOf("month").toDate(),[]),[n,s]=m.useState(e),[r,o]=m.useState(""),[a,l]=m.useState([]),u=m.useMemo(()=>X(t.entries),[t.entries]),p=m.useMemo(()=>W(u,{month:n,customerSearch:r,filters:a}),[u,n,r,a]),d=w(),E=()=>{const R=d.current;R&&R.exportDataAsCsv({fileName:`Journal entries report (issued ${D(_(),"MMM D, YYYY")})`})};return i.jsx(O,{title:"Journal entries",export:{onExport:E},toolbar:i.jsx(Y,{search:{value:r,onChange:o,placeholder:"Search customer"},date:{mode:"month",from:n,onFromChange:s},filters:{fields:V,lines:a,onChange:l}}),children:i.jsx(k,{rows:p,apiRef:d})})},ee=()=>i.jsxs(i.Fragment,{children:[i.jsx(g,{children:i.jsx("title",{children:"Journal entries report"})}),i.jsx(I,{children:i.jsx(Z,{})})]}),Ce=x(ee);export{Ce as JournalEntriesReportPage};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.