@accounter/client
Version:
Accounter client application
1 lines • 5.11 kB
JavaScript
import{s as e}from"./dist-C51EwTaa.js";import{i as t,o as n}from"./utils-DdVdMk8X.js";import{Io as r,Yr as i,r as a,t as o}from"./error-handling-Dpfd9svJ.js";import{c as s,ft as c,gt as l,l as u,m as d}from"./select-CrsvQyhZ.js";import{t as f}from"./button-Dzp2INW0.js";import{Et as p,Ot as m,Tt as h}from"./table--bF0wbxq.js";import{B as g,Fr as _,Ot as v,Pr as y,R as b,Rr as x,U as S,V as C,Xr as w,di as T,fi as E,zr as D}from"./index-CL8-JoMZ.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)(s,{open:n,onOpenChange:r,children:[(0,k.jsx)(d,{asChild:!0,type:`button`,children:(0,k.jsxs)(h,{children:[(0,k.jsx)(m,{asChild:!0,type:`button`,children:(0,k.jsx)(f,{className:`size-7.5`,variant:`secondary`,onClick:()=>r(e=>!e),type:`button`,children:(0,k.jsx)(w,{className:`size-5`})})}),(0,k.jsx)(p,{children:(0,k.jsx)(`p`,{children:`Edit document`})})]})}),(0,k.jsx)(u,{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,a]=(0,O.useState)(null),{previewDocument:o,fetching:s}=S(),[u,d]=(0,O.useState)(t),p=(0,O.useCallback)((e,t)=>{d(n=>({...n,[e]:t}))},[]);(0,O.useEffect)(()=>{r(!1)},[u]);let m=(0,O.useCallback)(async()=>{try{let e=await o({input:u});if(!e)throw Error(`No preview data returned`);a(e),r(!0)}catch(e){console.error(`Failed to generate preview:`,e)}},[u,o]);(0,O.useEffect)(()=>{i||m()},[i,m]);let h=u.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)(v,{formData:u,updateFormData:p}),(0,k.jsx)(y,{children:(0,k.jsxs)(_,{className:`pt-6`,children:[(0,k.jsxs)(`div`,{className:`flex gap-3`,children:[(0,k.jsx)(f,{onClick:m,disabled:s||n,variant:`outline`,className:`flex-1 bg-transparent`,children:s?(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(c,{className:`w-4 h-4 mr-2 animate-spin`}),`Generating...`]}):(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(E,{className:`w-4 h-4 mr-2`}),`Preview`]})}),(0,k.jsxs)(f,{onClick:()=>e(u),className:`flex-1`,children:[(0,k.jsx)(l,{className:`w-4 h-4 mr-2`}),`Accept Changes`]})]}),h>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:[h.toFixed(2),` `,u.currency]})]})})]})})]}),(0,k.jsxs)(`div`,{className:`space-y-6`,children:[(0,k.jsxs)(y,{className:`h-fit`,children:[(0,k.jsx)(x,{children:(0,k.jsx)(D,{children:`Document Preview`})}),(0,k.jsx)(_,{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:s?(0,k.jsxs)(`div`,{className:`text-center`,children:[(0,k.jsx)(c,{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)(C,{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)(T,{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`})]})})})]}),u.client&&(0,k.jsx)(g,{businessId:u.client?.id,linkedDocumentIds:u.linkedDocumentIds??[]}),(0,k.jsx)(b,{documentType:u.type})]})]})}var M=`issue-monthly-documents`,N=()=>{let[{fetching:e},t]=r(i);return{fetching:e,issueDocuments:(0,O.useCallback)(async e=>{let n=`Error issuing monthly documents`,r=M;a.loading(`Issuing documents`,{id:r});try{let i=o(await t(e),n,r);if(i?.issueGreenInvoiceDocuments?.success){a.success(`Success`,{id:r,description:`Documents issued successfully`});return}i?.issueGreenInvoiceDocuments?.errors&&console.error(i.issueGreenInvoiceDocuments.errors),a.error(`Error`,{id:r,description:n,duration:1e5,closeButton:!0})}catch(e){console.error(`${n}: ${e}`),a.error(`Error`,{id:r,description:n,duration:1e5,closeButton:!0})}},[t])}};export{j as n,A as r,N as t};