PageSourceSearch

https://app.autohub.io/assets/DeductionsPage-BsVV7aHt.js

js autohub.io collected 2026-10-02 15:04:00 UTC 6,891 bytes, 1 lines download raw bytes

1import{R as k,r as p,j as l,B as $,Q as v,U as h,S as M}from"./forest_icon-CvJASXrg.js";import{j as b,k as E,l as P,h as F,m as z,n as C,d as w,U as L,i as T,o as U}from"./app-BrHKfpbA.js";import{g as Q,p as R}from"./useModal-CGpo7Prk.js";import{T as N}from"./Table-C5mf0LFa.js";import{N as q}from"./NumberInput-rPJ0fvoi.js";import{z as y}from"./external-BH87znlv.js";import{S as V}from"./SearchInput-BItROJ-5.js";import{S as A}from"./StoreSelect-DaXewACf.js";import{u as B}from"./useDebounce-BP25w8zO.js";import"./AppraisalState-Cf03LP2L.js";import"./ArrowUpward-Cdec364a.js";import"./Tag-DxIz4rv7.js";import"./Autocomplete-Bz1QljEN.js";import"./Chip-CZpjKPiR.js";(function(){try{var a=typeof window!="undefined"?window:typeof global!="undefined"?global:typeof globalThis!="undefined"?globalThis:typeof self!="undefined"?self:{};a.SENTRY_RELEASE={id:"2.15.0"};var e=new a.Error().stack;e&&(a._sentryDebugIds=a._sentryDebugIds||{},a._sentryDebugIds[e]="96f92646-20ef-4f84-80c5-1d0a8a9716e0",a._sentryDebugIdIdentifier="sentry-dbid-96f92646-20ef-4f84-80c5-1d0a8a9716e0")}catch(i){}})();const H=a=>Q(`stores/${a}/deductions`),O=a=>{const e=b();return E({queryKey:["deductions",e],queryFn:()=>H(e||""),select:i=>({customDeductions:i.customDeductions,defaultDeductions:i.defaultDeductions.sort((c,u)=>c.type!==u.type?c.type.localeCompare(u.type):c.primaryKey!==u.primaryKey?c.primaryKey.localeCompare(u.primaryKey):c.secondaryKey.localeCompare(u.secondaryKey)).filter(c=>c.primaryKey!=="Other"&&c.secondaryKey!=="Other"&&c.maximum!==0)}),...a})};y.array(y.object({_id:y.string(),primaryKey:y.string(),secondaryKey:y.string(),type:y.string(),adjustmentPerc:y.number().optional(),maximum:y.number().optional(),minimum:y.number().optional()}));const G=(a,e)=>R(`stores/${a}/deductions`,{customDeductions:e}),Y=a=>{const e=b(),i=P(),c=F();return z({mutationFn:u=>G(e||"",u),...a,onMutate:async u=>{const d=i.getQueryData(["deductions",e]);if(!d)return;const t=u.reduce((r,s)=>{const o=d.defaultDeductions.find(n=>n._id===s._id);if(o&&s.adjustmentPerc===o.adjustmentPerc&&s.minimum===o.minimum&&s.maximum===o.maximum)return r.filter(n=>n._id!==s._id);const m=r.findIndex(n=>n._id===s._id);return m!==-1?r.map((n,g)=>g===m?{...n,...s}:n):[...r,{...s}]},d.customDeductions);i.setQueryData(["deductions",e],{...d,customDeductions:[...t]})},onSuccess:(u,d,t,r)=>{var s;(s=a==null?void 0:a.onSuccess)==null||s.call(a,u,d,t,r)},onError:u=>{c.apiError(u,"Error updating deductions")}})},j=k.memo(a=>{var g;const{data:e,field:i,valueFormatter:c}=a,u=P(),d=b(),t=Y({onSettled:()=>{s===e[i].default&&o(null)}}),r=e[i].custom===e[i].default?null:(g=e[i].custom)!=null?g:null;p.useEffect(()=>{o(r)},[r]);const[s,o]=p.useState(r),m=f=>{o(f)},n=()=>{var x,D,K,_;const f=((x=u.getQueryData(["deductions",d]))==null?void 0:x.customDeductions)||[];if(s===null&&e[i].custom===void 0||s===null&&e[i].custom===e[i].default)return;if(s===e[i].custom)return e[i].custom===e[i].default?o(null):void 0;const S=f.filter(I=>I._id!==e._id);t.mutate([...S,{...e,minimum:(D=e.minimum.custom)!=null?D:e.minimum.default,maximum:(K=e.maximum.custom)!=null?K:e.maximum.default,adjustmentPerc:(_=e.adjustmentPerc.custom)!=null?_:e.adjustmentPerc.default,[i]:s===null?e[i].default:s}])};return l.jsx(q,{size:"small",variant:"filled",disabled:t.isPending,slotProps:{input:{endAdornment:t.isPending&&l.jsx($,{sx:{display:"flex"},children:l.jsx(v,{size:"14px"})})}},value:s,placeholder:c(e[i].default),onChange:m,onBlur:n,valueFormatter:f=>c(f)})}),J=a=>{const{data:e,isLoading:i}=a,c=p.useMemo(()=>e==null?void 0:e.defaultDeductions.map(t=>{const{_id:r,type:s,primaryKey:o,secondaryKey:m}=t,n=e.customDeductions.find(f=>f._id===t._id),g=f=>{const{adjustmentPerc:S,minimum:x,maximum:D}=n||t;return Math.round(Math.min(Math.max(f*(S/100),x),D))};return{_id:r,primaryKey:o,secondaryKey:m,type:s,adjustmentPerc:{custom:n==null?void 0:n.adjustmentPerc,default:t.adjustmentPerc},minimum:{custom:n==null?void 0:n.minimum,default:t.minimum},maximum:{custom:n==null?void 0:n.maximum,default:t.maximum},sim5k:g(5e3),sim15k:g(15e3),sim40k:g(4e4)}}),[e==null?void 0:e.customDeductions,e==null?void 0:e.defaultDeductions])||[],u=p.useMemo(()=>[{accessorKey:"_id",header:"Vehicle Issue",size:390,enableSorting:!0,sortingFn:(t,r)=>{const s=`${t.original.primaryKey} ${t.original.secondaryKey}`,o=`${r.original.primaryKey} ${r.original.secondaryKey}`;return s.localeCompare(o)},cell:({row:t})=>`${t.original.primaryKey} ${t.original.secondaryKey}`}
1,{accessorKey:"adjustmentPerc",header:"% car value",size:160,enableSorting:!0,sortingFn:(t,r)=>{var m,n;const s=t.original.adjustmentPerc,o=r.original.adjustmentPerc;return((m=s.custom)!=null?m:s.default)-((n=o.custom)!=null?n:o.default)},cell:({row:t})=>l.jsx(j,{valueFormatter:r=>r?`${r}%`:"",field:"adjustmentPerc",data:t.original})},{accessorKey:"minimum",header:"Min Deduction",size:160,enableSorting:!0,sortingFn:(t,r)=>{var m,n;const s=t.original.minimum,o=r.original.minimum;return((m=s.custom)!=null?m:s.default)-((n=o.custom)!=null?n:o.default)},cell:({row:t})=>l.jsx(j,{valueFormatter:h,field:"minimum",data:t.original})},{accessorKey:"maximum",header:"Max Deduction",size:160,enableSorting:!0,sortingFn:(t,r)=>{var m,n;const s=t.original.maximum,o=r.original.maximum;return((m=s.custom)!=null?m:s.default)-((n=o.custom)!=null?n:o.default)},cell:({row:t})=>l.jsx(j,{valueFormatter:h,field:"maximum",data:t.original})},{accessorKey:"sim5k",header:"$5k car",size:140,enableSorting:!0,cell:({getValue:t})=>h(t())},{accessorKey:"sim15k",header:"$15k car",size:140,enableSorting:!0,cell:({getValue:t})=>h(t())},{accessorKey:"sim40k",header:"$40k car",size:140,enableSorting:!0,cell:({getValue:t})=>h(t())}],[]),d=p.useCallback(t=>t._id,[]);return l.jsx(N,{data:c,columns:u,loading:i,getRowId:d,rowHeight:36})},W=a=>{const{onSearchChange:e}=a,{data:i}=C(),c=w(),[u,d]=p.useState(""),t=B(u,200);p.useEffect(()=>{e(t)},[t,e]);const r=s=>{c(`/stores/${s}/deductions`)};return i?l.jsxs(M,{spacing:1.5,direction:"row",sx:{alignItems:"center"},children:[l.jsx(A,{filters:{role:[L.Leader]},onChange:r,value:i._id}),l.jsx(V,{sx:{width:200},value:u,onChange:s=>d(s),placeholder:"Search issue",type:"text"})]}):null},le=()=>{var t,r,s,o;const a=O(),{data:e}=C(),[i,c]=p.useState(""),u=((t=a.data)==null?void 0:t.defaultDeductions.filter(m=>m.primaryKey.toLowerCase().includes(i)||m.secondaryKey.toLowerCase().includes(i)))||[],d=(s=(r=e==null?void 0:e.settingsUpdated)==null?void 0:r.deductions)!=null&&s.date?`Last modification on ${T(e.settingsUpdated.deductions.date).format("MM/DD hh:mm A")} by ${e.settingsUpdated.deductions.user||"N/A"}`:null;return l.jsx(U,{title:"Deductions",backgroundColor:"paper",info:d,extra:l.jsx(W,{onSearchChange:c}),children:l.jsx(J,{data:{customDeductions:((o=a.data)==null?void 0:o.customDeductions)||[],defaultDeductions:u},isLoading:a.isLoading})})};export{le as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.