@accounter/client
Version:
Accounter client application
2 lines (1 loc) • 4.34 kB
JavaScript
import{r as a,u as y,dy as P,aL as b,a5 as C,aM as S,j as e,D as O,aN as q,B as M,a2 as z,w as V,am as U,an as H,ap as Q,aq as X,ar as $,as as G,at as K,a8 as I,dz as F,z as W,dA as Y,G as _,bK as J,Q as Z,a1 as ee,bN as se,bO as te,bP as ae,bQ as w,bR as h,bS as ne,bT as x,ah as le,R as E,bU as re,bV as ce,a3 as oe,bW as ie,bX as ue,F as de,c as me}from"./index-CDv8MTrU.js";import{u as he,a as xe}from"./use-issue-monthly-documents-CIZD9g_Q.js";import{s as A}from"./subMonths-R4saX6JJ.js";function fe({issueMonth:u,clients:r,onAdd:c}){const[j,o]=a.useState(!1),[f,d]=a.useState(""),[{data:m},n]=y({query:P,variables:{issueMonth:u,clientId:f},pause:!j}),p=a.useCallback(l=>{d(l),n()},[n,d]);return a.useEffect(()=>{f!==""&&m&&(c(b(C(S,m.clientMonthlyChargeDraft))),o(!1))},[f,m,c]),e.jsxs(O,{open:j,onOpenChange:o,children:[e.jsx(q,{asChild:!0,children:e.jsx(M,{variant:"outline",size:"icon",children:e.jsx(z,{})})}),e.jsxs(V,{className:"w-[400px] max-w-screen-md",children:[e.jsx(U,{children:e.jsx(H,{children:"Select document recipient"})}),e.jsxs(Q,{onValueChange:p,children:[e.jsx(X,{children:e.jsx($,{placeholder:"Recipient"})}),e.jsx(G,{children:r.map(l=>e.jsx(K,{value:l.id,children:l.name},l.id))})]})]})]})}const je=({drafts:u})=>{const[r,c]=a.useState(u.map(s=>b(C(S,s)))),j=I(A(new Date,1),"yyyy-MM-dd"),[o,f]=a.useState(j),[{data:d},m]=y({query:F,variables:{issueMonth:o},pause:!0});a.useEffect(()=>{d?.periodicalDocumentDrafts&&c(d.periodicalDocumentDrafts.map(s=>b(C(S,s))))},[d,c]),a.useEffect(()=>{m()},[o,m]);const n=W({values:{generateDocumentsInfo:r}}),{issueDocuments:p}=he(),[{data:l}]=y({query:Y}),{fields:v,append:k,remove:B,update:R}=_({control:n.control,name:"generateDocumentsInfo"}),T=n.watch("generateDocumentsInfo"),D=a.useMemo(()=>v.map((s,t)=>({...s,...T[t],id:s.client?.id})),[v,T]),N=a.useCallback(s=>{p(s)},[p]),L=a.useMemo(()=>l?.allOpenContracts.filter(s=>s.billingCycle===J.Monthly&&!D.some(t=>t.client?.id===s.client.id)),[D,l]);return e.jsx("div",{className:"p-2",children:e.jsx(Z,{...n,children:e.jsxs("form",{onSubmit:n.handleSubmit(N),children:[e.jsxs("div",{className:"flex gap-2 items-center mb-4",children:[e.jsx(ee,{children:"Issue Month:"}),e.jsx(se,{value:new Date(o),onChange:s=>{const t=new Date(s.getFullYear(),s.getMonth(),15);f(I(t,"yyyy-MM-dd"))},popoverProps:{withinPortal:!0}})]}),e.jsxs(te,{children:[e.jsx(ae,{children:e.jsxs(w,{children:[e.jsx(h,{children:"Name"}),e.jsx(h,{children:"Document"}),e.jsx(h,{children:"Amount"}),e.jsx(h,{children:"Remark"}),e.jsx(h,{children:"Recipients"}),e.jsx(h,{})]})}),e.jsx(ne,{children:D.map(({id:s,...t},g)=>e.jsxs(w,{children:[e.jsx(x,{children:e.jsx(le,{to:s?E.BUSINESSES.DETAIL(s):E.BUSINESSES.ALL,target:"_blank",rel:"noreferrer",onClick:i=>i.stopPropagation(),className:"inline-flex items-center font-semibold",children:t.client?.name})}),e.jsx(x,{children:t.type}),e.jsxs(x,{children:[t.income?.[0]?.price," ",t.income?.[0]?.currency]}),e.jsx(x,{children:e.jsx("span",{className:"text-sm text-gray-500 whitespace-normal max-w-50",children:t.remarks})}),e.jsx(x,{children:e.jsx("div",{className:"flex flex-col",children:t.client?.emails?.map(i=>e.jsx("span",{className:"text-sm text-gray-500",children:i},i))})}),e.jsx(x,{children:e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsxs(re,{children:[e.jsx(ce,{asChild:!0,type:"button",children:e.jsx(M,{className:"size-7.5",variant:"secondary",onClick:()=>B(g),children:e.jsx(oe,{size:16})})}),e.jsx(ie,{children:e.jsx("p",{children:"Remove document"})})]}),e.jsx(xe,{draft:t,onApprove:i=>{n.setValue(`generateDocumentsInfo.${g}`,i,{shouldDirty:!0,shouldTouch:!0,shouldValidate:!0}),R(g,{...i})}})]})})]},s))})]}),e.jsxs("div",{className:"flex justify-between items-center mt-4",children:[e.jsx(fe,{clients:L?.map(s=>({id:s.client.originalBusiness.id,name:s.client.originalBusiness.name}))??[],onAdd:k,issueMonth:o}),e.jsx(ue,{onConfirm:n.handleSubmit(N),title:`Are you sure you want to issue ${D.length} documents?`,children:e.jsx(M,{children:"Issue"})})]})]})})})},ge=()=>{const{setFiltersContext:u}=a.useContext(de),[{data:r,fetching:c}]=y({query:F,variables:{issueMonth:I(A(new Date,1),"yyyy-MM-dd")}});return a.useEffect(()=>{r?.periodicalDocumentDrafts||u(null)},[r,u]),c?e.jsx(me,{}):e.jsx(je,{drafts:r?.periodicalDocumentDrafts??[]})};export{ge as IssueDocuments};