import{a as e}from"./rolldown-runtime-CNC7AqOf.js";import{t}from"./react-Augu_vA3.js";import{Dt as n,Hr as r,It as i,Kr as a,Pr as o,Si as s,St as c,Ur as l,V as u,Vt as d,Wt as f,Zr as p,_t as m,ci as h,dt as g,et as _,ii as v,oi as y,pt as b,q as x,qr as ee,qt as S,si as C,st as w,vn as T,zi as te,zt as E}from"./forms-CL2ODv4X.js";import{t as D}from"./useTranslation-B_YCgyrR.js";import{l as ne}from"./dist-DWDqendd.js";import{t as re}from"./jsx-runtime-CTknu7_t.js";import{n as ie}from"./Combobox-BFkUVwV6.js";import{t as ae}from"./Modal-C4GWc9Ry.js";import{n as oe,t as se}from"./useHasPermission-CRA8mdHC.js";import{r as ce}from"./StatusColorTheme-C6Iyd2V-.js";import{n as le,r as ue,s as de,t as fe,y as pe}from"./ProductForm-DkOcXaGB.js";import{t as me}from"./dist-Dg3gyr1N.js";import{t as he}from"./CustomField-CO1S-4DO.js";import{t as ge}from"./NumberInputField-DONpvZxK.js";import{a as O,c as k,i as _e,l as A,n as ve,o as j,r as ye,s as M,u as N}from"./useFormatMoney-DFCLiSuN.js";import{t as be}from"./useResolveCountry-C2h8eMhm.js";import{a as xe,c as Se,i as Ce,n as we,r as Te,s as Ee}from"./tables-B0I664bp.js";import{i as De,n as Oe,r as ke,t as Ae}from"./array-move-Cw3X803O.js";import{n as je,t as P}from"./tax-rates-combo-CLisUFxM.js";import{n as Me}from"./products-CgesPY1r.js";import{t as F}from"./inclusive-tax-N-EV5wzc.js";import{t as I}from"./useClientResolver-BIkkawS0.js";import{n as Ne}from"./index.esm-BKsqFvr_.js";var L=e(t()),R=e(b());function z(){return z=Object.assign||function(e){for(var t=1;t=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function Fe(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a=0)&&(n[i]=e[i]);return n}var B=(0,L.forwardRef)(function(e,t){var n=e.color,r=n===void 0?`currentColor`:n,i=e.size,a=i===void 0?24:i,o=Pe(e,[`color`,`size`]);return L.createElement(`svg`,z({ref:t,xmlns:`http://www.w3.org/2000/svg`,width:a,height:a,viewBox:`0 0 24 24`,fill:`none`,stroke:r,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`},o),L.createElement(`line`,{x1:`21`,y1:`10`,x2:`3`,y2:`10`}),L.createElement(`line`,{x1:`21`,y1:`6`,x2:`3`,y2:`6`}),L.createElement(`line`,{x1:`21`,y1:`14`,x2:`3`,y2:`14`}),L.createElement(`line`,{x1:`21`,y1:`18`,x2:`3`,y2:`18`}))});B.propTypes={color:R.default.string,size:R.default.oneOfType([R.default.string,R.default.number])},B.displayName=`AlignJustify`;function V(){return V=Object.assign||function(e){for(var t=1;t=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function Le(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a=0)&&(n[i]=e[i]);return n}var H=(0,L.forwardRef)(function(e,t){var n=e.color,r=n===void 0?`currentColor`:n,i=e.size,a=i===void 0?24:i,o=Ie(e,[`color`,`size`]);return L.createElement(`svg`,V({ref:t,xmlns:`http://www.w3.org/2000/svg`,width:a,height:a,viewBox:`0 0 24 24`,fill:`none`,stroke:r,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`},o),L.createElement(`line`,{x1:`12`,y1:`5`,x2:`12`,y2:`19`}),L.createElement(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`}))});H.propTypes={color:R.default.string,size:R.default.oneOfType([R.default.string,R.default.number])},H.displayName=`Plus`;function U(){return U=Object.assign||function(e){for(var t=1;t=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function ze(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a=0)&&(n[i]=e[i]);return n}var W=(0,L.forwardRef)(function(e,t){var n=e.color,r=n===void 0?`currentColor`:n,i=e.size,a=i===void 0?24:i,o=Re(e,[`color`,`size`]);return L.createElement(`svg`,U({ref:t,xmlns:`http://www.w3.org/2000/svg`,width:a,height:a,viewBox:`0 0 24 24`,fill:`none`,stroke:r,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`},o),L.createElement(`polyline`,{points:`3 6 5 6 21 6`}),L.createElement(`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`}),L.createElement(`line`,{x1:`10`,y1:`11`,x2:`10`,y2:`17`}),L.createElement(`line`,{x1:`14`,y1:`11`,x2:`14`,y2:`17`}))});W.propTypes={color:R.default.string,size:R.default.oneOfType([R.default.string,R.default.number])},W.displayName=`Trash2`;function Be(e){return f([`/api/v1/tax_rates`,e],()=>E(`GET`,n(`/api/v1/tax_rates?per_page=:perPage&page=:currentPage&sort=:sort&status=:status`,{perPage:e.perPage??1e3,currentPage:e.currentPage,sort:e.sort??`id|asc`,status:e.status??`all`})),{staleTime:1/0})}function Ve(e){return f([`/api/v1/tax_rates`,e.id],()=>E(`GET`,n(`/api/v1/tax_rates/:id`,{id:e.id})),{staleTime:1/0})}function He(){let{isAdmin:e}=se();return f([`/api/v1/tax_rates`,`create`],()=>E(`GET`,n(`/api/v1/tax_rates/create`)).then(e=>e.data.data),{staleTime:1/0,enabled:e})}function Ue(){return(e,t)=>{T.processing(),E(`POST`,n(`/api/v1/tax_rates/bulk`),{action:t,ids:[e]}).then(()=>{T.success(`${t}d_tax_rate`),d([`tax_rates`])})}}var G=e(g(),1),K=e(re(),1);function q({children:e,className:t}){return(0,K.jsx)(`div`,{className:(0,G.default)(`inline-flex items-center space-x-2`,t),children:e})}function We({color:e=`#000`,filledColor:t=`#000`,size:n=`1.2rem`}){return(0,K.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,xmlnsXlink:`http://www.w3.org/1999/xlink`,x:`0px`,y:`0px`,style:{width:n,height:n},viewBox:`0 0 18 18`,children:[(0,K.jsx)(`path`,{d:`M6.75 15.25L14.25 15.25C15.3546 15.25 16.25 14.3546 16.25 13.25V7.75C16.25 6.64543 15.3546 5.75 14.25 5.75L6.75 5.75C5.64543 5.75 4.75 6.64543 4.75 7.75L4.75 13.25C4.75 14.3546 5.64543 15.25 6.75 15.25Z`,fill:t,"fill-opacity":`0.3`,"data-color":`color-2`,"data-stroke":`none`}),(0,K.jsx)(`path`,{d:`M4.75 12.25H3.75C2.645 12.25 1.75 11.355 1.75 10.25V4.75C1.75 3.645 2.645 2.75 3.75 2.75H11.25C12.355 2.75 13.25 3.645 13.25 4.75V5.75`,stroke:e,"stroke-width":`1.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`,fill:`none`}),(0,K.jsx)(`path`,{d:`M6.75 15.25L14.25 15.25C15.3546 15.25 16.25 14.3546 16.25 13.25V7.75C16.25 6.64543 15.3546 5.75 14.25 5.75L6.75 5.75C5.64543 5.75 4.75 6.64543 4.75 7.75L4.75 13.25C4.75 14.3546 5.64543 15.25 6.75 15.25Z`,stroke:e,"stroke-width":`1.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`,fill:`none`})]})}var Ge={item:`product_key`,service:`product_key`,description:`notes`,unit_cost:`cost`,rate:`cost`,hours:`quantity`};function Ke(e,t=`.`){let[n,r]=e.split(t);return{resource:n,property:r}}function qe(e){let{property:t}=Ke(e);return Ge[t]||t}function Je(e){let t=s(),n=ve(),r=I(),i=e.resource;return async(a,o,s)=>{let c={...i.line_items[a]};if(c.product_key=s?.product_key||o,!s)return e.onChange(a,c);let l=s?.cost>0&&e.relationType===`vendor_id`?s?.cost:s?.price||0;return t.fill_products&&(t?.enable_product_quantity?c.quantity=t?.default_quantity?1:s?.quantity??1:c.quantity=1,i.client_id?await(`client`in i&&i.client?Promise.resolve(i.client):r.find(i.client_id).catch(()=>null)).then(e=>{if(!e){c.cost=l;return}let r=e.settings.currency_id;if(t.convert_products&&r!==t.settings.currency_id){let e=n(r),i=n(t.settings.currency_id);e&&i&&(c.cost=l*(e.exchange_rate/i.exchange_rate))}else c.cost=l}):c.cost=l),s||(c.notes=``),e.type==`product`&&s?.notes&&t.fill_products&&(c.notes=s?.notes),e.type==`task`&&s?.notes&&!c.notes&&(c.notes=s.notes),c.tax_name1=s?.tax_name1||``,c.tax_name2=s?.tax_name2||``,c.tax_name3=s?.tax_name3||``,c.tax_rate1=s?.tax_rate1||0,c.tax_rate2=s?.tax_rate2||0,c.tax_rate3=s?.tax_rate3||0,c.custom_value1=s?.custom_value1||``,c.custom_value2=s?.custom_value2||``,c.custom_value3=s?.custom_value3||``,c.custom_value4=s?.custom_value4||``,c.tax_id=s?.tax_id||`1`,c.product_cost=s?.cost,c.income_account_id=s?.income_account_id||``,e.onChange(a,c)}}function J(){let e=S();return{find:t=>e.fetchQuery([`/api/v1/vendors`,t],()=>E(`GET`,n(`/api/v1/vendors/:id`,{id:t})).then(e=>e.data.data),{staleTime:1/0})}}function Ye(){let e=c();return{find:t=>e?Promise.resolve(e.data?.currencies.find(e=>e.id===t)):Promise.resolve(void 0)}}function Xe(){let e=c();return{find:t=>e?Promise.resolve(e.data?.countries.find(e=>e.id===t)):Promise.resolve(void 0)}}function Ze(e){let t=s(),n=Ye(),r=Xe(),i=J(),a=I(),[o,c]=(0,L.useState)(``),[l,u]=(0,L.useState)(``),{resource:d,relationType:f}=e,[p,m]=(0,L.useState)(),[h,g]=(0,L.useState)(),[_,v]=(0,L.useState)();return(0,L.useEffect)(()=>{o&&f===`client_id`&&(d&&`client`in d&&d.client?v(d.client):a.find(o).then(e=>v(e)).catch(()=>{})),l&&f===`vendor_id`&&(d&&`vendor`in d&&d.vendor?v(d.vendor):i.find(l).then(e=>v(e)).catch(()=>{}))},[o,l]),(0,L.useEffect)(()=>{d?.vendor_id&&u(d.vendor_id),d?.client_id&&c(d.client_id)},[d?.client_id,d?.vendor_id]),(0,L.useEffect)(()=>{if(f===`client_id`){let e=_;n.find(e?.settings.currency_id||t?.settings.currency_id).then(e=>g(e)),r.find(e?.country_id||t?.settings.country_id).then(e=>m(e))}if(f===`vendor_id`){let e=_;n.find(e?.currency_id||t?.settings.currency_id).then(e=>g(e)),r.find(e?.country_id||t?.settings.country_id).then(e=>m(e))}},[_]),e=>h&&p?ye.formatMoney(isNaN(Number(e))?0:e,h,p):e}function Qe(e,t){let n=s(),r=I(),i=J(),a=Ye(),o=be();return async(s,c)=>{let l;return s.length>=1&&c===`client_id`?await(t&&typeof t==`object`&&t&&`client`in t&&t.client?Promise.resolve(t.client):r.find(s).catch(()=>null)).then(async t=>{if(!t){await a.find(n.settings?.currency_id).then(t=>{let r=o(n.settings.country_id),i={thousandSeparator:r?.thousand_separator||t?.thousand_separator||`,`,decimalSeparator:r?.decimal_separator||t?.decimal_separator||`.`,precision:t?.precision||2};e?e(i):l=i});return}await a.find(t.settings.currency_id||n.settings?.currency_id).then(t=>{let r=o(n.settings.country_id),i={thousandSeparator:r?.thousand_separator||t?.thousand_separator||`,`,decimalSeparator:r?.decimal_separator||t?.decimal_separator||`.`,precision:t?.precision||2};e?e(i):l=i})}):s.length>=1&&c===`vendor_id`?await(t&&typeof t==`object`&&t&&`vendor`in t&&t.vendor?Promise.resolve(t.vendor):i.find(s).catch(()=>null)).then(async t=>{if(!t){await a.find(n.settings?.currency_id).then(t=>{let r=o(n.settings.country_id),i={thousandSeparator:r?.thousand_separator||t?.thousand_separator||`,`,decimalSeparator:r?.decimal_separator||t?.decimal_separator||`.`,precision:t?.precision||2};e?e(i):l=i});return}await a.find(t.currency_id||n.settings?.currency_id).then(t=>{let r=o(n.settings.country_id),i={thousandSeparator:r?.thousand_separator||t?.thousand_separator||`,`,decimalSeparator:r?.decimal_separator||t?.decimal_separator||`.`,precision:t?.precision||2};e?e(i):l=i})}):await a.find(n.settings?.currency_id).then(t=>{let r=o(n.settings.country_id),i={thousandSeparator:r?.thousand_separator||t?.thousand_separator||`,`,decimalSeparator:r?.decimal_separator||t?.decimal_separator||`.`,precision:t?.precision||2};e?e(i):l=i}),l}}function $e(e){let[t]=D(),{data:r}=Me(),[i,a]=(0,L.useState)(),[o,s]=(0,L.useState)(!1),[c,l]=(0,L.useState)(),u=de({setErrors:a,setProduct:l});return(0,L.useEffect)(()=>{r&&l(r)},[r]),(0,K.jsxs)(ae,{title:t(`new_product`),visible:e.isModalOpen,onClose:e.setIsModalOpen,backgroundColor:`gray`,size:`small`,overflowVisible:!0,children:[c&&(0,K.jsx)(fe,{product:c,errors:i,handleChange:u}),(0,K.jsx)(w,{type:`primary`,behavior:`button`,onClick:()=>{o||(s(!0),E(`POST`,n(`/api/v1/products`),c).then(t=>{T.success(`created_product`),d([`products`]),setTimeout(()=>{e.onProductCreated?.(t.data.data)},200),e.setIsModalOpen(!1)}).catch(e=>{e.response?.status===422&&(a(e.response.data),T.dismiss())}).finally(()=>s(!1)))},children:t(`save`)})]})}function et(e){let[t]=D(),[r,a]=(0,L.useState)(!1),o=m(),c=s(),l=oe();return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)($e,{setIsModalOpen:a,isModalOpen:r,onProductCreated:e.onProductCreated}),(0,K.jsx)(ie,{endpoint:n(`/api/v1/products?per_page=800`),inputOptions:{value:e.defaultValue??null,label:e.label},entryOptions:{id:`id`,label:`product_key`,value:`id`,searchable:`notes`,customSearchableValue:e=>[e.custom_value1,e.custom_value2,e.custom_value3,e.custom_value4].filter(Boolean).join(`,`),dropdownLabelFn:t=>(0,K.jsxs)(`div`,{className:`flex flex-col flex-1 max-w-[33rem]`,children:[(0,K.jsxs)(`div`,{className:`flex space-x-1`,children:[(0,K.jsx)(`p`,{className:`font-medium truncate`,children:t.product_key}),c?.track_inventory&&e.displayStockQuantity&&(0,K.jsxs)(`p`,{className:(0,G.default)({"text-red-700":t.in_stock_quantity<=0}),children:[`(`,i(`stock_quantity_number`,{quantity:t.in_stock_quantity}),`)`]})]}),(0,K.jsx)(`p`,{className:`text-xs font-medium truncate`,style:{color:o.$22},children:t.notes})]})},onChange:t=>e.onChange&&e.onChange(t),onInputValueChange:e.onInputValueChange,action:{label:t(`new_product`),onClick:()=>a(!0),visible:l(`create_product`)&&!e.withoutAction},onDismiss:e.onClearButtonClick,sortBy:`product_key|asc`,nullable:!0,clearInputAfterSelection:e.clearInputAfterSelection,withShadow:e.withShadow},`product_selector`),(0,K.jsx)(x,{className:`mt-2`,children:e.errorMessage})]})}function tt(e){let t=e.resource,n=y(Q);return(r,i,a)=>{n(!1);let o={...t.line_items[i]};return o[r]=a?.rate??0,o[r.replace(`rate`,`name`)]=a?.name||``,e.onChange(i,o)}}function nt({size:e=`1.2rem`,color:t=`#000`}){return(0,K.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,xmlnsXlink:`http://www.w3.org/1999/xlink`,x:`0px`,y:`0px`,style:{width:e,height:e},viewBox:`0 0 18 18`,children:[(0,K.jsx)(`circle`,{cx:`9`,cy:`8.999`,r:`1.75`,fill:t,stroke:t,strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:`1.5`,"data-color":`color-2`}),(0,K.jsx)(`path`,{d:`m15.175,7.278l-.929-.328c-.102-.261-.219-.52-.363-.77s-.31-.48-.485-.699l.18-.968c.125-.671-.187-1.349-.778-1.69l-.351-.203c-.592-.342-1.334-.273-1.853.171l-.745.637c-.56-.086-1.133-.086-1.703,0l-.745-.638c-.519-.444-1.262-.513-1.853-.171l-.351.203c-.592.341-.903,1.019-.778,1.69l.18.965c-.36.449-.646.946-.852,1.474l-.924.326c-.644.227-1.075.836-1.075,1.519v.405c0,.683.431,1.292,1.075,1.519l.929.328c.102.261.218.519.363.769s.31.48.485.7l-.181.968c-.125.671.187,1.349.778,1.69l.351.203c.592.342,1.334.273,1.853-.171l.745-.638c.559.086,1.132.086,1.701,0l.746.639c.519.444,1.262.513,1.853.171l.351-.203c.592-.342.903-1.019.778-1.69l-.18-.966c.359-.449.646-.945.851-1.473l.925-.326c.644-.227,1.075-.836,1.075-1.519v-.405c0-.683-.431-1.292-1.075-1.519h.002Z`,fill:`none`,stroke:t,strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:`1.5`})]})}var Y=te();function rt(){let e=p(),t=a(),n=y(r),[i]=D(),o=m(),s=ee(),[c,u]=(0,L.useState)(!1),[d,f]=(0,L.useState)(null),g=(0,L.useRef)([]),_=(0,L.useMemo)(()=>{if(d===null)return s;let e=(0,Y.cloneDeep)(s);for(let t of g.current)(0,Y.set)(e,t,(0,Y.cloneDeep)((0,Y.get)(d,t)));return e},[d,s]),v=(0,L.useCallback)((t,n)=>{let r=t;if(d!==null){g.current.includes(r)||(g.current=[...g.current,r]),f(e=>{if(e===null)return e;let t=(0,Y.cloneDeep)(e);return(0,Y.set)(t,r,n),t});return}e(r,n)},[d,e]),b=(0,L.useCallback)(()=>{h().get(r)!==null&&(g.current=[],f((0,Y.cloneDeep)(s)),u(!0))},[s]),x=(0,L.useCallback)(()=>{g.current=[],f(null),u(!1)},[]),S=(0,L.useCallback)(async({silent:e})=>{!e&&T.processing();let i=d,a=[...g.current],o=h().get(r),s=null;try{if(i!==null){if(a.length===0){!e&&T.success(`updated_user`),g.current=[],f(null),u(!1);return}s=(0,Y.cloneDeep)(o??i);for(let e of a)(0,Y.set)(s,e,(0,Y.cloneDeep)((0,Y.get)(i,e)));n(s)}await t(),!e&&T.success(`updated_user`),g.current=[],f(null),u(!1)}catch{s!==null&&n(l(h().get(r),s,o,a)),T.dismiss()}},[d,t,n]);return{Preferences:(0,L.useMemo)(()=>({children:e})=>(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(ae,{visible:c,onClose:x,title:i(`preferences`),overflowVisible:!0,children:[e,(0,K.jsx)(w,{onClick:()=>S({silent:!1}),children:i(`save`)})]}),(0,K.jsx)(`div`,{className:`flex items-center justify-center p-2 cursor-pointer border rounded-md shadow-sm`,onClick:b,style:{backgroundColor:o.$1,borderColor:o.$24},children:(0,K.jsx)(nt,{color:o.$3})})]}),[o.$1,o.$24,o.$3,x,c,b,S,i]),update:v,preferences:_.preferences,save:S}}function it(){let{data:e}=Be({status:[`active`],perPage:1e3});return(t,n)=>!e?.data.data||!t||!n||e?.data.data.some(e=>e.name.toLowerCase()===t.toLowerCase()&&e.rate===n)}var X=e(me(),1),at=[`discount`,`cost`,`unit_cost`,`quantity`,`rate`,`hours`],ot=[`tax_rate1`,`tax_rate2`,`tax_rate3`],st={decimalSeparator:`.`,precision:2,thousandSeparator:`,`},Z=e=>!Object.keys(e).some(t=>t!==`_id`&&t!==`type_id`&&t!==`is_amount_discount`&&e[t]);function ct(e){let[t]=D(),n=ne(),r=m(),i=s(),a=ee(),{resource:c}=e,l=it(),[d,f]=(0,L.useState)(),[p,h]=v(Q),g=e=>e.filter((t,n)=>n!==e.length-1).some(e=>Z(e));(0,L.useCallback)(t=>{let n=pe.Product;e.type===`task`&&(n=pe.Task);let r=t.filter(({type_id:e})=>e===n),i=r.length,a=r[i-1];if(i>0&&(!g(r)&&!Z(a)&&e.createItem(),g(r)&&Z(a))){let n=t.indexOf(r[i-1]);n>-1&&e.deleteLineItem(n)}},[e.resource.line_items]);let y=Je({relationType:e.relationType,resource:e.resource,type:e.type,onChange:e.onLineItemChange}),b=tt({resource:e.resource,type:e.type,onChange:e.onLineItemChange}),x=async(t,n,r)=>{h(!1),await e.onLineItemPropertyChange(t,n,r)},S=async(e,t,n)=>{h(!1);let r=(0,Y.cloneDeep)(n);n&&i&&i.enabled_item_tax_rates===0&&(r.tax_name1=``,r.tax_rate1=0,r.tax_name2=``,r.tax_rate2=0,r.tax_name3=``,r.tax_rate3=0),n&&i&&i.enabled_item_tax_rates===1&&(i.settings?.tax_name1&&!n.tax_name1&&!Number(i.enabled_tax_rates)&&(r.tax_name1=i.settings.tax_name1,r.tax_rate1=i.settings.tax_rate1),r.tax_name2=``,r.tax_rate2=0,r.tax_name3=``,r.tax_rate3=0),n&&i&&i.enabled_item_tax_rates===2&&(i.settings?.tax_name2&&!n.tax_name2&&!Number(i.enabled_tax_rates)&&(r.tax_name2=i.settings.tax_name2,r.tax_rate2=i.settings.tax_rate2),r.tax_name3=``,r.tax_rate3=0),n&&i&&i.enabled_item_tax_rates===3&&i.settings?.tax_name3&&!n.tax_name3&&!Number(i.enabled_tax_rates)&&(r.tax_name3=i.settings.tax_name3,r.tax_rate3=i.settings.tax_rate3),await y(e,t,r)},C=Ze({resource:e.resource,relationType:e.relationType}),w=Qe(f,c);(0,L.useEffect)(()=>{c[e.relationType]?w(c[e.relationType],e.relationType):f(st)},[c?.[e.relationType]]),(0,L.useEffect)(()=>{},[c?.line_items,p]);let T=ue(),{preferences:te}=rt(),E=(e,n)=>{if(i.calculate_taxes){let t=c?.line_items[n];return t.tax_id===`7`||t.tax_id===``?(0,K.jsxs)(q,{children:[(0,K.jsx)(je,{onChange:t=>t.resource&&b(e,n,t.resource),onTaxCreated:t=>b(e,n,t),defaultValue:P(c?.line_items[n],e.replace(`rate`,`name`)),onClearButtonClick:()=>b(e,n)},`${e}${c?.line_items[n][e]}`),e===`tax_rate1`?(0,K.jsx)(`button`,{type:`button`,onClick:()=>x(`tax_id`,`1`,n),children:(0,K.jsx)(Ne,{})}):null]}):(0,X.default)(T).pluck(`value`).filter(e=>e!==`7`).toArray().includes(t.tax_id)&&e===`tax_rate1`?(0,K.jsx)(q,{children:(0,K.jsx)(le,{value:t.tax_id,onChange:e=>x(`tax_id`,e.value,n)})}):null}let a=P(c?.line_items[n],e.replace(`rate`,`name`));return(0,K.jsxs)(`div`,{className:`flex flex-col items-center gap-y-2`,children:[(0,K.jsx)(je,{onChange:t=>t.resource&&b(e,n,t.resource),onTaxCreated:t=>b(e,n,t),defaultValue:P(c?.line_items[n],e.replace(`rate`,`name`)),onClearButtonClick:()=>b(e,n)},`${e}${c?.line_items[n][e]}`),a&&!l(a.split(`||`)[0],parseFloat(a.split(`||`)[1]))&&(0,K.jsxs)(`div`,{className:`flex items-center gap-x-2 self-start max-w-full`,children:[(0,K.jsx)(`div`,{children:(0,K.jsx)(_,{element:o,size:20,color:`orange`})}),(0,K.jsxs)(`div`,{className:`flex gap-x-1 items-center text-sm font-medium text-wrap flex-wrap`,children:[(0,K.jsxs)(`span`,{style:{color:r.$3},children:[a.split(`||`)[0],` `,a.split(`||`)[1],`%`]}),(0,K.jsx)(`span`,{className:`underline cursor-pointer`,onClick:t=>{t.preventDefault(),t.stopPropagation(),b(e,n)},children:t(`remove`)})]})]})]})};return(e,t)=>{let r=qe(e);if(r===`net_cost`)return null;if(r===`product_key`)return(0,K.jsx)(et,{onChange:e=>S(t,e.label,e.resource),className:`w-auto`,defaultValue:c?.line_items[t][r],onProductCreated:e=>e&&S(t,e.product_key,e),clearButton:!0,onInputValueChange:e=>x(`product_key`,e,t),onClearButtonClick:()=>y(t,``,null),displayStockQuantity:n.pathname.startsWith(`/invoices`)},`${r}${c?.line_items[t][r]}`);if(r===`notes`)return(0,K.jsx)(u,{id:r,element:`textarea`,value:c?.line_items[t][r],onChange:e=>x(r,e.target.value,t),style:{marginTop:`4px`},textareaRows:te.auto_expand_product_table_notes?1:3},`${r}${t}`);if(at.includes(r))return d&&(0,K.jsx)(ge,{precision:r===`quantity`?6:a?.number_precision&&a?.number_precision>0&&a?.number_precision<=100?a.number_precision:d?.precision||2,id:r,value:c?.line_items[t][r]||``,className:`auto`,onValueChange:e=>{x(r,isNaN(parseFloat(e))?0:parseFloat(e),t)}});if(r===`gross_line_total`||r===`tax_amount`)return C(c?.line_items[t][r]??0);if(ot.includes(r))return E(r,t);if([`line_total`].includes(r))return C(c?.line_items[t][r]);if([`product1`,`product2`,`product3`,`product4`].includes(r)){let e=r.replace(`product`,`custom_value`);return i.custom_fields?.[r]?(0,K.jsx)(he,{field:r,defaultValue:c?.line_items[t][e],value:i.custom_fields?.[r],onValueChange:n=>x(e,n,t),fieldOnly:!0,selectMenuPosition:`fixed`}):(0,K.jsx)(u,{id:r,value:c?.line_items[t][r],onChange:e=>x(r,e.target.value,t)})}if([`task1`,`task2`,`task3`,`task4`].includes(r)){let e=r.replace(`task`,`custom_value`);return i.custom_fields?.[r]?(0,K.jsx)(he,{field:r,defaultValue:c?.line_items[t][e],value:i.custom_fields?.[r],onValueChange:n=>x(e,n,t),fieldOnly:!0,selectMenuPosition:`fixed`}):(0,K.jsx)(u,{id:r,value:c?.line_items[t][r],onChange:e=>x(r,e.target.value,t)})}return(0,K.jsx)(u,{id:r,value:c?.line_items[t][r],onChange:e=>x(r,e.target.value,t)})}}function lt(e){let[t]=D(),n=s(),{type:r}=e||{},i=r===`product`||!r?[`product1`,`product2`,`product3`,`product4`]:[`task1`,`task2`,`task3`,`task4`],a={"$product.tax_rate1":t(`tax_rate1`),"$product.tax_rate2":t(`tax_rate2`),"$product.tax_rate3":t(`tax_rate3`)};return(e,r=`.`)=>{if(Object.hasOwn(a,e))return a[e];let{property:o}=Ke(e,r);if(i.includes(o)){let e=n.custom_fields?.[o];if(e)return e.split(`|`)[0]}return t(o||e)}}function ut(e){let t=e.resource;return n=>{if(n.source.index===n.destination?.index)return;let r=t?Ae(t.line_items,n.source.index,n.destination?.index):[];return e.onSort(r)}}function dt(e){return{product_key:`15%`,notes:`30%`,cost:`10%`,quantity:`10%`,line_total:`5%`,discount:`10%`,tax_rate1:`12%`,tax_rate2:`12%`,tax_rate3:`12%`,tax_amount:`5%`,gross_line_total:`10%`,product1:`10%`,product2:`10%`,product3:`10%`,product4:`10%`,task1:`10%`,task2:`10%`,task3:`10%`,task4:`10%`}[qe(e)]||``}var Q=C(void 0);function ft(e){let[t]=D(),n=m(),r=ce(),{resource:i,items:a,columns:o,relationType:s}=e,c=y(Q),l=lt({type:e.type}),u=ct({type:e.type,resource:e.resource,onLineItemChange:e.onLineItemChange,onLineItemPropertyChange:e.onLineItemPropertyChange,relationType:s,createItem:e.onCreateItemClick,deleteLineItem:e.onDeleteRowClick}),d=ut({resource:e.resource,onSort:e.onSort}),f=()=>a.some(e=>Z(e)),p=e=>i.line_items.indexOf(e);return(0,K.jsxs)(Se,{children:[(0,K.jsx)(Te,{backgroundColor:r.$5,children:o.map((e,t)=>(0,K.jsx)(Ce,{textColor:r.$6,children:l(e)},t))}),(0,K.jsx)(ke,{onDragEnd:d,children:(0,K.jsx)(Oe,{droppableId:`product-table`,children:r=>(0,K.jsxs)(Ee,{...r.droppableProps,innerRef:r.innerRef,children:[a.map((t,r)=>(0,K.jsx)(De,{draggableId:p(t).toString(),index:p(t),children:a=>(0,K.jsx)(we,{innerRef:a.innerRef,id:`line-item-${p(t)}`,tabIndex:r+1,...a.draggableProps,children:o.map((r,o,{length:s})=>(0,K.jsxs)(xe,{width:dt(r),children:[s-1!==o&&(0,K.jsxs)(`div`,{className:(0,G.default)({"flex justify-between items-center space-x-3":o===0}),children:[o===0?(0,K.jsx)(`button`,{...a.dragHandleProps,onMouseEnter:e=>e.currentTarget.focus(),children:(0,K.jsx)(B,{size:18})}):null,u(r,p(t))]}),s-1===o&&(0,K.jsxs)(`div`,{className:`flex justify-between items-center`,children:[u(r,p(t)),i&&(0,K.jsx)(`button`,{style:{color:n.$3},className:`ml-2 text-gray-600 hover:text-red-600`,onClick:()=>{c(!0),e.onDeleteRowClick(p(t))},children:(0,K.jsx)(W,{size:18})})]})]},o))},p(t))},p(t))),r.placeholder,(0,K.jsx)(we,{className:`bg-slate-100 hover:bg-slate-200`,children:(0,K.jsx)(xe,{colSpan:100,children:(0,K.jsxs)(`button`,{onClick:()=>!f()&&e.onCreateItemClick(),className:`w-full py-2 inline-flex justify-center items-center space-x-2`,children:[(0,K.jsx)(H,{size:18}),(0,K.jsx)(`span`,{children:e.type===`product`?t(`add_item`):t(`add_line`)})]})})})]})})})]})}var pt=class{invoice;currency;eInvoiceType;taxCollection=(0,X.default)();lineItems=[];items=new Map;item;subTotal=0;grossSubTotal=0;totalTaxes=0;constructor(e,t,n){this.invoice=e,this.currency=t,this.eInvoiceType=n}get precision(){return M(this.currency?.precision)}get isPeppol(){return this.eInvoiceType===`PEPPOL`}async process(){return!this.invoice?.line_items||this.invoice.line_items?.length===0?this.items:(this.calculateLineItems().addPeppolSurchargeTaxes(),this)}calculateLineItems(){return this.invoice.line_items.map(e=>{this.item=e,this.cleanLineItem().sumLineItem().setDiscount().calculateTaxes().push()}),this}cleanLineItem(){return this}sumLineItem(){return this.item.line_total=k(this.item.cost*this.item.quantity+4e-15,2),this}setDiscount(){if(this.invoice.is_amount_discount){let e=k(this.item.discount,this.precision);this.item.line_total=k(this.item.line_total-e,2)}else{let e=N(this.item.line_total,this.item.discount),t=k(this.item.line_total-e,this.precision);this.item.line_total=k(t,2)}return this.item.is_amount_discount=this.invoice.is_amount_discount,this}calculateTaxes(){let e=0,t=this.item.line_total-N(this.item.line_total,this.invoice.discount),n=this.calculateAmountLineTax(this.item.tax_rate1,t);e+=n,this.item.tax_name1.length>1&&this.groupTax(this.item.tax_name1,this.item.tax_rate1,n,t,this.item.tax_id);let r=this.calculateAmountLineTax(this.item.tax_rate2,t);e+=r,this.item.tax_name2.length>1&&this.groupTax(this.item.tax_name2,this.item.tax_rate2,r,t,this.item.tax_id);let i=this.calculateAmountLineTax(this.item.tax_rate3,t);e+=i,this.item.tax_name3.length>1&&this.groupTax(this.item.tax_name3,this.item.tax_rate3,i,t,this.item.tax_id);let a=isNaN(e)?0:k(e,this.precision);return this.item.gross_line_total=k(this.item.line_total+a,this.precision),this.item.tax_amount=a,this.item.net_cost=this.item.cost,this.totalTaxes+=a,this}groupTax(e,t,n,r=0,i=``){if(e.length===0)return;let a={key:A(e,t),total:n,name:O(e,t),tax_id:i,tax_rate:t,base_amount:r};this.taxCollection.push(a)}calculateAmountLineTax(e,t){let n=Number(((e??0)/100*t).toPrecision(15));return this.isPeppol?n:k(n,2)}push(){return this.subTotal+=k(this.item.line_total+4e-15,this.precision),this.subTotal=k(this.subTotal,this.precision),this.grossSubTotal+=this.item.gross_line_total,this.lineItems.push(this.item),this}calculateTaxesWithAmountDiscount(){return this.taxCollection=(0,X.default)(),this.totalTaxes=0,this.lineItems.map((e,t)=>{let n=0;if(this.item=e,e.line_total!=0){let e=this.subTotal===0?this.item.line_total:this.item.line_total-this.item.line_total*(this.invoice.discount/this.subTotal),t=this.calculateAmountLineTax(this.item.tax_rate1,e);n+=t,(this.item.tax_name1.length>1||t!==0)&&this.groupTax(this.item.tax_name1,this.item.tax_rate1,t,e,this.item.tax_id);let r=this.calculateAmountLineTax(this.item.tax_rate2,e);n+=r,(this.item.tax_name2.length>1||r!==0)&&this.groupTax(this.item.tax_name2,this.item.tax_rate2,r,e,this.item.tax_id);let i=this.calculateAmountLineTax(this.item.tax_rate3,e);n+=i,(this.item.tax_name3.length>1||i!==0)&&this.groupTax(this.item.tax_name3,this.item.tax_rate3,i,e,this.item.tax_id);let a=isNaN(n)?0:k(n,this.precision);this.item.gross_line_total=k(this.item.line_total+a,this.precision),this.item.tax_amount=a,this.item.net_cost=this.item.cost}this.lineItems[t]=this.item,this.totalTaxes+=isNaN(n)?0:k(n,this.precision)}),this.addPeppolSurchargeTaxes(),this}addPeppolSurchargeTaxes(){if(!this.isPeppol)return this;let e=this.getSurchargeValues().reduce((e,t)=>e+t,0);return e===0||this.getUniqueLineTaxes().forEach(({name:t,rate:n,taxId:r})=>{let i=this.getSurchargeValues().reduce((e,t)=>e+j(t,n,2),0);i>0&&(this.groupTax(t,n,i,e,r),this.totalTaxes+=i)}),this}getSurchargeValues(){return[this.invoice.custom_surcharge1,this.invoice.custom_surcharge2,this.invoice.custom_surcharge3,this.invoice.custom_surcharge4].map(e=>e||0)}getUniqueLineTaxes(){let e=[];this.lineItems.forEach(t=>{[{name:t.tax_name1,rate:t.tax_rate1},{name:t.tax_name2,rate:t.tax_rate2},{name:t.tax_name3,rate:t.tax_rate3}].forEach(({name:n,rate:r})=>{n.length>1&&e.push({name:n,rate:r,taxId:t.tax_id})})});let t=new Set;return e.filter(({name:e,rate:n})=>{let r=A(e,n);return t.has(r)?!1:(t.add(r),!0)})}},$=class{static formatValue(e,t){return _e(e,t,`.`,``)}},mt=class{invoice;currency;eInvoiceType;taxMap=(0,X.default)();totalTaxMap=[];totalDiscount=0;total=0;totalTaxes=0;totalCustomValues=0;subTotal=0;constructor(e,t,n){this.invoice=e,this.currency=t,this.eInvoiceType=n,this.invoiceItems=new pt(this.invoice,this.currency,this.eInvoiceType)}get precision(){return M(this.currency?.precision)}get isPeppol(){return this.eInvoiceType===`PEPPOL`}build(){return this.calculateLineItems().calculateDiscount().calculateInvoiceTaxes().calculateCustomValues().setTaxMap().calculateTotals().calculateBalance().calculatePartial(),this}getTaxMap(){return this.taxMap}getTotalTaxMap(){return(0,X.default)(this.totalTaxMap)}getSubTotal(){return this.subTotal}getTotalDiscount(){return this.totalDiscount}getTotalTaxes(){return this.totalTaxes}getTotal(){return this.total}getTotalSurcharges(){return this.totalCustomValues}getSubtotalWithSurcharges(){return this.getSubTotal()+this.getTotalSurcharges()}getNetSubtotal(){return this.getSubTotal()-this.getTotalDiscount()}calculateLineItems(){return this.invoiceItems.process(),this.invoice.line_items=this.invoiceItems.lineItems,this.total=this.invoiceItems.subTotal,this.subTotal=this.invoiceItems.subTotal,this}calculateDiscount(){return this.totalDiscount=this.discount(this.invoiceItems.subTotal),this.total-=this.totalDiscount,this}calculateInvoiceTaxes(){let e=0;return this.totalTaxMap=[],[{name:this.invoice.tax_name1,rate:this.invoice.tax_rate1},{name:this.invoice.tax_name2,rate:this.invoice.tax_rate2},{name:this.invoice.tax_name3,rate:this.invoice.tax_rate3}].forEach(({name:t,rate:n})=>{if(t.length<=1)return;let r=this.taxer(this.total,n)+this.getSurchargeTaxTotalForKey(t,n);e+=r,this.totalTaxMap.push({name:O(t,n),total:r,tax_rate:n,base_amount:this.total})}),this.totalTaxes=e,this}calculateCustomValues(){return this.totalCustomValues+=this.valuer(this.invoice.custom_surcharge1),this.totalCustomValues+=this.valuer(this.invoice.custom_surcharge2),this.totalCustomValues+=this.valuer(this.invoice.custom_surcharge3),this.totalCustomValues+=this.valuer(this.invoice.custom_surcharge4),this.total+=this.totalCustomValues,this}getSurchargeTaxTotalForKey(e,t){return[{amount:this.invoice.custom_surcharge1,taxable:this.invoice.custom_surcharge_tax1},{amount:this.invoice.custom_surcharge2,taxable:this.invoice.custom_surcharge_tax2},{amount:this.invoice.custom_surcharge3,taxable:this.invoice.custom_surcharge_tax3},{amount:this.invoice.custom_surcharge4,taxable:this.invoice.custom_surcharge_tax4}].reduce((e,n)=>n.taxable?e+j(n.amount||0,t,2):e,0)}setTaxMap(){this.invoice.is_amount_discount&&(this.invoiceItems.calculateTaxesWithAmountDiscount(),this.invoice.line_items=this.invoiceItems.lineItems),this.taxMap=(0,X.default)();let e=this.invoiceItems.taxCollection;return e.pluck(`key`).unique().map(t=>{let n=e.filter(e=>e.key===t),r=n.first();if(!r)return;let i=k(n.sum(`total`),this.precision),a=n.sum(`base_amount`);this.taxMap.push({key:t,name:r.name,total:i,tax_id:r.tax_id,tax_rate:r.tax_rate,base_amount:k(a,2)}),this.totalTaxes+=i}),this}calculateTotals(){return this.total+=this.totalTaxes,this}calculateBalance(){return this.setCalculatedAttributes(),this}setCalculatedAttributes(){this.invoice.amount=parseFloat($.formatValue(this.total,this.precision));let e=this.shouldZeroBalance()?0:this.invoice.amount-(this.invoice.paid_to_date??0);return this.invoice.balance=parseFloat($.formatValue(e,this.precision)),this.invoice.total_taxes=parseFloat($.formatValue(this.totalTaxes,this.precision)),this}shouldZeroBalance(){return this.invoice.entity_type===`invoice`&&this.invoice.status_id===`5`}calculatePartial(){if(!this.invoice?.id&&this.invoice.partial&&this.invoice.balance){let e=k(this.invoice.partial,2);this.invoice.partial=Math.max(0,Math.min(e,this.invoice.balance))}return this}getBalanceDue(){return this.invoice.partial&&this.invoice.partial>0?Math.min(this.invoice.partial,this.invoice.balance):this.invoice.balance}discount(e){return this.invoice.is_amount_discount?this.invoice.discount:j(e,this.invoice.discount,2)}taxer(e,t){return j(e,t??0,2)}valuer(e){return typeof e==`number`?e:0}},ht=class{invoice;currency;eInvoiceType;taxCollection=(0,X.default)();customSurchargeNetMap=(0,X.default)();lineItems=[];items=new Map;item;subTotal=0;grossSubTotal=0;totalTaxes=0;constructor(e,t,n){this.invoice=e,this.currency=t,this.eInvoiceType=n}get precision(){return M(this.currency?.precision)}get isPeppol(){return this.eInvoiceType===`PEPPOL`}async process(){return!this.invoice?.line_items||this.invoice.line_items?.length===0?this.items:(this.calculateLineItems().addPeppolSurchargeTaxes(),this)}calculateLineItems(){return this.invoice.line_items.map(e=>{this.item=e,this.cleanLineItem().sumLineItem().setDiscount().calculateTaxes().push()}),this}cleanLineItem(){return this}sumLineItem(){return this.item.line_total=k(this.item.cost*this.item.quantity+4e-15,2),this}setDiscount(){if(this.invoice.is_amount_discount){let e=k(this.item.discount,this.precision);this.item.line_total=k(this.item.line_total-e,2)}else{let e=k(this.item.line_total*(this.item.discount/100),this.precision);this.item.line_total=k(this.item.line_total-e,2)}return this.item.is_amount_discount=this.invoice.is_amount_discount,this}calculateTaxes(){let e=this.item.line_total-N(this.item.line_total,this.invoice.discount),{net:t,tax:n,components:r}=F.backout(e,[this.item.tax_rate1,this.item.tax_rate2,this.item.tax_rate3],this.precision),[i,a,o]=r;this.item.tax_name1.length>1&&this.groupTax(this.item.tax_name1,this.item.tax_rate1,i,e,this.item.tax_id,t),this.item.tax_name2.length>1&&this.groupTax(this.item.tax_name2,this.item.tax_rate2,a,e,this.item.tax_id,t),this.item.tax_name3.length>1&&this.groupTax(this.item.tax_name3,this.item.tax_rate3,o,e,this.item.tax_id,t);let s=isNaN(n)?0:n;return this.item.gross_line_total=this.item.line_total,this.item.tax_amount=s,this.item.net_cost=this.calculateNetCost(t),this.totalTaxes+=s,this}groupTax(e,t,n,r=0,i=``,a=null){if(t>0&&r===0)return;let o=a??(t>0?k(r/(1+t/100),2):r),s={key:A(e,t),total:n,name:O(e,t),tax_id:i,tax_rate:t,base_amount:o};this.taxCollection.push(s)}calcInclusiveLineTax(e,t){return e?k(t-t/(1+e/100),2):0}calculateNetCost(e){return this.item.quantity?k(e/this.item.quantity,this.precision):this.item.cost}push(){return this.subTotal+=this.item.line_total,this.grossSubTotal+=this.item.gross_line_total,this.lineItems.push(this.item),this}calculateTaxesWithAmountDiscount(){return this.taxCollection=(0,X.default)(),this.customSurchargeNetMap=(0,X.default)(),this.totalTaxes=0,this.lineItems.map((e,t)=>{this.item=e;let n=this.subTotal===0?this.item.line_total:this.item.line_total-this.invoice.discount*(this.item.line_total/this.subTotal),{net:r,tax:i,components:a}=F.backout(n,[this.item.tax_rate1,this.item.tax_rate2,this.item.tax_rate3],this.precision),[o,s,c]=a;o!==0&&this.groupTax(this.item.tax_name1,this.item.tax_rate1,o,n,this.item.tax_id,r),s!==0&&this.groupTax(this.item.tax_name2,this.item.tax_rate2,s,n,this.item.tax_id,r),c!==0&&this.groupTax(this.item.tax_name3,this.item.tax_rate3,c,n,this.item.tax_id,r);let l=isNaN(i)?0:i;this.item.gross_line_total=this.item.line_total,this.item.tax_amount=l,this.item.net_cost=this.calculateNetCost(r),this.lineItems[t]=this.item,this.totalTaxes+=l}),this.addPeppolSurchargeTaxes(),this}getCustomSurchargeNetMap(){return this.customSurchargeNetMap}addPeppolSurchargeTaxes(){if(!this.isPeppol)return this;let e=this.getSurchargeValues().reduce((e,t)=>e+t,0);return e===0||this.getUniqueLineTaxes().forEach(({name:t,rate:n,taxId:r})=>{let i=this.getSurchargeValues().reduce((e,t)=>e+this.calcInclusiveLineTax(n,t),0),a=this.getSurchargeValues().reduce((e,t)=>e+k(t/(1+n/100),2),0);i>0&&(this.groupTax(t,n,i,e,r),this.customSurchargeNetMap.push({key:A(t,n),name:O(t,n),total:a,tax_id:r,tax_rate:n,base_amount:a}),this.totalTaxes+=i)}),this}getSurchargeValues(){return[this.invoice.custom_surcharge1,this.invoice.custom_surcharge2,this.invoice.custom_surcharge3,this.invoice.custom_surcharge4].map(e=>e||0)}getUniqueLineTaxes(){let e=[];this.lineItems.forEach(t=>{[{name:t.tax_name1,rate:t.tax_rate1},{name:t.tax_name2,rate:t.tax_rate2},{name:t.tax_name3,rate:t.tax_rate3}].forEach(({name:n,rate:r})=>{n.length>1&&e.push({name:n,rate:r,taxId:t.tax_id})})});let t=new Set;return e.filter(({name:e,rate:n})=>{let r=A(e,n);return t.has(r)?!1:(t.add(r),!0)})}},gt=class{invoice;currency;eInvoiceType;taxMap=(0,X.default)();totalTaxMap=[];totalDiscount=0;total=0;totalTaxes=0;totalCustomValues=0;subTotal=0;constructor(e,t,n){this.invoice=e,this.currency=t,this.eInvoiceType=n,this.invoiceItems=new ht(this.invoice,this.currency,this.eInvoiceType)}get precision(){return M(this.currency?.precision)}get isPeppol(){return this.eInvoiceType===`PEPPOL`}build(){return this.calculateLineItems().calculateDiscount().calculateInvoiceTaxes().calculateCustomValues().setTaxMap().calculateTotals().calculateBalance().calculatePartial(),this}calculateLineItems(){return this.invoiceItems.process(),this.invoice.line_items=this.invoiceItems.lineItems,this.total=this.invoiceItems.subTotal,this.subTotal=this.invoiceItems.subTotal,this}calculateDiscount(){return this.totalDiscount=this.discount(this.invoiceItems.subTotal),this.total-=this.totalDiscount,this}calculateInvoiceTaxes(){let e=this.total;this.totalTaxMap=[],this.invoice.discount>0&&this.invoice.is_amount_discount&&(e=k(this.subTotal-this.invoice.discount,2)),this.invoice.discount>0&&!this.invoice.is_amount_discount&&(e=k(this.subTotal-this.subTotal*(this.invoice.discount/100),2)),e+=this.getTaxableSurchargeTotal();let{net:t,components:n}=F.backout(e,[this.invoice.tax_rate1,this.invoice.tax_rate2,this.invoice.tax_rate3],2);return[{name:this.invoice.tax_name1,rate:this.invoice.tax_rate1,tax:n[0]},{name:this.invoice.tax_name2,rate:this.invoice.tax_rate2,tax:n[1]},{name:this.invoice.tax_name3,rate:this.invoice.tax_rate3,tax:n[2]}].forEach(({name:e,rate:n,tax:r})=>{e.length<=1||n<=0||(this.totalTaxes+=r,this.totalTaxMap.push({name:O(e,n),total:r,tax_rate:n,base_amount:t}))}),this}getTaxMap(){return this.taxMap}getTotalTaxMap(){return(0,X.default)(this.totalTaxMap)}getSubTotal(){return k(this.subTotal??0,2)}getTotalDiscount(){return k(this.totalDiscount??0,2)}getTotalTaxes(){return this.totalTaxes}getTotal(){return k(this.total??0,2)}getTotalSurcharges(){return this.totalCustomValues}getSubtotalWithSurcharges(){return this.getSubTotal()+this.getTotalSurcharges()}getTotalNetSurcharges(){return this.invoiceItems.getCustomSurchargeNetMap().sum(`total`)}getNetSubtotal(){return k(this.getSubTotal()-this.getTotalTaxes()-this.getTotalDiscount(),2)}calculateCustomValues(){return this.totalCustomValues+=this.valuer(this.invoice.custom_surcharge1),this.totalCustomValues+=this.valuer(this.invoice.custom_surcharge2),this.totalCustomValues+=this.valuer(this.invoice.custom_surcharge3),this.totalCustomValues+=this.valuer(this.invoice.custom_surcharge4),this.total+=this.totalCustomValues,this}getTaxableSurchargeTotal(){return[{amount:this.invoice.custom_surcharge1,taxable:this.invoice.custom_surcharge_tax1},{amount:this.invoice.custom_surcharge2,taxable:this.invoice.custom_surcharge_tax2},{amount:this.invoice.custom_surcharge3,taxable:this.invoice.custom_surcharge_tax3},{amount:this.invoice.custom_surcharge4,taxable:this.invoice.custom_surcharge_tax4}].reduce((e,t)=>!t.taxable||typeof t.amount!=`number`||t.amount<=0?e:e+t.amount,0)}setTaxMap(){this.invoice.is_amount_discount&&(this.invoiceItems.calculateTaxesWithAmountDiscount(),this.invoice.line_items=this.invoiceItems.lineItems),this.taxMap=(0,X.default)();let e=this.invoiceItems.taxCollection;return e.pluck(`key`).unique().map(t=>{let n=e.filter(e=>e.key===t),r=n.first();if(!r)return;let i=n.sum(`total`),a=n.sum(`base_amount`);this.taxMap.push({key:t,name:r.name,total:i,tax_id:r.tax_id,tax_rate:r.tax_rate,base_amount:k(a,2)}),this.totalTaxes+=i}),this}calculateTotals(){return this}calculateBalance(){return this.setCalculatedAttributes(),this}setCalculatedAttributes(){this.invoice.amount=parseFloat($.formatValue(this.getTotal(),this.precision));let e=this.shouldZeroBalance()?0:this.invoice.amount-(this.invoice.paid_to_date??0);return this.invoice.balance=parseFloat($.formatValue(e,this.precision)),this.invoice.total_taxes=this.totalTaxes,this}shouldZeroBalance(){return this.invoice.entity_type===`invoice`&&this.invoice.status_id===`5`}calculatePartial(){if(!this.invoice?.id&&this.invoice.partial&&this.invoice.balance){let e=k(this.invoice.partial,2);this.invoice.partial=Math.max(0,Math.min(e,this.invoice.balance))}return this}getBalanceDue(){return this.invoice.partial&&this.invoice.partial>0?Math.min(this.invoice.partial,this.invoice.balance):this.invoice.balance}discount(e){return this.invoice.is_amount_discount?this.invoice.discount:j(e,this.invoice.discount,2)}valuer(e){return typeof e==`number`?e:0}};export{Ve as _,lt as a,nt as c,Ze as d,J as f,Ue as g,He as h,Q as i,et as l,q as m,mt as n,it as o,We as p,ft as r,rt as s,gt as t,Qe as u,Be as v};