UNPKG

@accounter/client

Version:

2 lines (1 loc) 4.33 kB
import{r as a,u as y,dy as P,aJ as b,H as C,aK as S,j as e,D as O,aL as q,B as M,a4 as V,x as z,al as H,am as U,ao as J,ap as K,aq as Q,ar as W,as as X,w as I,dz as F,E as $,dA as Y,J as _,bK as G,W as Z,a3 as ee,bN as se,bO as te,bP as ae,bQ as E,bR as h,bS as ne,bT as x,ah as le,R as w,bU as re,bV as ce,a5 as oe,bW as ie,bX as ue,F as de,c as me}from"./index-DRqooPz9.js";import{u as he,a as xe}from"./use-issue-monthly-documents-Dx6_0gyN.js";import{s as A}from"./subMonths-CZ2djAnO.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(V,{})})}),e.jsxs(z,{className:"w-[400px] max-w-screen-md",children:[e.jsx(H,{children:e.jsx(U,{children:"Select document recipient"})}),e.jsxs(J,{onValueChange:p,children:[e.jsx(K,{children:e.jsx(Q,{placeholder:"Recipient"})}),e.jsx(W,{children:r.map(l=>e.jsx(X,{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=$({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===G.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(E,{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(E,{children:[e.jsx(x,{children:e.jsx(le,{to:s?w.BUSINESSES.DETAIL(s):w.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};