UNPKG

@accounter/client

Version:
1 lines 5.21 kB
import{s as e}from"./dist-ypP48_Ax.js";import{i as t,o as n}from"./utils-CbS-oR5I.js";import{r,t as i}from"./error-handling-CKe_iwSC.js";import{t as a}from"./loader-circle-CfW9jOIr.js";import{Ar as o,Mr as s,S as c,_ as l,b as u,dt as d,hr as f,y as p}from"./common-D-vYt_Yl.js";import{c as m,l as h,m as g,mt as _}from"./select-Zdatwv1b.js";import{t as v}from"./button-DUNsVBiu.js";import{Fl as y,Ml as b,Nl as x}from"./table-AJA7Uyxy.js";import{a as S,n as C,o as w,t as T}from"./card-DR4aRSHr.js";import{Jr as E,Zo as D}from"./graphql-DC5GYCFE.js";var O=e(n(),1),k=t();function A({onApprove:e,draft:t}){let[n,r]=(0,O.useState)(!1);return(0,k.jsxs)(m,{open:n,onOpenChange:r,children:[(0,k.jsx)(g,{asChild:!0,type:`button`,children:(0,k.jsxs)(b,{children:[(0,k.jsx)(y,{asChild:!0,type:`button`,children:(0,k.jsx)(v,{className:`size-7.5`,variant:`secondary`,onClick:()=>r(e=>!e),type:`button`,children:(0,k.jsx)(f,{className:`size-5`})})}),(0,k.jsx)(x,{children:(0,k.jsx)(`p`,{children:`Edit document`})})]})}),(0,k.jsx)(h,{className:`w-7xl sm:max-w-[95%] max-h-[90vh] overflow-y-auto`,children:(0,k.jsx)(`div`,{className:`min-h-screen bg-gray-50 p-4`,children:(0,k.jsxs)(`div`,{className:`max-w-7xl mx-auto`,children:[(0,k.jsxs)(`div`,{className:`mb-6`,children:[(0,k.jsx)(`h1`,{className:`text-3xl font-bold text-gray-900`,children:`Edit Document`}),(0,k.jsx)(`p`,{className:`text-gray-600 mt-2`,children:`Modify and preview your accounting document before issuing`})]}),(0,k.jsx)(j,{onApprove:t=>{e(t),r(!1)},draft:t})]})})})]})}function j({onApprove:e,draft:t}){let[n,r]=(0,O.useState)(!1),[i,f]=(0,O.useState)(null),{previewDocument:m,fetching:h}=c(),[g,y]=(0,O.useState)(t),b=(0,O.useCallback)((e,t)=>{y(n=>({...n,[e]:t}))},[]);(0,O.useEffect)(()=>{r(!1)},[g]);let x=(0,O.useCallback)(async()=>{try{let e=await m({input:g});if(!e)throw Error(`No preview data returned`);f(e),r(!0)}catch(e){console.error(`Failed to generate preview:`,e)}},[g,m]);(0,O.useEffect)(()=>{i||x()},[i,x]);let E=g.income?.reduce((e,t)=>{let n=t.price*t.quantity,r=n*((t.vatRate||0)/100);return e+n+r},0)||0;return(0,k.jsxs)(`div`,{className:`grid lg:grid-cols-2 gap-6`,children:[(0,k.jsxs)(`div`,{className:`space-y-6`,children:[(0,k.jsx)(d,{formData:g,updateFormData:b}),(0,k.jsx)(T,{children:(0,k.jsxs)(C,{className:`pt-6`,children:[(0,k.jsxs)(`div`,{className:`flex gap-3`,children:[(0,k.jsx)(v,{onClick:x,disabled:h||n,variant:`outline`,className:`flex-1 bg-transparent`,children:h?(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(a,{className:`w-4 h-4 mr-2 animate-spin`}),`Generating...`]}):(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(s,{className:`w-4 h-4 mr-2`}),`Preview`]})}),(0,k.jsxs)(v,{onClick:()=>e(g),className:`flex-1`,children:[(0,k.jsx)(_,{className:`w-4 h-4 mr-2`}),`Accept Changes`]})]}),E>0&&(0,k.jsx)(`div`,{className:`mt-4 p-3 bg-blue-50 rounded-lg`,children:(0,k.jsxs)(`div`,{className:`flex justify-between items-center font-medium text-blue-900`,children:[(0,k.jsx)(`span`,{children:`Total Document Amount:`}),(0,k.jsxs)(`span`,{children:[E.toFixed(2),` `,g.currency]})]})})]})})]}),(0,k.jsxs)(`div`,{className:`space-y-6`,children:[(0,k.jsxs)(T,{className:`h-fit`,children:[(0,k.jsx)(S,{children:(0,k.jsx)(w,{children:`Document Preview`})}),(0,k.jsx)(C,{children:(0,k.jsx)(`div`,{className:`border-2 border-dashed border-gray-200 rounded-lg min-h-[600px] flex items-center justify-center bg-gray-50`,children:h?(0,k.jsxs)(`div`,{className:`text-center`,children:[(0,k.jsx)(a,{className:`w-8 h-8 animate-spin mx-auto mb-4 text-gray-400`}),(0,k.jsx)(`p`,{className:`text-gray-500`,children:`Generating document preview...`})]}):i?(0,k.jsx)(`div`,{className:`w-full`,children:(0,k.jsx)(`div`,{className:`bg-white shadow-lg rounded-lg overflow-hidden`,children:(0,k.jsx)(`div`,{className:`aspect-[8.5/11] bg-white border`,children:(0,k.jsx)(`div`,{className:`h-full flex items-center justify-center`,children:(0,k.jsxs)(`div`,{className:`text-center p-6`,children:[(0,k.jsx)(u,{src:i}),!n&&(0,k.jsx)(`p`,{className:`text-xs text-amber-600 mt-3 bg-amber-50 px-2 py-1 rounded`,children:`Preview may be outdated`})]})})})})}):(0,k.jsxs)(`div`,{className:`text-center`,children:[(0,k.jsx)(o,{className:`w-16 h-16 mx-auto mb-4 text-gray-300`}),(0,k.jsx)(`p`,{className:`text-gray-500 mb-2`,children:`No preview available`}),(0,k.jsx)(`p`,{className:`text-sm text-gray-400`,children:`Click Preview to generate document`})]})})})]}),g.client&&(0,k.jsx)(p,{businessId:g.client?.id,linkedDocumentIds:g.linkedDocumentIds??[]}),(0,k.jsx)(l,{documentType:g.type})]})]})}var M=`issue-monthly-documents`,N=()=>{let[{fetching:e},t]=D(E);return{fetching:e,issueDocuments:(0,O.useCallback)(async e=>{let n=`Error issuing monthly documents`,a=M;r.loading(`Issuing documents`,{id:a});try{let o=await t(e),s=i(o,n,a);if(s?.issueGreenInvoiceDocuments?.success){r.success(`Success`,{id:a,description:`Documents issued successfully`});return}s?.issueGreenInvoiceDocuments?.errors&&console.error(s.issueGreenInvoiceDocuments.errors),r.error(`Error`,{id:a,description:n,duration:1e5,closeButton:!0})}catch(e){console.error(`${n}: ${e}`),r.error(`Error`,{id:a,description:n,duration:1e5,closeButton:!0})}},[t])}};export{j as n,A as r,N as t};