1import{q as A,n as f,j as i,ao as h,r as m}from"./vendor-react-0b52e17d.js";import{p as T,dM as y,M as c,d1 as N,bZ as _}from"./vendor-vy-3b44047f.js";import{H as g}from"./vendor-misc-60f9a457.js";import{q as C,e as L,p as v,az as M,w as x,B as D}from"./app-core-d11f9ebf.js";import{a as I,R as O}from"./ReportPage-8057dafd.js";import{R as Y}from"./RevenueReportToolbar-f189599e.js";import{a$ as j,u as w}from"./vendor-mui-238acd1e.js";import{c as J,o as U}from"./vendor-vy-ds-885d80cb.js";import{T as G,M as $}from"./filter-field-builders-a40bb915.js";import"./VyLayout-ff2cba0b.js";import"./use-account-7dbbc7a8.js";import"./reference-data-query-options-consts-5095626a.js";import"./use-subsidiaries-9438a3e5.js";import"./use-descope-sdk-b1412f07.js";import"./breadcrumbs-context-d114e5ee.js";import"./breadcrumb-routes-3b4ebb59.js";import"./app-router-a49381be.js";import"./AiCopilotProvider-1e5fad19.js";import"./use-jobs-5c611126.js";import"./VyPageLayoutTabs-1805ce94.js";import"./page-frame-cbbf18ba.js";import"./picker-value-utils-370a432f.js";import"./use-trigger-report-job-d4493d34.js";import"./use-catalog-products-list-5f86cccb.js";import"./use-meters-44d1580c.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:"2cd2d3d210c4"};var e=new t.Error().stack;e&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[e]="d57066fd-0b60-40bf-8db2-4ebe091dce0a",t._sentryDebugIdIdentifier="sentry-dbid-d57066fd-0b60-40bf-8db2-4ebe091dce0a")}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 B=[{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}],q={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:B,pagination:!0,paginationMode:"client",initialState:q,getRowClassName:o})})},b=[{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:b},{id:"credit",label:"Credit",inputType:"number",operators:b}];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?h(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=h(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.