PageSourceSearch

https://app.stoqui.com.br/assets/DistanceShippingConfigPage-CCsLCPlh.js

js stoqui.com.br collected 2026-09-24 11:58:17 UTC 10,738 bytes, 1 lines download raw bytes

1import{j as e,a7 as u,a6 as G,ag as U,ae as X,T as j,ab as h,ad as E,N as D,Q as Y,R as Z,I as T,ac as J,X as ii,ai as ei,Z as ai,z as v,q as C,O as ri}from"./mui-CRsYZxVY.js";import{b as w}from"./vendor-Dwao9eNC.js";import{d as ni}from"./Edit-BiqqVQWD.js";import{y as S,by as m,z as P,bx as ti,fi as si,u as oi,w as p,eE as ci,C as li,T as di,aM as ui,dO as fi,c4 as mi,D as x,Q as pi,F as gi}from"./index-TALscxEc.js";import{u as hi}from"./useDistanceShipping-cRrYtxM-.js";import{a as b,b as _}from"./query-8ViTdhdk.js";import{H as xi}from"./HelperText-CbfuMRy9.js";import{C as bi}from"./CheckoutRequirementAlert-CTmXyGW6.js";import{L as _i}from"./lab-DSem1Osk.js";import"./datePickers-BIJXYOKG.js";import"./icons-D8aatgQ4.js";import"./HelpOutline-7HiWCqx6.js";import"./useWebCatalogSettingsSave-Byg91ItV.js";(function(){try{var i=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{};i.SENTRY_RELEASE={id:"2ad85febf9735404429b0670d4acf56a0af5a0a2"}}catch{}})();try{(function(){var i=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},r=new i.Error().stack;r&&(i._sentryDebugIds=i._sentryDebugIds||{},i._sentryDebugIds[r]="16aa6c18-d18a-4798-99b1-db9dcad9b812",i._sentryDebugIdIdentifier="sentry-dbid-16aa6c18-d18a-4798-99b1-db9dcad9b812")})()}catch{}const yi=S().shape({distancia_inicial:m().required("Distância inicial é obrigatória").min(0,"Distância inicial deve ser maior ou igual a 0").test("decimal-places","Distância inicial pode ter no máximo 2 casas decimais",function(i){return i==null?!0:Number.isInteger(i*100)}),distancia_final:m().required("Distância final é obrigatória").transform((i,r)=>r.trim()===""?null:i).min(.1,"Distância final deve ser maior que 0").test("decimal-places","Distância final pode ter no máximo 2 casas decimais",function(i){return i==null?!0:Number.isInteger(i*100)}).test("greater-than-initial","Distância final deve ser maior que a inicial",function(i){return i>this.parent.distancia_inicial}),valor:m().required("Valor é obrigatório").min(0,"Valor deve ser maior ou igual a 0"),prazo_entrega:P().transform(i=>{if(!i)return i;const r=i.trim();return/^\d+$/.test(r)?`${r} dias`:r}).max(25,"Prazo de entrega deve ter no máximo 25 caracteres").optional()});S().shape({habilitado:ti().required(),ranges:si().of(yi).default([])});const ji=S().shape({distancia_inicial:m().required("Distância inicial é obrigatória").min(0,"Distância inicial deve ser maior ou igual a 0").test("decimal-places","Distância inicial pode ter no máximo 2 casas decimais",function(i){return i==null?!0:Number.isInteger(i*100)}),distancia_final:m().transform(i=>Number.isNaN(i)?null:i).required("Distância final é obrigatória").min(.1,"Distância final deve ser maior que 0").test("decimal-places","Distância final pode ter no máximo 2 casas decimais",function(i){return i==null?!0:Number.isInteger(i*100)}).test("greater-than-initial","Distância final deve ser maior que a inicial",function(i){return i>this.parent.distancia_inicial}),valor:m().transform((i,r)=>r===""||r==null||Number.isNaN(i)?0:i).required("Valor é obrigatório").min(0,"Valor deve ser maior ou igual a 0"),prazo_entrega:P().transform(i=>{if(!i)return i;const r=i.trim();return/^\d+$/.test(r)?`${r} dias`:r}).max(25,"Prazo de entrega deve ter no máximo 25 caracteres").optional()}),Di=()=>{const i=b(),{user:r}=oi(),t=r==null?void 0:r.id;return _({mutationFn:async o=>{if(!t)throw new Error("Not authenticated");const{data:l}=await p.from("configuracao_frete_distancia").select("id").eq("user_id",t).single();if(l){const{data:s,error:n}=await p.from("configuracao_frete_distancia").update({habilitado:o.habilitado}).eq("id",l.id).select().single();if(n)throw n;return s}else{const{data:s,error:n}=await p.from("configuracao_frete_distancia").insert({user_id:t,habilitado:o.habilitado}).select().single();if(n)throw n;return s}},onMutate:async o=>{await i.cancelQueries({queryKey:["distanceShipping"]});const l=i.getQueryData(["distanceShipping"]);return l&&i.setQueryData(["distanceShipping"],{...l,habilitado:o.habilitado}),{previousConfig:l}},onError:(o,l,s)=>{s!=null&&s.previousConfig&&i.setQueryData(["distanceShipping"],s.previousConfig)}
1,onSettled:()=>{i.invalidateQueries({queryKey:["distanceShipping"]})}})},vi=()=>{const i=b();return _({mutationFn:async r=>{const{data:t,error:o}=await p.from("faixa_frete_distancia").insert({configuracao_id:r.configId,distancia_inicial:r.distancia_inicial,distancia_final:r.distancia_final,valor:r.valor,prazo_entrega:r.prazo_entrega||null}).select().single();if(o)throw o;return t},onSuccess:()=>{i.invalidateQueries({queryKey:["distanceShipping"]})}})},Ci=()=>{const i=b();return _({mutationFn:async r=>{const{data:t,error:o}=await p.from("faixa_frete_distancia").update({distancia_inicial:r.distancia_inicial,distancia_final:r.distancia_final,valor:r.valor,prazo_entrega:r.prazo_entrega||null}).eq("id",r.id).select().single();if(o)throw o;return t},onSuccess:()=>{i.invalidateQueries({queryKey:["distanceShipping"]})}})},wi=()=>{const i=b();return _({mutationFn:async r=>{const{error:t}=await p.from("faixa_frete_distancia").delete().eq("id",r);if(t)throw t},onSuccess:()=>{i.invalidateQueries({queryKey:["distanceShipping"]})}})},Fi=()=>{const[i,r]=w.useState(!1),[t,o]=w.useState(null),[l,s]=w.useState(null),{data:n,isLoading:k}=hi(),{data:L,isLoading:$}=ci(),z=Di(),N=vi(),F=Ci(),q=wi(),{control:g,handleSubmit:Q,reset:y,formState:{isSubmitting:B}}=li({resolver:gi(ji),defaultValues:{distancia_inicial:0,distancia_final:0,valor:0,prazo_entrega:""}}),I=a=>a===0?"Grátis":a.toLocaleString("pt-BR",{style:"currency",currency:"BRL"}),A=a=>a.toLocaleString("pt-BR",{minimumFractionDigits:0,maximumFractionDigits:1}),W=async a=>{try{s(null),await z.mutateAsync({habilitado:a})}catch{s("Erro ao atualizar configuração")}},K=()=>{if(!(n!=null&&n.ranges.length))y({distancia_inicial:0,distancia_final:0,valor:0,prazo_entrega:""});else{const a=n.ranges[n.ranges.length-1];y({distancia_inicial:a.distancia_final,distancia_final:a.distancia_final+1,valor:0,prazo_entrega:""})}o(null),r(!0)},V=a=>{o(a),a&&(y({distancia_inicial:a.distancia_inicial,distancia_final:a.distancia_final,valor:a.valor,prazo_entrega:a.prazo_entrega||""}),r(!0))},O=async a=>{try{s(null),await q.mutateAsync(a)}catch{s("Erro ao excluir faixa")}},H=async a=>{try{s(null),t?await F.mutateAsync({id:t.id,distancia_inicial:a.distancia_inicial,distancia_final:a.distancia_final,valor:a.valor,prazo_entrega:a.prazo_entrega}):n&&await N.mutateAsync({configId:n.id,distancia_inicial:a.distancia_inicial,distancia_final:a.distancia_final,valor:a.valor,prazo_entrega:a.prazo_entrega}),r(!1)}catch{s("Erro ao salvar faixa")}};if(k||$)return e.jsx(u,{sx:{height:"70vh",display:"flex",alignItems:"center",justifyContent:"center"},children:e.jsx(G,{})});const f=(n==null?void 0:n.habilitado)??!1,M=(n==null?void 0:n.ranges)||[],R=!!L;return e.jsxs(u,{children:[e.jsx(di,{title:"Frete por km",navigateBack:!0}),e.jsxs(u,{sx:{display:"flex",flexDirection:"column",height:"calc(100% - 56px)"},children:[e.jsx(u,{sx:{py:2,borderBottom:1,borderColor:"divider"},children:e.jsxs(u,{children:[e.jsx(U,{control:e.jsx(X,{checked:f,onChange:a=>W(a.target.checked),color:"primary",disabled:!R||z.isPending}),labelPlacement:"start",label:e.jsx(j,{variant:"subtitle1",fontWeight:500,children:"Habilitar frete por distância"})}),e.jsx(j,{variant:"body2",color:"text.secondary",sx:{mt:.5,ml:2,mr:2},children:"Configure preços diferentes para cada faixa de distância"})]})}),e.jsxs(h,{spacing:3,sx:{p:2,flexGrow:1},children:[l&&e.jsx(E,{severity:"error",onClose:()=>s(null),children:l}),!R&&e.jsx(E,{severity:"warning",action:e.jsx(D,{color:"inherit",size:"small",component:ui,to:"/profile/shipping/address",children:"Configurar"}),children:"Configure o endereço de origem para habilitar o frete por distância"}),f&&e.jsx(bi,{requirement:"cep",children:"O frete por distância é calculado a partir do CEP do cliente. Deixar o CEP como obrigatório no checkout garante que o valor apareça para todos os clientes."}),e.jsx(u,{sx:{opacity:f?1:.5},children:e.jsx(Y,{sx:{width:"100%",p:0,mt:2},children:M.map(a=>e.jsx(Z,{sx:{mb:1,borderRadius:1,border:1,borderColor:"divider"},secondaryAction:e.jsxs(h,{direction:"row",spacing:1,children:[e.jsx(T,{edge:"end",onClick:()=>V(a),disabled:!f,size:"small",children:e.jsx(ni,{fontSize:"small"})}),e.jsx(T,{edge:"end",onClick:()=>O(a.id),disabled:!f||q.isPending,size:"small",children:e.jsx(fi,{fontSize:"small"})})]}),children:e.jsx(J,{primary:`${A(a.distancia_inicial)} a ${A(a.distancia_final)} km`,secondary:a.prazo_entrega?`${I(a.valor)} • ${a.prazo_entrega}`:I(a.valor)})},a.id))})}),e.jsx(D,{variant:"text",fullWidth:!0,onClick:K,disabled:!f,startIcon:e.jsx(mi,{}),children:"Adicionar faixa de distância"})]})]}),e.jsxs(ii,{open:i,onClose:()=>r(!1),fullWidth:!0,maxWidth:"sm",children:[e.jsx(ei,{children:t?"Editar faixa":"Adicionar faixa"}),e.jsxs(u,{component:"form",onSubmit:Q(H),children:[e.jsx(ai,{children:e.jsxs(h,{spacing:3,children:[e.jsx(x,{name:"distancia_inicial",control:g,render:({field:a})=>e.jsx(v,{...a,label:"Distância inicial *",disabled:!0,fullWidth:!0,type:"number",inputProps:{step:.1,min:0},InputProps:{endAdornment:e.jsx(C,{position:"end",children:"km"})}})}),e.jsx(x,{name:"distancia_final",control:g,render:({field:a,fieldState:c})=>{var d;return e.jsx(v,{...a,label:"Distância final *",fullWidth:!0,type:"number",error:!!c.error,helperText:(d=c.error)==null?void 0:d.message,disabled:t!==null,inputProps:{step:.1,min:.
11},InputProps:{endAdornment:e.jsx(C,{position:"end",children:"km"})}})}}),e.jsx(x,{name:"valor",control:g,render:({field:a,fieldState:c})=>{var d;return e.jsx(pi,{...a,label:"Valor da entrega",fullWidth:!0,error:!!c.error,helperText:(d=c.error)==null?void 0:d.message,placeholder:"0,00",InputProps:{startAdornment:e.jsx(C,{position:"start",children:"R$"})}})}}),e.jsxs(u,{children:[e.jsxs(h,{direction:"row",alignItems:"center",spacing:.5,sx:{mb:1},children:[e.jsx(j,{variant:"subtitle2",color:"text.secondary",children:"Prazo de entrega (opcional)"}),e.jsx(xi,{text:'Ex: "2 a 3 dias úteis", "Até 5 dias", "24 horas". Deixe em branco se não quiser especificar um prazo.'})]}),e.jsx(x,{name:"prazo_entrega",control:g,render:({field:a,fieldState:c})=>{var d;return e.jsx(v,{...a,fullWidth:!0,placeholder:'Ex: "2 a 3 dias úteis"',error:!!c.error,helperText:(d=c.error)==null?void 0:d.message,inputProps:{maxLength:25}})}})]})]})}),e.jsxs(ri,{children:[e.jsx(D,{onClick:()=>r(!1),children:"Cancelar"}),e.jsx(_i,{type:"submit",variant:"contained",loading:B,children:t?"Salvar":"Adicionar"})]})]})]})]})};export{Fi 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.