UNPKG

@accounter/client

Version:
1 lines • 13.2 kB
import{s as e}from"./dist-BbgEzppd.js";import{i as t,o as n}from"./utils-BUNz070n.js";import{Cn as r,Ii as i,Ya as a,bn as o,et as s,oi as c,ti as l,xn as u}from"./error-handling-AQOG1RNy.js";import{g as d,l as f,t as p}from"./routes-BXbESQBe.js";import{a as m,c as h,d as g,f as _,i as v,l as y,mt as b,n as x,o as S,p as C,r as w,s as T,t as E,ut as ee}from"./select-6mBYg_R6.js";import{At as te,Bt as ne,C as D,Et as re,Hr as O,Ut as k,Vt as A,ar as j,br as M,cr as N,h as ie,n as ae,or as oe,rt as se,xr as ce}from"./common-Cy-x5Vhe.js";import{t as le}from"./modify-contract-dialog-31bElGvI.js";import{a as ue,f as de,i as fe,o as pe}from"./separator-EFzchRgs.js";import{t as P}from"./funnel-BvwoBZ0O.js";import{t as F}from"./button-CBTN3XMQ.js";import{a as I,at as L,b as R,c as z,f as B,g as V,h as H,i as U,m as me,n as W,o as G,p as he,r as K,s as q,t as J,u as ge,v as _e}from"./table-tK8pMUMS.js";import{t as ve}from"./subMonths-ah6YOt4d.js";import"./index-B8E5XsZe.js";import{r as ye,t as be}from"./use-issue-monthly-documents-vpQ2hpr8.js";var Y=e(n(),1),X=t(),Z=({timelessDate:e})=>(0,X.jsx)(`p`,{className:`text-sm font-medium`,children:new Date(e).toLocaleDateString(void 0,{timeZone:`UTC`})});function Q({id:e,name:t}){return(0,X.jsx)(`div`,{className:`flex flex-wrap flex-col justify-center`,children:(0,X.jsx)(f,{to:p.BUSINESSES.DETAIL(e),target:`_blank`,rel:`noreferrer`,onClick:e=>e.stopPropagation(),className:`inline-flex items-center font-semibold`,children:t})})}var $=[{id:`select`,header:({table:e})=>(0,X.jsx)(D,{checked:e.getIsAllPageRowsSelected()||e.getIsSomePageRowsSelected()&&`indeterminate`,onCheckedChange:t=>e.toggleAllPageRowsSelected(!!t),"aria-label":`Select all`}),cell:({row:e})=>(0,X.jsx)(D,{checked:e.getIsSelected(),onCheckedChange:t=>e.toggleSelected(!!t),"aria-label":`Select row`}),enableSorting:!1,enableHiding:!1},{accessorKey:`isActive`,header:({column:e})=>(0,X.jsx)(k,{column:e,title:`Is Active`}),cell:({row:e})=>e.getValue(`isActive`)?(0,X.jsx)(H,{variant:`default`,children:`Active`}):(0,X.jsx)(H,{variant:`destructive`,children:`Inactive`})},{accessorKey:`client.name`,header:({column:e})=>(0,X.jsx)(k,{column:e,title:`Client`}),cell:({row:e})=>(0,X.jsx)(Q,{id:e.original.client.id,name:e.original.client.name})},{accessorKey:`startDate`,header:({column:e})=>(0,X.jsx)(k,{column:e,title:`Start`}),cell:({row:e})=>(0,X.jsx)(Z,{timelessDate:e.getValue(`startDate`)})},{accessorKey:`endDate`,header:({column:e})=>(0,X.jsx)(k,{column:e,title:`End`}),cell:({row:e})=>(0,X.jsx)(Z,{timelessDate:e.getValue(`endDate`)})},{accessorKey:`purchaseOrder`,header:({column:e})=>(0,X.jsx)(k,{column:e,title:`Purchase Order`}),cell:({row:e})=>(0,X.jsxs)(`div`,{className:`flex flex-row gap-1 items-center`,children:[e.original.msCloud&&(0,X.jsx)(f,{to:e.original.msCloud,target:`_blank`,rel:`noreferrer`,className:`size-8`,children:(0,X.jsx)(F,{variant:`link`,size:`sm`,children:(0,X.jsx)(O,{className:`size-4`})})}),(0,X.jsx)(`span`,{className:`text-sm font-medium`,children:e.getValue(`purchaseOrder`)})]})},{accessorKey:`product`,header:({column:e})=>(0,X.jsx)(k,{column:e,title:`Product`}),cell:({row:e})=>(0,X.jsx)(`p`,{className:`text-sm font-medium`,children:e.getValue(`product`)})},{accessorKey:`plan`,header:({column:e})=>(0,X.jsx)(k,{column:e,title:`Subscription Plan`}),cell:({row:e})=>(0,X.jsx)(`p`,{className:`text-sm font-medium`,children:e.getValue(`plan`)})},{accessorKey:`billingCycle`,header:({column:e})=>(0,X.jsx)(k,{column:e,title:`Billing Cycle`}),cell:({row:e})=>(0,X.jsx)(`p`,{className:`text-sm font-medium`,children:e.getValue(`billingCycle`)})},{accessorKey:`amount.raw`,header:({column:e})=>(0,X.jsx)(k,{column:e,title:`Amount`}),cell:({row:e})=>(0,X.jsx)(`p`,{className:`text-sm font-medium`,children:e.original.amount.formatted})},{accessorKey:`operationsLimit`,header:({column:e})=>(0,X.jsx)(k,{column:e,title:`Operations Limit`}),cell:({row:e})=>{let t=e.getValue(`operationsLimit`);return t?(0,X.jsx)(`p`,{className:`text-sm font-medium`,children:t.toString()}):null}},{accessorKey:`edit`,header:``,cell:({row:e})=>(0,X.jsx)(le,{clientId:e.original.client.id,contractId:e.original.id}),enableSorting:!1}];function xe({table:e}){let[t,n]=(0,Y.useState)(!1);return(0,X.jsxs)(T,{open:t,onOpenChange:n,children:[(0,X.jsx)(C,{asChild:!0,children:(0,X.jsx)(F,{size:`sm`,variant:`outline`,children:(0,X.jsx)(P,{className:`size-4`})})}),(0,X.jsxs)(h,{className:`max-w-2xl max-h-[90vh] overflow-y-auto`,children:[(0,X.jsxs)(g,{children:[(0,X.jsx)(_,{children:`Filter Contracts`}),(0,X.jsx)(y,{children:`Filter contracts based on various criteria`})]}),(0,X.jsxs)(`div`,{className:`grid gap-4 py-4`,children:[(0,X.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-2`,children:[(0,X.jsxs)(`div`,{className:`space-y-2`,children:[(0,X.jsx)(S,{children:`Product Type`}),(0,X.jsxs)(E,{onValueChange:t=>e.getColumn(`product`)?.setFilterValue(t===`NULL`?void 0:t),value:e.getColumn(`product`)?.getFilterValue(),children:[(0,X.jsx)(v,{className:`w-full`,children:(0,X.jsx)(m,{})}),(0,X.jsxs)(x,{children:[(0,X.jsx)(w,{value:`NULL`,className:`font-light text-xs`,children:`(None)`}),Object.values(c).map(e=>(0,X.jsx)(w,{value:e,children:e},e))]})]})]}),(0,X.jsxs)(`div`,{className:`space-y-2`,children:[(0,X.jsx)(S,{children:`Billing Cycle`}),(0,X.jsxs)(E,{onValueChange:t=>e.getColumn(`billingCycle`)?.setFilterValue(t===`NULL`?void 0:t),value:e.getColumn(`billingCycle`)?.getFilterValue(),children:[(0,X.jsx)(v,{className:`w-full`,children:(0,X.jsx)(m,{})}),(0,X.jsxs)(x,{children:[(0,X.jsx)(w,{value:`NULL`,className:`font-light text-xs`,children:`(None)`}),Object.values(s).map(e=>(0,X.jsx)(w,{value:e,children:M(e)},e))]})]})]})]}),(0,X.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-2`,children:[(0,X.jsxs)(`div`,{className:`space-y-2`,children:[(0,X.jsx)(S,{children:`Subscription Plan`}),(0,X.jsxs)(E,{onValueChange:t=>e.getColumn(`plan`)?.setFilterValue(t===`NULL`?void 0:t),value:e.getColumn(`plan`)?.getFilterValue(),children:[(0,X.jsx)(v,{className:`w-full`,children:(0,X.jsx)(m,{})}),(0,X.jsxs)(x,{children:[(0,X.jsx)(w,{value:`NULL`,className:`font-light text-xs`,children:`(None)`}),Object.values(i).map(e=>(0,X.jsx)(w,{value:e,children:ce(e)},e))]})]})]}),(0,X.jsxs)(`div`,{className:`space-y-2`,children:[(0,X.jsx)(S,{children:`Is Active`}),(0,X.jsxs)(E,{onValueChange:t=>e.getColumn(`isActive`)?.setFilterValue(t===`NULL`?void 0:t===`active`),value:Se(e.getColumn(`isActive`)?.getFilterValue()),children:[(0,X.jsx)(v,{className:`w-full`,children:(0,X.jsx)(m,{})}),(0,X.jsxs)(x,{children:[(0,X.jsx)(w,{value:`NULL`,className:`font-light text-xs`,children:`(None)`}),(0,X.jsx)(w,{value:`active`,children:`Active`}),(0,X.jsx)(w,{value:`inactive`,children:`Inactive`})]})]})]})]})]})]})]})}function Se(e){return e===void 0?`NULL`:e?`active`:`inactive`}var Ce=({contractIds:e})=>{let[t,n]=(0,Y.useState)(!1),[r,i]=(0,Y.useState)(L(ve(new Date,1),`yyyy-MM-dd`)),[s,c]=(0,Y.useState)([]),{issueDocuments:u}=be(),[{data:d,fetching:m},v]=a({query:o,variables:{issueMonth:r,contractIds:e},pause:!t});(0,Y.useEffect)(()=>{d?.periodicalDocumentDraftsByContracts&&c(d.periodicalDocumentDraftsByContracts.map(e=>ie(V(l,e))))},[d,c]),(0,Y.useEffect)(()=>{t&&v()},[t,v]);let b=A({values:{drafts:s}}),x=(0,Y.useCallback)(async e=>{await u({generateDocumentsInfo:e.drafts}),n(!1)},[u]),{fields:w,remove:E,update:D}=ne({control:b.control,name:`drafts`}),O=b.watch(`drafts`),k=(0,Y.useMemo)(()=>w.map((e,t)=>({...e,...O[t],id:e.id})),[w,O]);return(0,X.jsxs)(T,{open:t,onOpenChange:n,children:[(0,X.jsx)(C,{asChild:!0,children:(0,X.jsx)(F,{size:`sm`,variant:`outline`,disabled:e.length===0,children:`Issue Documents`})}),(0,X.jsxs)(h,{className:`min-w-[90vw] w-full max-h-[90vh] overflow-y-auto`,children:[(0,X.jsxs)(g,{children:[(0,X.jsx)(_,{children:`Issue Documents for Contracts`}),(0,X.jsx)(y,{children:`Review and issue monthly documents for the selected contracts`})]}),m?(0,X.jsx)(R,{}):(0,X.jsx)(te,{...b,children:(0,X.jsxs)(`form`,{onSubmit:b.handleSubmit(x),className:`min-w-5xl w-full`,children:[(0,X.jsxs)(`div`,{className:`flex gap-2 items-center mb-4`,children:[(0,X.jsx)(S,{children:`Issue Month:`}),(0,X.jsx)(re,{value:new Date(r),onChange:e=>{i(L(new Date(e.getFullYear(),e.getMonth(),15),`yyyy-MM-dd`))},popoverProps:{withinPortal:!1}})]}),(0,X.jsxs)(J,{children:[(0,X.jsx)(I,{children:(0,X.jsxs)(G,{children:[(0,X.jsx)(U,{children:`Name`}),(0,X.jsx)(U,{children:`Document`}),(0,X.jsx)(U,{children:`Amount`}),(0,X.jsx)(U,{children:`Remark`}),(0,X.jsx)(U,{children:`Recipients`}),(0,X.jsx)(U,{})]})}),(0,X.jsx)(W,{children:k.map(({id:e,...t},n)=>(0,X.jsxs)(G,{children:[(0,X.jsx)(K,{children:(0,X.jsx)(f,{to:t.client?.id?p.BUSINESSES.DETAIL(t.client?.id):p.BUSINESSES.ALL,target:`_blank`,rel:`noreferrer`,onClick:e=>e.stopPropagation(),className:`inline-flex items-center font-semibold`,children:t.client?.name})}),(0,X.jsx)(K,{children:t.type}),(0,X.jsxs)(K,{children:[t.income?.[0]?.price,` `,t.income?.[0]?.currency]}),(0,X.jsx)(K,{children:(0,X.jsx)(`span`,{className:`text-sm text-gray-500 whitespace-normal max-w-50`,children:t.remarks})}),(0,X.jsx)(K,{children:(0,X.jsx)(`div`,{className:`flex flex-col`,children:t.client?.emails?.map(e=>(0,X.jsx)(`span`,{className:`text-sm text-gray-500`,children:e},e))})}),(0,X.jsx)(K,{children:(0,X.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,X.jsxs)(j,{children:[(0,X.jsx)(N,{asChild:!0,type:`button`,children:(0,X.jsx)(F,{className:`size-7.5`,variant:`secondary`,onClick:()=>E(n),children:(0,X.jsx)(ee,{size:16})})}),(0,X.jsx)(oe,{children:(0,X.jsx)(`p`,{children:`Remove document`})})]}),(0,X.jsx)(ye,{draft:t,onApprove:e=>{b.setValue(`drafts.${n}`,e,{shouldDirty:!0,shouldTouch:!0,shouldValidate:!0}),D(n,{...e})}})]})})]},e))})]}),(0,X.jsx)(`div`,{className:`flex justify-between items-center mt-4`,children:(0,X.jsx)(se,{onConfirm:b.handleSubmit(x),title:`Are you sure you want to issue ${k.length} documents?`,children:(0,X.jsx)(F,{children:`Issue`})})})]})})]})]})};function we(e){let t=V(u,e);return{id:t.id,isActive:t.isActive,client:{id:t.client.id,name:t.client.originalBusiness.name},purchaseOrder:t.purchaseOrders[0],startDate:t.startDate,endDate:t.endDate,amount:{raw:t.amount.raw,formatted:t.amount.formatted},billingCycle:t.billingCycle,product:t.product??void 0,plan:t.plan??void 0,operationsLimit:t.operationsLimit,msCloud:t.msCloud?.toString()??void 0}}var Te=({data:e})=>{let[t,n]=(0,Y.useState)([{id:`endDate`,desc:!0},{id:`amount.raw`,desc:!0}]),[r,i]=(0,Y.useState)({}),[a,o]=(0,Y.useState)([]),[s,c]=(0,Y.useState)([]),l=(0,Y.useMemo)(()=>e.map(e=>we(e)),[e]),u=z({data:l,columns:$,getCoreRowModel:ge(),onSortingChange:n,getSortedRowModel:me(),getPaginationRowModel:he(),onRowSelectionChange:i,onColumnFiltersChange:o,getFilteredRowModel:B(),state:{sorting:t,rowSelection:r,columnFilters:a},initialState:{pagination:{pageIndex:0,pageSize:50}}});return(0,Y.useEffect)(()=>{let e=Object.entries(r).filter(([,e])=>!!e).map(([e])=>Number(e)),t=Array.from(new Set(l.filter((t,n)=>e.includes(n)).map(e=>e.id)));(s.length!==t.length||!s.every(e=>t.includes(e)))&&c(t)},[r,l,s,a]),(0,X.jsxs)(`div`,{className:`w-full`,children:[(0,X.jsxs)(`div`,{className:`flex items-center py-4 gap-4`,children:[(0,X.jsx)(xe,{table:u}),(0,X.jsxs)(fe,{children:[(0,X.jsx)(de,{asChild:!0,children:(0,X.jsxs)(F,{variant:`outline`,children:[`Columns `,(0,X.jsx)(b,{})]})}),(0,X.jsx)(pe,{align:`end`,children:u.getAllColumns().filter(e=>e.getCanHide()).map(e=>(0,X.jsx)(ue,{className:`capitalize`,checked:e.getIsVisible(),onCheckedChange:t=>e.toggleVisibility(!!t),children:e.id},e.id))})]}),(0,X.jsx)(`div`,{className:`ml-auto`,children:(0,X.jsx)(Ce,{contractIds:s,className:`ml-auto`})})]}),(0,X.jsx)(`div`,{className:`overflow-hidden rounded-md border`,children:(0,X.jsxs)(J,{children:[(0,X.jsx)(I,{children:u.getHeaderGroups().map(e=>(0,X.jsx)(G,{children:e.headers.map(e=>(0,X.jsx)(U,{colSpan:e.colSpan,children:e.isPlaceholder?null:q(e.column.columnDef.header,e.getContext())},e.id))},e.id))}),(0,X.jsx)(W,{children:u.getRowModel().rows?.length?u.getRowModel().rows.map(e=>(0,X.jsx)(G,{children:e.getVisibleCells().map(e=>(0,X.jsx)(K,{children:q(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,X.jsx)(G,{children:(0,X.jsx)(K,{colSpan:$.length,className:`h-24 text-center`,children:`No results.`})})})]})}),(0,X.jsxs)(`div`,{className:`flex items-center justify-end space-x-2 py-4`,children:[(0,X.jsxs)(`div`,{className:`text-muted-foreground flex-1 text-sm`,children:[u.getFilteredSelectedRowModel().rows.length,` of`,` `,u.getFilteredRowModel().rows.length,` row(s) selected.`]}),(0,X.jsx)(ae,{className:`w-fit mx-0`,currentPageIndex:u.getState().pagination.pageIndex,totalPages:u.getPageCount(),onChange:e=>u.setPageIndex(e)})]})]})},Ee=()=>{let{userContext:e}=(0,Y.useContext)(_e),t=e?.context.adminBusinessId,n;try{n=d()}catch{}let[{data:i,fetching:o}]=a({query:r,pause:!t||!!n,variables:{adminId:t??``}}),s=n||i;return!n&&o&&!s?.contractsByAdmin?(0,X.jsx)(R,{}):!t||!s?.contractsByAdmin?(0,X.jsx)(`div`,{children:`Contracts not found`}):(0,X.jsx)(Te,{data:s.contractsByAdmin})};export{Ee as ContractsScreen};