@accounter/client 0.0.8-alpha-20251027003629-e64c01111f4a4cec34d5ca9a84e02646b69f80b1 → 0.0.8-alpha-20251027125446-75cc2031ef62f7abf48ecfbd31f62ddbddee2bd8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1 -1
- package/dist/assets/{Checkbox-DjollWGm.js → Checkbox-BzSHHEEI.js} +2 -2
- package/dist/assets/{Progress-AG7ZMAJu.js → Progress-CmZjJ77Z.js} +1 -1
- package/dist/assets/{Typography-Cd0kk1vc.js → Typography-CuW3aX-4.js} +1 -1
- package/dist/assets/{accordion-s9Ku08QQ.js → accordion-BZB-JxAM.js} +1 -1
- package/dist/assets/{accountant-approvals-Bqrsn1y5.js → accountant-approvals-BtF90Myx.js} +1 -1
- package/dist/assets/{all-charges-BQcsaMon.js → all-charges-X26mmfb3.js} +1 -1
- package/dist/assets/{arrow-up-down-J-i_WnHP.js → arrow-up-down-_p0E2yis.js} +1 -1
- package/dist/assets/{building-2-B92gXbOj.js → building-2-CKq13SAn.js} +1 -1
- package/dist/assets/business--pLros0g.js +27 -0
- package/dist/assets/{business-header-Cr5S_Mz7.js → business-header-C8fXEo4_.js} +1 -1
- package/dist/assets/{business-transactions-single-BD4bLNv2.js → business-transactions-single-CXmdF2-o.js} +1 -1
- package/dist/assets/{business-trip-DYkKK6Gk.js → business-trip-wd9Embtb.js} +1 -1
- package/dist/assets/{charges-filters-CoFkjW00.js → charges-filters-Fu2ZAzWC.js} +1 -1
- package/dist/assets/{charges-ledger-validation-D_cg1bn-.js → charges-ledger-validation-BXXhWS5W.js} +1 -1
- package/dist/assets/{chart-CQ9Opsuw.js → chart-3ddx32Qz.js} +1 -1
- package/dist/assets/{data-table-pagination-CN5CnGZV.js → data-table-pagination-BopLOYg9.js} +1 -1
- package/dist/assets/{editable-business-trip--kNXo9tv.js → editable-business-trip-C34Ue7Hf.js} +2 -2
- package/dist/assets/{index-BNtiIPMq.js → index-B0uGI3EC.js} +1 -1
- package/dist/assets/{index-BGHdyfCs.js → index-B6vWXPp8.js} +1 -1
- package/dist/assets/{index-n3bzj3IE.js → index-BEtUypi7.js} +2 -2
- package/dist/assets/{index-CC_fLCrA.js → index-BGW4bQ-L.js} +1 -1
- package/dist/assets/{index-Cw9zbBbJ.js → index-BpCZ3X72.js} +7 -7
- package/dist/assets/{index-C3pV-XkD.js → index-BsqMXEt3.js} +2 -2
- package/dist/assets/{index-DNTlYcfH.js → index-CkFRewFP.js} +2 -2
- package/dist/assets/{index-hr9hQe_a.js → index-Cr24h-Cl.js} +1 -1
- package/dist/assets/{index-Au8Djmrz.js → index-CuczBTlN.js} +1 -1
- package/dist/assets/{index-DzNfXERJ.js → index-CvS1Q-ya.js} +1 -1
- package/dist/assets/{index-DDGgWxhe.js → index-DA1mkO2v.js} +2 -2
- package/dist/assets/{index-DfI9E1Fb.js → index-DL8q44ap.js} +263 -258
- package/dist/assets/{index-fwXllLnH.js → index-DeQnadsl.js} +1 -1
- package/dist/assets/{index-DS_RReq_.js → index-Dia_wOFb.js} +1 -1
- package/dist/assets/{index-DepseT6D.js → index-HzZyyExI.js} +1 -1
- package/dist/assets/{index-C7al3ztL.js → index-JfxexlPg.js} +2 -2
- package/dist/assets/{index-BWpLPx22.js → index-PaJBRncn.js} +1 -1
- package/dist/assets/index-SmrmFP8m.js +1 -0
- package/dist/assets/{index-BSmbKLQe.js → index-cZSBCnNJ.js} +2 -2
- package/dist/assets/{index-CS40C1qp.js → index-dP8CSci_.js} +1 -1
- package/dist/assets/{index-Cc4HfGhd.js → index-o-HWUpBy.js} +1 -1
- package/dist/assets/{index--XWh2RKR.js → index-pjGYYOoy.js} +1 -1
- package/dist/assets/{index-C66UYUUf.js → index-szVd1r0-.js} +1 -1
- package/dist/assets/{index.es-CKlpQqlO.js → index.es-ZISWba9V.js} +1 -1
- package/dist/assets/{issue-document-B4kkfOo0.js → issue-document-B-c96E9w.js} +1 -1
- package/dist/assets/{login-page-NvQKYh34.js → login-page-C_RNlOZS.js} +1 -1
- package/dist/assets/{missing-info-charges-DrF2b0mO.js → missing-info-charges-BrFjY7yz.js} +1 -1
- package/dist/assets/{page-not-found-7AAOkZhu.js → page-not-found-s0xtsc5O.js} +1 -1
- package/dist/assets/{pencil-DNPAJOPL.js → pencil-D-2dJ444.js} +1 -1
- package/dist/assets/{report-commentary-row-CF-l1YIC.js → report-commentary-row-aIxbqTgK.js} +1 -1
- package/dist/assets/{save-D84vX5ea.js → save-DZ9jxz9u.js} +1 -1
- package/dist/assets/{sub-BbpGm1pj.js → sub-o9iEG2Bl.js} +1 -1
- package/dist/assets/subMonths-CpJ3oidH.js +1 -0
- package/dist/index.html +1 -1
- package/package.json +1 -1
- package/src/components/clients/modify-client-dialog.tsx +27 -9
- package/src/components/common/modals/insert-business.tsx +87 -36
- package/src/components/layout/user-nav.tsx +25 -3
- package/dist/assets/business-CfqFJUkR.js +0 -32
- package/dist/assets/index-DVbMTBK4.js +0 -1
- package/dist/assets/subMonths-0tIJizDp.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{D as t,j as e,au as i,av as c,aw as o,ax as l,
|
|
1
|
+
import{D as t,j as e,au as i,av as c,aw as o,ax as l,az as r,B as n,g4 as x,g5 as d}from"./index-DL8q44ap.js";/**
|
|
2
2
|
* @license lucide-react v0.546.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
package/dist/assets/{editable-business-trip--kNXo9tv.js → editable-business-trip-C34Ue7Hf.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{D as Te,
|
|
1
|
+
import{D as Te,bF as Qe,bG as Je,r as x,bH as es,bI as ae,ai as ss,bJ as ts,bK as ns,bL as rs,j as e,B as b,L as Se,i as B,bM as is,t as j,l as N,bN as Fe,a as re,bO as je,bP as y,bQ as G,bR as oe,bS as Me,bT as ze,af as as,bU as W,bV as q,H as F,aV as Pe,bW as $e,o as U,T as w,aC as Y,V as S,q as C,a1 as I,a3 as M,a4 as z,a5 as Q,a6 as P,v as J,a8 as R,aA as Oe,bX as K,e as X,bY as os,bZ as cs,b_ as ds,b$ as ne,c0 as D,c1 as ls,c2 as ke,c3 as Re,X as A,c4 as Ce,c5 as He,c6 as us,c7 as me,c8 as ee,g as se,c9 as hs,ca as xs,cb as te,cc as ps,cd as ms,ce as _e,cf as gs,cg as js,ch as fs,ci as Ve,cj as Ue,ck as vs,cl as bs,cm as ys,cn as Ts,co as Le,cp as Cs,cq as Es,cr as As,ap as fe,cs as ws,ct as Ds,cu as Bs,cv as Ns,cw as Is,cx as Ss,cy as Fs,cz as Ms,cA as zs,cB as Ps,cC as $s,cD as Os,cE as ks,cF as Rs,cG as Hs,cH as _s,cI as Vs,u as Us,cJ as Ls,cK as Ws,cL as qs,cM as Gs,y as Ys,cN as Ks,cO as Xs,cP as Zs,cQ as Qs,cR as Js,cS as et,cT as st,cU as ye,cV as tt,cW as nt,cX as rt,bz as T,cY as it}from"./index-DL8q44ap.js";/**
|
|
2
2
|
* @license lucide-react v0.546.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
@@ -13,4 +13,4 @@ import{D as Te,bE as Qe,bF as Je,r as x,bG as es,bH as ae,ah as ss,bI as ts,bJ a
|
|
|
13
13
|
*
|
|
14
14
|
* This source code is licensed under the ISC license.
|
|
15
15
|
* See the LICENSE file in the root directory of this source tree.
|
|
16
|
-
*/const lt=[["path",{d:"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2",key:"143wyd"}],["path",{d:"M6 9V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6",key:"1itne7"}],["rect",{x:"6",y:"14",width:"12",height:"8",rx:"1",key:"1ue0tg"}]],ut=Te("printer",lt);var ht=Qe((i,{fluid:n,sizes:r},{size:t})=>({root:{paddingLeft:i.spacing.md,paddingRight:i.spacing.md,maxWidth:n?"100%":Je({size:t,sizes:r}),marginLeft:"auto",marginRight:"auto"}})),xt=Object.defineProperty,ge=Object.getOwnPropertySymbols,We=Object.prototype.hasOwnProperty,qe=Object.prototype.propertyIsEnumerable,Ce=(i,n,r)=>n in i?xt(i,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):i[n]=r,pt=(i,n)=>{for(var r in n||(n={}))We.call(n,r)&&Ce(i,r,n[r]);if(ge)for(var r of ge(n))qe.call(n,r)&&Ce(i,r,n[r]);return i},mt=(i,n)=>{var r={};for(var t in i)We.call(i,t)&&n.indexOf(t)<0&&(r[t]=i[t]);if(i!=null&&ge)for(var t of ge(i))n.indexOf(t)<0&&qe.call(i,t)&&(r[t]=i[t]);return r};const gt={sizes:{xs:ae(540),sm:ae(720),md:ae(960),lg:ae(1140),xl:ae(1320)}},jt=x.forwardRef((i,n)=>{const r=es("Container",gt,i),{className:t,fluid:s,size:a,unstyled:o,sizes:d,variant:m}=r,p=mt(r,["className","fluid","size","unstyled","sizes","variant"]),{classes:h,cx:l}=ht({fluid:s,sizes:d},{unstyled:o,name:"Container",variant:m,size:a});return ss.createElement(ts,pt({className:l(h.root,t),ref:n},p))});jt.displayName="@mantine/core/Container";var k=3.77952755906,xe={method:"save",resolution:3,page:{margin:0,format:"A4",orientation:"portrait"},canvas:{mimeType:"image/jpeg",qualityRatio:1,useCORS:!0,logging:!1},overrides:{}},ft=class{pdf;canvas;options;constructor(i,n){this.canvas=i,this.options=n,this.pdf=new rs({format:this.options.page.format,orientation:this.options.page.orientation,...this.options.overrides?.pdf,unit:"mm"})}getMarginTopMM(){const i=typeof this.options.page.margin=="object"?this.options.page.margin.top:this.options.page.margin;return Number(i)}getMarginLeftMM(){const i=typeof this.options.page.margin=="object"?this.options.page.margin.left:this.options.page.margin;return Number(i)}getMarginRightMM(){const i=typeof this.options.page.margin=="object"?this.options.page.margin.right:this.options.page.margin;return Number(i)}getMarginBottomMM(){const i=typeof this.options.page.margin=="object"?this.options.page.margin.bottom:this.options.page.margin;return Number(i)}getMarginTop(){return this.getMarginTopMM()*k}getMarginBottom(){return this.getMarginBottomMM()*k}getMarginLeft(){return this.getMarginLeftMM()*k}getMarginRight(){return this.getMarginRightMM()*k}getScale(){return this.options.resolution}getPageHeight(){return this.getPageHeightMM()*k}getPageHeightMM(){return this.pdf.internal.pageSize.height}getPageWidthMM(){return this.pdf.internal.pageSize.width}getPageWidth(){return this.getPageWidthMM()*k}getOriginalCanvasWidth(){return this.canvas.width/this.getScale()}getOriginalCanvasHeight(){return this.canvas.height/this.getScale()}getCanvasPageAvailableHeight(){return this.getPageAvailableHeight()*this.getScale()*this.getHorizontalFitFactor()}getPageAvailableWidth(){return this.getPageWidth()-(this.getMarginLeft()+this.getMarginRight())}getPageAvailableHeight(){return this.getPageHeight()-(this.getMarginTop()+this.getMarginBottom())}getPageAvailableWidthMM(){return this.getPageAvailableWidth()/k}getPageAvailableHeightMM(){return this.getPageAvailableHeight()/k}getNumberPages(){return Math.ceil(this.canvas.height/this.getCanvasPageAvailableHeight())}getHorizontalFitFactor(){return this.getPageAvailableWidth()<this.getOriginalCanvasWidth()?this.getOriginalCanvasWidth()/this.getPageAvailableWidth():1}getCanvasOffsetY(i){return this.getCanvasPageAvailableHeight()*(i-1)}getCanvasHeightLeft(i){return this.canvas.height-this.getCanvasOffsetY(i)}getCanvasPageHeight(i){if(this.canvas.height<this.getCanvasPageAvailableHeight())return this.canvas.height;const n=this.getCanvasHeightLeft(i);return n<this.getCanvasPageAvailableHeight()?n:this.getCanvasPageAvailableHeight()}getCanvasPageWidth(){return this.canvas.width}createCanvasPage(i){const n=this.getCanvasPageWidth(),r=this.getCanvasPageHeight(i),t=document.createElement("canvas");return t.setAttribute("width",String(n)),t.setAttribute("height",String(r)),t.getContext("2d").drawImage(this.canvas,0,this.getCanvasOffsetY(i),this.canvas.width,r,0,0,this.canvas.width,r),t}convert(){let i=1;const n=this.getNumberPages();for(;i<=n;){i>1&&this.pdf.addPage(this.options.page.format,this.options.page.orientation);const r=this.createCanvasPage(i),t=r.toDataURL(this.options.canvas.mimeType,this.options.canvas.qualityRatio);this.pdf.setPage(i),this.pdf.addImage({imageData:t,width:r.width/(this.getScale()*k*this.getHorizontalFitFactor()),height:r.height/(this.getScale()*k*this.getHorizontalFitFactor()),x:this.getMarginLeftMM(),y:this.getMarginTopMM()}),i+=1}return this.pdf}},vt=i=>i?{...xe,...i,canvas:{...xe.canvas,...i.canvas},page:{...xe.page,...i.page}}:xe,bt=i=>typeof i=="function"?i():i?.current,yt=async(i,n)=>{const r=vt(n),t=bt(i);if(!t){console.error("Unable to get the target element.");return}const s=await ns(t,{useCORS:r.canvas.useCORS,logging:r.canvas.logging,scale:r.resolution,...r.overrides?.canvas}),o=new ft(s,r).convert();switch(r.method){case"build":return o;case"open":return window.open(o.output("bloburl"),"_blank"),o;case"save":default:{const d=r.filename??`${new Date().getTime()}.pdf`;return await o.save(d,{returnPromise:!0}),o}}},Tt=yt;const Et={method:"open",overrides:{pdf:{compress:!0}}},Ct=()=>document.getElementById("main-page"),Rn=({filename:i})=>{const[n,r]=x.useState(!1),t=async()=>{r(!0),await Tt(Ct,{...Et,filename:i}),r(!1)};return e.jsx(b,{variant:"outline",size:"icon",className:"size-7.5",onClick:t,disabled:n,children:n?e.jsx(Se,{className:"h-10 w-10 animate-spin mr-2 self-center"}):e.jsx(ut,{className:"size-5"})})},At="addBusinessTripAccommodationsExpense",wt=()=>{const[{fetching:i},n]=B(is),r=x.useCallback(async t=>{const s="Error adding business trip accommodations expense",a=At;j.loading("Adding Business Trip Accommodations Expense",{id:a});try{const o=await n(t),d=I(o,s,a);if(d)return j.success("Success",{id:a,description:"Business trip accommodations expense added"}),d.addBusinessTripAccommodationsExpense}catch(o){console.error(`${s}: ${o}`),j.error("Error",{id:a,description:s,duration:1e5,closeButton:!0})}},[n]);return{fetching:i,addBusinessTripAccommodationsExpense:r}};function Ge({formManager:i,attendeesStayPath:n,attendeesData:r,fetchingAttendees:t=!1,businessTripId:s}){const{control:a,watch:o,trigger:d}=i,{fields:m,append:p,remove:h}=Fe({control:a,name:n}),[l,c]=x.useState(t),[u,g]=x.useState(r??[]),f=o(n),C=m.map((_,O)=>({..._,...f[O]}));x.useEffect(()=>{r&&g(r)},[r]),x.useEffect(()=>{c(t)},[t]);const[{data:v,fetching:$},H]=re({query:je,pause:!0,variables:{businessTripId:s??""}});return x.useEffect(()=>{if(v?.businessTrip?.attendees.length){const _=v.businessTrip.attendees.map(O=>({value:O.id,label:O.name}))??[];g(_)}},[v?.businessTrip?.attendees]),x.useEffect(()=>{c($)},[$]),x.useEffect(()=>{!r&&!v&&!t&&!$&&H({businessTripId:s})},[r,t,$,H,s,v]),!s&&!r?e.jsx("div",{children:"Cannot edit attendees stay, lacking some mandatory information!"}):e.jsxs("div",{children:[e.jsx("span",{className:"mantine-InputWrapper-label mantine-Select-label",children:"Employees Stay"}),e.jsxs("div",{className:"h-full flex flex-col overflow-hidden",children:[C?.map((_,O)=>e.jsxs("div",{className:"flex items-end gap-2 text-gray-600 mb-2",children:[e.jsx("div",{className:"w-full mt-1 relative rounded-md shadow-xs",children:e.jsx(y,{name:`${n}.${O}.attendeeId`,control:a,rules:{required:"Required"},render:({field:L,fieldState:V})=>e.jsx(G,{...L,disabled:l,data:u,value:L.value??void 0,label:"Attendee",placeholder:"Scroll to see all options",maxDropdownHeight:160,searchable:!0,error:V.error?.message,withinPortal:!0,required:!0})})}),e.jsx("div",{className:"w-full mt-1 relative rounded-md shadow-xs",children:e.jsx(y,{control:a,name:`${n}.${O}.nightsCount`,render:({field:L,fieldState:V})=>e.jsx(oe,{className:"w-full",...L,min:0,label:"Nights Count",value:L.value??void 0,hideControls:!0,precision:0,error:V.error?.message,required:!0,onChange:ie=>L.onChange(ie&&typeof ie=="number"?ie:void 0)})})}),e.jsx(b,{variant:"ghost",size:"icon",className:"mb-2 size-7.5",onClick:()=>{h(O),d(n)},children:e.jsx(Me,{className:"size-5"})})]},_.id)),e.jsx(b,{variant:"ghost",size:"icon",className:"size-7.5",onClick:()=>{p({}),d(n)},children:e.jsx(ze,{className:"size-5"})})]})]})}function ce({businessTripId:i,control:n,setFetching:r}){const[t,s]=x.useState([]),[{data:a,fetching:o,error:d}]=re({query:je,variables:{businessTripId:i}}),{userContext:m}=x.useContext(as);x.useEffect(()=>{a?.businessTrip?.attendees.length&&s(a.businessTrip.attendees.map(h=>({value:h.id,label:h.name})).sort((h,l)=>h.label>l.label?1:-1))},[a,s]),x.useEffect(()=>{r(o)},[r,o]),x.useEffect(()=>{d&&j.error("Error",{description:"Oops, we have an error fetching attendees"})},[d]);const p=x.useMemo(()=>m?.context.ledgerLock,[m]);return e.jsxs(e.Fragment,{children:[e.jsx(y,{name:"date",control:n,rules:{min:p?{value:p,message:`Date must be after ${p}`}:void 0,pattern:{value:W,message:"Date must be im format yyyy-mm-dd"}},render:({field:h,fieldState:l})=>e.jsx(q,{"data-autofocus":!0,...h,onChange:c=>{const u=c?typeof c=="string"?c:F(c,"yyyy-MM-dd"):void 0;u!==h.value&&h.onChange(u)},value:h.value?new Date(h.value):void 0,error:l.error?.message,label:"Date",popoverProps:{withinPortal:!0}})}),e.jsx(y,{name:"valueDate",control:n,rules:{pattern:{value:W,message:"Date must be im format yyyy-mm-dd"},min:p?{value:p,message:`Date must be after ${p}`}:void 0},render:({field:h,fieldState:l})=>e.jsx(q,{...h,onChange:c=>{const u=c?typeof c=="string"?c:F(c,"yyyy-MM-dd"):void 0;u!==h.value&&h.onChange(u)},value:h.value?new Date(h.value):void 0,error:l.error?.message,label:"Value Date",popoverProps:{withinPortal:!0}})}),e.jsx(y,{name:"amount",control:n,render:({field:h,fieldState:l})=>e.jsx(y,{name:"currency",control:n,defaultValue:Pe.Ils,render:({field:c,fieldState:u})=>e.jsx($e,{...h,value:h.value??void 0,error:l.error?.message||u.error?.message,label:"Amount",currencyCodeProps:{...c,label:"Currency"}})})}),e.jsx(y,{name:"employeeBusinessId",control:n,render:({field:h,fieldState:l})=>e.jsx(G,{...h,data:t,value:h.value,disabled:o,label:"Attendee",placeholder:"Scroll to see all options",maxDropdownHeight:160,searchable:!0,error:l.error?.message,withinPortal:!0})})]})}function Ae(i){const{businessTripId:n,onAdd:r}=i,[t,{close:s,open:a}]=U(!1);return e.jsxs(e.Fragment,{children:[e.jsx(w,{label:"Add Accommodations Expense",children:e.jsx(b,{variant:"outline",size:"icon",className:"size-7.5",onClick:o=>{o.stopPropagation(),a()},children:e.jsx(K,{className:"size-5"})})}),t&&e.jsx(Dt,{businessTripId:n,opened:t,close:s,onAdd:r})]})}function Dt({businessTripId:i,opened:n,close:r,onAdd:t}){const s=S({defaultValues:{businessTripId:i}}),{control:a,handleSubmit:o}=s,[d,m]=x.useState(!1),{addBusinessTripAccommodationsExpense:p,fetching:h}=wt(),l=c=>{p({fields:c}).then(()=>{t?.(),r()})};return e.jsxs(E,{opened:n,onClose:r,centered:!0,lockScroll:!0,children:[e.jsx(E.Title,{children:"Add Accommodation Expense"}),e.jsx(E.Body,{children:e.jsx(N,{...s,children:e.jsxs("form",{onSubmit:o(l),className:"space-y-3",children:[e.jsx(ce,{businessTripId:i,control:a,setFetching:m}),e.jsx(M,{control:a,name:"country",render:({field:c})=>e.jsxs(z,{children:[e.jsx(Q,{children:"Country"}),e.jsx(P,{children:e.jsx(J,{...c,value:c.value??void 0})}),e.jsx(R,{})]})}),e.jsx(M,{name:"nightsCount",control:a,render:({field:c})=>e.jsxs(z,{children:[e.jsx(Q,{children:"Nights Count"}),e.jsx(P,{children:e.jsx(Oe,{...c,value:c.value??void 0,hideControls:!0,decimalScale:0,thousandSeparator:","})}),e.jsx(R,{})]})}),e.jsx(Ge,{formManager:s,attendeesStayPath:"attendeesStay",businessTripId:i}),e.jsx("div",{className:"flex justify-center mt-5 gap-3",children:e.jsx("button",{type:"submit",className:"text-white bg-indigo-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-indigo-600 rounded-sm text-lg",children:"Add"})})]})})}),(h||d)&&e.jsx(X,{blur:1,center:!0,children:e.jsx(Y,{})})]})}const Bt="updateBusinessTripAccommodationsExpense",It=()=>{const[{fetching:i},n]=B(os),r=x.useCallback(async t=>{const s="Error updating business trip accommodations expense",a=Bt;j.loading("Updating trip accommodations expense",{id:a});try{const o=await n(t),d=I(o,s,a);if(d)return j.success("Success",{id:a,description:"Business trip accommodations expense was updated"}),d.updateBusinessTripAccommodationsExpense}catch(o){console.error(`${s}: ${o}`),j.error("Error",{id:a,description:s,duration:1e5,closeButton:!0})}},[n]);return{fetching:i,updateBusinessTripAccommodationsExpense:r}},Nt="categorizeIntoExistingBusinessTripExpense",St=()=>{const[{fetching:i},n]=B(cs),r=x.useCallback(async t=>{const s="Error updating business trip expense category",a=Nt;j.loading("Updating business trip expense category",{id:a});try{const o=await n(t),d=I(o,s,a);if(d)return j.success("Success",{id:a,description:"Business trip expense category was updated"}),d.categorizeIntoExistingBusinessTripExpense}catch(o){console.error(`${s}: ${o}`),j.error("Error",{id:a,description:s,duration:1e5,closeButton:!0})}},[n]);return{fetching:i,categorizeIntoExistingBusinessTripExpense:r}};function de(i){const{businessTripExpenseId:n,businessTripId:r,onChange:t}=i,[s,{close:a,open:o}]=U(!1);return e.jsxs(e.Fragment,{children:[e.jsx(w,{label:"Attach Uncategorized Transaction",children:e.jsx(b,{variant:"outline",size:"icon",className:"size-7.5",onClick:d=>{d.stopPropagation(),o()},children:e.jsx(K,{className:"size-5"})})}),s&&e.jsx(Ft,{businessTripExpenseId:n,businessTripId:r,opened:s,close:a,onChange:t})]})}function Ft({businessTripExpenseId:i,businessTripId:n,opened:r,close:t,onChange:s}){const{control:a,handleSubmit:o,setValue:d}=S({defaultValues:{businessTripExpenseId:i}}),[m,p]=x.useState([]),[{data:h,fetching:l,error:c}]=re({query:ds,variables:{businessTripId:n}}),{categorizeIntoExistingBusinessTripExpense:u,fetching:g}=St(),f=C=>{u({fields:C}).then(()=>{s?.(),t()})};return x.useEffect(()=>{if(h?.businessTrip?.uncategorizedTransactions.length){const C=h.businessTrip.uncategorizedTransactions.filter(v=>v?.transaction);p(C.map(({transaction:v})=>({eventDate:v.eventDate,sourceDescription:v.sourceDescription,referenceKey:v.referenceKey,counterparty:v.counterparty?.name,amount:v.amount.formatted,rawAmount:v.amount.raw,value:v.id,label:`${v.eventDate} | ${v.counterparty?.name} | ${v.amount.formatted}`})).sort((v,$)=>v.eventDate.localeCompare($.eventDate)))}},[h,p]),x.useEffect(()=>{c&&j.error("Error",{description:"Oops, we have an error fetching transactions to categorize"})},[c]),e.jsxs(E,{opened:r,onClose:t,centered:!0,children:[e.jsx(E.Title,{children:"Set Transaction Category"}),e.jsx(E.Body,{children:e.jsxs("form",{onSubmit:o(f),className:"flex flex-col gap-3 mt-3",children:[e.jsx(y,{name:"transactionId",control:a,render:({field:C,fieldState:v})=>e.jsx(G,{...C,itemComponent:Mt,data:m??[],disabled:l,label:"Transactions",placeholder:"Scroll to see all options",maxDropdownHeight:160,error:v.error?.message,withAsterisk:!0,withinPortal:!0,onChange:$=>{const H=m.find(_=>_.value===$);H?.rawAmount&&d("amount",H.rawAmount),C.onChange($)}})}),e.jsx(y,{name:"amount",control:a,render:({field:C,fieldState:v})=>e.jsx(oe,{...C,value:C.value??void 0,hideControls:!0,precision:2,removeTrailingZeros:!0,error:v.error?.message,label:"Amount"})}),e.jsx("div",{className:"flex justify-center gap-3",children:e.jsx("button",{type:"submit",className:"text-white bg-indigo-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-indigo-600 rounded-sm text-lg",children:"Confirm"})})]})}),g&&e.jsx(X,{blur:1,center:!0,children:e.jsx(Y,{})})]})}const Mt=x.forwardRef(({eventDate:i,sourceDescription:n,referenceKey:r,counterparty:t,amount:s,...a},o)=>e.jsx("div",{ref:o,...a,children:e.jsxs(ne,{children:[e.jsx(ne.Col,{span:4,children:i}),e.jsx(ne.Col,{span:4,children:e.jsx(D,{size:"sm",children:t})}),e.jsx(ne.Col,{span:4,children:e.jsx(D,{size:"sm",children:s})}),e.jsx(ne.Col,{span:8,children:e.jsx(D,{size:"xs",opacity:.65,children:n})}),e.jsxs(ne.Col,{span:4,children:["Reference: ",r]})]})})),zt="deleteBusinessTripExpense",Pt=()=>{const[{fetching:i},n]=B(ls),r=x.useCallback(async t=>{const s="Error deleting business trip expense",a=`${zt}-${t.businessTripExpenseId}`;j.loading("Deleting trip expense",{id:a});try{const o=await n(t),d=I(o,s,a);if(d)return j.success("Success",{id:a,description:"Business trip expense was deleted"}),d.deleteBusinessTripExpense}catch(o){console.error(`${s}: ${o}`),j.error("Error",{id:a,description:s,duration:1e5,closeButton:!0})}},[n]);return{fetching:i,deleteBusinessTripExpense:r}};function le(i){const{fetching:n,deleteBusinessTripExpense:r}=Pt(),t=x.useCallback(()=>{r({businessTripExpenseId:i.businessTripExpenseId}).then(()=>{i.onDelete?.()})},[i,r]);return e.jsx(ke,{onConfirm:t,title:"Are you sure you want to remove expense?",children:e.jsx(w,{label:"Remove Expense",children:e.jsx(b,{variant:"outline",size:"icon",className:"size-7.5 text-red-500",disabled:n,children:e.jsx(Re,{className:"size-5"})})})})}const ue=({data:i,isEditMode:n=!1,control:r,businessTripId:t})=>{const s=A(us,i),[a,o]=x.useState([]),[{data:d,fetching:m,error:p}]=re({query:je,variables:{businessTripId:t}});x.useEffect(()=>{d?.businessTrip?.attendees.length&&o(d.businessTrip.attendees.map(l=>({value:l.id,label:l.name})).sort((l,c)=>l.label>c.label?1:-1))},[d,o]),x.useEffect(()=>{p&&j.error("Error",{description:"Oops, we have an error fetching attendees"})},[p]);const h=Array.from(new Set(s.charges?.map(l=>l.id)));return e.jsxs(e.Fragment,{children:[e.jsx("td",{children:e.jsx("div",{className:"flex flex-col gap-2 justify-center",children:n&&s.payedByEmployee?e.jsxs(e.Fragment,{children:[e.jsx(y,{name:"date",control:r,defaultValue:s.date,rules:{pattern:{value:W,message:"Date must be im format yyyy-mm-dd"}},render:({field:l,fieldState:c})=>e.jsx(q,{...l,form:`form ${s.id}`,"data-autofocus":!0,onChange:u=>{const g=u?typeof u=="string"?u:F(u,"yyyy-MM-dd"):void 0;g!==l.value&&l.onChange(g)},value:l.value?new Date(l.value):void 0,label:"Date",error:c.error?.message,popoverProps:{withinPortal:!0}})}),e.jsx(y,{name:"valueDate",control:r,defaultValue:s.valueDate,rules:{pattern:{value:W,message:"Date must be im format yyyy-mm-dd"}},render:({field:l,fieldState:c})=>e.jsx(q,{...l,form:`form ${s.id}`,onChange:u=>{const g=u?typeof u=="string"?u:F(u,"yyyy-MM-dd"):void 0;g!==l.value&&l.onChange(g)},value:l.value?new Date(l.value):void 0,label:"Value Date",error:c.error?.message,popoverProps:{withinPortal:!0}})})]}):e.jsxs(e.Fragment,{children:[s.date&&F(new Date(s.date),"dd/MM/yy"),e.jsx(D,{fz:"sm",c:"dimmed",children:s.valueDate&&F(new Date(s.valueDate),"dd/MM/yy")})]})})}),e.jsx("td",{children:n&&s.payedByEmployee?e.jsx(y,{name:"amount",control:r,defaultValue:s.amount?.raw??void 0,render:({field:l,fieldState:c})=>e.jsx(y,{name:"currency",control:r,defaultValue:s.amount?.currency??Pe.Ils,render:({field:u,fieldState:g})=>e.jsx($e,{form:`form ${s.id}`,...l,value:l.value??void 0,error:c.error?.message||g.error?.message,label:"Amount",currencyCodeProps:{...u,label:"Currency",form:`form ${s.id}`}})})}):e.jsx("div",{children:s.amount?.formatted})}),e.jsx("td",{children:e.jsx("div",{className:"flex flex-col gap-2 justify-center",children:n&&s.payedByEmployee?e.jsx(y,{name:"employeeBusinessId",control:r,defaultValue:s.employee?.id,render:({field:l,fieldState:c})=>e.jsx(G,{form:`form ${s.id}`,...l,data:a,value:l.value,disabled:m,label:"Attendee",placeholder:"Scroll to see all options",maxDropdownHeight:160,searchable:!0,error:c.error?.message,withinPortal:!0})}):e.jsx("div",{className:"flex flex-row gap-2 items-center",children:s.payedByEmployee&&e.jsx(D,{c:s.employee?.name?void 0:"red",children:s.employee?.name??"Missing"})})})}),e.jsx("td",{children:e.jsx("div",{className:"flex flex-col gap-2",children:h.map(l=>e.jsx(Ee,{to:He(l),target:"_blank",rel:"noreferrer",onClick:c=>c.stopPropagation(),className:"inline-flex items-center font-semibold",children:"To Charge"},l))})})]})},he=()=>e.jsxs(e.Fragment,{children:[e.jsx("th",{children:"Date"}),e.jsx("th",{children:"Amount"}),e.jsx("th",{children:"Payed By Attendee"}),e.jsx("th",{children:"Charges"})]}),$t=({data:i,businessTripId:n,onChange:r})=>{const t=A(hs,i),[s,a]=x.useState(!1),o=S({defaultValues:{id:t.id,businessTripId:n,attendeesStay:t.attendeesStay.map(c=>({attendeeId:c.id,nightsCount:c.nightsCount}))}}),{control:d,handleSubmit:m}=o,{updateBusinessTripAccommodationsExpense:p,fetching:h}=It(),l=c=>{p({fields:c}).then(()=>{r?.(),a(!1)})};return e.jsxs("tr",{children:[e.jsx(ue,{data:t,isEditMode:s,control:d,businessTripId:n}),e.jsx("td",{children:e.jsx(N,{...o,children:e.jsx("form",{id:`form ${t.id}`,onSubmit:m(l),children:s?e.jsx(M,{name:"country",control:d,defaultValue:t.country,render:({field:c})=>e.jsxs(z,{children:[e.jsx(P,{children:e.jsx(J,{form:`form ${t.id}`,...c,value:c.value??void 0})}),e.jsx(R,{})]})}):e.jsx(D,{c:t.country?void 0:"red",children:t.country??"Missing"})})})}),e.jsx("td",{children:e.jsx("div",{className:"flex flex-col gap-2 justify-center",children:s?e.jsx(N,{...o,children:e.jsx(M,{name:"nightsCount",control:d,defaultValue:t.nightsCount,render:({field:c})=>e.jsxs(z,{children:[e.jsx(P,{children:e.jsx(Oe,{...c,value:c.value??void 0,form:`form ${t.id}`,hideControls:!0,decimalScale:0,thousandSeparator:","})}),e.jsx(R,{})]})})}):e.jsx(D,{c:t.nightsCount?void 0:"red",children:t.nightsCount??"Missing"})})}),e.jsx("td",{children:s?e.jsx(N,{...o,children:e.jsx(Ge,{formManager:o,attendeesStayPath:"attendeesStay",businessTripId:n})}):e.jsx(me,{listStyleType:"disc",children:t.attendeesStay?.length?t.attendeesStay.map(c=>e.jsxs(me.Item,{children:[c.attendee.name," (",c.nightsCount,")"]},c.id)):e.jsx(D,{c:"red",fz:"sm",children:"Missing"})})}),e.jsx("td",{children:r&&e.jsxs(e.Fragment,{children:[e.jsx(w,{label:"Edit",children:e.jsx(b,{disabled:h,variant:s?"default":"outline",size:"icon",className:"size-7.5",onClick:c=>{c.stopPropagation(),a(u=>!u)},children:e.jsx(ee,{className:"size-5"})})}),s&&e.jsx(w,{label:"Confirm Changes",children:e.jsx(b,{type:"submit",form:`form ${t.id}`,variant:"outline",size:"icon",className:"size-7.5 text-green-500",children:e.jsx(se,{className:"size-5"})})}),e.jsx(de,{businessTripExpenseId:t.id,businessTripId:n,onChange:r}),e.jsx(le,{businessTripExpenseId:t.id,onDelete:r})]})})]},t.id)},Ke=({businessTripId:i,expenses:n,onChange:r})=>{if(!n?.length)return r?e.jsx(Ae,{businessTripId:i,onAdd:r}):e.jsx(e.Fragment,{});const t=n.map(s=>A(xs,s));return e.jsx("div",{className:"flex flex-col gap-2 mt-5",children:e.jsxs(te,{highlightOnHover:!0,withBorder:!0,children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx(he,{}),e.jsx("th",{children:"Location"}),e.jsx("th",{children:"Nights"}),e.jsx("th",{children:"Attendees Stay"}),e.jsx("th",{})]})}),e.jsxs("tbody",{children:[t.sort((s,a)=>s.date&&a.date?s.date<a.date?1:-1:s.date?-1:a.date?1:0).map(s=>e.jsx($t,{data:s,businessTripId:i,onChange:r},s.id)),r&&e.jsx("tr",{children:e.jsx("td",{colSpan:6,children:e.jsx(Ae,{businessTripId:i,onAdd:r})})})]})]})})},Ot=({data:i,onChange:n})=>{const{accommodationExpenses:r,id:t}=A(ps,i);return e.jsx(Ke,{businessTripId:t,expenses:r,onChange:n})},kt="insertBusinessTripAttendee",Rt=()=>{const[{fetching:i},n]=B(ms),r=x.useCallback(async t=>{const s="Error adding attendee to business trip",a=kt;j.loading("Adding attendee",{id:a});try{const o=await n(t),d=I(o,s,a);if(d)return j.success("Success",{id:a,description:"Attendee was added to the business trip"}),d.insertBusinessTripAttendee}catch(o){console.error(`${s}: ${o}`),j.error("Error",{id:a,description:s,duration:1e5,closeButton:!0})}},[n]);return{fetching:i,insertBusinessTripAttendee:r}};function we(i){const{businessTripId:n,onAdd:r}=i,[t,{close:s,open:a}]=U(!1);return e.jsxs(e.Fragment,{children:[e.jsx(w,{label:"Add Attendee",children:e.jsx(b,{variant:"outline",size:"icon",onClick:o=>{o.stopPropagation(),a()},className:"size-7.5",children:e.jsx(K,{className:"size-5"})})}),t&&e.jsx(Ht,{businessTripId:n,opened:t,close:s,onAdd:r})]})}function Ht({businessTripId:i,opened:n,close:r,onAdd:t}){const{selectableBusinesses:s,fetching:a}=_e(),{control:o,handleSubmit:d}=S({defaultValues:{businessTripId:i}}),{insertBusinessTripAttendee:m,fetching:p}=Rt(),h=l=>{m({fields:l}).then(()=>{t?.(),r()})};return e.jsxs(E,{opened:n,onClose:r,centered:!0,children:[e.jsx(E.Title,{children:"Add Attendee"}),e.jsx(E.Body,{children:e.jsxs("form",{onSubmit:d(h),children:[e.jsx(y,{name:"attendeeId",control:o,render:({field:l,fieldState:c})=>e.jsx(G,{"data-autofocus":!0,...l,data:s,value:l.value,disabled:a,label:"Attendee",placeholder:"Scroll to see all options",maxDropdownHeight:160,searchable:!0,error:c.error?.message,withAsterisk:!0,withinPortal:!0})}),e.jsx(y,{name:"arrivalDate",control:o,rules:{pattern:{value:W,message:"Date must be im format yyyy-mm-dd"}},render:({field:l,fieldState:c})=>e.jsx(q,{...l,onChange:u=>{const g=u?typeof u=="string"?u:F(u,"yyyy-MM-dd"):void 0;g!==l.value&&l.onChange(g)},value:l.value?new Date(l.value):void 0,error:c.error?.message,label:"Arrival",popoverProps:{withinPortal:!0}})}),e.jsx(y,{name:"departureDate",control:o,rules:{pattern:{value:W,message:"Date must be im format yyyy-mm-dd"}},render:({field:l,fieldState:c})=>e.jsx(q,{...l,onChange:u=>{const g=u?typeof u=="string"?u:F(u,"yyyy-MM-dd"):void 0;g!==l.value&&l.onChange(g)},value:l.value?new Date(l.value):void 0,error:c.error?.message,label:"Departure",popoverProps:{withinPortal:!0}})}),e.jsx("div",{className:"flex justify-center mt-5 gap-3",children:e.jsx("button",{type:"submit",className:"text-white bg-indigo-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-indigo-600 rounded-sm text-lg",children:"Add"})})]})}),(p||a)&&e.jsx(X,{blur:1,center:!0,children:e.jsx(Y,{})})]})}const _t="updateBusinessTripAttendee",Vt=()=>{const[{fetching:i},n]=B(gs),r=x.useCallback(async t=>{const s="Error updating business trip attendee",a=_t;j.loading("Updating trip attendee",{id:a});try{const o=await n(t),d=I(o,s,a);if(d)return j.success("Success",{id:a,description:"Business trip attendee was updated"}),d.updateBusinessTripAttendee}catch(o){console.error(`${s}: ${o}`),j.error("Error",{id:a,description:s,duration:1e5,closeButton:!0})}},[n]);return{fetching:i,updateBusinessTripAttendee:r}},Ut="deleteBusinessTripAttendee",Lt=()=>{const[{fetching:i},n]=B(js),r=x.useCallback(async t=>{const s="Error removing business trip attendee",a=Ut;j.loading("Removing business trip attendee",{id:a});try{const o=await n(t),d=I(o,s,a);if(d)return j.success("Success",{id:a,description:"Business trip attendee was removed"}),d.deleteBusinessTripAttendee}catch(o){console.error(`${s}: ${o}`),j.error("Error",{id:a,description:s,duration:1e5,closeButton:!0})}},[n]);return{fetching:i,deleteBusinessTripAttendee:r}};function Wt(i){const{fetching:n,deleteBusinessTripAttendee:r}=Lt(),t=x.useCallback(()=>{r({fields:{businessTripId:i.businessTripId,attendeeId:i.attendeeId}}).then(()=>{i.onDelete?.()})},[i,r]);return e.jsx(ke,{onConfirm:t,title:"Are you sure you want to remove attendee?",children:e.jsx(w,{label:"Remove Attendee",children:e.jsx(b,{variant:"outline",size:"icon",className:"size-7.5 text-red-500",disabled:n,children:e.jsx(Re,{className:"size-5"})})})})}const qt="addBusinessTripFlightsExpense",Gt=()=>{const[{fetching:i},n]=B(fs),r=x.useCallback(async t=>{const s="Error adding business trip flight expense",a=qt;j.loading("Adding business trip flight expense",{id:a});try{const o=await n(t),d=I(o,s,a);if(d)return j.success("Success",{id:a,description:"Business trip flight expense added"}),d.addBusinessTripFlightsExpense}catch(o){console.error(`${s}: ${o}`),j.error("Error",{id:a,description:s,duration:1e5,closeButton:!0})}},[n]);return{fetching:i,addBusinessTripFlightsExpense:r}};function Xe({formManager:i,flightPathPath:n,flightPathData:r}){const{control:t,watch:s,trigger:a}=i,{fields:o,append:d,remove:m}=Fe({control:t,name:n}),p=s(n),h=o.map((l,c)=>({...l,...p[c]}));return r?e.jsxs("div",{children:[e.jsx("span",{className:"mantine-InputWrapper-label mantine-Select-label",children:"Flight Path"}),e.jsxs("div",{className:"h-full flex flex-col overflow-hidden",children:[h?.map((l,c)=>e.jsxs("div",{className:"flex items-end gap-2 text-gray-600 mb-2",children:[e.jsx("div",{className:"w-full mt-1 relative rounded-md shadow-xs",children:e.jsx(M,{name:`${n}.${c}`,control:t,rules:{required:"Required"},render:({field:u})=>e.jsxs(z,{children:[e.jsx(P,{children:e.jsx(J,{...u,value:u.value??void 0,placeholder:"Destination"})}),e.jsx(R,{})]})})}),e.jsx(b,{variant:"ghost",size:"icon",className:"mb-2 size-7.5",onClick:()=>{m(c),a(n)},children:e.jsx(Me,{className:"size-5"})})]},l.id)),e.jsx(b,{variant:"ghost",size:"icon",className:"size-7.5",onClick:()=>{d(""),a(n)},children:e.jsx(ze,{className:"size-5"})})]})]}):e.jsx("div",{children:"Cannot edit flight path stay, lacking some mandatory information!"})}function De(i){const{businessTripId:n,onAdd:r}=i,[t,{close:s,open:a}]=U(!1);return e.jsxs(e.Fragment,{children:[e.jsx(w,{label:"Add Flight Expense",children:e.jsx(b,{variant:"outline",size:"icon",className:"size-7.5",onClick:o=>{o.stopPropagation(),a()},children:e.jsx(K,{className:"size-5"})})}),t&&e.jsx(Xt,{businessTripId:n,opened:t,close:s,onAdd:r})]})}const Kt=Object.entries(Ue).map(([i,n])=>({value:n,label:i}));function Xt({businessTripId:i,opened:n,close:r,onAdd:t}){const s=S({defaultValues:{businessTripId:i}}),{control:a,handleSubmit:o}=s,[d,m]=x.useState(!1),[{data:p,fetching:h}]=re({query:je,variables:{businessTripId:i}}),{addBusinessTripFlightsExpense:l,fetching:c}=Gt(),u=f=>{l({fields:f}).then(()=>{t?.(),r()})},g=p?.businessTrip?.attendees.map(f=>({value:f.id,label:f.name}))??[];return e.jsxs(E,{opened:n,onClose:r,centered:!0,lockScroll:!0,children:[e.jsx(E.Title,{children:"Add Flight Expense"}),e.jsx(E.Body,{children:e.jsx(N,{...s,children:e.jsxs("form",{onSubmit:o(u),children:[e.jsx(ce,{businessTripId:i,control:a,setFetching:m}),e.jsx(Xe,{formManager:s,flightPathPath:"path"}),e.jsx(y,{name:"flightClass",control:a,render:({field:f,fieldState:C})=>e.jsx(G,{...f,data:Kt,value:f.value,label:"Flight Class",placeholder:"Scroll to see all options",maxDropdownHeight:160,searchable:!0,error:C.error?.message,withinPortal:!0})}),e.jsx(y,{name:"attendeeIds",control:a,render:({field:f,fieldState:C})=>e.jsx(Ve,{...f,disabled:h,data:g,value:f.value??[],label:"Attendees",placeholder:"Scroll to see all options",maxDropdownHeight:160,searchable:!0,error:C.error?.message,withinPortal:!0})}),e.jsx("div",{className:"flex justify-center mt-5 gap-3",children:e.jsx("button",{type:"submit",className:"text-white bg-indigo-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-indigo-600 rounded-sm text-lg",children:"Add"})})]})})}),(c||d)&&e.jsx(X,{blur:1,center:!0,children:e.jsx(Y,{})})]})}const Yt="updateBusinessTripFlightsExpense",Zt=()=>{const[{fetching:i},n]=B(vs),r=x.useCallback(async t=>{const s="Error updating business trip flights expense",a=Yt;j.loading("Updating trip flights expense",{id:a});try{const o=await n(t),d=I(o,s,a);if(d)return j.success("Success",{id:a,description:"Business trip flights expense was updated"}),d.updateBusinessTripFlightsExpense}catch(o){console.error(`${s}: ${o}`),j.error("Error",{id:a,description:s,duration:1e5,closeButton:!0})}},[n]);return{fetching:i,updateBusinessTripFlightsExpense:r}},Qt=Object.entries(Ue).map(([i,n])=>({value:n,label:i})),Jt=({data:i,businessTripId:n,onChange:r,attendees:t})=>{const s=A(bs,i),[a,o]=x.useState(!1),d=S({defaultValues:{id:s.id,businessTripId:n,attendeeIds:s.attendees?.map(g=>g.id)??[],path:s.path??[]}}),{control:m,handleSubmit:p}=d,{updateBusinessTripFlightsExpense:h,fetching:l}=Zt(),c=g=>{h({fields:g}).then(()=>{r?.(),o(!1)})},u=t.map(g=>({value:g.id,label:g.name}));return e.jsxs("tr",{children:[e.jsx(ue,{data:s,isEditMode:a,control:m,businessTripId:n}),e.jsx("td",{children:e.jsx(N,{...d,children:e.jsx("form",{id:`form ${s.id}`,onSubmit:p(c),children:e.jsxs("div",{className:"flex flex-col gap-2 justify-center",children:[a?e.jsx(Xe,{formManager:d,flightPathPath:"path",flightPathData:s.path??void 0}):e.jsx("div",{className:"flex gap-2 items-center",children:s.path?.length?s.path.map((g,f)=>e.jsxs(e.Fragment,{children:[e.jsx(D,{fw:700,children:g},f),f<s.path.length-1&&(g===s.path[f+1]?" | ":" → ")]})):e.jsx(D,{fw:700,className:"flex gap-2 items-center",c:"red",children:"Missing"})}),a?e.jsx(y,{name:"flightClass",control:m,defaultValue:s.class??void 0,render:({field:g,fieldState:f})=>e.jsx(G,{form:`form ${s.id}`,"data-autofocus":!0,...g,data:Qt,value:g.value,label:"Flight Class",placeholder:"Scroll to see all options",maxDropdownHeight:160,searchable:!0,error:f.error?.message,withinPortal:!0})}):e.jsx(D,{c:s.class?void 0:"red",fz:"sm",children:`Class: ${s.class??"Missing"}`})]})})})}),e.jsx("td",{children:a?e.jsx(y,{name:"attendeeIds",control:m,defaultValue:s.attendees?.map(g=>g.id)??void 0,render:({field:g,fieldState:f})=>e.jsx(Ve,{...g,form:`form ${s.id}`,data:u,value:g.value??[],label:"Attendees",placeholder:"Scroll to see all options",maxDropdownHeight:160,searchable:!0,error:f.error?.message,withinPortal:!0})}):e.jsx(me,{listStyleType:"disc",children:s.attendees?.length?s.attendees.map(g=>e.jsx(me.Item,{children:g.name},g.id)):e.jsx(D,{c:"red",fz:"sm",children:"Missing"})})}),e.jsx("td",{children:r&&e.jsxs(e.Fragment,{children:[e.jsx(w,{label:"Edit",children:e.jsx(b,{disabled:l,variant:a?"default":"outline",size:"icon",className:"size-7.5",onClick:g=>{g.stopPropagation(),o(f=>!f)},children:e.jsx(ee,{className:"size-5"})})}),a&&e.jsx(w,{label:"Confirm Changes",children:e.jsx(b,{type:"submit",form:`form ${s.id}`,variant:"outline",size:"icon",className:"size-7.5 text-green-500",children:e.jsx(se,{className:"size-5"})})}),e.jsx(de,{businessTripExpenseId:s.id,businessTripId:n,onChange:r}),e.jsx(le,{businessTripExpenseId:s.id,onDelete:r})]})})]},s.id)},Ye=({businessTripId:i,expenses:n,attendees:r,onChange:t})=>{if(!n?.length)return t?e.jsx(De,{businessTripId:i,onAdd:t}):e.jsx(e.Fragment,{});const s=n.map(a=>A(ys,a));return e.jsx("div",{className:"flex flex-col gap-2 mt-5",children:e.jsxs(te,{highlightOnHover:!0,withBorder:!0,children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx(he,{}),e.jsx("th",{children:"Flight"}),e.jsx("th",{children:"Attendees"}),e.jsx("th",{})]})}),e.jsxs("tbody",{children:[s.sort((a,o)=>a.date&&o.date?a.date<o.date?1:-1:a.date?-1:o.date?1:0).map(a=>e.jsx(Jt,{data:a,businessTripId:i,onChange:t,attendees:r},a.id)),t&&e.jsx("tr",{children:e.jsx("td",{colSpan:5,children:e.jsx(De,{businessTripId:i,onAdd:t})})})]})]})})},en=({data:i,businessTripId:n,onChange:r})=>{const t=A(Es,i),[s,a]=x.useState(!1),[o,d]=x.useState(!1),{control:m,handleSubmit:p}=S({defaultValues:{businessTripId:n,attendeeId:t.id,arrivalDate:t.arrivalDate,departureDate:t.departureDate}}),{updateBusinessTripAttendee:h,fetching:l}=Vt(),c=u=>{h({fields:u}).then(()=>{r?.(),a(!1)})};return e.jsxs(e.Fragment,{children:[e.jsxs("tr",{children:[e.jsx("td",{children:t.name}),e.jsx("td",{children:s?e.jsx("form",{id:`form ${t.id}`,onSubmit:p(c),children:e.jsx(y,{name:"arrivalDate",control:m,defaultValue:t.arrivalDate,rules:{pattern:{value:W,message:"Date must be im format yyyy-mm-dd"}},render:({field:u,fieldState:g})=>e.jsx(q,{...u,onChange:f=>{const C=f?typeof f=="string"?f:F(f,"yyyy-MM-dd"):void 0;C!==u.value&&u.onChange(C)},"data-autofocus":!0,value:u.value?new Date(u.value):void 0,error:g.error?.message,label:"Arrival",popoverProps:{withinPortal:!0}})})}):t.arrivalDate}),e.jsx("td",{children:s?e.jsx(y,{name:"departureDate",control:m,defaultValue:t.departureDate,rules:{pattern:{value:W,message:"Date must be im format yyyy-mm-dd"}},render:({field:u,fieldState:g})=>e.jsx(q,{...u,onChange:f=>{const C=f?typeof f=="string"?f:F(f,"yyyy-MM-dd"):void 0;C!==u.value&&u.onChange(C)},value:u.value?new Date(u.value):void 0,error:g.error?.message,label:"Departure",popoverProps:{withinPortal:!0}})}):t.departureDate}),e.jsxs("td",{className:"flex items-center gap-2",children:[e.jsx(w,{label:"Edit",children:e.jsx(b,{disabled:l,variant:s?"default":"outline",size:"icon",className:"size-7.5",onClick:u=>{u.stopPropagation(),a(g=>!g)},children:e.jsx(ee,{className:"size-5"})})}),s&&e.jsx(w,{label:"Confirm Changes",children:e.jsx(b,{type:"submit",form:`form ${t.id}`,variant:"outline",size:"icon",className:"size-7.5 text-green-500",children:e.jsx(se,{className:"size-5"})})}),e.jsx(Wt,{businessTripId:n,attendeeId:t.id,onDelete:r}),e.jsx(Ts,{toggleExpansion:d,isExpanded:o})]})]},t.id),o&&e.jsx("tr",{children:e.jsx("td",{colSpan:4,children:e.jsx(Le,{shadow:"sm",withBorder:!0,children:e.jsxs("div",{className:"flex flex-col gap-2",children:[t.flights&&e.jsxs(e.Fragment,{children:[e.jsx("div",{children:"Flights:"}),e.jsx(Ye,{businessTripId:n,attendees:[],expenses:t.flights})]}),t.accommodations&&e.jsxs(e.Fragment,{children:[e.jsx("div",{children:"Accommodations:"}),e.jsx(Ke,{businessTripId:n,expenses:t.accommodations})]})]})})})},`${t.id}-expension`)]})},sn=({data:i,onChange:n})=>{const{attendees:r,id:t}=A(Cs,i);return r?.length?e.jsx("div",{className:"flex flex-col gap-2 mt-5",children:e.jsxs(te,{highlightOnHover:!0,withBorder:!0,children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Name"}),e.jsx("th",{children:"Arrival Date"}),e.jsx("th",{children:"Departure Date"}),e.jsx("th",{})]})}),e.jsxs("tbody",{children:[r.sort((s,a)=>s.name.toLocaleLowerCase()>a.name.toLocaleLowerCase()?1:-1).map(s=>e.jsx(en,{data:s,businessTripId:t,onChange:n},s.id)),e.jsx("tr",{children:e.jsx("td",{colSpan:4,children:e.jsx(we,{businessTripId:t,onAdd:n})})})]})]})}):e.jsx(we,{businessTripId:t,onAdd:n})},pe="addBusinessTripCarRentalExpense",tn=()=>{const[{fetching:i},n]=B(As),r=x.useCallback(async t=>{const s="Error adding business trip car rental expense";j.loading("Adding car rental expense...",{id:pe});try{const a=await n(t),o=I(a,s,pe);if(o)return j.success("Success",{id:pe,description:"Car rental expense added"}),o.addBusinessTripCarRentalExpense}catch(a){console.error(`${s}: ${a}`),j.error("Error",{id:pe,description:s,duration:1e5,closeButton:!0})}},[n]);return{fetching:i,addBusinessTripCarRentalExpense:r}};function Be(i){const{businessTripId:n,onAdd:r}=i,[t,{close:s,open:a}]=U(!1);return e.jsxs(e.Fragment,{children:[e.jsx(w,{label:"Add Car Rental Expense",children:e.jsx(b,{variant:"outline",size:"icon",onClick:o=>{o.stopPropagation(),a()},className:"size-7.5",children:e.jsx(K,{className:"size-5"})})}),t&&e.jsx(nn,{businessTripId:n,opened:t,close:s,onAdd:r})]})}function nn({businessTripId:i,opened:n,close:r,onAdd:t}){const s=S({defaultValues:{businessTripId:i}}),{control:a,handleSubmit:o}=s,[d,m]=x.useState(!1),{addBusinessTripCarRentalExpense:p,fetching:h}=tn(),l=c=>{p({fields:c}).then(()=>{t?.(),r()})};return e.jsxs(E,{opened:n,onClose:r,centered:!0,lockScroll:!0,children:[e.jsx(E.Title,{children:"Add Car Rental Expense"}),e.jsx(E.Body,{children:e.jsx(N,{...s,children:e.jsxs("form",{onSubmit:o(l),children:[e.jsx(ce,{businessTripId:i,control:a,setFetching:m}),e.jsx(y,{name:"days",control:a,render:({field:c,fieldState:u})=>e.jsx(oe,{...c,value:c.value??void 0,hideControls:!0,precision:2,removeTrailingZeros:!0,error:u.error?.message,label:"Rent Days"})}),e.jsx(M,{name:"isFuelExpense",control:a,render:({field:{value:c,...u}})=>e.jsxs(z,{className:"flex flex-row items-center justify-between rounded-lg border p-3 shadow-sm",children:[e.jsx("div",{className:"space-y-0.5",children:e.jsx(Q,{children:"Is Fuel Expense"})}),e.jsx(P,{children:e.jsx(fe,{...u,checked:c===!0,onCheckedChange:u.onChange})}),e.jsx(R,{})]})}),e.jsx("div",{className:"flex justify-center mt-5 gap-3",children:e.jsx("button",{type:"submit",className:"text-white bg-indigo-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-indigo-600 rounded-sm text-lg",children:"Add"})})]})})}),(h||d)&&e.jsx(X,{blur:1,center:!0,children:e.jsx(Y,{})})]})}const rn="updateBusinessTripCarRentalExpense",an=()=>{const[{fetching:i},n]=B(ws),r=x.useCallback(async t=>{const s="Error updating business trip car rental expense",a=rn;j.loading("Updating trip car rental expense",{id:a});try{const o=await n(t),d=I(o,s,a);if(d)return j.success("Success",{id:a,description:"Business trip car rental expense was updated"}),d.updateBusinessTripCarRentalExpense}catch(o){console.error(`${s}: ${o}`),j.error("Error",{id:a,description:s,duration:1e5,closeButton:!0})}},[n]);return{fetching:i,updateBusinessTripCarRentalExpense:r}},on=({data:i,businessTripId:n,onChange:r})=>{const t=A(Ds,i),[s,a]=x.useState(!1),o=S({defaultValues:{id:t.id,businessTripId:n}}),{control:d,handleSubmit:m}=o,{updateBusinessTripCarRentalExpense:p,fetching:h}=an(),l=c=>{p({fields:c}).then(()=>{r?.(),a(!1)})};return e.jsxs("tr",{children:[e.jsx(ue,{data:t,isEditMode:s,control:d,businessTripId:n}),e.jsx("td",{children:e.jsx(N,{...o,children:e.jsx("form",{id:`form ${t.id}`,onSubmit:m(l),children:e.jsx("div",{className:"flex flex-col gap-2 justify-center",children:t.isFuelExpense!==!0&&(s?e.jsx(y,{name:"days",control:d,defaultValue:t.days,render:({field:c,fieldState:u})=>e.jsx(oe,{...c,value:c.value??void 0,form:`form ${t.id}`,hideControls:!0,precision:2,removeTrailingZeros:!0,error:u.error?.message,placeholder:"Rent Days"})}):e.jsx(D,{c:t.days?void 0:"red",children:t.days??"Missing"}))})})})}),e.jsx("td",{children:s?e.jsx(N,{...o,children:e.jsx(M,{name:"isFuelExpense",control:d,defaultValue:t.isFuelExpense,render:({field:c})=>e.jsxs(z,{className:"flex flex-row items-center justify-between rounded-lg border p-3 shadow-sm",children:[e.jsx("div",{className:"space-y-0.5",children:e.jsx(Q,{children:"Is Fuel Expense"})}),e.jsx(P,{children:e.jsx(fe,{form:`form ${t.id}`,checked:c.value===!0,onCheckedChange:c.onChange})})]})})}):t.isFuelExpense===!0?e.jsx(dt,{}):e.jsx(ot,{})}),e.jsxs("td",{children:[e.jsx(w,{label:"Edit",children:e.jsx(b,{disabled:h,variant:s?"default":"outline",size:"icon",className:"size-7.5",onClick:c=>{c.stopPropagation(),a(u=>!u)},children:e.jsx(ee,{className:"size-5"})})}),s&&e.jsx(w,{label:"Confirm Changes",children:e.jsx(b,{type:"submit",form:`form ${t.id}`,variant:"outline",size:"icon",className:"size-7.5 text-green-500",children:e.jsx(se,{className:"size-5"})})}),e.jsx(de,{businessTripExpenseId:t.id,businessTripId:n,onChange:r}),e.jsx(le,{businessTripExpenseId:t.id,onDelete:r})]})]},t.id)},cn=({data:i,onChange:n})=>{const{carRentalExpenses:r,id:t}=A(Bs,i);return r?.length?e.jsx("div",{className:"flex flex-col gap-2 mt-5",children:e.jsxs(te,{highlightOnHover:!0,withBorder:!0,children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx(he,{}),e.jsx("th",{children:"Days"}),e.jsx("th",{children:"Type"}),e.jsx("th",{})]})}),e.jsxs("tbody",{children:[r.sort((s,a)=>s.date&&a.date?s.date<a.date?1:-1:s.date?-1:a.date?1:0).map(s=>e.jsx(on,{data:s,businessTripId:t,onChange:n},s.id)),e.jsx("tr",{children:e.jsx("td",{colSpan:6,children:e.jsx(Be,{businessTripId:t,onAdd:n})})})]})]})}):e.jsx(Be,{businessTripId:t,onAdd:n})},dn=({data:i,onChange:n})=>{const{flightExpenses:r,id:t,attendees:s}=A(Is,i);return e.jsx(Ye,{businessTripId:t,attendees:s,expenses:r,onChange:n})},ln="addBusinessTripOtherExpense",un=()=>{const[{fetching:i},n]=B(Ns),r=x.useCallback(async t=>{const s='Error adding business trip "other" expense',a=ln;j.loading('Adding trip "other" expense',{id:a});try{const o=await n(t),d=I(o,s,a);if(d)return j.success("Success",{id:a,description:'Business trip "other" expense was added'}),d.addBusinessTripOtherExpense}catch(o){console.error(`${s}: ${o}`),j.error("Error",{id:a,description:s,duration:1e5,closeButton:!0})}},[n]);return{fetching:i,addBusinessTripOtherExpense:r}};function Ie(i){const{businessTripId:n,onAdd:r}=i,[t,{close:s,open:a}]=U(!1);return e.jsxs(e.Fragment,{children:[e.jsx(w,{label:"Add Other Expense",children:e.jsx(b,{variant:"outline",size:"icon",className:"size-7.5",onClick:o=>{o.stopPropagation(),a()},children:e.jsx(K,{className:"size-5"})})}),t&&e.jsx(hn,{businessTripId:n,opened:t,close:s,onAdd:r})]})}function hn({businessTripId:i,opened:n,close:r,onAdd:t}){const s=S({defaultValues:{businessTripId:i}}),{control:a,handleSubmit:o}=s,[d,m]=x.useState(!1),{addBusinessTripOtherExpense:p,fetching:h}=un(),l=c=>{p({fields:c}).then(()=>{t?.(),r()})};return e.jsxs(E,{opened:n,onClose:r,centered:!0,lockScroll:!0,children:[e.jsx(E.Title,{children:"Add Other Expense"}),e.jsx(E.Body,{children:e.jsx(N,{...s,children:e.jsxs("form",{onSubmit:o(l),className:"space-y-3",children:[e.jsx(ce,{businessTripId:i,control:a,setFetching:m}),e.jsx(M,{name:"description",control:a,render:({field:c})=>e.jsxs(z,{children:[e.jsx(Q,{children:"Description"}),e.jsx(P,{children:e.jsx(J,{...c,value:c.value??void 0})}),e.jsx(R,{})]})}),e.jsx(M,{control:s.control,name:"deductibleExpense",render:({field:c})=>e.jsxs(z,{className:"flex flex-row items-center justify-between rounded-lg border p-3 shadow-sm",children:[e.jsx("div",{className:"space-y-0.5",children:e.jsx(Q,{children:"Deductible Expense"})}),e.jsx(P,{children:e.jsx(fe,{checked:c.value===!0,onCheckedChange:c.onChange})})]})}),e.jsx("div",{className:"flex justify-center mt-5 gap-3",children:e.jsx("button",{type:"submit",className:"text-white bg-indigo-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-indigo-600 rounded-sm text-lg",children:"Add"})})]})})}),(h||d)&&e.jsx(X,{blur:1,center:!0,children:e.jsx(Y,{})})]})}const xn="updateBusinessTripOtherExpense",pn=()=>{const[{fetching:i},n]=B(Ss),r=x.useCallback(async t=>{const s='Error updating business trip "other" expense',a=xn;j.loading('Updating business trip "other" expense',{id:a});try{const o=await n(t),d=I(o,s,a);if(d)return j.success("Success",{id:a,description:'Business trip "other" expense was updated'}),d.updateBusinessTripOtherExpense}catch(o){console.error(`${s}: ${o}`),j.error("Error",{id:a,description:s,duration:1e5,closeButton:!0})}},[n]);return{fetching:i,updateBusinessTripOtherExpense:r}},mn=({data:i,businessTripId:n,onChange:r})=>{const t=A(Fs,i),[s,a]=x.useState(!1),o=S({defaultValues:{id:t.id,businessTripId:n}}),{control:d,handleSubmit:m}=o,{updateBusinessTripOtherExpense:p,fetching:h}=pn(),l=c=>{p({fields:c}).then(()=>{r?.(),a(!1)})};return e.jsxs("tr",{children:[e.jsx(ue,{data:t,isEditMode:s,control:d,businessTripId:n}),e.jsx("td",{children:e.jsx(N,{...o,children:e.jsx("form",{id:`form ${t.id}`,onSubmit:m(l),children:s?e.jsx(M,{name:"description",control:d,defaultValue:t.description,render:({field:c})=>e.jsxs(z,{children:[e.jsx(P,{children:e.jsx(J,{form:`form ${t.id}`,...c,value:c.value??void 0})}),e.jsx(R,{})]})}):e.jsx(D,{c:t.description?void 0:"red",children:t.description??"Missing"})})})}),e.jsx("td",{children:e.jsx("div",{className:"flex flex-col gap-2 justify-center",children:s?e.jsx(N,{...o,children:e.jsx(M,{name:"deductibleExpense",control:o.control,defaultValue:t.deductibleExpense,render:({field:c})=>e.jsx(z,{children:e.jsx(P,{children:e.jsx(fe,{form:`form ${t.id}`,checked:c.value===!0,onCheckedChange:c.onChange})})})})}):e.jsx(D,{c:t.deductibleExpense?void 0:"red",children:t.deductibleExpense===!0?"Yes":t.deductibleExpense===!1?"No":"Missing"})})}),e.jsxs("td",{children:[e.jsx(w,{label:"Edit",children:e.jsx(b,{disabled:h,variant:s?"default":"outline",size:"icon",className:"size-7.5",onClick:c=>{c.stopPropagation(),a(u=>!u)},children:e.jsx(ee,{className:"size-5"})})}),s&&e.jsx(w,{label:"Confirm Changes",children:e.jsx(b,{type:"submit",form:`form ${t.id}`,variant:"outline",size:"icon",className:"size-7.5 text-green-500",children:e.jsx(se,{className:"size-5"})})}),e.jsx(de,{businessTripExpenseId:t.id,businessTripId:n,onChange:r}),e.jsx(le,{businessTripExpenseId:t.id,onDelete:r})]})]},t.id)},gn=({data:i,onChange:n})=>{const{otherExpenses:r,id:t}=A(Ms,i);return r?.length?e.jsx("div",{className:"flex flex-col gap-2 mt-5",children:e.jsxs(te,{highlightOnHover:!0,withBorder:!0,children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx(he,{}),e.jsx("th",{children:"Description"}),e.jsx("th",{children:"Deductible Expense"}),e.jsx("th",{})]})}),e.jsxs("tbody",{children:[r.sort((s,a)=>s.date&&a.date?s.date<a.date?1:-1:s.date?-1:a.date?1:0).map(s=>e.jsx(mn,{data:s,businessTripId:t,onChange:n},s.id)),e.jsx("tr",{children:e.jsx("td",{colSpan:6,children:e.jsx(Ie,{businessTripId:t,onAdd:n})})})]})]})}):e.jsx(Ie,{businessTripId:t,onAdd:n})},jn="addBusinessTripTravelAndSubsistenceExpense",fn=()=>{const[{fetching:i},n]=B(zs),r=x.useCallback(async t=>{const s="Error adding business trip travel&subsistence expense",a=jn;j.loading("Adding trip travel&subsistence expense",{id:a});try{const o=await n(t),d=I(o,s,a);if(d)return j.success("Success",{id:a,description:"Business trip travel&subsistence expense was added"}),d.addBusinessTripTravelAndSubsistenceExpense}catch(o){console.error(`${s}: ${o}`),j.error("Error",{id:a,description:s,duration:1e5,closeButton:!0})}},[n]);return{fetching:i,addBusinessTripTravelAndSubsistenceExpense:r}};function Ne(i){const{businessTripId:n,onAdd:r}=i,[t,{close:s,open:a}]=U(!1);return e.jsxs(e.Fragment,{children:[e.jsx(w,{label:"Add T&S Expense",children:e.jsx(b,{variant:"outline",size:"icon",className:"size-7.5",onClick:o=>{o.stopPropagation(),a()},children:e.jsx(K,{className:"size-5"})})}),t&&e.jsx(vn,{businessTripId:n,opened:t,close:s,onAdd:r})]})}function vn({businessTripId:i,opened:n,close:r,onAdd:t}){const s=S({defaultValues:{businessTripId:i}}),{control:a,handleSubmit:o}=s,[d,m]=x.useState(!1),{addBusinessTripTravelAndSubsistenceExpense:p,fetching:h}=fn(),l=c=>{p({fields:c}).then(()=>{t?.(),r()})};return e.jsxs(E,{opened:n,onClose:r,centered:!0,lockScroll:!0,children:[e.jsx(E.Title,{children:"Add Travel & Subsistence Expense"}),e.jsx(E.Body,{children:e.jsx(N,{...s,children:e.jsxs("form",{onSubmit:o(l),className:"space-y-3",children:[e.jsx(ce,{businessTripId:i,control:a,setFetching:m}),e.jsx(M,{name:"expenseType",control:a,render:({field:c})=>e.jsxs(z,{children:[e.jsx(Q,{children:"Expense Type"}),e.jsx(P,{children:e.jsx(J,{...c,value:c.value??void 0})}),e.jsx(R,{})]})}),e.jsx("div",{className:"flex justify-center mt-5 gap-3",children:e.jsx("button",{type:"submit",className:"text-white bg-indigo-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-indigo-600 rounded-sm text-lg",children:"Add"})})]})})}),(h||d)&&e.jsx(X,{blur:1,center:!0,children:e.jsx(Y,{})})]})}const bn="updateBusinessTripTravelAndSubsistenceExpense",yn=()=>{const[{fetching:i},n]=B(Ps),r=x.useCallback(async t=>{const s="Error updating business trip travel&subsistence expense",a=bn;j.loading("Updating trip travel&subsistence expense",{id:a});try{const o=await n(t),d=I(o,s,a);if(d)return j.success("Success",{id:a,description:"Business trip travel&subsistence expense was updated"}),d.updateBusinessTripTravelAndSubsistenceExpense}catch(o){console.error(`${s}: ${o}`),j.error("Error",{id:a,description:s,duration:1e5,closeButton:!0})}},[n]);return{fetching:i,updateBusinessTripTravelAndSubsistenceExpense:r}},Tn=({data:i,businessTripId:n,onChange:r})=>{const t=A($s,i),[s,a]=x.useState(!1),o=S({defaultValues:{id:t.id,businessTripId:n}}),{control:d,handleSubmit:m}=o,{updateBusinessTripTravelAndSubsistenceExpense:p,fetching:h}=yn(),l=c=>{p({fields:c}).then(()=>{r?.(),a(!1)})};return e.jsxs("tr",{children:[e.jsx(ue,{data:t,isEditMode:s,control:d,businessTripId:n}),e.jsx("td",{children:e.jsx(N,{...o,children:e.jsx("form",{id:`form ${t.id}`,onSubmit:m(l),children:s?e.jsx(M,{name:"expenseType",control:d,defaultValue:t.expenseType,render:({field:c})=>e.jsxs(z,{children:[e.jsx(P,{children:e.jsx(J,{form:`form ${t.id}`,...c,value:c.value??void 0})}),e.jsx(R,{})]})}):e.jsx(D,{c:t.expenseType?void 0:"red",children:t.expenseType??"Missing"})})})}),e.jsxs("td",{children:[e.jsx(w,{label:"Edit",children:e.jsx(b,{disabled:h,variant:s?"default":"outline",size:"icon",className:"size-7.5",onClick:c=>{c.stopPropagation(),a(u=>!u)},children:e.jsx(ee,{className:"size-5"})})}),s&&e.jsx(w,{label:"Confirm Changes",children:e.jsx(b,{type:"submit",form:`form ${t.id}`,variant:"outline",size:"icon",className:"size-7.5 text-green-500",children:e.jsx(se,{className:"size-5"})})}),e.jsx(de,{businessTripExpenseId:t.id,businessTripId:n,onChange:r}),e.jsx(le,{businessTripExpenseId:t.id,onDelete:r})]})]},t.id)},En=({data:i,onChange:n})=>{const{travelAndSubsistenceExpenses:r,id:t}=A(Os,i);return r?.length?e.jsx("div",{className:"flex flex-col gap-2 mt-5",children:e.jsxs(te,{highlightOnHover:!0,withBorder:!0,children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx(he,{}),e.jsx("th",{children:"Expense Type"}),e.jsx("th",{})]})}),e.jsxs("tbody",{children:[r.sort((s,a)=>s.date&&a.date?s.date<a.date?1:-1:s.date?-1:a.date?1:0).map(s=>e.jsx(Tn,{data:s,businessTripId:t,onChange:n},s.id)),e.jsx("tr",{children:e.jsx("td",{colSpan:6,children:e.jsx(Ne,{businessTripId:t,onAdd:n})})})]})]})}):e.jsx(Ne,{businessTripId:t,onAdd:n})},Cn=({data:i})=>{const n=A(ks,i),r="effectiveDate"in n?n.effectiveDate:void 0;return e.jsx("td",{children:e.jsxs("div",{className:"flex flex-col justify-center",children:[e.jsx("div",{children:r&&F(new Date(r),"dd/MM/yy")}),n.sourceEffectiveDate&&e.jsxs("div",{className:"text-xs text-gray-500",children:["(Originally ",F(new Date(n.sourceEffectiveDate),"dd/MM/yy"),")"]})]})})},An=({data:i})=>{const n=A(Rs,i),r="eventDate"in n?n.eventDate:void 0;return e.jsx("td",{children:e.jsx("div",{className:"flex flex-col justify-center",children:r&&F(new Date(r),"dd/MM/yy")})})},wn=({data:i})=>{const n=A(Hs,i),{account:r}=n,t=r.type,s=r.name;return e.jsx("td",{children:e.jsxs("div",{className:"flex flex-col gap-2 items-center",children:[e.jsx("p",{children:t}),e.jsx("p",{children:s})]})})},Dn=({data:i})=>{const n=A(_s,i),r="sourceDescription"in n?n.sourceDescription:"Missing";return e.jsx("td",{children:e.jsx("div",{className:"flex flex-wrap",children:e.jsx("div",{className:"flex flex-col justify-center",children:r})})})},Bn=({data:i})=>{const n=A(Vs,i);return e.jsx("td",{children:e.jsx("div",{className:"flex flex-wrap",children:e.jsx("div",{className:"flex flex-col justify-center",children:n.referenceKey})})})};function In({data:i,onChange:n,enableEdit:r}){const{get:t}=Us(),{id:s,counterparty:a,missingInfoSuggestions:o,id:d,sourceDescription:m}=A(Ls,i),p=!!o?.business&&r,h=p?o?.business?.name:"Missing",l=p?o?.business?.id:null,c=a?.name??h,[u,g]=x.useState(!1),{updateTransaction:f,fetching:C}=Ws(),v=x.useCallback(async Z=>{await f({transactionId:d,fields:{counterpartyId:Z}}),g(!0)},[d,f]),$=x.useCallback(async Z=>{await v(Z),n?.()},[v,n]),H=t("chargesFilters"),_=x.useCallback(Z=>{const be=H?JSON.parse(decodeURIComponent(H)):{};return qs({fromDate:be.fromDate,toDate:be.toDate,ownerIds:be.byOwners,businessIDs:[Z]})},[H]),{selectableBusinesses:O,fetching:L}=_e(),[V,ie]=x.useState(l??null),[ve,Ze]=x.useState(m);return e.jsxs("td",{children:[e.jsx("div",{className:"flex flex-wrap gap-1 items-center justify-center",children:a?.id?e.jsx(Ee,{to:_(a.id),target:"_blank",rel:"noreferrer",onClick:Z=>Z.stopPropagation(),className:"inline-flex items-center font-semibold",children:c}):e.jsxs(e.Fragment,{children:[e.jsx(Gs,{options:O,value:V,onChange:ie,search:ve,onSearchChange:Ze,placeholder:"Choose or create a business",empty:ve?e.jsx(Ks,{description:ve,onAdd:$}):null}),e.jsx(Xs,{content:"Approve",children:e.jsx(b,{variant:"outline",size:"icon",onClick:()=>V&&v(V),disabled:C||L||!V,children:e.jsx(se,{className:"size-4"})})})]})}),e.jsx(Ys,{transactionId:s,counterpartyId:a?.id??V,open:u,onOpenChange:g,onClose:n})]})}const Nn="categorizeBusinessTripExpense",Sn=()=>{const[{fetching:i},n]=B(Zs),r=x.useCallback(async t=>{const s="Error updating business trip expense category",a=Nn;j.loading("Updating trip expense category",{id:a});try{const o=await n(t),d=I(o,s,a);if(d)return j.success("Success",{id:a,description:"Business trip expense category was updated"}),d.categorizeBusinessTripExpense}catch(o){console.error(`${s}: ${o}`),j.error("Error",{id:a,description:s,duration:1e5,closeButton:!0})}},[n]);return{fetching:i,categorizeBusinessTripExpense:r}};function Fn(i){const{businessTripId:n,transactionId:r,onChange:t,defaultAmount:s}=i,[a,{close:o,open:d}]=U(!1);return e.jsxs(e.Fragment,{children:[e.jsx(w,{label:"Categorize",children:e.jsx(b,{variant:"outline",size:"icon",className:"size-7.5",onClick:m=>{m.stopPropagation(),d()},children:e.jsx(ee,{className:"size-5"})})}),a&&e.jsx(zn,{businessTripId:n,transactionId:r,opened:a,close:o,onChange:t,defaultAmount:s})]})}const Mn=Object.entries(Qs).map(([i,n])=>({value:n,label:i}));function zn({businessTripId:i,transactionId:n,defaultAmount:r,opened:t,close:s,onChange:a}){const{control:o,handleSubmit:d}=S({defaultValues:{businessTripId:i,transactionId:n}}),{categorizeBusinessTripExpense:m,fetching:p}=Sn(),h=l=>{m({fields:l}).then(()=>{a?.(),s()})};return e.jsxs(E,{opened:t,onClose:s,centered:!0,children:[e.jsx(E.Title,{children:"Set Expense Category"}),e.jsx(E.Body,{children:e.jsxs("form",{onSubmit:d(h),className:"flex flex-col gap-3 mt-3",children:[e.jsx(y,{name:"category",control:o,render:({field:l,fieldState:c})=>e.jsx(G,{"data-autofocus":!0,...l,data:Mn,value:l.value,label:"Category",placeholder:"Scroll to see all options",maxDropdownHeight:160,searchable:!0,error:c.error?.message,withinPortal:!0})}),e.jsx(y,{name:"amount",control:o,defaultValue:r,render:({field:l,fieldState:c})=>e.jsx(oe,{...l,value:l.value??void 0,hideControls:!0,precision:2,removeTrailingZeros:!0,error:c.error?.message,label:"Amount"})}),e.jsx("div",{className:"flex justify-center gap-3",children:e.jsx("button",{type:"submit",className:"text-white bg-indigo-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-indigo-600 rounded-sm text-lg",children:"Confirm"})})]})}),p&&e.jsx(X,{blur:1,center:!0,children:e.jsx(Y,{})})]})}const Pn=({data:i,onChange:n})=>{const{uncategorizedTransactions:r,id:t}=A(Js,i);return r?.length?e.jsx("div",{className:"flex flex-col gap-2 mt-5",children:e.jsxs(te,{highlightOnHover:!0,withBorder:!0,children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Event Date"}),e.jsx("th",{children:"Debit Date"}),e.jsx("th",{children:"Amount"}),e.jsx("th",{}),e.jsx("th",{children:"Account"}),e.jsx("th",{children:"Description"}),e.jsx("th",{children:"Reference#"}),e.jsx("th",{children:"Counterparty"}),e.jsx("th",{})]})}),e.jsx("tbody",{children:r.sort((s,a)=>s.transaction.eventDate.localeCompare(a.transaction.eventDate)).map(s=>e.jsxs("tr",{children:[e.jsx(An,{data:s.transaction}),e.jsx(Cn,{data:s.transaction}),e.jsx($n,{data:s}),e.jsx("td",{children:e.jsx(Ee,{to:He(s.transaction.chargeId),target:"_blank",rel:"noreferrer",onClick:a=>a.stopPropagation(),className:"inline-flex items-center font-semibold",children:"To Charge"})}),e.jsx(wn,{data:s.transaction}),e.jsx(Dn,{data:s.transaction}),e.jsx(Bn,{data:s.transaction}),e.jsx(In,{data:s.transaction}),e.jsx("td",{children:e.jsx(Fn,{businessTripId:t,transactionId:s.transaction.id,onChange:n,defaultAmount:s.transaction.amount.raw})})]},s.transaction.id))})]})}):e.jsx(e.Fragment,{})},$n=({data:i})=>{const{transaction:n,categorizedAmount:r,errors:t}=A(et,i),s="amount"in n?n.amount:void 0,a=s?.raw!==r.raw&&r.raw!==0;return e.jsx("td",{children:e.jsxs("div",{className:"flex flex-col whitespace-nowrap",style:{color:Number(s?.raw)>0?"green":"red"},children:[e.jsxs("div",{className:"flex gap-1",children:[s?.formatted,t.length>0&&e.jsx(On,{errors:t})]}),a&&e.jsxs("div",{className:"text-gray-500 ml-2",children:[r.formatted," categorized "]}),n.cryptoExchangeRate&&e.jsxs("div",{className:"text-gray-500 ml-2",children:[`(Rate: ${n.cryptoExchangeRate.rate})`,e.jsx("br",{}),s?.raw?`${st(s.raw*n.cryptoExchangeRate.rate)}$`:null]})]})})},On=({errors:i})=>{const[n,{close:r,open:t}]=U(!1);return e.jsxs(ye,{width:200,position:"bottom",shadow:"md",opened:n,children:[e.jsx(ye.Target,{children:e.jsx(tt,{onMouseEnter:t,onMouseLeave:r})}),e.jsx(ye.Dropdown,{sx:{pointerEvents:"none"},className:"whitespace-normal text-red-500",children:i.map((s,a)=>e.jsx(D,{size:"sm",children:s},a))})]})};function Hn({tripId:i,isExtended:n=!1}){const[r,t]=x.useState(),[s,a]=x.useState([]),[{data:o},d]=re({query:nt,variables:{businessTripId:i}});function m(h){s.includes(h)?a(l=>l.filter(c=>c!==h)):a(l=>[...l,h])}const p=d;return x.useEffect(()=>{o?.businessTrip&&t(o.businessTrip)},[o?.businessTrip]),e.jsx(Le,{shadow:"sm",radius:"md",withBorder:!0,children:r?e.jsxs(e.Fragment,{children:[e.jsx(rt,{data:r,onChange:p}),e.jsxs(T,{className:"w-full",multiple:!0,value:s,chevron:e.jsx(K,{size:"1rem"}),styles:{chevron:{"&[data-rotate]":{transform:"rotate(45deg)"}}},children:[e.jsxs(T.Item,{value:"attendees",children:[e.jsx(T.Control,{onClick:()=>m("attendees"),children:"Attendees"}),e.jsx(T.Panel,{children:e.jsx(sn,{data:r,onChange:p})})]}),n&&e.jsxs(T.Item,{value:"uncategorized-transactions",children:[e.jsx(T.Control,{onClick:()=>m("uncategorized-transactions"),disabled:!r.uncategorizedTransactions?.length,children:"Uncategorized Transactions"}),e.jsx(T.Panel,{children:e.jsx(Pn,{data:r,onChange:p})})]}),e.jsxs(T.Item,{value:"flights",children:[e.jsx(T.Control,{onClick:()=>m("flights"),children:"Flights"}),e.jsx(T.Panel,{children:e.jsx(dn,{data:r,onChange:p})})]}),e.jsxs(T.Item,{value:"accommodations",children:[e.jsx(T.Control,{onClick:()=>m("accommodations"),children:"Accommodations"}),e.jsx(T.Panel,{children:e.jsx(Ot,{data:r,onChange:p})})]}),e.jsxs(T.Item,{value:"travelAndSubsistence",children:[e.jsx(T.Control,{onClick:()=>m("travelAndSubsistence"),children:"Travel & Subsistence"}),e.jsx(T.Panel,{children:e.jsx(En,{data:r,onChange:p})})]}),e.jsxs(T.Item,{value:"other",children:[e.jsx(T.Control,{onClick:()=>m("other"),children:"Other"}),e.jsx(T.Panel,{children:e.jsx(gn,{data:r,onChange:p})})]}),e.jsxs(T.Item,{value:"carRental",children:[e.jsx(T.Control,{onClick:()=>m("carRental"),children:"Car Rental"}),e.jsx(T.Panel,{children:e.jsx(cn,{data:r,onChange:p})})]}),e.jsxs(T.Item,{value:"summary",children:[e.jsx(T.Control,{onClick:()=>m("summary"),children:"Summary"}),e.jsx(T.Panel,{children:e.jsx(it,{data:r})})]})]})]}):e.jsx(Se,{className:"h-10 w-10 animate-spin mr-2 self-center"})})}export{jt as C,Hn as E,Rn as P};
|
|
16
|
+
*/const lt=[["path",{d:"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2",key:"143wyd"}],["path",{d:"M6 9V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6",key:"1itne7"}],["rect",{x:"6",y:"14",width:"12",height:"8",rx:"1",key:"1ue0tg"}]],ut=Te("printer",lt);var ht=Qe((i,{fluid:n,sizes:r},{size:t})=>({root:{paddingLeft:i.spacing.md,paddingRight:i.spacing.md,maxWidth:n?"100%":Je({size:t,sizes:r}),marginLeft:"auto",marginRight:"auto"}})),xt=Object.defineProperty,ge=Object.getOwnPropertySymbols,We=Object.prototype.hasOwnProperty,qe=Object.prototype.propertyIsEnumerable,Ee=(i,n,r)=>n in i?xt(i,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):i[n]=r,pt=(i,n)=>{for(var r in n||(n={}))We.call(n,r)&&Ee(i,r,n[r]);if(ge)for(var r of ge(n))qe.call(n,r)&&Ee(i,r,n[r]);return i},mt=(i,n)=>{var r={};for(var t in i)We.call(i,t)&&n.indexOf(t)<0&&(r[t]=i[t]);if(i!=null&&ge)for(var t of ge(i))n.indexOf(t)<0&&qe.call(i,t)&&(r[t]=i[t]);return r};const gt={sizes:{xs:ae(540),sm:ae(720),md:ae(960),lg:ae(1140),xl:ae(1320)}},jt=x.forwardRef((i,n)=>{const r=es("Container",gt,i),{className:t,fluid:s,size:a,unstyled:o,sizes:d,variant:m}=r,p=mt(r,["className","fluid","size","unstyled","sizes","variant"]),{classes:h,cx:l}=ht({fluid:s,sizes:d},{unstyled:o,name:"Container",variant:m,size:a});return ss.createElement(ts,pt({className:l(h.root,t),ref:n},p))});jt.displayName="@mantine/core/Container";var k=3.77952755906,xe={method:"save",resolution:3,page:{margin:0,format:"A4",orientation:"portrait"},canvas:{mimeType:"image/jpeg",qualityRatio:1,useCORS:!0,logging:!1},overrides:{}},ft=class{pdf;canvas;options;constructor(i,n){this.canvas=i,this.options=n,this.pdf=new rs({format:this.options.page.format,orientation:this.options.page.orientation,...this.options.overrides?.pdf,unit:"mm"})}getMarginTopMM(){const i=typeof this.options.page.margin=="object"?this.options.page.margin.top:this.options.page.margin;return Number(i)}getMarginLeftMM(){const i=typeof this.options.page.margin=="object"?this.options.page.margin.left:this.options.page.margin;return Number(i)}getMarginRightMM(){const i=typeof this.options.page.margin=="object"?this.options.page.margin.right:this.options.page.margin;return Number(i)}getMarginBottomMM(){const i=typeof this.options.page.margin=="object"?this.options.page.margin.bottom:this.options.page.margin;return Number(i)}getMarginTop(){return this.getMarginTopMM()*k}getMarginBottom(){return this.getMarginBottomMM()*k}getMarginLeft(){return this.getMarginLeftMM()*k}getMarginRight(){return this.getMarginRightMM()*k}getScale(){return this.options.resolution}getPageHeight(){return this.getPageHeightMM()*k}getPageHeightMM(){return this.pdf.internal.pageSize.height}getPageWidthMM(){return this.pdf.internal.pageSize.width}getPageWidth(){return this.getPageWidthMM()*k}getOriginalCanvasWidth(){return this.canvas.width/this.getScale()}getOriginalCanvasHeight(){return this.canvas.height/this.getScale()}getCanvasPageAvailableHeight(){return this.getPageAvailableHeight()*this.getScale()*this.getHorizontalFitFactor()}getPageAvailableWidth(){return this.getPageWidth()-(this.getMarginLeft()+this.getMarginRight())}getPageAvailableHeight(){return this.getPageHeight()-(this.getMarginTop()+this.getMarginBottom())}getPageAvailableWidthMM(){return this.getPageAvailableWidth()/k}getPageAvailableHeightMM(){return this.getPageAvailableHeight()/k}getNumberPages(){return Math.ceil(this.canvas.height/this.getCanvasPageAvailableHeight())}getHorizontalFitFactor(){return this.getPageAvailableWidth()<this.getOriginalCanvasWidth()?this.getOriginalCanvasWidth()/this.getPageAvailableWidth():1}getCanvasOffsetY(i){return this.getCanvasPageAvailableHeight()*(i-1)}getCanvasHeightLeft(i){return this.canvas.height-this.getCanvasOffsetY(i)}getCanvasPageHeight(i){if(this.canvas.height<this.getCanvasPageAvailableHeight())return this.canvas.height;const n=this.getCanvasHeightLeft(i);return n<this.getCanvasPageAvailableHeight()?n:this.getCanvasPageAvailableHeight()}getCanvasPageWidth(){return this.canvas.width}createCanvasPage(i){const n=this.getCanvasPageWidth(),r=this.getCanvasPageHeight(i),t=document.createElement("canvas");return t.setAttribute("width",String(n)),t.setAttribute("height",String(r)),t.getContext("2d").drawImage(this.canvas,0,this.getCanvasOffsetY(i),this.canvas.width,r,0,0,this.canvas.width,r),t}convert(){let i=1;const n=this.getNumberPages();for(;i<=n;){i>1&&this.pdf.addPage(this.options.page.format,this.options.page.orientation);const r=this.createCanvasPage(i),t=r.toDataURL(this.options.canvas.mimeType,this.options.canvas.qualityRatio);this.pdf.setPage(i),this.pdf.addImage({imageData:t,width:r.width/(this.getScale()*k*this.getHorizontalFitFactor()),height:r.height/(this.getScale()*k*this.getHorizontalFitFactor()),x:this.getMarginLeftMM(),y:this.getMarginTopMM()}),i+=1}return this.pdf}},vt=i=>i?{...xe,...i,canvas:{...xe.canvas,...i.canvas},page:{...xe.page,...i.page}}:xe,bt=i=>typeof i=="function"?i():i?.current,yt=async(i,n)=>{const r=vt(n),t=bt(i);if(!t){console.error("Unable to get the target element.");return}const s=await ns(t,{useCORS:r.canvas.useCORS,logging:r.canvas.logging,scale:r.resolution,...r.overrides?.canvas}),o=new ft(s,r).convert();switch(r.method){case"build":return o;case"open":return window.open(o.output("bloburl"),"_blank"),o;case"save":default:{const d=r.filename??`${new Date().getTime()}.pdf`;return await o.save(d,{returnPromise:!0}),o}}},Tt=yt;const Ct={method:"open",overrides:{pdf:{compress:!0}}},Et=()=>document.getElementById("main-page"),Rn=({filename:i})=>{const[n,r]=x.useState(!1),t=async()=>{r(!0),await Tt(Et,{...Ct,filename:i}),r(!1)};return e.jsx(b,{variant:"outline",size:"icon",className:"size-7.5",onClick:t,disabled:n,children:n?e.jsx(Se,{className:"h-10 w-10 animate-spin mr-2 self-center"}):e.jsx(ut,{className:"size-5"})})},At="addBusinessTripAccommodationsExpense",wt=()=>{const[{fetching:i},n]=B(is),r=x.useCallback(async t=>{const s="Error adding business trip accommodations expense",a=At;j.loading("Adding Business Trip Accommodations Expense",{id:a});try{const o=await n(t),d=N(o,s,a);if(d)return j.success("Success",{id:a,description:"Business trip accommodations expense added"}),d.addBusinessTripAccommodationsExpense}catch(o){console.error(`${s}: ${o}`),j.error("Error",{id:a,description:s,duration:1e5,closeButton:!0})}},[n]);return{fetching:i,addBusinessTripAccommodationsExpense:r}};function Ge({formManager:i,attendeesStayPath:n,attendeesData:r,fetchingAttendees:t=!1,businessTripId:s}){const{control:a,watch:o,trigger:d}=i,{fields:m,append:p,remove:h}=Fe({control:a,name:n}),[l,c]=x.useState(t),[u,g]=x.useState(r??[]),f=o(n),E=m.map((_,O)=>({..._,...f[O]}));x.useEffect(()=>{r&&g(r)},[r]),x.useEffect(()=>{c(t)},[t]);const[{data:v,fetching:$},H]=re({query:je,pause:!0,variables:{businessTripId:s??""}});return x.useEffect(()=>{if(v?.businessTrip?.attendees.length){const _=v.businessTrip.attendees.map(O=>({value:O.id,label:O.name}))??[];g(_)}},[v?.businessTrip?.attendees]),x.useEffect(()=>{c($)},[$]),x.useEffect(()=>{!r&&!v&&!t&&!$&&H({businessTripId:s})},[r,t,$,H,s,v]),!s&&!r?e.jsx("div",{children:"Cannot edit attendees stay, lacking some mandatory information!"}):e.jsxs("div",{children:[e.jsx("span",{className:"mantine-InputWrapper-label mantine-Select-label",children:"Employees Stay"}),e.jsxs("div",{className:"h-full flex flex-col overflow-hidden",children:[E?.map((_,O)=>e.jsxs("div",{className:"flex items-end gap-2 text-gray-600 mb-2",children:[e.jsx("div",{className:"w-full mt-1 relative rounded-md shadow-xs",children:e.jsx(y,{name:`${n}.${O}.attendeeId`,control:a,rules:{required:"Required"},render:({field:L,fieldState:V})=>e.jsx(G,{...L,disabled:l,data:u,value:L.value??void 0,label:"Attendee",placeholder:"Scroll to see all options",maxDropdownHeight:160,searchable:!0,error:V.error?.message,withinPortal:!0,required:!0})})}),e.jsx("div",{className:"w-full mt-1 relative rounded-md shadow-xs",children:e.jsx(y,{control:a,name:`${n}.${O}.nightsCount`,render:({field:L,fieldState:V})=>e.jsx(oe,{className:"w-full",...L,min:0,label:"Nights Count",value:L.value??void 0,hideControls:!0,precision:0,error:V.error?.message,required:!0,onChange:ie=>L.onChange(ie&&typeof ie=="number"?ie:void 0)})})}),e.jsx(b,{variant:"ghost",size:"icon",className:"mb-2 size-7.5",onClick:()=>{h(O),d(n)},children:e.jsx(Me,{className:"size-5"})})]},_.id)),e.jsx(b,{variant:"ghost",size:"icon",className:"size-7.5",onClick:()=>{p({}),d(n)},children:e.jsx(ze,{className:"size-5"})})]})]})}function ce({businessTripId:i,control:n,setFetching:r}){const[t,s]=x.useState([]),[{data:a,fetching:o,error:d}]=re({query:je,variables:{businessTripId:i}}),{userContext:m}=x.useContext(as);x.useEffect(()=>{a?.businessTrip?.attendees.length&&s(a.businessTrip.attendees.map(h=>({value:h.id,label:h.name})).sort((h,l)=>h.label>l.label?1:-1))},[a,s]),x.useEffect(()=>{r(o)},[r,o]),x.useEffect(()=>{d&&j.error("Error",{description:"Oops, we have an error fetching attendees"})},[d]);const p=x.useMemo(()=>m?.context.ledgerLock,[m]);return e.jsxs(e.Fragment,{children:[e.jsx(y,{name:"date",control:n,rules:{min:p?{value:p,message:`Date must be after ${p}`}:void 0,pattern:{value:W,message:"Date must be im format yyyy-mm-dd"}},render:({field:h,fieldState:l})=>e.jsx(q,{"data-autofocus":!0,...h,onChange:c=>{const u=c?typeof c=="string"?c:F(c,"yyyy-MM-dd"):void 0;u!==h.value&&h.onChange(u)},value:h.value?new Date(h.value):void 0,error:l.error?.message,label:"Date",popoverProps:{withinPortal:!0}})}),e.jsx(y,{name:"valueDate",control:n,rules:{pattern:{value:W,message:"Date must be im format yyyy-mm-dd"},min:p?{value:p,message:`Date must be after ${p}`}:void 0},render:({field:h,fieldState:l})=>e.jsx(q,{...h,onChange:c=>{const u=c?typeof c=="string"?c:F(c,"yyyy-MM-dd"):void 0;u!==h.value&&h.onChange(u)},value:h.value?new Date(h.value):void 0,error:l.error?.message,label:"Value Date",popoverProps:{withinPortal:!0}})}),e.jsx(y,{name:"amount",control:n,render:({field:h,fieldState:l})=>e.jsx(y,{name:"currency",control:n,defaultValue:Pe.Ils,render:({field:c,fieldState:u})=>e.jsx($e,{...h,value:h.value??void 0,error:l.error?.message||u.error?.message,label:"Amount",currencyCodeProps:{...c,label:"Currency"}})})}),e.jsx(y,{name:"employeeBusinessId",control:n,render:({field:h,fieldState:l})=>e.jsx(G,{...h,data:t,value:h.value,disabled:o,label:"Attendee",placeholder:"Scroll to see all options",maxDropdownHeight:160,searchable:!0,error:l.error?.message,withinPortal:!0})})]})}function Ae(i){const{businessTripId:n,onAdd:r}=i,[t,{close:s,open:a}]=U(!1);return e.jsxs(e.Fragment,{children:[e.jsx(w,{label:"Add Accommodations Expense",children:e.jsx(b,{variant:"outline",size:"icon",className:"size-7.5",onClick:o=>{o.stopPropagation(),a()},children:e.jsx(Y,{className:"size-5"})})}),t&&e.jsx(Dt,{businessTripId:n,opened:t,close:s,onAdd:r})]})}function Dt({businessTripId:i,opened:n,close:r,onAdd:t}){const s=S({defaultValues:{businessTripId:i}}),{control:a,handleSubmit:o}=s,[d,m]=x.useState(!1),{addBusinessTripAccommodationsExpense:p,fetching:h}=wt(),l=c=>{p({fields:c}).then(()=>{t?.(),r()})};return e.jsxs(C,{opened:n,onClose:r,centered:!0,lockScroll:!0,children:[e.jsx(C.Title,{children:"Add Accommodation Expense"}),e.jsx(C.Body,{children:e.jsx(I,{...s,children:e.jsxs("form",{onSubmit:o(l),className:"space-y-3",children:[e.jsx(ce,{businessTripId:i,control:a,setFetching:m}),e.jsx(M,{control:a,name:"country",render:({field:c})=>e.jsxs(z,{children:[e.jsx(Q,{children:"Country"}),e.jsx(P,{children:e.jsx(J,{...c,value:c.value??void 0})}),e.jsx(R,{})]})}),e.jsx(M,{name:"nightsCount",control:a,render:({field:c})=>e.jsxs(z,{children:[e.jsx(Q,{children:"Nights Count"}),e.jsx(P,{children:e.jsx(Oe,{...c,value:c.value??void 0,hideControls:!0,decimalScale:0,thousandSeparator:","})}),e.jsx(R,{})]})}),e.jsx(Ge,{formManager:s,attendeesStayPath:"attendeesStay",businessTripId:i}),e.jsx("div",{className:"flex justify-center mt-5 gap-3",children:e.jsx("button",{type:"submit",className:"text-white bg-indigo-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-indigo-600 rounded-sm text-lg",children:"Add"})})]})})}),(h||d)&&e.jsx(K,{blur:1,center:!0,children:e.jsx(X,{})})]})}const Bt="updateBusinessTripAccommodationsExpense",Nt=()=>{const[{fetching:i},n]=B(os),r=x.useCallback(async t=>{const s="Error updating business trip accommodations expense",a=Bt;j.loading("Updating trip accommodations expense",{id:a});try{const o=await n(t),d=N(o,s,a);if(d)return j.success("Success",{id:a,description:"Business trip accommodations expense was updated"}),d.updateBusinessTripAccommodationsExpense}catch(o){console.error(`${s}: ${o}`),j.error("Error",{id:a,description:s,duration:1e5,closeButton:!0})}},[n]);return{fetching:i,updateBusinessTripAccommodationsExpense:r}},It="categorizeIntoExistingBusinessTripExpense",St=()=>{const[{fetching:i},n]=B(cs),r=x.useCallback(async t=>{const s="Error updating business trip expense category",a=It;j.loading("Updating business trip expense category",{id:a});try{const o=await n(t),d=N(o,s,a);if(d)return j.success("Success",{id:a,description:"Business trip expense category was updated"}),d.categorizeIntoExistingBusinessTripExpense}catch(o){console.error(`${s}: ${o}`),j.error("Error",{id:a,description:s,duration:1e5,closeButton:!0})}},[n]);return{fetching:i,categorizeIntoExistingBusinessTripExpense:r}};function de(i){const{businessTripExpenseId:n,businessTripId:r,onChange:t}=i,[s,{close:a,open:o}]=U(!1);return e.jsxs(e.Fragment,{children:[e.jsx(w,{label:"Attach Uncategorized Transaction",children:e.jsx(b,{variant:"outline",size:"icon",className:"size-7.5",onClick:d=>{d.stopPropagation(),o()},children:e.jsx(Y,{className:"size-5"})})}),s&&e.jsx(Ft,{businessTripExpenseId:n,businessTripId:r,opened:s,close:a,onChange:t})]})}function Ft({businessTripExpenseId:i,businessTripId:n,opened:r,close:t,onChange:s}){const{control:a,handleSubmit:o,setValue:d}=S({defaultValues:{businessTripExpenseId:i}}),[m,p]=x.useState([]),[{data:h,fetching:l,error:c}]=re({query:ds,variables:{businessTripId:n}}),{categorizeIntoExistingBusinessTripExpense:u,fetching:g}=St(),f=E=>{u({fields:E}).then(()=>{s?.(),t()})};return x.useEffect(()=>{if(h?.businessTrip?.uncategorizedTransactions.length){const E=h.businessTrip.uncategorizedTransactions.filter(v=>v?.transaction);p(E.map(({transaction:v})=>({eventDate:v.eventDate,sourceDescription:v.sourceDescription,referenceKey:v.referenceKey,counterparty:v.counterparty?.name,amount:v.amount.formatted,rawAmount:v.amount.raw,value:v.id,label:`${v.eventDate} | ${v.counterparty?.name} | ${v.amount.formatted}`})).sort((v,$)=>v.eventDate.localeCompare($.eventDate)))}},[h,p]),x.useEffect(()=>{c&&j.error("Error",{description:"Oops, we have an error fetching transactions to categorize"})},[c]),e.jsxs(C,{opened:r,onClose:t,centered:!0,children:[e.jsx(C.Title,{children:"Set Transaction Category"}),e.jsx(C.Body,{children:e.jsxs("form",{onSubmit:o(f),className:"flex flex-col gap-3 mt-3",children:[e.jsx(y,{name:"transactionId",control:a,render:({field:E,fieldState:v})=>e.jsx(G,{...E,itemComponent:Mt,data:m??[],disabled:l,label:"Transactions",placeholder:"Scroll to see all options",maxDropdownHeight:160,error:v.error?.message,withAsterisk:!0,withinPortal:!0,onChange:$=>{const H=m.find(_=>_.value===$);H?.rawAmount&&d("amount",H.rawAmount),E.onChange($)}})}),e.jsx(y,{name:"amount",control:a,render:({field:E,fieldState:v})=>e.jsx(oe,{...E,value:E.value??void 0,hideControls:!0,precision:2,removeTrailingZeros:!0,error:v.error?.message,label:"Amount"})}),e.jsx("div",{className:"flex justify-center gap-3",children:e.jsx("button",{type:"submit",className:"text-white bg-indigo-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-indigo-600 rounded-sm text-lg",children:"Confirm"})})]})}),g&&e.jsx(K,{blur:1,center:!0,children:e.jsx(X,{})})]})}const Mt=x.forwardRef(({eventDate:i,sourceDescription:n,referenceKey:r,counterparty:t,amount:s,...a},o)=>e.jsx("div",{ref:o,...a,children:e.jsxs(ne,{children:[e.jsx(ne.Col,{span:4,children:i}),e.jsx(ne.Col,{span:4,children:e.jsx(D,{size:"sm",children:t})}),e.jsx(ne.Col,{span:4,children:e.jsx(D,{size:"sm",children:s})}),e.jsx(ne.Col,{span:8,children:e.jsx(D,{size:"xs",opacity:.65,children:n})}),e.jsxs(ne.Col,{span:4,children:["Reference: ",r]})]})})),zt="deleteBusinessTripExpense",Pt=()=>{const[{fetching:i},n]=B(ls),r=x.useCallback(async t=>{const s="Error deleting business trip expense",a=`${zt}-${t.businessTripExpenseId}`;j.loading("Deleting trip expense",{id:a});try{const o=await n(t),d=N(o,s,a);if(d)return j.success("Success",{id:a,description:"Business trip expense was deleted"}),d.deleteBusinessTripExpense}catch(o){console.error(`${s}: ${o}`),j.error("Error",{id:a,description:s,duration:1e5,closeButton:!0})}},[n]);return{fetching:i,deleteBusinessTripExpense:r}};function le(i){const{fetching:n,deleteBusinessTripExpense:r}=Pt(),t=x.useCallback(()=>{r({businessTripExpenseId:i.businessTripExpenseId}).then(()=>{i.onDelete?.()})},[i,r]);return e.jsx(ke,{onConfirm:t,title:"Are you sure you want to remove expense?",children:e.jsx(w,{label:"Remove Expense",children:e.jsx(b,{variant:"outline",size:"icon",className:"size-7.5 text-red-500",disabled:n,children:e.jsx(Re,{className:"size-5"})})})})}const ue=({data:i,isEditMode:n=!1,control:r,businessTripId:t})=>{const s=A(us,i),[a,o]=x.useState([]),[{data:d,fetching:m,error:p}]=re({query:je,variables:{businessTripId:t}});x.useEffect(()=>{d?.businessTrip?.attendees.length&&o(d.businessTrip.attendees.map(l=>({value:l.id,label:l.name})).sort((l,c)=>l.label>c.label?1:-1))},[d,o]),x.useEffect(()=>{p&&j.error("Error",{description:"Oops, we have an error fetching attendees"})},[p]);const h=Array.from(new Set(s.charges?.map(l=>l.id)));return e.jsxs(e.Fragment,{children:[e.jsx("td",{children:e.jsx("div",{className:"flex flex-col gap-2 justify-center",children:n&&s.payedByEmployee?e.jsxs(e.Fragment,{children:[e.jsx(y,{name:"date",control:r,defaultValue:s.date,rules:{pattern:{value:W,message:"Date must be im format yyyy-mm-dd"}},render:({field:l,fieldState:c})=>e.jsx(q,{...l,form:`form ${s.id}`,"data-autofocus":!0,onChange:u=>{const g=u?typeof u=="string"?u:F(u,"yyyy-MM-dd"):void 0;g!==l.value&&l.onChange(g)},value:l.value?new Date(l.value):void 0,label:"Date",error:c.error?.message,popoverProps:{withinPortal:!0}})}),e.jsx(y,{name:"valueDate",control:r,defaultValue:s.valueDate,rules:{pattern:{value:W,message:"Date must be im format yyyy-mm-dd"}},render:({field:l,fieldState:c})=>e.jsx(q,{...l,form:`form ${s.id}`,onChange:u=>{const g=u?typeof u=="string"?u:F(u,"yyyy-MM-dd"):void 0;g!==l.value&&l.onChange(g)},value:l.value?new Date(l.value):void 0,label:"Value Date",error:c.error?.message,popoverProps:{withinPortal:!0}})})]}):e.jsxs(e.Fragment,{children:[s.date&&F(new Date(s.date),"dd/MM/yy"),e.jsx(D,{fz:"sm",c:"dimmed",children:s.valueDate&&F(new Date(s.valueDate),"dd/MM/yy")})]})})}),e.jsx("td",{children:n&&s.payedByEmployee?e.jsx(y,{name:"amount",control:r,defaultValue:s.amount?.raw??void 0,render:({field:l,fieldState:c})=>e.jsx(y,{name:"currency",control:r,defaultValue:s.amount?.currency??Pe.Ils,render:({field:u,fieldState:g})=>e.jsx($e,{form:`form ${s.id}`,...l,value:l.value??void 0,error:c.error?.message||g.error?.message,label:"Amount",currencyCodeProps:{...u,label:"Currency",form:`form ${s.id}`}})})}):e.jsx("div",{children:s.amount?.formatted})}),e.jsx("td",{children:e.jsx("div",{className:"flex flex-col gap-2 justify-center",children:n&&s.payedByEmployee?e.jsx(y,{name:"employeeBusinessId",control:r,defaultValue:s.employee?.id,render:({field:l,fieldState:c})=>e.jsx(G,{form:`form ${s.id}`,...l,data:a,value:l.value,disabled:m,label:"Attendee",placeholder:"Scroll to see all options",maxDropdownHeight:160,searchable:!0,error:c.error?.message,withinPortal:!0})}):e.jsx("div",{className:"flex flex-row gap-2 items-center",children:s.payedByEmployee&&e.jsx(D,{c:s.employee?.name?void 0:"red",children:s.employee?.name??"Missing"})})})}),e.jsx("td",{children:e.jsx("div",{className:"flex flex-col gap-2",children:h.map(l=>e.jsx(Ce,{to:He(l),target:"_blank",rel:"noreferrer",onClick:c=>c.stopPropagation(),className:"inline-flex items-center font-semibold",children:"To Charge"},l))})})]})},he=()=>e.jsxs(e.Fragment,{children:[e.jsx("th",{children:"Date"}),e.jsx("th",{children:"Amount"}),e.jsx("th",{children:"Payed By Attendee"}),e.jsx("th",{children:"Charges"})]}),$t=({data:i,businessTripId:n,onChange:r})=>{const t=A(hs,i),[s,a]=x.useState(!1),o=S({defaultValues:{id:t.id,businessTripId:n,attendeesStay:t.attendeesStay.map(c=>({attendeeId:c.id,nightsCount:c.nightsCount}))}}),{control:d,handleSubmit:m}=o,{updateBusinessTripAccommodationsExpense:p,fetching:h}=Nt(),l=c=>{p({fields:c}).then(()=>{r?.(),a(!1)})};return e.jsxs("tr",{children:[e.jsx(ue,{data:t,isEditMode:s,control:d,businessTripId:n}),e.jsx("td",{children:e.jsx(I,{...o,children:e.jsx("form",{id:`form ${t.id}`,onSubmit:m(l),children:s?e.jsx(M,{name:"country",control:d,defaultValue:t.country,render:({field:c})=>e.jsxs(z,{children:[e.jsx(P,{children:e.jsx(J,{form:`form ${t.id}`,...c,value:c.value??void 0})}),e.jsx(R,{})]})}):e.jsx(D,{c:t.country?void 0:"red",children:t.country??"Missing"})})})}),e.jsx("td",{children:e.jsx("div",{className:"flex flex-col gap-2 justify-center",children:s?e.jsx(I,{...o,children:e.jsx(M,{name:"nightsCount",control:d,defaultValue:t.nightsCount,render:({field:c})=>e.jsxs(z,{children:[e.jsx(P,{children:e.jsx(Oe,{...c,value:c.value??void 0,form:`form ${t.id}`,hideControls:!0,decimalScale:0,thousandSeparator:","})}),e.jsx(R,{})]})})}):e.jsx(D,{c:t.nightsCount?void 0:"red",children:t.nightsCount??"Missing"})})}),e.jsx("td",{children:s?e.jsx(I,{...o,children:e.jsx(Ge,{formManager:o,attendeesStayPath:"attendeesStay",businessTripId:n})}):e.jsx(me,{listStyleType:"disc",children:t.attendeesStay?.length?t.attendeesStay.map(c=>e.jsxs(me.Item,{children:[c.attendee.name," (",c.nightsCount,")"]},c.id)):e.jsx(D,{c:"red",fz:"sm",children:"Missing"})})}),e.jsx("td",{children:r&&e.jsxs(e.Fragment,{children:[e.jsx(w,{label:"Edit",children:e.jsx(b,{disabled:h,variant:s?"default":"outline",size:"icon",className:"size-7.5",onClick:c=>{c.stopPropagation(),a(u=>!u)},children:e.jsx(ee,{className:"size-5"})})}),s&&e.jsx(w,{label:"Confirm Changes",children:e.jsx(b,{type:"submit",form:`form ${t.id}`,variant:"outline",size:"icon",className:"size-7.5 text-green-500",children:e.jsx(se,{className:"size-5"})})}),e.jsx(de,{businessTripExpenseId:t.id,businessTripId:n,onChange:r}),e.jsx(le,{businessTripExpenseId:t.id,onDelete:r})]})})]},t.id)},Ye=({businessTripId:i,expenses:n,onChange:r})=>{if(!n?.length)return r?e.jsx(Ae,{businessTripId:i,onAdd:r}):e.jsx(e.Fragment,{});const t=n.map(s=>A(xs,s));return e.jsx("div",{className:"flex flex-col gap-2 mt-5",children:e.jsxs(te,{highlightOnHover:!0,withBorder:!0,children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx(he,{}),e.jsx("th",{children:"Location"}),e.jsx("th",{children:"Nights"}),e.jsx("th",{children:"Attendees Stay"}),e.jsx("th",{})]})}),e.jsxs("tbody",{children:[t.sort((s,a)=>s.date&&a.date?s.date<a.date?1:-1:s.date?-1:a.date?1:0).map(s=>e.jsx($t,{data:s,businessTripId:i,onChange:r},s.id)),r&&e.jsx("tr",{children:e.jsx("td",{colSpan:6,children:e.jsx(Ae,{businessTripId:i,onAdd:r})})})]})]})})},Ot=({data:i,onChange:n})=>{const{accommodationExpenses:r,id:t}=A(ps,i);return e.jsx(Ye,{businessTripId:t,expenses:r,onChange:n})},kt="insertBusinessTripAttendee",Rt=()=>{const[{fetching:i},n]=B(ms),r=x.useCallback(async t=>{const s="Error adding attendee to business trip",a=kt;j.loading("Adding attendee",{id:a});try{const o=await n(t),d=N(o,s,a);if(d)return j.success("Success",{id:a,description:"Attendee was added to the business trip"}),d.insertBusinessTripAttendee}catch(o){console.error(`${s}: ${o}`),j.error("Error",{id:a,description:s,duration:1e5,closeButton:!0})}},[n]);return{fetching:i,insertBusinessTripAttendee:r}};function we(i){const{businessTripId:n,onAdd:r}=i,[t,{close:s,open:a}]=U(!1);return e.jsxs(e.Fragment,{children:[e.jsx(w,{label:"Add Attendee",children:e.jsx(b,{variant:"outline",size:"icon",onClick:o=>{o.stopPropagation(),a()},className:"size-7.5",children:e.jsx(Y,{className:"size-5"})})}),t&&e.jsx(Ht,{businessTripId:n,opened:t,close:s,onAdd:r})]})}function Ht({businessTripId:i,opened:n,close:r,onAdd:t}){const{selectableBusinesses:s,fetching:a}=_e(),{control:o,handleSubmit:d}=S({defaultValues:{businessTripId:i}}),{insertBusinessTripAttendee:m,fetching:p}=Rt(),h=l=>{m({fields:l}).then(()=>{t?.(),r()})};return e.jsxs(C,{opened:n,onClose:r,centered:!0,children:[e.jsx(C.Title,{children:"Add Attendee"}),e.jsx(C.Body,{children:e.jsxs("form",{onSubmit:d(h),children:[e.jsx(y,{name:"attendeeId",control:o,render:({field:l,fieldState:c})=>e.jsx(G,{"data-autofocus":!0,...l,data:s,value:l.value,disabled:a,label:"Attendee",placeholder:"Scroll to see all options",maxDropdownHeight:160,searchable:!0,error:c.error?.message,withAsterisk:!0,withinPortal:!0})}),e.jsx(y,{name:"arrivalDate",control:o,rules:{pattern:{value:W,message:"Date must be im format yyyy-mm-dd"}},render:({field:l,fieldState:c})=>e.jsx(q,{...l,onChange:u=>{const g=u?typeof u=="string"?u:F(u,"yyyy-MM-dd"):void 0;g!==l.value&&l.onChange(g)},value:l.value?new Date(l.value):void 0,error:c.error?.message,label:"Arrival",popoverProps:{withinPortal:!0}})}),e.jsx(y,{name:"departureDate",control:o,rules:{pattern:{value:W,message:"Date must be im format yyyy-mm-dd"}},render:({field:l,fieldState:c})=>e.jsx(q,{...l,onChange:u=>{const g=u?typeof u=="string"?u:F(u,"yyyy-MM-dd"):void 0;g!==l.value&&l.onChange(g)},value:l.value?new Date(l.value):void 0,error:c.error?.message,label:"Departure",popoverProps:{withinPortal:!0}})}),e.jsx("div",{className:"flex justify-center mt-5 gap-3",children:e.jsx("button",{type:"submit",className:"text-white bg-indigo-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-indigo-600 rounded-sm text-lg",children:"Add"})})]})}),(p||a)&&e.jsx(K,{blur:1,center:!0,children:e.jsx(X,{})})]})}const _t="updateBusinessTripAttendee",Vt=()=>{const[{fetching:i},n]=B(gs),r=x.useCallback(async t=>{const s="Error updating business trip attendee",a=_t;j.loading("Updating trip attendee",{id:a});try{const o=await n(t),d=N(o,s,a);if(d)return j.success("Success",{id:a,description:"Business trip attendee was updated"}),d.updateBusinessTripAttendee}catch(o){console.error(`${s}: ${o}`),j.error("Error",{id:a,description:s,duration:1e5,closeButton:!0})}},[n]);return{fetching:i,updateBusinessTripAttendee:r}},Ut="deleteBusinessTripAttendee",Lt=()=>{const[{fetching:i},n]=B(js),r=x.useCallback(async t=>{const s="Error removing business trip attendee",a=Ut;j.loading("Removing business trip attendee",{id:a});try{const o=await n(t),d=N(o,s,a);if(d)return j.success("Success",{id:a,description:"Business trip attendee was removed"}),d.deleteBusinessTripAttendee}catch(o){console.error(`${s}: ${o}`),j.error("Error",{id:a,description:s,duration:1e5,closeButton:!0})}},[n]);return{fetching:i,deleteBusinessTripAttendee:r}};function Wt(i){const{fetching:n,deleteBusinessTripAttendee:r}=Lt(),t=x.useCallback(()=>{r({fields:{businessTripId:i.businessTripId,attendeeId:i.attendeeId}}).then(()=>{i.onDelete?.()})},[i,r]);return e.jsx(ke,{onConfirm:t,title:"Are you sure you want to remove attendee?",children:e.jsx(w,{label:"Remove Attendee",children:e.jsx(b,{variant:"outline",size:"icon",className:"size-7.5 text-red-500",disabled:n,children:e.jsx(Re,{className:"size-5"})})})})}const qt="addBusinessTripFlightsExpense",Gt=()=>{const[{fetching:i},n]=B(fs),r=x.useCallback(async t=>{const s="Error adding business trip flight expense",a=qt;j.loading("Adding business trip flight expense",{id:a});try{const o=await n(t),d=N(o,s,a);if(d)return j.success("Success",{id:a,description:"Business trip flight expense added"}),d.addBusinessTripFlightsExpense}catch(o){console.error(`${s}: ${o}`),j.error("Error",{id:a,description:s,duration:1e5,closeButton:!0})}},[n]);return{fetching:i,addBusinessTripFlightsExpense:r}};function Ke({formManager:i,flightPathPath:n,flightPathData:r}){const{control:t,watch:s,trigger:a}=i,{fields:o,append:d,remove:m}=Fe({control:t,name:n}),p=s(n),h=o.map((l,c)=>({...l,...p[c]}));return r?e.jsxs("div",{children:[e.jsx("span",{className:"mantine-InputWrapper-label mantine-Select-label",children:"Flight Path"}),e.jsxs("div",{className:"h-full flex flex-col overflow-hidden",children:[h?.map((l,c)=>e.jsxs("div",{className:"flex items-end gap-2 text-gray-600 mb-2",children:[e.jsx("div",{className:"w-full mt-1 relative rounded-md shadow-xs",children:e.jsx(M,{name:`${n}.${c}`,control:t,rules:{required:"Required"},render:({field:u})=>e.jsxs(z,{children:[e.jsx(P,{children:e.jsx(J,{...u,value:u.value??void 0,placeholder:"Destination"})}),e.jsx(R,{})]})})}),e.jsx(b,{variant:"ghost",size:"icon",className:"mb-2 size-7.5",onClick:()=>{m(c),a(n)},children:e.jsx(Me,{className:"size-5"})})]},l.id)),e.jsx(b,{variant:"ghost",size:"icon",className:"size-7.5",onClick:()=>{d(""),a(n)},children:e.jsx(ze,{className:"size-5"})})]})]}):e.jsx("div",{children:"Cannot edit flight path stay, lacking some mandatory information!"})}function De(i){const{businessTripId:n,onAdd:r}=i,[t,{close:s,open:a}]=U(!1);return e.jsxs(e.Fragment,{children:[e.jsx(w,{label:"Add Flight Expense",children:e.jsx(b,{variant:"outline",size:"icon",className:"size-7.5",onClick:o=>{o.stopPropagation(),a()},children:e.jsx(Y,{className:"size-5"})})}),t&&e.jsx(Kt,{businessTripId:n,opened:t,close:s,onAdd:r})]})}const Yt=Object.entries(Ue).map(([i,n])=>({value:n,label:i}));function Kt({businessTripId:i,opened:n,close:r,onAdd:t}){const s=S({defaultValues:{businessTripId:i}}),{control:a,handleSubmit:o}=s,[d,m]=x.useState(!1),[{data:p,fetching:h}]=re({query:je,variables:{businessTripId:i}}),{addBusinessTripFlightsExpense:l,fetching:c}=Gt(),u=f=>{l({fields:f}).then(()=>{t?.(),r()})},g=p?.businessTrip?.attendees.map(f=>({value:f.id,label:f.name}))??[];return e.jsxs(C,{opened:n,onClose:r,centered:!0,lockScroll:!0,children:[e.jsx(C.Title,{children:"Add Flight Expense"}),e.jsx(C.Body,{children:e.jsx(I,{...s,children:e.jsxs("form",{onSubmit:o(u),children:[e.jsx(ce,{businessTripId:i,control:a,setFetching:m}),e.jsx(Ke,{formManager:s,flightPathPath:"path"}),e.jsx(y,{name:"flightClass",control:a,render:({field:f,fieldState:E})=>e.jsx(G,{...f,data:Yt,value:f.value,label:"Flight Class",placeholder:"Scroll to see all options",maxDropdownHeight:160,searchable:!0,error:E.error?.message,withinPortal:!0})}),e.jsx(y,{name:"attendeeIds",control:a,render:({field:f,fieldState:E})=>e.jsx(Ve,{...f,disabled:h,data:g,value:f.value??[],label:"Attendees",placeholder:"Scroll to see all options",maxDropdownHeight:160,searchable:!0,error:E.error?.message,withinPortal:!0})}),e.jsx("div",{className:"flex justify-center mt-5 gap-3",children:e.jsx("button",{type:"submit",className:"text-white bg-indigo-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-indigo-600 rounded-sm text-lg",children:"Add"})})]})})}),(c||d)&&e.jsx(K,{blur:1,center:!0,children:e.jsx(X,{})})]})}const Xt="updateBusinessTripFlightsExpense",Zt=()=>{const[{fetching:i},n]=B(vs),r=x.useCallback(async t=>{const s="Error updating business trip flights expense",a=Xt;j.loading("Updating trip flights expense",{id:a});try{const o=await n(t),d=N(o,s,a);if(d)return j.success("Success",{id:a,description:"Business trip flights expense was updated"}),d.updateBusinessTripFlightsExpense}catch(o){console.error(`${s}: ${o}`),j.error("Error",{id:a,description:s,duration:1e5,closeButton:!0})}},[n]);return{fetching:i,updateBusinessTripFlightsExpense:r}},Qt=Object.entries(Ue).map(([i,n])=>({value:n,label:i})),Jt=({data:i,businessTripId:n,onChange:r,attendees:t})=>{const s=A(bs,i),[a,o]=x.useState(!1),d=S({defaultValues:{id:s.id,businessTripId:n,attendeeIds:s.attendees?.map(g=>g.id)??[],path:s.path??[]}}),{control:m,handleSubmit:p}=d,{updateBusinessTripFlightsExpense:h,fetching:l}=Zt(),c=g=>{h({fields:g}).then(()=>{r?.(),o(!1)})},u=t.map(g=>({value:g.id,label:g.name}));return e.jsxs("tr",{children:[e.jsx(ue,{data:s,isEditMode:a,control:m,businessTripId:n}),e.jsx("td",{children:e.jsx(I,{...d,children:e.jsx("form",{id:`form ${s.id}`,onSubmit:p(c),children:e.jsxs("div",{className:"flex flex-col gap-2 justify-center",children:[a?e.jsx(Ke,{formManager:d,flightPathPath:"path",flightPathData:s.path??void 0}):e.jsx("div",{className:"flex gap-2 items-center",children:s.path?.length?s.path.map((g,f)=>e.jsxs(e.Fragment,{children:[e.jsx(D,{fw:700,children:g},f),f<s.path.length-1&&(g===s.path[f+1]?" | ":" → ")]})):e.jsx(D,{fw:700,className:"flex gap-2 items-center",c:"red",children:"Missing"})}),a?e.jsx(y,{name:"flightClass",control:m,defaultValue:s.class??void 0,render:({field:g,fieldState:f})=>e.jsx(G,{form:`form ${s.id}`,"data-autofocus":!0,...g,data:Qt,value:g.value,label:"Flight Class",placeholder:"Scroll to see all options",maxDropdownHeight:160,searchable:!0,error:f.error?.message,withinPortal:!0})}):e.jsx(D,{c:s.class?void 0:"red",fz:"sm",children:`Class: ${s.class??"Missing"}`})]})})})}),e.jsx("td",{children:a?e.jsx(y,{name:"attendeeIds",control:m,defaultValue:s.attendees?.map(g=>g.id)??void 0,render:({field:g,fieldState:f})=>e.jsx(Ve,{...g,form:`form ${s.id}`,data:u,value:g.value??[],label:"Attendees",placeholder:"Scroll to see all options",maxDropdownHeight:160,searchable:!0,error:f.error?.message,withinPortal:!0})}):e.jsx(me,{listStyleType:"disc",children:s.attendees?.length?s.attendees.map(g=>e.jsx(me.Item,{children:g.name},g.id)):e.jsx(D,{c:"red",fz:"sm",children:"Missing"})})}),e.jsx("td",{children:r&&e.jsxs(e.Fragment,{children:[e.jsx(w,{label:"Edit",children:e.jsx(b,{disabled:l,variant:a?"default":"outline",size:"icon",className:"size-7.5",onClick:g=>{g.stopPropagation(),o(f=>!f)},children:e.jsx(ee,{className:"size-5"})})}),a&&e.jsx(w,{label:"Confirm Changes",children:e.jsx(b,{type:"submit",form:`form ${s.id}`,variant:"outline",size:"icon",className:"size-7.5 text-green-500",children:e.jsx(se,{className:"size-5"})})}),e.jsx(de,{businessTripExpenseId:s.id,businessTripId:n,onChange:r}),e.jsx(le,{businessTripExpenseId:s.id,onDelete:r})]})})]},s.id)},Xe=({businessTripId:i,expenses:n,attendees:r,onChange:t})=>{if(!n?.length)return t?e.jsx(De,{businessTripId:i,onAdd:t}):e.jsx(e.Fragment,{});const s=n.map(a=>A(ys,a));return e.jsx("div",{className:"flex flex-col gap-2 mt-5",children:e.jsxs(te,{highlightOnHover:!0,withBorder:!0,children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx(he,{}),e.jsx("th",{children:"Flight"}),e.jsx("th",{children:"Attendees"}),e.jsx("th",{})]})}),e.jsxs("tbody",{children:[s.sort((a,o)=>a.date&&o.date?a.date<o.date?1:-1:a.date?-1:o.date?1:0).map(a=>e.jsx(Jt,{data:a,businessTripId:i,onChange:t,attendees:r},a.id)),t&&e.jsx("tr",{children:e.jsx("td",{colSpan:5,children:e.jsx(De,{businessTripId:i,onAdd:t})})})]})]})})},en=({data:i,businessTripId:n,onChange:r})=>{const t=A(Cs,i),[s,a]=x.useState(!1),[o,d]=x.useState(!1),{control:m,handleSubmit:p}=S({defaultValues:{businessTripId:n,attendeeId:t.id,arrivalDate:t.arrivalDate,departureDate:t.departureDate}}),{updateBusinessTripAttendee:h,fetching:l}=Vt(),c=u=>{h({fields:u}).then(()=>{r?.(),a(!1)})};return e.jsxs(e.Fragment,{children:[e.jsxs("tr",{children:[e.jsx("td",{children:t.name}),e.jsx("td",{children:s?e.jsx("form",{id:`form ${t.id}`,onSubmit:p(c),children:e.jsx(y,{name:"arrivalDate",control:m,defaultValue:t.arrivalDate,rules:{pattern:{value:W,message:"Date must be im format yyyy-mm-dd"}},render:({field:u,fieldState:g})=>e.jsx(q,{...u,onChange:f=>{const E=f?typeof f=="string"?f:F(f,"yyyy-MM-dd"):void 0;E!==u.value&&u.onChange(E)},"data-autofocus":!0,value:u.value?new Date(u.value):void 0,error:g.error?.message,label:"Arrival",popoverProps:{withinPortal:!0}})})}):t.arrivalDate}),e.jsx("td",{children:s?e.jsx(y,{name:"departureDate",control:m,defaultValue:t.departureDate,rules:{pattern:{value:W,message:"Date must be im format yyyy-mm-dd"}},render:({field:u,fieldState:g})=>e.jsx(q,{...u,onChange:f=>{const E=f?typeof f=="string"?f:F(f,"yyyy-MM-dd"):void 0;E!==u.value&&u.onChange(E)},value:u.value?new Date(u.value):void 0,error:g.error?.message,label:"Departure",popoverProps:{withinPortal:!0}})}):t.departureDate}),e.jsxs("td",{className:"flex items-center gap-2",children:[e.jsx(w,{label:"Edit",children:e.jsx(b,{disabled:l,variant:s?"default":"outline",size:"icon",className:"size-7.5",onClick:u=>{u.stopPropagation(),a(g=>!g)},children:e.jsx(ee,{className:"size-5"})})}),s&&e.jsx(w,{label:"Confirm Changes",children:e.jsx(b,{type:"submit",form:`form ${t.id}`,variant:"outline",size:"icon",className:"size-7.5 text-green-500",children:e.jsx(se,{className:"size-5"})})}),e.jsx(Wt,{businessTripId:n,attendeeId:t.id,onDelete:r}),e.jsx(Ts,{toggleExpansion:d,isExpanded:o})]})]},t.id),o&&e.jsx("tr",{children:e.jsx("td",{colSpan:4,children:e.jsx(Le,{shadow:"sm",withBorder:!0,children:e.jsxs("div",{className:"flex flex-col gap-2",children:[t.flights&&e.jsxs(e.Fragment,{children:[e.jsx("div",{children:"Flights:"}),e.jsx(Xe,{businessTripId:n,attendees:[],expenses:t.flights})]}),t.accommodations&&e.jsxs(e.Fragment,{children:[e.jsx("div",{children:"Accommodations:"}),e.jsx(Ye,{businessTripId:n,expenses:t.accommodations})]})]})})})},`${t.id}-expension`)]})},sn=({data:i,onChange:n})=>{const{attendees:r,id:t}=A(Es,i);return r?.length?e.jsx("div",{className:"flex flex-col gap-2 mt-5",children:e.jsxs(te,{highlightOnHover:!0,withBorder:!0,children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Name"}),e.jsx("th",{children:"Arrival Date"}),e.jsx("th",{children:"Departure Date"}),e.jsx("th",{})]})}),e.jsxs("tbody",{children:[r.sort((s,a)=>s.name.toLocaleLowerCase()>a.name.toLocaleLowerCase()?1:-1).map(s=>e.jsx(en,{data:s,businessTripId:t,onChange:n},s.id)),e.jsx("tr",{children:e.jsx("td",{colSpan:4,children:e.jsx(we,{businessTripId:t,onAdd:n})})})]})]})}):e.jsx(we,{businessTripId:t,onAdd:n})},pe="addBusinessTripCarRentalExpense",tn=()=>{const[{fetching:i},n]=B(As),r=x.useCallback(async t=>{const s="Error adding business trip car rental expense";j.loading("Adding car rental expense...",{id:pe});try{const a=await n(t),o=N(a,s,pe);if(o)return j.success("Success",{id:pe,description:"Car rental expense added"}),o.addBusinessTripCarRentalExpense}catch(a){console.error(`${s}: ${a}`),j.error("Error",{id:pe,description:s,duration:1e5,closeButton:!0})}},[n]);return{fetching:i,addBusinessTripCarRentalExpense:r}};function Be(i){const{businessTripId:n,onAdd:r}=i,[t,{close:s,open:a}]=U(!1);return e.jsxs(e.Fragment,{children:[e.jsx(w,{label:"Add Car Rental Expense",children:e.jsx(b,{variant:"outline",size:"icon",onClick:o=>{o.stopPropagation(),a()},className:"size-7.5",children:e.jsx(Y,{className:"size-5"})})}),t&&e.jsx(nn,{businessTripId:n,opened:t,close:s,onAdd:r})]})}function nn({businessTripId:i,opened:n,close:r,onAdd:t}){const s=S({defaultValues:{businessTripId:i}}),{control:a,handleSubmit:o}=s,[d,m]=x.useState(!1),{addBusinessTripCarRentalExpense:p,fetching:h}=tn(),l=c=>{p({fields:c}).then(()=>{t?.(),r()})};return e.jsxs(C,{opened:n,onClose:r,centered:!0,lockScroll:!0,children:[e.jsx(C.Title,{children:"Add Car Rental Expense"}),e.jsx(C.Body,{children:e.jsx(I,{...s,children:e.jsxs("form",{onSubmit:o(l),children:[e.jsx(ce,{businessTripId:i,control:a,setFetching:m}),e.jsx(y,{name:"days",control:a,render:({field:c,fieldState:u})=>e.jsx(oe,{...c,value:c.value??void 0,hideControls:!0,precision:2,removeTrailingZeros:!0,error:u.error?.message,label:"Rent Days"})}),e.jsx(M,{name:"isFuelExpense",control:a,render:({field:{value:c,...u}})=>e.jsxs(z,{className:"flex flex-row items-center justify-between rounded-lg border p-3 shadow-sm",children:[e.jsx("div",{className:"space-y-0.5",children:e.jsx(Q,{children:"Is Fuel Expense"})}),e.jsx(P,{children:e.jsx(fe,{...u,checked:c===!0,onCheckedChange:u.onChange})}),e.jsx(R,{})]})}),e.jsx("div",{className:"flex justify-center mt-5 gap-3",children:e.jsx("button",{type:"submit",className:"text-white bg-indigo-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-indigo-600 rounded-sm text-lg",children:"Add"})})]})})}),(h||d)&&e.jsx(K,{blur:1,center:!0,children:e.jsx(X,{})})]})}const rn="updateBusinessTripCarRentalExpense",an=()=>{const[{fetching:i},n]=B(ws),r=x.useCallback(async t=>{const s="Error updating business trip car rental expense",a=rn;j.loading("Updating trip car rental expense",{id:a});try{const o=await n(t),d=N(o,s,a);if(d)return j.success("Success",{id:a,description:"Business trip car rental expense was updated"}),d.updateBusinessTripCarRentalExpense}catch(o){console.error(`${s}: ${o}`),j.error("Error",{id:a,description:s,duration:1e5,closeButton:!0})}},[n]);return{fetching:i,updateBusinessTripCarRentalExpense:r}},on=({data:i,businessTripId:n,onChange:r})=>{const t=A(Ds,i),[s,a]=x.useState(!1),o=S({defaultValues:{id:t.id,businessTripId:n}}),{control:d,handleSubmit:m}=o,{updateBusinessTripCarRentalExpense:p,fetching:h}=an(),l=c=>{p({fields:c}).then(()=>{r?.(),a(!1)})};return e.jsxs("tr",{children:[e.jsx(ue,{data:t,isEditMode:s,control:d,businessTripId:n}),e.jsx("td",{children:e.jsx(I,{...o,children:e.jsx("form",{id:`form ${t.id}`,onSubmit:m(l),children:e.jsx("div",{className:"flex flex-col gap-2 justify-center",children:t.isFuelExpense!==!0&&(s?e.jsx(y,{name:"days",control:d,defaultValue:t.days,render:({field:c,fieldState:u})=>e.jsx(oe,{...c,value:c.value??void 0,form:`form ${t.id}`,hideControls:!0,precision:2,removeTrailingZeros:!0,error:u.error?.message,placeholder:"Rent Days"})}):e.jsx(D,{c:t.days?void 0:"red",children:t.days??"Missing"}))})})})}),e.jsx("td",{children:s?e.jsx(I,{...o,children:e.jsx(M,{name:"isFuelExpense",control:d,defaultValue:t.isFuelExpense,render:({field:c})=>e.jsxs(z,{className:"flex flex-row items-center justify-between rounded-lg border p-3 shadow-sm",children:[e.jsx("div",{className:"space-y-0.5",children:e.jsx(Q,{children:"Is Fuel Expense"})}),e.jsx(P,{children:e.jsx(fe,{form:`form ${t.id}`,checked:c.value===!0,onCheckedChange:c.onChange})})]})})}):t.isFuelExpense===!0?e.jsx(dt,{}):e.jsx(ot,{})}),e.jsxs("td",{children:[e.jsx(w,{label:"Edit",children:e.jsx(b,{disabled:h,variant:s?"default":"outline",size:"icon",className:"size-7.5",onClick:c=>{c.stopPropagation(),a(u=>!u)},children:e.jsx(ee,{className:"size-5"})})}),s&&e.jsx(w,{label:"Confirm Changes",children:e.jsx(b,{type:"submit",form:`form ${t.id}`,variant:"outline",size:"icon",className:"size-7.5 text-green-500",children:e.jsx(se,{className:"size-5"})})}),e.jsx(de,{businessTripExpenseId:t.id,businessTripId:n,onChange:r}),e.jsx(le,{businessTripExpenseId:t.id,onDelete:r})]})]},t.id)},cn=({data:i,onChange:n})=>{const{carRentalExpenses:r,id:t}=A(Bs,i);return r?.length?e.jsx("div",{className:"flex flex-col gap-2 mt-5",children:e.jsxs(te,{highlightOnHover:!0,withBorder:!0,children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx(he,{}),e.jsx("th",{children:"Days"}),e.jsx("th",{children:"Type"}),e.jsx("th",{})]})}),e.jsxs("tbody",{children:[r.sort((s,a)=>s.date&&a.date?s.date<a.date?1:-1:s.date?-1:a.date?1:0).map(s=>e.jsx(on,{data:s,businessTripId:t,onChange:n},s.id)),e.jsx("tr",{children:e.jsx("td",{colSpan:6,children:e.jsx(Be,{businessTripId:t,onAdd:n})})})]})]})}):e.jsx(Be,{businessTripId:t,onAdd:n})},dn=({data:i,onChange:n})=>{const{flightExpenses:r,id:t,attendees:s}=A(Ns,i);return e.jsx(Xe,{businessTripId:t,attendees:s,expenses:r,onChange:n})},ln="addBusinessTripOtherExpense",un=()=>{const[{fetching:i},n]=B(Is),r=x.useCallback(async t=>{const s='Error adding business trip "other" expense',a=ln;j.loading('Adding trip "other" expense',{id:a});try{const o=await n(t),d=N(o,s,a);if(d)return j.success("Success",{id:a,description:'Business trip "other" expense was added'}),d.addBusinessTripOtherExpense}catch(o){console.error(`${s}: ${o}`),j.error("Error",{id:a,description:s,duration:1e5,closeButton:!0})}},[n]);return{fetching:i,addBusinessTripOtherExpense:r}};function Ne(i){const{businessTripId:n,onAdd:r}=i,[t,{close:s,open:a}]=U(!1);return e.jsxs(e.Fragment,{children:[e.jsx(w,{label:"Add Other Expense",children:e.jsx(b,{variant:"outline",size:"icon",className:"size-7.5",onClick:o=>{o.stopPropagation(),a()},children:e.jsx(Y,{className:"size-5"})})}),t&&e.jsx(hn,{businessTripId:n,opened:t,close:s,onAdd:r})]})}function hn({businessTripId:i,opened:n,close:r,onAdd:t}){const s=S({defaultValues:{businessTripId:i}}),{control:a,handleSubmit:o}=s,[d,m]=x.useState(!1),{addBusinessTripOtherExpense:p,fetching:h}=un(),l=c=>{p({fields:c}).then(()=>{t?.(),r()})};return e.jsxs(C,{opened:n,onClose:r,centered:!0,lockScroll:!0,children:[e.jsx(C.Title,{children:"Add Other Expense"}),e.jsx(C.Body,{children:e.jsx(I,{...s,children:e.jsxs("form",{onSubmit:o(l),className:"space-y-3",children:[e.jsx(ce,{businessTripId:i,control:a,setFetching:m}),e.jsx(M,{name:"description",control:a,render:({field:c})=>e.jsxs(z,{children:[e.jsx(Q,{children:"Description"}),e.jsx(P,{children:e.jsx(J,{...c,value:c.value??void 0})}),e.jsx(R,{})]})}),e.jsx(M,{control:s.control,name:"deductibleExpense",render:({field:c})=>e.jsxs(z,{className:"flex flex-row items-center justify-between rounded-lg border p-3 shadow-sm",children:[e.jsx("div",{className:"space-y-0.5",children:e.jsx(Q,{children:"Deductible Expense"})}),e.jsx(P,{children:e.jsx(fe,{checked:c.value===!0,onCheckedChange:c.onChange})})]})}),e.jsx("div",{className:"flex justify-center mt-5 gap-3",children:e.jsx("button",{type:"submit",className:"text-white bg-indigo-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-indigo-600 rounded-sm text-lg",children:"Add"})})]})})}),(h||d)&&e.jsx(K,{blur:1,center:!0,children:e.jsx(X,{})})]})}const xn="updateBusinessTripOtherExpense",pn=()=>{const[{fetching:i},n]=B(Ss),r=x.useCallback(async t=>{const s='Error updating business trip "other" expense',a=xn;j.loading('Updating business trip "other" expense',{id:a});try{const o=await n(t),d=N(o,s,a);if(d)return j.success("Success",{id:a,description:'Business trip "other" expense was updated'}),d.updateBusinessTripOtherExpense}catch(o){console.error(`${s}: ${o}`),j.error("Error",{id:a,description:s,duration:1e5,closeButton:!0})}},[n]);return{fetching:i,updateBusinessTripOtherExpense:r}},mn=({data:i,businessTripId:n,onChange:r})=>{const t=A(Fs,i),[s,a]=x.useState(!1),o=S({defaultValues:{id:t.id,businessTripId:n}}),{control:d,handleSubmit:m}=o,{updateBusinessTripOtherExpense:p,fetching:h}=pn(),l=c=>{p({fields:c}).then(()=>{r?.(),a(!1)})};return e.jsxs("tr",{children:[e.jsx(ue,{data:t,isEditMode:s,control:d,businessTripId:n}),e.jsx("td",{children:e.jsx(I,{...o,children:e.jsx("form",{id:`form ${t.id}`,onSubmit:m(l),children:s?e.jsx(M,{name:"description",control:d,defaultValue:t.description,render:({field:c})=>e.jsxs(z,{children:[e.jsx(P,{children:e.jsx(J,{form:`form ${t.id}`,...c,value:c.value??void 0})}),e.jsx(R,{})]})}):e.jsx(D,{c:t.description?void 0:"red",children:t.description??"Missing"})})})}),e.jsx("td",{children:e.jsx("div",{className:"flex flex-col gap-2 justify-center",children:s?e.jsx(I,{...o,children:e.jsx(M,{name:"deductibleExpense",control:o.control,defaultValue:t.deductibleExpense,render:({field:c})=>e.jsx(z,{children:e.jsx(P,{children:e.jsx(fe,{form:`form ${t.id}`,checked:c.value===!0,onCheckedChange:c.onChange})})})})}):e.jsx(D,{c:t.deductibleExpense?void 0:"red",children:t.deductibleExpense===!0?"Yes":t.deductibleExpense===!1?"No":"Missing"})})}),e.jsxs("td",{children:[e.jsx(w,{label:"Edit",children:e.jsx(b,{disabled:h,variant:s?"default":"outline",size:"icon",className:"size-7.5",onClick:c=>{c.stopPropagation(),a(u=>!u)},children:e.jsx(ee,{className:"size-5"})})}),s&&e.jsx(w,{label:"Confirm Changes",children:e.jsx(b,{type:"submit",form:`form ${t.id}`,variant:"outline",size:"icon",className:"size-7.5 text-green-500",children:e.jsx(se,{className:"size-5"})})}),e.jsx(de,{businessTripExpenseId:t.id,businessTripId:n,onChange:r}),e.jsx(le,{businessTripExpenseId:t.id,onDelete:r})]})]},t.id)},gn=({data:i,onChange:n})=>{const{otherExpenses:r,id:t}=A(Ms,i);return r?.length?e.jsx("div",{className:"flex flex-col gap-2 mt-5",children:e.jsxs(te,{highlightOnHover:!0,withBorder:!0,children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx(he,{}),e.jsx("th",{children:"Description"}),e.jsx("th",{children:"Deductible Expense"}),e.jsx("th",{})]})}),e.jsxs("tbody",{children:[r.sort((s,a)=>s.date&&a.date?s.date<a.date?1:-1:s.date?-1:a.date?1:0).map(s=>e.jsx(mn,{data:s,businessTripId:t,onChange:n},s.id)),e.jsx("tr",{children:e.jsx("td",{colSpan:6,children:e.jsx(Ne,{businessTripId:t,onAdd:n})})})]})]})}):e.jsx(Ne,{businessTripId:t,onAdd:n})},jn="addBusinessTripTravelAndSubsistenceExpense",fn=()=>{const[{fetching:i},n]=B(zs),r=x.useCallback(async t=>{const s="Error adding business trip travel&subsistence expense",a=jn;j.loading("Adding trip travel&subsistence expense",{id:a});try{const o=await n(t),d=N(o,s,a);if(d)return j.success("Success",{id:a,description:"Business trip travel&subsistence expense was added"}),d.addBusinessTripTravelAndSubsistenceExpense}catch(o){console.error(`${s}: ${o}`),j.error("Error",{id:a,description:s,duration:1e5,closeButton:!0})}},[n]);return{fetching:i,addBusinessTripTravelAndSubsistenceExpense:r}};function Ie(i){const{businessTripId:n,onAdd:r}=i,[t,{close:s,open:a}]=U(!1);return e.jsxs(e.Fragment,{children:[e.jsx(w,{label:"Add T&S Expense",children:e.jsx(b,{variant:"outline",size:"icon",className:"size-7.5",onClick:o=>{o.stopPropagation(),a()},children:e.jsx(Y,{className:"size-5"})})}),t&&e.jsx(vn,{businessTripId:n,opened:t,close:s,onAdd:r})]})}function vn({businessTripId:i,opened:n,close:r,onAdd:t}){const s=S({defaultValues:{businessTripId:i}}),{control:a,handleSubmit:o}=s,[d,m]=x.useState(!1),{addBusinessTripTravelAndSubsistenceExpense:p,fetching:h}=fn(),l=c=>{p({fields:c}).then(()=>{t?.(),r()})};return e.jsxs(C,{opened:n,onClose:r,centered:!0,lockScroll:!0,children:[e.jsx(C.Title,{children:"Add Travel & Subsistence Expense"}),e.jsx(C.Body,{children:e.jsx(I,{...s,children:e.jsxs("form",{onSubmit:o(l),className:"space-y-3",children:[e.jsx(ce,{businessTripId:i,control:a,setFetching:m}),e.jsx(M,{name:"expenseType",control:a,render:({field:c})=>e.jsxs(z,{children:[e.jsx(Q,{children:"Expense Type"}),e.jsx(P,{children:e.jsx(J,{...c,value:c.value??void 0})}),e.jsx(R,{})]})}),e.jsx("div",{className:"flex justify-center mt-5 gap-3",children:e.jsx("button",{type:"submit",className:"text-white bg-indigo-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-indigo-600 rounded-sm text-lg",children:"Add"})})]})})}),(h||d)&&e.jsx(K,{blur:1,center:!0,children:e.jsx(X,{})})]})}const bn="updateBusinessTripTravelAndSubsistenceExpense",yn=()=>{const[{fetching:i},n]=B(Ps),r=x.useCallback(async t=>{const s="Error updating business trip travel&subsistence expense",a=bn;j.loading("Updating trip travel&subsistence expense",{id:a});try{const o=await n(t),d=N(o,s,a);if(d)return j.success("Success",{id:a,description:"Business trip travel&subsistence expense was updated"}),d.updateBusinessTripTravelAndSubsistenceExpense}catch(o){console.error(`${s}: ${o}`),j.error("Error",{id:a,description:s,duration:1e5,closeButton:!0})}},[n]);return{fetching:i,updateBusinessTripTravelAndSubsistenceExpense:r}},Tn=({data:i,businessTripId:n,onChange:r})=>{const t=A($s,i),[s,a]=x.useState(!1),o=S({defaultValues:{id:t.id,businessTripId:n}}),{control:d,handleSubmit:m}=o,{updateBusinessTripTravelAndSubsistenceExpense:p,fetching:h}=yn(),l=c=>{p({fields:c}).then(()=>{r?.(),a(!1)})};return e.jsxs("tr",{children:[e.jsx(ue,{data:t,isEditMode:s,control:d,businessTripId:n}),e.jsx("td",{children:e.jsx(I,{...o,children:e.jsx("form",{id:`form ${t.id}`,onSubmit:m(l),children:s?e.jsx(M,{name:"expenseType",control:d,defaultValue:t.expenseType,render:({field:c})=>e.jsxs(z,{children:[e.jsx(P,{children:e.jsx(J,{form:`form ${t.id}`,...c,value:c.value??void 0})}),e.jsx(R,{})]})}):e.jsx(D,{c:t.expenseType?void 0:"red",children:t.expenseType??"Missing"})})})}),e.jsxs("td",{children:[e.jsx(w,{label:"Edit",children:e.jsx(b,{disabled:h,variant:s?"default":"outline",size:"icon",className:"size-7.5",onClick:c=>{c.stopPropagation(),a(u=>!u)},children:e.jsx(ee,{className:"size-5"})})}),s&&e.jsx(w,{label:"Confirm Changes",children:e.jsx(b,{type:"submit",form:`form ${t.id}`,variant:"outline",size:"icon",className:"size-7.5 text-green-500",children:e.jsx(se,{className:"size-5"})})}),e.jsx(de,{businessTripExpenseId:t.id,businessTripId:n,onChange:r}),e.jsx(le,{businessTripExpenseId:t.id,onDelete:r})]})]},t.id)},Cn=({data:i,onChange:n})=>{const{travelAndSubsistenceExpenses:r,id:t}=A(Os,i);return r?.length?e.jsx("div",{className:"flex flex-col gap-2 mt-5",children:e.jsxs(te,{highlightOnHover:!0,withBorder:!0,children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx(he,{}),e.jsx("th",{children:"Expense Type"}),e.jsx("th",{})]})}),e.jsxs("tbody",{children:[r.sort((s,a)=>s.date&&a.date?s.date<a.date?1:-1:s.date?-1:a.date?1:0).map(s=>e.jsx(Tn,{data:s,businessTripId:t,onChange:n},s.id)),e.jsx("tr",{children:e.jsx("td",{colSpan:6,children:e.jsx(Ie,{businessTripId:t,onAdd:n})})})]})]})}):e.jsx(Ie,{businessTripId:t,onAdd:n})},En=({data:i})=>{const n=A(ks,i),r="effectiveDate"in n?n.effectiveDate:void 0;return e.jsx("td",{children:e.jsxs("div",{className:"flex flex-col justify-center",children:[e.jsx("div",{children:r&&F(new Date(r),"dd/MM/yy")}),n.sourceEffectiveDate&&e.jsxs("div",{className:"text-xs text-gray-500",children:["(Originally ",F(new Date(n.sourceEffectiveDate),"dd/MM/yy"),")"]})]})})},An=({data:i})=>{const n=A(Rs,i),r="eventDate"in n?n.eventDate:void 0;return e.jsx("td",{children:e.jsx("div",{className:"flex flex-col justify-center",children:r&&F(new Date(r),"dd/MM/yy")})})},wn=({data:i})=>{const n=A(Hs,i),{account:r}=n,t=r.type,s=r.name;return e.jsx("td",{children:e.jsxs("div",{className:"flex flex-col gap-2 items-center",children:[e.jsx("p",{children:t}),e.jsx("p",{children:s})]})})},Dn=({data:i})=>{const n=A(_s,i),r="sourceDescription"in n?n.sourceDescription:"Missing";return e.jsx("td",{children:e.jsx("div",{className:"flex flex-wrap",children:e.jsx("div",{className:"flex flex-col justify-center",children:r})})})},Bn=({data:i})=>{const n=A(Vs,i);return e.jsx("td",{children:e.jsx("div",{className:"flex flex-wrap",children:e.jsx("div",{className:"flex flex-col justify-center",children:n.referenceKey})})})};function Nn({data:i,onChange:n,enableEdit:r}){const{get:t}=Us(),{id:s,counterparty:a,missingInfoSuggestions:o,id:d,sourceDescription:m}=A(Ls,i),p=!!o?.business&&r,h=p?o?.business?.name:"Missing",l=p?o?.business?.id:null,c=a?.name??h,[u,g]=x.useState(!1),{updateTransaction:f,fetching:E}=Ws(),v=x.useCallback(async Z=>{await f({transactionId:d,fields:{counterpartyId:Z}}),g(!0)},[d,f]),$=x.useCallback(async Z=>{await v(Z),n?.()},[v,n]),H=t("chargesFilters"),_=x.useCallback(Z=>{const be=H?JSON.parse(decodeURIComponent(H)):{};return qs({fromDate:be.fromDate,toDate:be.toDate,ownerIds:be.byOwners,businessIDs:[Z]})},[H]),{selectableBusinesses:O,fetching:L}=_e(),[V,ie]=x.useState(l??null),[ve,Ze]=x.useState(m);return e.jsxs("td",{children:[e.jsx("div",{className:"flex flex-wrap gap-1 items-center justify-center",children:a?.id?e.jsx(Ce,{to:_(a.id),target:"_blank",rel:"noreferrer",onClick:Z=>Z.stopPropagation(),className:"inline-flex items-center font-semibold",children:c}):e.jsxs(e.Fragment,{children:[e.jsx(Gs,{options:O,value:V,onChange:ie,search:ve,onSearchChange:Ze,placeholder:"Choose or create a business",empty:ve?e.jsx(Ys,{description:ve,onAdd:$}):null}),e.jsx(Ks,{content:"Approve",children:e.jsx(b,{variant:"outline",size:"icon",onClick:()=>V&&v(V),disabled:E||L||!V,children:e.jsx(se,{className:"size-4"})})})]})}),e.jsx(Xs,{transactionId:s,counterpartyId:a?.id??V,open:u,onOpenChange:g,onClose:n})]})}const In="categorizeBusinessTripExpense",Sn=()=>{const[{fetching:i},n]=B(Zs),r=x.useCallback(async t=>{const s="Error updating business trip expense category",a=In;j.loading("Updating trip expense category",{id:a});try{const o=await n(t),d=N(o,s,a);if(d)return j.success("Success",{id:a,description:"Business trip expense category was updated"}),d.categorizeBusinessTripExpense}catch(o){console.error(`${s}: ${o}`),j.error("Error",{id:a,description:s,duration:1e5,closeButton:!0})}},[n]);return{fetching:i,categorizeBusinessTripExpense:r}};function Fn(i){const{businessTripId:n,transactionId:r,onChange:t,defaultAmount:s}=i,[a,{close:o,open:d}]=U(!1);return e.jsxs(e.Fragment,{children:[e.jsx(w,{label:"Categorize",children:e.jsx(b,{variant:"outline",size:"icon",className:"size-7.5",onClick:m=>{m.stopPropagation(),d()},children:e.jsx(ee,{className:"size-5"})})}),a&&e.jsx(zn,{businessTripId:n,transactionId:r,opened:a,close:o,onChange:t,defaultAmount:s})]})}const Mn=Object.entries(Qs).map(([i,n])=>({value:n,label:i}));function zn({businessTripId:i,transactionId:n,defaultAmount:r,opened:t,close:s,onChange:a}){const{control:o,handleSubmit:d}=S({defaultValues:{businessTripId:i,transactionId:n}}),{categorizeBusinessTripExpense:m,fetching:p}=Sn(),h=l=>{m({fields:l}).then(()=>{a?.(),s()})};return e.jsxs(C,{opened:t,onClose:s,centered:!0,children:[e.jsx(C.Title,{children:"Set Expense Category"}),e.jsx(C.Body,{children:e.jsxs("form",{onSubmit:d(h),className:"flex flex-col gap-3 mt-3",children:[e.jsx(y,{name:"category",control:o,render:({field:l,fieldState:c})=>e.jsx(G,{"data-autofocus":!0,...l,data:Mn,value:l.value,label:"Category",placeholder:"Scroll to see all options",maxDropdownHeight:160,searchable:!0,error:c.error?.message,withinPortal:!0})}),e.jsx(y,{name:"amount",control:o,defaultValue:r,render:({field:l,fieldState:c})=>e.jsx(oe,{...l,value:l.value??void 0,hideControls:!0,precision:2,removeTrailingZeros:!0,error:c.error?.message,label:"Amount"})}),e.jsx("div",{className:"flex justify-center gap-3",children:e.jsx("button",{type:"submit",className:"text-white bg-indigo-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-indigo-600 rounded-sm text-lg",children:"Confirm"})})]})}),p&&e.jsx(K,{blur:1,center:!0,children:e.jsx(X,{})})]})}const Pn=({data:i,onChange:n})=>{const{uncategorizedTransactions:r,id:t}=A(Js,i);return r?.length?e.jsx("div",{className:"flex flex-col gap-2 mt-5",children:e.jsxs(te,{highlightOnHover:!0,withBorder:!0,children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Event Date"}),e.jsx("th",{children:"Debit Date"}),e.jsx("th",{children:"Amount"}),e.jsx("th",{}),e.jsx("th",{children:"Account"}),e.jsx("th",{children:"Description"}),e.jsx("th",{children:"Reference#"}),e.jsx("th",{children:"Counterparty"}),e.jsx("th",{})]})}),e.jsx("tbody",{children:r.sort((s,a)=>s.transaction.eventDate.localeCompare(a.transaction.eventDate)).map(s=>e.jsxs("tr",{children:[e.jsx(An,{data:s.transaction}),e.jsx(En,{data:s.transaction}),e.jsx($n,{data:s}),e.jsx("td",{children:e.jsx(Ce,{to:He(s.transaction.chargeId),target:"_blank",rel:"noreferrer",onClick:a=>a.stopPropagation(),className:"inline-flex items-center font-semibold",children:"To Charge"})}),e.jsx(wn,{data:s.transaction}),e.jsx(Dn,{data:s.transaction}),e.jsx(Bn,{data:s.transaction}),e.jsx(Nn,{data:s.transaction}),e.jsx("td",{children:e.jsx(Fn,{businessTripId:t,transactionId:s.transaction.id,onChange:n,defaultAmount:s.transaction.amount.raw})})]},s.transaction.id))})]})}):e.jsx(e.Fragment,{})},$n=({data:i})=>{const{transaction:n,categorizedAmount:r,errors:t}=A(et,i),s="amount"in n?n.amount:void 0,a=s?.raw!==r.raw&&r.raw!==0;return e.jsx("td",{children:e.jsxs("div",{className:"flex flex-col whitespace-nowrap",style:{color:Number(s?.raw)>0?"green":"red"},children:[e.jsxs("div",{className:"flex gap-1",children:[s?.formatted,t.length>0&&e.jsx(On,{errors:t})]}),a&&e.jsxs("div",{className:"text-gray-500 ml-2",children:[r.formatted," categorized "]}),n.cryptoExchangeRate&&e.jsxs("div",{className:"text-gray-500 ml-2",children:[`(Rate: ${n.cryptoExchangeRate.rate})`,e.jsx("br",{}),s?.raw?`${st(s.raw*n.cryptoExchangeRate.rate)}$`:null]})]})})},On=({errors:i})=>{const[n,{close:r,open:t}]=U(!1);return e.jsxs(ye,{width:200,position:"bottom",shadow:"md",opened:n,children:[e.jsx(ye.Target,{children:e.jsx(tt,{onMouseEnter:t,onMouseLeave:r})}),e.jsx(ye.Dropdown,{sx:{pointerEvents:"none"},className:"whitespace-normal text-red-500",children:i.map((s,a)=>e.jsx(D,{size:"sm",children:s},a))})]})};function Hn({tripId:i,isExtended:n=!1}){const[r,t]=x.useState(),[s,a]=x.useState([]),[{data:o},d]=re({query:nt,variables:{businessTripId:i}});function m(h){s.includes(h)?a(l=>l.filter(c=>c!==h)):a(l=>[...l,h])}const p=d;return x.useEffect(()=>{o?.businessTrip&&t(o.businessTrip)},[o?.businessTrip]),e.jsx(Le,{shadow:"sm",radius:"md",withBorder:!0,children:r?e.jsxs(e.Fragment,{children:[e.jsx(rt,{data:r,onChange:p}),e.jsxs(T,{className:"w-full",multiple:!0,value:s,chevron:e.jsx(Y,{size:"1rem"}),styles:{chevron:{"&[data-rotate]":{transform:"rotate(45deg)"}}},children:[e.jsxs(T.Item,{value:"attendees",children:[e.jsx(T.Control,{onClick:()=>m("attendees"),children:"Attendees"}),e.jsx(T.Panel,{children:e.jsx(sn,{data:r,onChange:p})})]}),n&&e.jsxs(T.Item,{value:"uncategorized-transactions",children:[e.jsx(T.Control,{onClick:()=>m("uncategorized-transactions"),disabled:!r.uncategorizedTransactions?.length,children:"Uncategorized Transactions"}),e.jsx(T.Panel,{children:e.jsx(Pn,{data:r,onChange:p})})]}),e.jsxs(T.Item,{value:"flights",children:[e.jsx(T.Control,{onClick:()=>m("flights"),children:"Flights"}),e.jsx(T.Panel,{children:e.jsx(dn,{data:r,onChange:p})})]}),e.jsxs(T.Item,{value:"accommodations",children:[e.jsx(T.Control,{onClick:()=>m("accommodations"),children:"Accommodations"}),e.jsx(T.Panel,{children:e.jsx(Ot,{data:r,onChange:p})})]}),e.jsxs(T.Item,{value:"travelAndSubsistence",children:[e.jsx(T.Control,{onClick:()=>m("travelAndSubsistence"),children:"Travel & Subsistence"}),e.jsx(T.Panel,{children:e.jsx(Cn,{data:r,onChange:p})})]}),e.jsxs(T.Item,{value:"other",children:[e.jsx(T.Control,{onClick:()=>m("other"),children:"Other"}),e.jsx(T.Panel,{children:e.jsx(gn,{data:r,onChange:p})})]}),e.jsxs(T.Item,{value:"carRental",children:[e.jsx(T.Control,{onClick:()=>m("carRental"),children:"Car Rental"}),e.jsx(T.Panel,{children:e.jsx(cn,{data:r,onChange:p})})]}),e.jsxs(T.Item,{value:"summary",children:[e.jsx(T.Control,{onClick:()=>m("summary"),children:"Summary"}),e.jsx(T.Panel,{children:e.jsx(it,{data:r})})]})]})]}):e.jsx(Se,{className:"h-10 w-10 animate-spin mr-2 self-center"})})}export{jt as C,Hn as E,Rn as P};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as k,k as M,r,t as j,l as A,a as N,m as F,j as e,n as T,o as z,B as v,p as C,q as D,u as y,s as P,v as L,F as $,w as O,T as R,P as q,b as U,c as _,L as Q,x as V,R as B,y as H,z as K}from"./index-
|
|
1
|
+
import{i as k,k as M,r,t as j,l as A,a as N,m as F,j as e,n as T,o as z,B as v,p as C,q as D,u as y,s as P,v as L,F as $,w as O,T as R,P as q,b as U,c as _,L as Q,x as V,R as B,y as H,z as K}from"./index-DL8q44ap.js";import{B as G}from"./business-header-C8fXEo4_.js";import{C as J,M as W}from"./Checkbox-BzSHHEEI.js";import"./building-2-CKq13SAn.js";const X="mergeBusinesses",Y=()=>{const[{fetching:o},d]=k(M),u=r.useCallback(async l=>{const c=`Error merging into business ID [${l.targetBusinessId}]`,t=`${X}-${l.targetBusinessId}`;j.loading("Merging Businesses",{id:t});try{const a=await d(l),s=A(a,c,t);if(s)return j.success("Success",{id:t,description:"Businesses merged"}),s.mergeBusinesses.id}catch(a){console.error(`${c}: ${a}`),j.error("Error",{id:t,description:c,duration:1e5,closeButton:!0})}},[d]);return{fetching:o,mergeBusinesses:u}};function Z({businessIds:o,onDone:d,resetMerge:u}){const{mergeBusinesses:l,fetching:c}=Y(),t=Array.from(new Set(o)),[{data:a,fetching:s}]=N({query:F,variables:{businessIds:t}}),[m,f]=r.useState(a?.businesses[0]),n=a?.businesses.length!==t.length&&"Some businesses were not Found"||void 0,g=a?.businesses||[],h=r.useCallback(async()=>{if(!m){j.error("Error",{description:"No main business selected"});return}if(t.length<2){j.error("Error",{description:"At least 2 businesses are required to execute a merge"});return}return await l({targetBusinessId:m.id,businessIdsToMerge:t.filter(x=>x!==m.id)}),u(),d()},[m,t,l,d,u]);return e.jsxs(e.Fragment,{children:[s&&e.jsx("div",{className:"flex flex-col text-center w-full mb-1",children:e.jsx(T,{})}),!s&&n&&e.jsx("div",{className:"flex flex-col text-center w-full mb-1",children:e.jsx("h3",{className:"sm:text-2xl text-xl font-medium title-font mb-6 text-gray-900",children:n})}),!s&&!n&&e.jsxs(e.Fragment,{children:[e.jsxs("table",{children:[e.jsxs("tr",{children:[e.jsx("th",{children:"Main"}),g.map(x=>e.jsx("td",{children:e.jsx("div",{className:"flex items-center justify-center mx-2 px-2 py-2 border-2 border-b-0 rounded-t-xl",children:e.jsx(J,{checked:x.id===m?.id,size:"xl",onClick:()=>{f(x)}})})},x.id))]}),e.jsxs("tr",{children:[e.jsx("th",{children:"Name"}),g.map(x=>e.jsx("td",{children:x.name},x.id))]})]}),e.jsxs("div",{className:"flex justify-center gap-5 mt-5",children:[e.jsx("button",{type:"button",className:" text-white bg-blue-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-blue-600 rounded-sm text-lg",disabled:s||c,onClick:h,children:"Accept"}),e.jsx("button",{type:"button",className:" text-white bg-red-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-red-600 rounded-sm text-lg",onClick:d,children:"Cancel"}),e.jsx("button",{type:"button",className:" text-white bg-red-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-red-600 rounded-sm text-lg",onClick:()=>{u(),d()},children:"Reset Merge"})]})]})]})}function ee(o){const[d,{close:u,open:l}]=z(!1),{selected:c,resetMerge:t}=o,a=new Set(c.map(({id:g})=>g)),s=a.size>=1,[m,f]=r.useState(s?"default":"outline");r.useEffect(()=>{f(s?"default":"outline")},[s]);const n=r.useCallback(()=>{u(),c.map(({onChange:g})=>g())},[c,u]);return e.jsxs(e.Fragment,{children:[e.jsx(v,{onClick:()=>{s&&l()},disabled:!s,variant:m,className:C("size-7.5",s?" bg-blue-500 hover:bg-blue-500/90":""),size:"icon",children:e.jsx(W,{className:"size-5"})}),e.jsx(D,{opened:d,onClose:u,size:"auto",centered:!0,children:e.jsx(Z,{businessIds:Array.from(a),onDone:n,resetMerge:t})})]})}function se({activePage:o,setPage:d,totalPages:u=1,businessName:l,setBusinessName:c}){const{get:t,set:a}=y(),[s,m]=r.useState(l);r.useEffect(()=>{const n=o>1?o.toFixed(0):void 0,g=t("page");n!==g&&n!=="1"&&a("page",n)},[o,t,a]),r.useEffect(()=>{const n=setTimeout(()=>{c(s)},600);return()=>{clearTimeout(n)}},[s,c]);const f=n=>{m(n)};return e.jsxs("div",{className:"flex flex-row gap-5 items-center",children:[e.jsx(P,{className:"flex-auto",value:o,onChange:d,total:u}),e.jsx(L,{className:"w-72",placeholder:"Business Name",defaultValue:l??void 0,onChange:n=>f(n.target.value===""?void 0:n.target.value)})]})}const re=()=>{const{get:o}=y(),[d,u]=r.useState(!1),[l,c]=r.useState(o("page")?Number(o("page")):1),[t,a]=r.useState(o("name")?o("page"):void 0),{setFiltersContext:s}=r.useContext($),[{data:m,fetching:f},n]=N({query:K,variables:{page:l,limit:100,name:t}}),g=O(),[h,x]=r.useState([]),I=r.useCallback((i,p)=>{h.map(b=>b.id).includes(i)?x(h.filter(b=>b.id!==i)):x([...h,{id:i,onChange:p}])},[h]);function S(){x([])}r.useEffect(()=>{s(e.jsxs("div",{className:"flex flex-row gap-x-5",children:[e.jsx(se,{activePage:l,setPage:c,businessName:t,setBusinessName:a,totalPages:m?.allBusinesses?.pageInfo.totalPages}),e.jsx(R,{label:"Expand all businesses",children:e.jsx(v,{variant:"outline",size:"icon",className:"size-7.5",onClick:()=>u(i=>!i),children:d?e.jsx(q,{className:"size-5"}):e.jsx(U,{className:"size-5"})})}),e.jsx(ee,{selected:h,resetMerge:S})]}))},[m,l,t,d,s,c,a,u,h]);const w=m?.allBusinesses?.nodes.filter(i=>i.__typename==="LtdFinancialEntity").sort((i,p)=>i.name.toLowerCase()>p.name.toLowerCase()?1:-1)??[],E=new Set(h.map(i=>i.id));return e.jsx(_,{title:`Businesses (${m?.allBusinesses?.pageInfo.totalRecords??""})`,description:"All businesses",headerActions:e.jsx("div",{className:"flex items-center py-4 gap-4",children:e.jsx(H,{description:"",onAdd:()=>n()})}),children:f?e.jsx("div",{className:"flex flex-row justify-center",children:e.jsx(Q,{className:C("h-10 w-10 animate-spin mr-2")})}):e.jsx("div",{className:"space-y-2",children:w.map(i=>e.jsx("div",{className:"group relative border rounded-lg hover:shadow-md transition-shadow",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"pl-4 flex items-center",children:e.jsx(V,{checked:E.has(i.id),onCheckedChange:()=>{I(i.id,()=>{})},className:"h-4 w-4 rounded border-gray-300 cursor-pointer",onClick:p=>p.stopPropagation()})}),e.jsx("div",{role:"button",tabIndex:0,className:"flex-1 cursor-pointer",onClick:()=>{g(B.BUSINESSES.DETAIL(i.id))},onKeyDown:p=>{(p.key==="Enter"||p.key===" ")&&(p.preventDefault(),g(B.BUSINESSES.DETAIL(i.id)))},children:e.jsx(G,{data:i})})]})},i.id))})})};export{re as Businesses};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as v,
|
|
1
|
+
import{i as v,fY as U,r as u,t as m,l as F,ar as H,j as e,a3 as C,a4 as j,a5 as f,a6 as p,v as L,a7 as y,a8 as S,bP as V,bQ as K,aA as _,ap as z,K as D,aW as E,B as h,N as M,aX as A,aY as R,V as k,a1 as $,fZ as Q,c8 as Y,a as O,f_ as G,L as P,F as W,dk as X,c as Z,dn as J,dp as ee,dq as T,dr as se,ds as b,dt as te,du as w,f$ as ae,dA as re,dB as oe,dC as ne}from"./index-DL8q44ap.js";import{D as ie}from"./data-table-pagination-BopLOYg9.js";import{A as N}from"./arrow-up-down-_p0E2yis.js";const de="insertTaxCategory",ce=()=>{const[{fetching:s},n]=v(U),t=u.useCallback(async a=>{const d="Error creating tax category",r=de;m.loading("Adding Tax Category",{id:r});try{const i=await n(a),l=F(i,d,r);if(l)return m.success("Success",{id:r,description:`${l.insertTaxCategory.name} was created`}),l.insertTaxCategory}catch(i){console.error(`${d}: ${i}`),m.error("Error",{id:r,description:d,duration:1e5,closeButton:!0})}},[n]);return{fetching:s,insertTaxCategory:t}};function q({formManager:s,setFetching:n,isInsert:t}){const{control:a,watch:d,setValue:r}=s,{selectableSortCodes:i,fetching:l,sortCodes:x}=H();u.useEffect(()=>{n(l)},[n,l]);const c=d("sortCode");return u.useEffect(()=>{if(c){const o=x.find(g=>g.key===c);o?.defaultIrsCode&&r("irsCode",o.defaultIrsCode,{shouldDirty:!0})}},[c,x,r]),e.jsxs(e.Fragment,{children:[e.jsx(C,{name:"name",control:a,rules:{required:"Required",minLength:{value:2,message:"Must be at least 2 characters"}},render:({field:o,fieldState:g})=>e.jsxs(j,{children:[e.jsx(f,{children:"Name"}),e.jsx(p,{children:e.jsx(L,{...o,value:o.value??void 0,required:!0,className:t?"":y(g)})}),e.jsx(S,{})]})}),e.jsx(V,{name:"sortCode",control:a,render:({field:o,fieldState:g})=>e.jsx(K,{...o,onChange:B=>{o.onChange(Number(B))},data:i,value:o.value?.toString(),disabled:l,label:"Sort Code",placeholder:"Scroll to see all options",maxDropdownHeight:160,searchable:!0,className:t?"":y(g)})}),e.jsx(C,{name:"irsCode",control:a,render:({field:o,fieldState:g})=>e.jsxs(j,{children:[e.jsx(f,{children:"IRS Code"}),e.jsx(p,{children:e.jsx(_,{...o,className:t?"":y(g),value:o.value??void 0,hideControls:!0,decimalScale:0})}),e.jsx(S,{})]})}),e.jsx(C,{control:a,name:"taxExcluded",render:({field:o})=>e.jsxs(j,{className:"flex flex-row items-center justify-between",children:[e.jsx("div",{className:"space-y-0.5",children:e.jsx(f,{children:"Tax excluded category"})}),e.jsx(p,{children:e.jsx(z,{onCheckedChange:o.onChange,checked:o.value??void 0})})]})})]})}function le({onAdd:s}){const[n,t]=u.useState(!1);return e.jsxs(D,{open:n,onOpenChange:t,children:[e.jsx(E,{asChild:!0,children:e.jsx(h,{children:"Add Tax Category"})}),e.jsxs(M,{className:"w-[90vw] max-w-screen-md",children:[e.jsx(A,{children:e.jsx(R,{children:"Add New Tax Category"})}),e.jsx(xe,{close:()=>t(!1),onAdd:s})]})]})}function xe({close:s,onAdd:n}){const t=k({}),{handleSubmit:a}=t,[d,r]=u.useState(!1),{insertTaxCategory:i,fetching:l}=ce(),x=c=>{c.sortCode&&=parseInt(c.sortCode.toString()),i({fields:c}).then(o=>{o?.id&&(n?.(o.id),s())})};return e.jsx($,{...t,children:e.jsxs("form",{onSubmit:a(x),children:[e.jsx("div",{className:"flex flex-col gap-4 my-4",children:e.jsx(q,{isInsert:!0,formManager:t,setFetching:r})}),e.jsx("div",{className:"flex justify-end mt-4",children:e.jsx(h,{type:"submit",disabled:l||d,children:"Add Tax Category"})})]})})}const ue="updateTaxCategory",ge=()=>{const[{fetching:s},n]=v(Q),t=u.useCallback(async a=>{const d="Error updating tax category",r=`${ue}-${a.taxCategoryId}`;m.loading("Uploading Tax Category",{id:r});try{const i=await n(a),l=F(i,d,r,"updateTaxCategory");if(l)return m.success("Success",{id:r,description:`${l.updateTaxCategory.name} was updated`}),l.updateTaxCategory}catch(i){console.error(`${d}: ${i}`),m.error("Error",{id:r,description:d,duration:1e5,closeButton:!0})}},[n]);return{fetching:s,updateTaxCategory:t}};function me({taxCategoryId:s,onAdd:n}){const[t,a]=u.useState(!1);return e.jsxs(D,{open:t,onOpenChange:a,children:[e.jsx(E,{asChild:!0,children:e.jsx(h,{variant:"outline",size:"icon",children:e.jsx(Y,{})})}),e.jsxs(M,{className:"w-[400px] max-w-screen-md",children:[e.jsx(A,{children:e.jsx(R,{children:"Edit Tax Category"})}),e.jsx(he,{taxCategoryId:s,close:()=>a(!1),onAdd:n})]})]})}function he({taxCategoryId:s,close:n,onAdd:t}){const[{data:a,fetching:d}]=O({query:G,variables:{id:s}}),r=a?.taxCategory;return!r&&!d&&m.error("Error",{description:"Couldn'nt find tax category"}),d?e.jsx(P,{className:"h-10 w-10 animate-spin"}):e.jsx(Ce,{taxCategory:r,close:n,onAdd:t})}function Ce({taxCategory:s,close:n,onAdd:t}){const a=k({defaultValues:{sortCode:s.sortCode?.key,name:s.name,irsCode:s.irsCode}}),{handleSubmit:d}=a,[r,i]=u.useState(!1),{updateTaxCategory:l,fetching:x}=ge(),c=o=>{o.sortCode&&=parseInt(o.sortCode.toString()),l({fields:o,taxCategoryId:s.id}).then(g=>{g?.id&&(t?.(g.id),n())})};return e.jsx($,{...a,children:e.jsxs("form",{onSubmit:d(c),children:[e.jsx("div",{className:"flex flex-col gap-4 my-4",children:e.jsx(q,{isInsert:!1,formManager:a,setFetching:i})}),e.jsx("div",{className:"flex justify-end mt-4",children:e.jsx(h,{type:"submit",disabled:x||r,children:"Update"})})]})})}const je=({data:s})=>e.jsx("td",{children:s.name}),fe=({data:s})=>e.jsx("td",{children:s.sortCode?e.jsxs("span",{children:[s.sortCode?.name," (",s.sortCode?.id,")"]}):"N/A"}),I=[{id:"name",accessorKey:"name",cell:({row:s})=>e.jsx(je,{data:s.original}),header:({column:s})=>e.jsxs(h,{variant:"ghost",onClick:()=>s.toggleSorting(s.getIsSorted()==="asc"),children:["Name",e.jsx(N,{})]})},{id:"sortCode",accessorKey:"sortCode.key",cell:({row:s})=>e.jsx(fe,{data:s.original}),header:({column:s})=>e.jsxs(h,{variant:"ghost",onClick:()=>s.toggleSorting(s.getIsSorted()==="asc"),children:["Sort Code",e.jsx(N,{})]})},{id:"edit",cell:({row:s})=>e.jsx(me,{taxCategoryId:s.original.id})}],Se=()=>{const[{data:s,fetching:n,error:t},a]=O({query:ae}),{setFiltersContext:d}=u.useContext(W),r=s?.taxCategories??[],i=X({data:r,columns:I,getCoreRowModel:ne(),getPaginationRowModel:oe(),getSortedRowModel:re(),initialState:{pagination:{pageSize:30}}}),l=i.getPageOptions();return u.useEffect(()=>{d(e.jsx("div",{className:"flex items-center justify-end gap-10 space-x-2 py-4",children:e.jsx("div",{className:"flex items-center justify-between px-2",children:e.jsx(ie,{table:i})})}))},[d,i,l]),u.useEffect(()=>{t&&m.error("Error",{description:"Error fetching tax categories"})},[t]),e.jsx(Z,{title:`Tax Categories (${r.length})`,description:"All tax categories",headerActions:e.jsx(le,{onAdd:()=>a()}),children:n?e.jsx("div",{className:"flex flex-row justify-center",children:e.jsx(P,{className:"h-10 w-10 animate-spin mr-2"})}):e.jsx("div",{className:"flex flex-col gap-4 rounded-md border",children:e.jsxs(J,{children:[e.jsx(ee,{children:i.getHeaderGroups().map(x=>e.jsx(T,{children:x.headers.map(c=>e.jsx(se,{children:c.isPlaceholder?null:b(c.column.columnDef.header,c.getContext())},c.id))},x.id))}),e.jsx(te,{children:i.getRowModel().rows.length===0?e.jsx(T,{children:e.jsx(w,{colSpan:I.length,className:"text-center py-8",children:"No tax categories found"})}):i.getRowModel().rows.map(x=>e.jsx(T,{children:x.getVisibleCells().map(c=>e.jsx(w,{children:b(c.column.columnDef.cell,c.getContext())},c.id))},x.id))})]})})})};export{Se as TaxCategories};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as u,j as e,
|
|
2
|
-
`)};function j(a){return a.replace(/"/g,'""').replace(/,/g,".")}const c=
|
|
1
|
+
import{r as u,j as e,dS as R,H as v,X as M,f4 as $,F as k,a as B,dk as P,eL as T,c as V,L,dn as S,dp as Y,dq as d,dr as K,ds as C,dt as O,du as t,f5 as H,dB as q,dC as z,e9 as A,aV as Q}from"./index-DL8q44ap.js";import{D as X}from"./data-table-pagination-BopLOYg9.js";const _=({data:a,year:s})=>{const n=u.useCallback(async()=>{if(!a)return{fileContent:"",fileName:""};const x=M($,a),m=E(x),o=`${s}_ledger`;return{fileContent:m,fileName:o}},[a,s]);return a?e.jsx(R,{createFileVariables:n}):e.jsx("div",{})},F=[{key:"",valueFn:()=>""},{key:"",valueFn:()=>""},{key:"Counterparty",valueFn:a=>j(a.counterParty?.name??"")},{key:"Invoice Date",valueFn:a=>v(a.invoiceDate,"yyyy-MM-dd")},{key:"Value Date",valueFn:a=>v(a.valueDate,"yyyy-MM-dd")},{key:"Reference",valueFn:a=>a.reference?`"${j(a.reference)}"`:""},{key:"Description",valueFn:a=>a.description?`"${j(a.description)}"`:""},{key:"Debit Amount",valueFn:a=>a.amount.raw<0?Math.abs(a.amount.raw).toFixed(2):""},{key:"Credit Amount",valueFn:a=>a.amount.raw>=0?a.amount.raw.toFixed(2):""},{key:"Balance",valueFn:a=>a.balance.toFixed(2)}],E=a=>{const s=[F.map(({key:n})=>n).join(",")];return a.financialEntitiesInfo.map(n=>{const x=`${j(n.entity.name)},${n.entity.sortCode?.key}`,m=`,Opening Balance,,,,,,,,${n.openingBalance.raw.toFixed(2)}`,o=`Total,${j(n.entity.name)},,,,,,,${Math.abs(n.totalDebit.raw).toFixed(2)} Debit,`,g=`,,,,,,,,${n.totalCredit.raw.toFixed(2)} Credit,${n.closingBalance.raw.toFixed(2)}`,D=`,,,,,,,,${(n.totalCredit.raw-n.totalDebit.raw).toFixed(2)} Diff,`;s.push(x,m,...n.records.map(l=>F.map(({valueFn:b})=>b(l)).join(",")),o,g,D)}),s.join(`\r
|
|
2
|
+
`)};function j(a){return a.replace(/"/g,'""').replace(/,/g,".")}const c=A(Q.Ils),G=[{id:"placeholder",header:"",cell:()=>null},{id:"counterparty",accessorKey:"counterparty",header:"Counterparty",cell:({row:a})=>e.jsx("div",{className:"font-medium",children:a.original.counterParty?.name})},{id:"invoiceDate",accessorKey:"invoiceDate",header:"Invoice Date",cell:({row:a})=>{const s=new Date(a.getValue("invoiceDate")),n=v(s,"yyyy-MM-dd");return e.jsx("div",{className:"font-medium",children:n})}},{id:"valueDate",accessorKey:"valueDate",header:"Value Date",cell:({row:a})=>{const s=new Date(a.getValue("valueDate")),n=v(s,"yyyy-MM-dd");return e.jsx("div",{className:"font-medium",children:n})}},{id:"reference",accessorKey:"reference",header:"Reference"},{id:"description",accessorKey:"description",header:"Description"},{id:"debit",header:"Debit",cell:({row:a})=>{const s=a.original.amount.raw;return s<0?e.jsx("div",{className:"font-medium",children:c.format(s*-1)}):null}},{id:"credit",header:"Credit",cell:({row:a})=>{const s=a.original.amount.raw;return s>=0?e.jsx("div",{className:"font-medium",children:c.format(s)}):null}},{id:"balance",accessorKey:"balance",header:"Balance",cell:({row:a})=>e.jsx("div",{className:"font-medium",children:c.format(a.getValue("balance"))})}],I=()=>{const{setFiltersContext:a}=u.useContext(k),[s,n]=u.useState(new Date().getFullYear()-1),[{data:x,fetching:m}]=B({query:H,variables:{year:s}}),o=x?.yearlyLedgerReport,{financialEntitiesInfo:g}=o??{},D=u.useMemo(()=>g?.flatMap(r=>{const{entity:i,openingBalance:y,closingBalance:h,totalCredit:p,totalDebit:w}=r;return r.records.map(N=>({entity:i,openingBalance:y,closingBalance:h,totalCredit:p,totalDebit:w,...N}))})??[],[g]),l=P({data:D,columns:G,getCoreRowModel:z(),getPaginationRowModel:q(),initialState:{pagination:{pageSize:100}}}),b=l.getState().pagination.pageIndex;return u.useEffect(()=>{a(e.jsxs("div",{className:"flex items-center justify-end gap-10 space-x-2 py-4",children:[e.jsx("div",{className:"flex items-center justify-between px-2",children:e.jsx(X,{table:l})}),e.jsxs("div",{className:"flex items-center justify-end gap-2",children:[e.jsx(T,{value:new Date(s,0,1),onChange:r=>r&&n(r?.getFullYear()),popoverProps:{withinPortal:!0},minDate:new Date(2010,0,1),maxDate:new Date}),e.jsx(_,{data:o,year:s})]})]}))},[s,m,a,o,l,b]),e.jsx(V,{title:"Yearly Ledger Report",children:m?e.jsx(L,{className:"h-10 w-10 animate-spin mr-2 self-center"}):o?e.jsx("div",{className:"flex flex-col gap-4 rounded-md border",children:e.jsxs(S,{children:[e.jsx(Y,{children:l.getHeaderGroups().map(r=>e.jsx(d,{children:r.headers.map(i=>e.jsx(K,{children:i.isPlaceholder?null:C(i.column.columnDef.header,i.getContext())},i.id))},r.id))}),e.jsx(O,{children:l.getRowModel().rows.map((r,i)=>{const y=l.getRowModel().rows[i-1],h=l.getRowModel().rows[i+1],p=!y||y.original.entity.id!==r.original.entity.id,w=!h||h.original.entity.id!==r.original.entity.id;return e.jsxs(e.Fragment,{children:[p&&i!==0&&e.jsx(d,{className:"border-y-2 border-t-gray-300 border-b-gray-500",children:e.jsx(t,{})}),p&&e.jsx(J,{row:r}),e.jsx(d,{children:r.getVisibleCells().map(f=>e.jsx(t,{children:C(f.column.columnDef.cell,f.getContext())},f.id))},r.id),w&&e.jsx(U,{row:r})]})})})]})}):e.jsx("div",{className:"rounded-md border h-24 text-center",children:"No results."})})};function J({row:a}){return e.jsxs(e.Fragment,{children:[e.jsxs(d,{className:"bg-gray-300",children:[e.jsx(t,{children:e.jsx("div",{className:"font-medium",children:a.original.entity.name})}),e.jsx(t,{children:e.jsx("div",{className:"font-medium",children:a.original.entity.sortCode?.key})}),e.jsx(t,{}),e.jsx(t,{}),e.jsx(t,{}),e.jsx(t,{}),e.jsx(t,{}),e.jsx(t,{}),e.jsx(t,{})]},`${a.id}-opening1`),e.jsxs(d,{className:"bg-gray-200",children:[e.jsx(t,{}),e.jsx(t,{children:e.jsx("div",{className:"font-medium",children:"Opening Balance"})}),e.jsx(t,{}),e.jsx(t,{}),e.jsx(t,{}),e.jsx(t,{}),e.jsx(t,{}),e.jsx(t,{}),e.jsx(t,{children:e.jsx("div",{className:"font-medium",children:c.format(a.original.openingBalance.raw)})})]},`${a.id}-opening2`)]})}function U({row:a}){return e.jsxs(e.Fragment,{children:[e.jsxs(d,{className:"bg-gray-200",children:[e.jsx(t,{children:e.jsx("div",{className:"font-medium",children:"Total"})}),e.jsx(t,{children:e.jsx("div",{className:"font-medium",children:a.original.entity.name})}),e.jsx(t,{}),e.jsx(t,{}),e.jsx(t,{}),e.jsx(t,{}),e.jsx(t,{}),e.jsx(t,{children:e.jsxs("div",{className:"font-medium",children:[c.format(a.original.totalDebit.raw)," Debit"]})}),e.jsx(t,{})]},`${a.id}-totals1`),e.jsxs(d,{className:"bg-gray-200",children:[e.jsx(t,{}),e.jsx(t,{}),e.jsx(t,{}),e.jsx(t,{}),e.jsx(t,{}),e.jsx(t,{}),e.jsx(t,{}),e.jsx(t,{children:e.jsxs("div",{className:"font-medium",children:[c.format(a.original.totalCredit.raw)," Credit"]})}),e.jsx(t,{children:e.jsx("div",{className:"font-medium",children:c.format(a.original.closingBalance.raw)})})]},`${a.id}-totals2`),e.jsxs(d,{className:"bg-gray-200",children:[e.jsx(t,{}),e.jsx(t,{}),e.jsx(t,{}),e.jsx(t,{}),e.jsx(t,{}),e.jsx(t,{}),e.jsx(t,{}),e.jsx(t,{children:e.jsxs("div",{className:"font-medium",children:[c.format(a.original.totalCredit.raw-a.original.totalDebit.raw)," Diff"]})}),e.jsx(t,{})]},`${a.id}-totals3`)]})}export{I as YearlyLedgerReport};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{D as it,r as m,
|
|
1
|
+
import{D as it,r as m,d8 as Nc,ai as V,dd as kc,aj as ae,j as v,db as vn,dX as It,dY as ge,dZ as Ho,de as Lc,d_ as Vc,d$ as rn,e0 as jc,c_ as rr,u as Wo,K as zr,aW as $r,bA as Fc,B as ee,d0 as Bc,N as Ur,aX as Hr,aY as Wr,V as Go,ce as _c,af as zc,bP as An,ci as $c,bU as Bi,bV as _i,H as sn,ap as Ko,bg as qo,d1 as Uc,i as Xo,e1 as Hc,t as Pe,l as Yo,cN as yn,a as ir,e2 as Wc,dk as Gc,e3 as Kc,dA as qc,dB as Xc,dC as Yc,L as Zo,v as Gr,dn as Zc,dp as Jc,dq as Nn,dr as Qc,ds as zi,dt as eu,du as $i,dv as Jo,dw as Qo,dx as ea,e4 as tu,e5 as nu,e6 as on,e7 as ru,W as iu,ab as su,a1 as ou,a3 as au,a4 as lu,a5 as cu,a6 as uu,a8 as du,a$ as hu,ad as Ui,dS as fu,e8 as pu,g as gu,aE as mu,aD as Hi,e9 as vu,ea as yu,eb as Wi,c3 as bu,P as Tu,b as xu,bh as Su,aV as wu,F as Du,ar as Cu,ec as Eu,ed as Ou}from"./index-DL8q44ap.js";import{A as Gi}from"./arrow-up-down-_p0E2yis.js";import{_ as Pu,a as bn,s as we,g as Kr,u as Ki,c as qr,m as wt,d as sr,T as or}from"./Typography-CuW3aX-4.js";import{P as Mu}from"./pencil-D-2dJ444.js";/**
|
|
2
2
|
* @license lucide-react v0.546.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|