UNPKG

@accounter/client

Version:
1 lines 4.92 kB
import{$u as e,Bl as t,Gl as n,Hu as r,Js as i,Kl as a,L as o,Nd as s,Ni as c,Pi as l,Rd as u,Si as d,Tu as f,Vl as p,Wl as m,_d as h,_i as g,ad as _,bi as v,et as y,id as b,jl as x,nt as S,rn as C,vi as w,yi as T,z as E,zi as D}from"./index-DJOqGznr.js";var O=u(s(),1),k=f();function A({onApprove:e,draft:t}){let[n,i]=(0,O.useState)(!1);return(0,k.jsxs)(c,{open:n,onOpenChange:i,children:[(0,k.jsx)(D,{asChild:!0,type:`button`,children:(0,k.jsxs)(T,{children:[(0,k.jsx)(d,{asChild:!0,type:`button`,children:(0,k.jsx)(a,{className:`size-7.5`,variant:`secondary`,onClick:()=>i(e=>!e),type:`button`,children:(0,k.jsx)(r,{className:`size-5`})})}),(0,k.jsx)(v,{children:(0,k.jsx)(`p`,{children:`Edit document`})})]})}),(0,k.jsx)(l,{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),i(!1)},draft:t})]})})})]})}function j({onApprove:r,draft:i}){let[s,c]=(0,O.useState)(!1),[l,u]=(0,O.useState)(null),{previewDocument:d,fetching:f}=S(),[g,v]=(0,O.useState)(i),x=(0,O.useCallback)((e,t)=>{v(n=>({...n,[e]:t}))},[]);(0,O.useEffect)(()=>{c(!1)},[g]);let w=(0,O.useCallback)(async()=>{try{let e=await d({input:g});if(!e)throw Error(`No preview data returned`);u(e),c(!0)}catch(e){console.error(`Failed to generate preview:`,e)}},[g,d]);(0,O.useEffect)(()=>{l||w()},[l,w]);let T=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)(C,{formData:g,updateFormData:x}),(0,k.jsx)(t,{children:(0,k.jsxs)(p,{className:`pt-6`,children:[(0,k.jsxs)(`div`,{className:`flex gap-3`,children:[(0,k.jsx)(a,{onClick:w,disabled:f||s,variant:`outline`,className:`flex-1 bg-transparent`,children:f?(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(e,{className:`w-4 h-4 mr-2 animate-spin`}),`Generating...`]}):(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(_,{className:`w-4 h-4 mr-2`}),`Preview`]})}),(0,k.jsxs)(a,{onClick:()=>r(g),className:`flex-1`,children:[(0,k.jsx)(h,{className:`w-4 h-4 mr-2`}),`Accept Changes`]})]}),T>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:[T.toFixed(2),` `,g.currency]})]})})]})})]}),(0,k.jsxs)(`div`,{className:`space-y-6`,children:[(0,k.jsxs)(t,{className:`h-fit`,children:[(0,k.jsx)(m,{children:(0,k.jsx)(n,{children:`Document Preview`})}),(0,k.jsx)(p,{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:f?(0,k.jsxs)(`div`,{className:`text-center`,children:[(0,k.jsx)(e,{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...`})]}):l?(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)(y,{src:l}),!s&&(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)(b,{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)(E,{businessId:g.client?.id,linkedDocumentIds:g.linkedDocumentIds??[]}),(0,k.jsx)(o,{documentType:g.type})]})]})}var M=`issue-monthly-documents`,N=()=>{let[{fetching:e},t]=x(i);return{fetching:e,issueDocuments:(0,O.useCallback)(async e=>{let n=`Error issuing monthly documents`,r=M;w.loading(`Issuing documents`,{id:r});try{let i=g(await t(e),n,r);if(i?.issueGreenInvoiceDocuments?.success){w.success(`Success`,{id:r,description:`Documents issued successfully`});return}i?.issueGreenInvoiceDocuments?.errors&&console.error(i.issueGreenInvoiceDocuments.errors),w.error(`Error`,{id:r,description:n,duration:1e5,closeButton:!0})}catch(e){console.error(`${n}: ${e}`),w.error(`Error`,{id:r,description:n,duration:1e5,closeButton:!0})}},[t])}};export{j as n,A as r,N as t};