1 line
5.1 KiB
JavaScript
1 line
5.1 KiB
JavaScript
import{c as e,nt as t}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{n}from"./pinia-BK9B9Wwf.js";import{r}from"./validation-Duyyve7l.js";import{n as i,r as a,t as o}from"./http-CU_N-R2R.js";import{t as s}from"./catalog-DWpH1dVc.js";var c=5e3;function l(){return{id:`local`,companyId:``,companyName:``,items:[]}}function u(){return!1}function d(e){return[...new Set(e.map(e=>e.companyName).filter(Boolean))].join(`، `)}function f(e,t){return e.items.filter(e=>e.companyId===t).reduce((e,t)=>e+t.meterage,0)}var p=n(`cart`,()=>{let n=t([l()]),p=t(`local`),m=t(null),h=t(!1),g=e(()=>n.value.find(e=>e.id===p.value)??n.value[0]??null),_=e(()=>g.value?.items.reduce((e,t)=>e+t.meterage,0)??0),v=e(()=>g.value?.items.length??0),y=s(),b=e(()=>g.value?.items.length?d(g.value.items):``),x=e(()=>{let e=g.value;if(!e?.items.length)return[];let t=new Map;for(let n of e.items){let e=t.get(n.companyId);e?e.meterage+=n.meterage:t.set(n.companyId,{companyName:n.companyName||`شرکت`,meterage:n.meterage})}return[...t.entries()].map(([e,t])=>{let n=y.getCompany(e)?.maxMeteragePerInvoice??c;return{companyId:e,companyName:t.companyName,meterage:t.meterage,maxMeterage:n,remaining:Math.max(0,n-t.meterage)}})}),S=e(()=>x.value.length?x.value.reduce((e,t)=>e+t.maxMeterage,0):(m.value?y.getCompany(m.value):null)?.maxMeteragePerInvoice??c),C=e(()=>x.value.length?x.value.reduce((e,t)=>e+t.remaining,0):Math.max(0,S.value-_.value)),w=e(()=>x.value.some(e=>e.meterage>=e.maxMeterage));function T(e){let t={id:e.id,companyId:e.companyId||``,companyName:e.companyName||d(e.items),items:e.items??[],notes:e.notes};n.value=[t],p.value=t.id,t.companyId&&(m.value=t.companyId)}function E(e){n.value=[{...e,items:e.items.map(e=>({...e}))}],p.value=n.value[0].id}async function D(){if(!a()){O();return}if(u()){h.value=!1;return}h.value=!0;try{T(await i(`/carts`))}catch{O()}finally{h.value=!1}}function O(){n.value=[l()],p.value=n.value[0].id,m.value=null}function k(e){m.value=e.id,g.value&&!g.value.items.length&&(g.value.companyId=e.id,g.value.companyName=e.name)}function A(e){return k(e),g.value??l()}function j(e){return e&&k(e),g.value??l()}async function M(){if(u())return O(),g.value;try{return T(await i(`/carts`,{method:`DELETE`})),g.value}catch(e){return console.error(e),null}}function N(e,t,n,r,i,a=!1){let o=j(r),s=o.items.find(t=>t.productId===e.id),c=[...o.items];if(s){let t=c.findIndex(e=>e.id===s.id),r=i?[s.notes,i].filter(Boolean).join(` | `):s.notes,o=a?s.meterage+n:n;c[t]={...s,meterage:o,color:e.color||s.color,notes:r||void 0}}else{let a={id:`local-item-${e.id}-${Date.now()}`,productId:e.id,catalogCode:t,productName:e.name,productCode:e.code,color:e.color,meterage:n,notes:i||void 0,companyId:r.id,companyName:r.name};c.push(a)}return E({id:o.id||`local`,companyId:c[0]?.companyId||r.id,companyName:d(c)||r.name,items:c,notes:o.notes}),m.value=r.id,{success:!0}}async function P(e,t,n,a,s=!1){y.companies.length||await y.loadCompanies();let d=y.getCompany(e.companyId),p=g.value??l(),h=d?.maxMeteragePerInvoice??c,_=e.companyId?f(p,e.companyId):0,v=p.items.find(t=>t.productId===e.id),b=v?.meterage??0,x=v&&s?b+n:n,S=r(x,e,_,h,b);if(!S.valid)return{success:!1,message:S.message};if(u())return d?N(e,t,n,d,a,s):{success:!1,message:`شرکت محصول یافت نشد.`};try{let t,n=a?[v?.notes,a].filter(Boolean).join(` | `):v?.notes;return t=v?await i(`/carts/items/${v.id}`,{method:`PATCH`,body:{meterage:x,notes:n||void 0}}):await i(`/carts/items`,{method:`POST`,body:{productId:e.id,meterage:x,notes:a||void 0}}),T(t),m.value=d?.id||e.companyId||m.value,{success:!0}}catch(e){return{success:!1,message:e instanceof o?e.message:`افزودن به سبد ناموفق بود.`}}}async function F(e,t,n){if(!g.value)return{success:!1,message:`سبد خرید یافت نشد.`};let a=g.value.items.find(t=>t.id===e);if(!a)return{success:!1,message:`آیتم یافت نشد.`};let s=y.getCompany(a.companyId||n.companyId)?.maxMeteragePerInvoice??c,l=f(g.value,a.companyId),d=r(t,n,l,s,a.meterage);if(!d.valid)return{success:!1,message:d.message};if(u()){let n=g.value.items.map(n=>n.id===e?{...n,meterage:t}:n);return E({...g.value,items:n}),{success:!0}}try{return T(await i(`/carts/items/${e}`,{method:`PATCH`,body:{meterage:t}})),{success:!0}}catch(e){return{success:!1,message:e instanceof o?e.message:`بهروزرسانی متراژ ناموفق بود.`}}}async function I(e){if(u()){if(!g.value)return;let t=g.value.items.filter(t=>t.id!==e);E({...g.value,items:t});return}try{T(await i(`/carts/items/${e}`,{method:`DELETE`}))}catch(e){console.error(e)}}async function L(e){if(u()){if(!g.value)return;E({...g.value,notes:e});return}try{T(await i(`/carts/notes`,{method:`PATCH`,body:{notes:e}}))}catch(e){console.error(e)}}async function R(){if(u()){O();return}try{T(await i(`/carts`,{method:`DELETE`}))}catch{O()}}function z(){}return{carts:n,activeCartId:p,selectedCompanyId:m,syncing:h,activeCart:g,totalMeterage:_,itemCount:v,companyNamesLabel:b,companySummaries:x,maxMeterage:S,remainingCapacity:C,isFull:w,initCartForCompany:A,selectCompany:k,createNewCartForSameCompany:M,addItem:P,updateItemMeterage:F,removeItem:I,setNotes:L,clearActiveCart:R,ensureActiveCartForCartPage:z,hydrate:D,resetLocal:O}});export{p as t}; |