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