import{a as e}from"./rolldown-runtime-CNC7AqOf.js";import{t}from"./react-Augu_vA3.js";import{Dt as n,Rt as r,Tt as i,V as a,si as o,st as s,t as c}from"./forms-CL2ODv4X.js";import{t as l}from"./useTranslation-B_YCgyrR.js";import{t as u}from"./jsx-runtime-CTknu7_t.js";import{s as d}from"./cards-CR_9H_Xm.js";import{n as f}from"./Combobox-BFkUVwV6.js";import{t as p}from"./Modal-C4GWc9Ry.js";import{t as m}from"./NumberInputField-DONpvZxK.js";import{t as h}from"./useFormatMoney-DFCLiSuN.js";import{a as g,c as _,i as v,n as y,r as b,s as x}from"./tables-B0I664bp.js";import{r as S}from"./invoices-rkG_N3WF.js";var C=e(t(),1),w=e(u(),1),T={id:0,date:``,amount:0,is_amount:!0};function E(e){let[t]=l(),{visible:n,setVisible:r,schedule:i,onSave:o,scheduleIndex:u,errors:d,setErrors:f,remainingAmount:h,isFirstSchedule:g,isAmountMode:_,minDate:v,selectedInvoice:y}=e,b=e=>{let t=new Date(e);return t.setDate(t.getDate()+1),t.toISOString().split(`T`)[0]},x=e=>{if(!y)return h;console.log(`isAmountMode`,e);let t=y.amount,n=i.parameters.schedule?.reduce((n,r,i)=>i===u?n:r.is_amount===e?n+r.amount:n+(e?r.amount*t/100:r.amount/t*100),0)||0;return Number(e?(t-n).toFixed(2):(100-n).toFixed(0))},S=e=>{if(u>-1&&i.parameters.schedule?.[u])return i.parameters.schedule[u].amount;let t=x(i.parameters?.schedule?.[0]?.is_amount??!0);return Number(e?t.toFixed(2):t.toFixed(0))},[E,D]=(0,C.useState)(T);(0,C.useEffect)(()=>{n&&f(void 0)},[n]),(0,C.useEffect)(()=>{if(n)if(u>-1&&i.parameters.schedule?.[u])D(i.parameters.schedule[u]);else{let e=i.parameters.schedule?.[0]?.is_amount??_;D({...T,id:(i.parameters?.schedule?.length??0)+1,date:b(v),amount:S(e),is_amount:e})}},[n,u,v,_,y?.amount,i]);let O=e=>{y?.amount;let t=x(e),n;n=Number(e?t.toFixed(2):Math.min(t,100).toFixed(0)),D(t=>({...t,id:(i.parameters?.schedule?.length??0)+1,is_amount:e,amount:n}))},k=(e,t)=>{D(n=>({...n,[e]:t}))},A=()=>{let e={};if(E.date?E.date<=v&&(e.date=[t(`date_must_be_after_previous_schedule`)]):e.date=[t(`field_is_required`)],E.amount<=0)e.amount=[t(`amount_must_be_greater_than_zero`)];else{let n=x(E.is_amount);E.amount>n&&(e.amount=[E.is_amount?t(`max_amount`)+` `+n:t(`max_amount`)+` `+n+`%`])}return e};return(0,w.jsxs)(p,{title:t(u>-1?`edit_schedule`:`new_schedule`),visible:n,onClose:()=>r(!1),overflowVisible:!0,children:[(0,w.jsx)(a,{label:t(`payment_date`),type:`date`,min:v,value:E.date,onValueChange:e=>k(`date`,e),errorMessage:d?.errors.date}),(0,w.jsxs)(`div`,{className:`flex flex-col space-y-2`,children:[(0,w.jsxs)(`div`,{children:[(0,w.jsx)(m,{label:E.is_amount?t(`payment_amount`):t(`percent`),value:E.amount,onValueChange:e=>{let t=parseFloat(e);isNaN(t)||k(`amount`,t)},precision:E.is_amount?2:0,errorMessage:d?.errors.amount}),(0,w.jsx)(`div`,{className:`text-sm text-gray-600 mt-1`,children:E.is_amount?`Remaining: $${x(E.is_amount)} of ${y?.amount||0}`:`Remaining: ${x(E.is_amount)}% of invoice`})]}),g&&(0,w.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[(0,w.jsx)(c,{checked:E.is_amount,onValueChange:O}),(0,w.jsx)(`span`,{children:E.is_amount?t(`amount`):t(`percent`)})]})]}),(0,w.jsx)(s,{behavior:`button`,className:`self-end`,onClick:()=>{let e=A();if(Object.keys(e).length>0){f({message:``,errors:e});return}let t=x(E.is_amount),n=Math.min(E.amount,t),r={...E,amount:E.is_amount?Number(n.toFixed(2)):Number(n.toFixed(0))};f(void 0),o(r,u)},children:t(`save`)})]})}o(void 0);function D(e){let[t]=l(),a=h(),[o,u]=(0,C.useState)(!1),[p,m]=(0,C.useState)(-1),[T,D]=(0,C.useState)(null),{dateFormat:O}=r(),{schedule:k,handleChange:A,errors:j,setErrors:M,page:N,disableInvoiceSelection:P}=e,{data:F}=S({id:k?.parameters?.invoice_id||``,includeIsLocked:!1}),[I,L]=(0,C.useState)([]),[R,z]=(0,C.useState)(!0),[B,V]=(0,C.useState)(0),[H,U]=(0,C.useState)(void 0);(0,C.useEffect)(()=>{k?.parameters?.schedule?L(k.parameters.schedule):L([]),F&&D(F)},[k?.parameters?.schedule,F]),(0,C.useEffect)(()=>{if(I.length===0){z(!1),V(0);return}if(!T){if(I[0]?.is_amount??!0){let e=I.reduce((e,t)=>e+t.amount,0),t=e/.9,n=Math.max(0,t-e);z(n<=0),V(n)}else{let e=I.reduce((e,t)=>e+t.amount,0),t=Math.max(0,100-e);z(t<=0),V(t)}return}let e=I[0]?.is_amount??!0,t=T.amount,n=I.reduce((n,r)=>r.is_amount===e?n+r.amount:n+(e?r.amount*t/100:r.amount/t*100),0),r=Number(e?(t-n).toFixed(2):(100-n).toFixed(0));z(r<=0),V(r)},[I,T]);let W={...k,parameters:{...k.parameters,schedule:I}},G=e=>`${e.number} (${a(e.amount,e?.client?.country_id,e?.client?.settings.currency_id)})`,K=()=>{m(-1),u(!0)},q=e=>e.is_amount?a(e.amount,``,``):e.amount+` %`,J=e=>{let t=I.filter((t,n)=>n!==e);if(L(t),t.length===0)z(!1),V(0);else if(T){let e=t[0]?.is_amount??!0,n=T.amount,r=t.reduce((t,r)=>r.is_amount===e?t+r.amount:t+(e?r.amount*n/100:r.amount/n*100),0),i=Number(e?(n-r).toFixed(2):(100-r).toFixed(0));z(i<=0),V(i)}else if(t[0]?.is_amount??!0){let e=t.reduce((e,t)=>e+t.amount,0),n=e/.9,r=Math.max(0,n-e);z(r<=0),V(r)}else{let e=t.reduce((e,t)=>e+t.amount,0),n=Math.max(0,100-e);z(n<=0),V(n)}let n={...k.parameters,schedule:t,auto_bill:k.parameters?.auto_bill??!1};A(`parameters`,n),j?.errors[`parameters.schedule`]&&M(void 0)},Y=()=>I.length===0?new Date().toISOString().split(`T`)[0]:I[I.length-1].date,X=e=>{let t=new Date;return t.setHours(0,0,0,0),new Date(e){let n;if(n=t>=0&&tr===t?e:n):[...I,e],L(n),n.length===0)z(!1),V(0);else if(T){let e=n[0]?.is_amount??!0,t=T.amount,r=n.reduce((n,r)=>r.is_amount===e?n+r.amount:n+(e?r.amount*t/100:r.amount/t*100),0),i=Number(e?(t-r).toFixed(2):(100-r).toFixed(0));z(i<=0),V(i)}else if(n[0]?.is_amount??!0){let e=n.reduce((e,t)=>e+t.amount,0),t=e/.9,r=Math.max(0,t-e);z(r<=0),V(r)}else{let e=n.reduce((e,t)=>e+t.amount,0),t=Math.max(0,100-e);z(t<=0),V(t)}let r={...k.parameters,schedule:n,auto_bill:k.parameters?.auto_bill??!1};A(`parameters`,r),j?.errors[`parameters.schedule`]&&M(void 0),u(!1)};function Q(){return I[0]?.is_amount??!0?a(B,``,``)+` `+t(`remaining`):B+` % `+t(`remaining`)}return(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(d,{leftSide:t(`invoice`),children:P&&T?(0,w.jsxs)(`div`,{children:[(0,w.jsx)(`div`,{className:`flex items-center px-3 py-2 border border-gray-300 rounded-md bg-gray-50`,children:(0,w.jsx)(`span`,{className:`text-sm text-gray-700`,children:G(T)})}),j?.errors[`parameters.invoice_id`]&&(0,w.jsx)(`div`,{className:`mt-2 p-2 bg-red-50 text-red-700 rounded-md text-sm`,children:j.errors[`parameters.invoice_id`].map((e,t)=>(0,w.jsx)(`div`,{children:e},t))})]}):(0,w.jsx)(f,{endpoint:n(`/api/v1/invoices?include=client.group_settings&filter_deleted_clients=true&status=active&show_schedule=true`),onChange:e=>{e.resource&&(D(e.resource),A(`parameters.invoice_id`,e.resource.id))},inputOptions:{value:k.parameters.invoice_id||``},readonly:N===`edit`,entryOptions:{id:`id`,label:`number`,value:`id`,dropdownLabelFn:e=>G(e),inputLabelFn:e=>e?G(e):``},onDismiss:()=>A(`parameters.invoice_id`,``),errorMessage:j?.errors[`parameters.invoice_id`],sortBy:`date|desc`})}),(0,w.jsx)(d,{leftSide:t(`auto_bill`),leftSideHelp:t(`auto_bill_help`),children:(0,w.jsx)(c,{checked:k.parameters.auto_bill,onValueChange:e=>A(`parameters.auto_bill`,e)})}),(T||I.length>0)&&(0,w.jsxs)(`div`,{children:[I.length>0&&(0,w.jsxs)(w.Fragment,{children:[(0,w.jsxs)(_,{children:[(0,w.jsxs)(b,{children:[(0,w.jsx)(v,{children:t(`date`)},`date`),(0,w.jsx)(v,{children:t(`amount`)},`amount`),(0,w.jsx)(v,{children:t(`action`)},`action`)]}),(0,w.jsxs)(x,{children:[I.map((e,n)=>(0,w.jsxs)(y,{className:`border-b ${X(e.date)?`opacity-60`:``}`,children:[(0,w.jsx)(g,{width:`30%`,children:i(e.date,O)}),(0,w.jsx)(g,{children:q(e)}),(0,w.jsx)(g,{children:(0,w.jsx)(`div`,{className:``,children:(0,w.jsx)(s,{behavior:`button`,onClick:()=>J(n),disabled:X(e.date),disableWithoutIcon:!0,children:t(`remove`)})})})]},n)),!R&&(0,w.jsx)(y,{children:(0,w.jsxs)(g,{colSpan:3,className:`text-center py-3`,children:[(0,w.jsx)(s,{behavior:`button`,onClick:K,disableWithoutIcon:!0,children:t(`add`)}),j?.errors[`parameters.schedule`][0]&&(0,w.jsx)(`div`,{className:`text-red-500 text-sm mt-1`,children:j.errors[`parameters.schedule`][0]})]})})]})]}),R&&(0,w.jsxs)(`div`,{className:`mb-4 p-4 bg-green-50 text-green-700 rounded-md flex justify-center`,children:[t(`complete`),` `,Q()]}),!R&&(0,w.jsx)(`div`,{className:`mb-4 p-4 bg-orange-50 text-red-700 rounded-md flex justify-center`,children:Q()})]}),I.length===0&&T&&(0,w.jsx)(`div`,{className:`mb-4 flex justify-center`,children:(0,w.jsx)(s,{behavior:`button`,onClick:K,children:t(`schedule`)})}),j?.errors[`parameters.schedule`]&&(0,w.jsx)(`div`,{className:`mb-4 p-4 bg-red-50 text-red-700 rounded-md flex justify-center`,children:j.errors[`parameters.schedule`][0]})]}),(0,w.jsx)(E,{visible:o,setVisible:u,schedule:W,onSave:Z,scheduleIndex:p,errors:H,setErrors:U,remainingAmount:B,isFirstSchedule:I.length===0,isAmountMode:I[0]?.is_amount??!0,minDate:Y(),selectedInvoice:T})]})}export{D as t};