PageSourceSearch

https://app.stoqui.com.br/assets/ComboFormPage-CGZ9TbGt.js

js stoqui.com.br collected 2026-09-24 11:57:36 UTC 40,254 bytes, 7 lines download raw bytes

1function __vite__mapDeps(indexes) {
2  if (!__vite__mapDeps.viteFileDeps) {
3    __vite__mapDeps.viteFileDeps = ["assets/AIDescriptionGenerator-Ds6TWqQ6.js","assets/mui-CRsYZxVY.js","assets/vendor-Dwao9eNC.js","assets/index-TALscxEc.js","assets/query-8ViTdhdk.js","assets/datePickers-BIJXYOKG.js","assets/icons-D8aatgQ4.js","assets/lab-DSem1Osk.js","assets/index-TuPg2doO.css","assets/LocalizedRichTextEditor-DcQWzYKR.js","assets/AILoadingPlaceholder-FTYHEpKt.js"]
4  }
5  return indexes.map((i) => __vite__mapDeps.viteFileDeps[i])
6}
7import{j as o,a7 as S,ab as k,o as H,T as q,q as Ne,S as Xe,I as ce,N as se,y as Ye,z as Oe,ag as Ve,ae as Ze,aB as eo,n as Pe,C as oo,B as ro,a6 as $e,a2 as to}from"./mui-CRsYZxVY.js";import{r as C}from"./vendor-Dwao9eNC.js";import{e as pe,x as ao,T as We,em as io,y as qe,z as L,by as J,eY as so,ds as ke,fi as Ie,bx as no,fX as ue,D as Q,Q as Me,aC as co,eH as lo,fY as uo,hS as mo,fl as po,fm as fo,bP as go,eG as ho,bR as _o,bS as xo,b8 as bo,bT as vo,bU as yo,aN as jo,b_ as Co,u as fe,w as O,bJ as So,_ as Ue,b as ge,r as wo,bd as Eo,dz as Le,fC as No,be as Po,b3 as le,s as qo,bV as ko,dE as Io,id as Te,dA as Mo,cW as To,bl as Ao,b2 as Ro,bc as zo,bY as Fo,p as Oo,q as Ae,C as $o,F as Wo,ie as Uo,t as Lo,l as Bo,m as Do,J as Ko,K as Ho}from"./index-TALscxEc.js";import{U as Qo}from"./UnsavedChangesDialog-gqy_t4YT.js";import{d as Go,e as Jo,f as Xo,P as Yo,C as Vo,t as Zo,m as er,g as or,p as rr,r as tr,c as ar}from"./productTypeDraft-DJi2OxPk.js";import{S as ie}from"./SectionCard-BQuBxrTO.js";import{P as ir}from"./ProductMultiSelectDialog-CJJuliyr.js";import{P as sr}from"./ProductAvatar-BTM6y7KS.js";import{V as nr,a1 as dr,e as cr,C as lr}from"./icons-D8aatgQ4.js";import{S as ur}from"./StatusDotLine-CR-EBrxL.js";import{l as mr,t as pr}from"./comboCart-DscpHqAi.js";import{u as Be}from"./useFiscalConfig-CQEKyhOW.js";import{u as fr,a as gr,b as hr}from"./query-8ViTdhdk.js";import{d as _r}from"./RadioButtonUnchecked-BJKJ-TId.js";import{L as xr}from"./lab-DSem1Osk.js";import{u as br}from"./useProduct-BltDnkHr.js";import{a as vr}from"./useComboDefinitions-DJhxSNVU.js";import"./datePickers-BIJXYOKG.js";import"./CategoryPickerSheet-B2lypeTk.js";import"./CategoryQuickCreateSheet-DWRrPzmh.js";import"./nativeGalleryPicker-D1sbOw5u.js";import"./index-DK05pnC7.js";import"./useImageStudioPrompts-Ci8herT5.js";import"./tslib.es6-DPrcv4p0.js";import"./yarlDarkStyles-BLdNgtCT.js";import"./WeightField-CkAlChmC.js";import"./useFiscalRegras-D5dYwavN.js";import"./fiscalOptions-BZ76yhnP.js";import"./ProductSearchBar-CThCmE3j.js";import"./useFlattenedProducts-ml3vnefA.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{};e.SENTRY_RELEASE={id:"2ad85febf9735404429b0670d4acf56a0af5a0a2"}}catch{}})();try{(function(){var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},r=new e.Error().stack;r&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[r]="b4fcbf87-31ae-43cc-addb-795f70883653",e._sentryDebugIdIdentifier="sentry-dbid-b4fcbf87-31ae-43cc-addb-795f70883653")})()}catch{}const yr=({title:e,children:r})=>{const{data:t,isLoading:i}=pe();return ao(t)?o.jsx(o.Fragment,{children:r}):i?o.jsx(S,{sx:{display:"flex",flexDirection:"column",height:"100%",bgcolor:"background.default"},children:o.jsx(We,{title:e,navigateBack:!0})}):o.jsx(io,{trigger:"combos"})},jr=qe().shape({productName:L().required("Obrigatório"),price:J().transform(e=>isNaN(e)?null:e).nullable().min(0,"Preço deve ser maior ou igual a 0").typeError("Obrigatório").required("Obrigatório"),promoPrice:J().nullable().transform(e=>isNaN(e)?null:e).test("is-less-than-price","Preço promocional deve ser menor que o preço normal",function(e){return e?e<this.parent.price:!0}),description:L().nullable().test("max-text-length","Máximo 7.500 caracteres",e=>e?so(e)<=7500:!0),sku:L().nullable(),categoria_id:ke().transform(e=>e===""?null:Number(e)).nullable(),image_urls:Ie().of(qe().shape({id:L().required(),url:L().nullable()})),oculto:no().nullable(),comprimento:J().nullable().transform(e=>isNaN(e)?null:e).min(1,"Comprimento deve ser maior que 0"),largura:J().nullable().transform(e=>isNaN(e)?null:e).min(1,"Largura deve ser maior que 0"),altura:J().nullable().transform(e=>isNaN(e)?null:e).min(1,"Altura deve ser maior que 0"),peso:J().nullable().transform(e=>isNaN(e)?null:e).min(.001,"Peso deve ser maior que 0"),componentes:Ie().min(1,"Adicione pelo menos 1 produto ao combo").required("Adicione pelo menos 1 produto ao combo"),combo_nf_modo:ke().oneOf(["detalhado","unico"]).default("detalhado"),ncm:L().nullable().when("combo_nf_modo",{is:"unico",then:e=>e.test("ncm-format","NCM deve ter exatamente 8 dígitos",r=>r?/^\d{8}$/.test(r):!0)}),cest:L().nullable(),origem:J().transform(e=>isNaN(e)?0:e).default(0),unidade:L().default("UN"),regra_tributacao_id:L().nullable().default(null),gtin:L().nullable().when("combo_nf_modo",{is:"unico",then:e=>e.test("gtin-format","GTIN inválido",r=>{if(!r)return!0;
7if(!/^\d{8,14}$/.test(r))return!1;const t=r.split("").map(Number),i=t.pop();return(10-t.reverse().reduce((s,n,c)=>s+n*(c%2===0?3:1),0)%10)%10===i})})}),Cr={fontWeight:700,color:"text.secondary",textTransform:"uppercase",letterSpacing:"0.05em",fontSize:"0.7rem",display:"block",mb:.75},Sr=({control:e,setValue:r,isSubmitting:t,componentsPriceSum:i})=>{const a=ue({control:e,name:"price"}),s=ue({control:e,name:"promoPrice"}),[n,c]=C.useState(s!=null&&s!=="");C.useEffect(()=>{s!=null&&s!==""&&!n&&c(!0)},[s,n]);const d=()=>{r("promoPrice",null),c(!1)},l=n&&a&&s&&Number(s)<Number(a)?Math.round((Number(a)-Number(s))/Number(a)*100):null;return o.jsxs(k,{spacing:1.5,children:[n&&o.jsxs(k,{direction:"row",alignItems:"center",spacing:1,sx:{backgroundColor:H("#8865FE",.08),borderRadius:2,px:1.25,py:.75},children:[o.jsx(q,{variant:"caption",sx:{fontWeight:700,color:"text.secondary",textTransform:"uppercase",letterSpacing:"0.04em"},children:"De"}),o.jsx(S,{sx:{flex:1},children:o.jsx(Q,{name:"price",control:e,render:({field:{onChange:p,value:m,...v}})=>o.jsx(Me,{...v,value:m==null?"":String(m),onChange:u=>p(u===""?null:Number(u)),variant:"standard",placeholder:"0,00",fullWidth:!0,disabled:t,InputProps:{disableUnderline:!0,startAdornment:o.jsx(Ne,{position:"start",children:o.jsx(q,{sx:{fontSize:"0.875rem",fontWeight:600,color:"text.secondary",textDecoration:"line-through",textDecorationColor:H("#041E42",.4)},children:"R$"})}),sx:{fontSize:"0.95rem",fontWeight:600,color:"text.secondary","& input":{textDecoration:"line-through",textDecorationColor:H("#041E42",.4)},"&.Mui-focused input":{textDecoration:"none",color:"text.primary"}}}})})}),l!==null&&l>0&&o.jsx(Xe,{label:`-${l}%`,size:"small",sx:{height:20,fontSize:"0.7rem",fontWeight:700,bgcolor:"primary.main",color:"white"}}),o.jsx(ce,{size:"small",onClick:d,disabled:t,sx:{p:.25},"aria-label":"Remover promoção",children:o.jsx(co,{sx:{fontSize:16}})})]}),o.jsxs(S,{children:[o.jsx(q,{sx:Cr,children:n?"Preço promocional":"Preço do combo"}),o.jsx(Q,{name:n?"promoPrice":"price",control:e,render:({field:{onChange:p,value:m,...v},fieldState:u})=>{var _;return o.jsx(Me,{...v,value:m==null?"":String(m),onChange:h=>p(h===""?null:Number(h)),variant:"standard",placeholder:"0,00",fullWidth:!0,autoFocus:n,disabled:t,error:!!u.error,helperText:(_=u.error)==null?void 0:_.message,InputProps:{disableUnderline:!0,startAdornment:o.jsx(Ne,{position:"start",children:o.jsx(q,{sx:{fontSize:{xs:"1.25rem",md:"1.5rem"},fontWeight:600,color:n?"primary.main":"text.primary"},children:"R$"})}),sx:{fontSize:{xs:"1.5rem",md:"1.75rem"},fontWeight:700,color:n?"primary.main":"text.primary","& input::placeholder":{color:"text.disabled",opacity:1}}}})}})]}),i!=null&&o.jsxs(q,{variant:"caption",color:"text.secondary",children:["Comprando separado:"," ",i.toLocaleString("pt-BR",{style:"currency",currency:"BRL"})]}),!n&&o.jsx(se,{size:"small",startIcon:o.jsx(lo,{size:14}),onClick:()=>c(!0),disabled:t,sx:{color:"primary.main",fontSize:"0.8125rem",fontWeight:600,textTransform:"none",p:0,minWidth:0,alignSelf:"flex-start","&:hover":{backgroundColor:"transparent",opacity:.8}},children:"Adicionar preço promocional"})]})},wr=`linear-gradient(135deg, #ffffff 0%, ${H("#8865FE",.05)} 60%, ${H("#8865FE",.1)} 100%)`,Er={fontWeight:700,color:"text.secondary",textTransform:"uppercase",letterSpacing:"0.05em",fontSize:"0.7rem",display:"block",mb:.75},Nr=({control:e,register:r,errors:t,isSubmitting:i,setValue:a,subscription:s,maxImagesAllowed:n,comboFormKey:c,onBeforeNavigateAway:d,componentsPriceSum:l,typeToggle:p})=>{var m;return o.jsxs(S,{sx:{borderRadius:"18px",background:wr,p:{xs:2,md:3}},children:[p,o.jsx(Q,{name:"image_urls",control:e,render:({field:v})=>{var u;return o.jsxs(S,{"data-error-anchor":"field-image_urls",children:[o.jsx(Go,{maxImages:n,subscription:s,value:Array.isArray(v.value)?v.value:[],onChange:_=>v.onChange(_),productFormKey:c,onBeforeNavigateAway:d}),(u=t.image_urls)!=null&&u.message?o.jsx(Ye,{error:!0,sx:{ml:1},children:String(t.image_urls.message)}):null]})}}),o.jsxs(k,{spacing:2.5,sx:{mt:2.5}
7,children:[o.jsxs(S,{"data-error-anchor":"field-productName",children:[o.jsx(q,{sx:Er,children:"Nome do combo"}),o.jsx(Oe,{fullWidth:!0,variant:"standard",placeholder:"Ex: Kit shampoo + condicionador",error:!!t.productName,helperText:(m=t.productName)!=null&&m.message?String(t.productName.message):void 0,disabled:i,...r("productName"),InputProps:{sx:{fontSize:{xs:"1.25rem",md:"1.5rem"},fontWeight:600,color:"text.primary","&:before":{borderBottomColor:H("#8865FE",.18),borderBottomWidth:"2px"},"&:hover:not(.Mui-disabled, .Mui-error):before":{borderBottomColor:H("#8865FE",.45),borderBottomWidth:"2px"},"&:after":{borderBottomColor:"primary.main",borderBottomWidth:"2px"},"& input::placeholder":{color:"text.disabled",opacity:1,fontWeight:500}}}})]}),o.jsx(S,{"data-error-anchor":"field-price",children:o.jsx(Sr,{control:e,setValue:a,isSubmitting:i,componentsPriceSum:l})})]})]})},Re=e=>e.toLocaleString("pt-BR",{maximumFractionDigits:3}),Pr=({control:e,register:r,errors:t,isSubmitting:i,watchedSku:a,watchedOculto:s,watchedPeso:n,suggestedWeight:c,onApplySuggestedWeight:d,dimensionsError:l,dimensionsErrorMessage:p})=>{var m,v;return o.jsxs(o.Fragment,{children:[o.jsx(S,{"data-error-anchor":"section-identif",children:o.jsx(ie,{icon:o.jsx(uo,{size:20}),title:"Identificação",subtitle:a?`SKU ${a}`:"SKU",filled:!!a,error:!!t.sku,errorMessage:(m=t.sku)!=null&&m.message?String(t.sku.message):void 0,children:o.jsx(Oe,{fullWidth:!0,label:"Código do item (SKU)",error:!!t.sku,helperText:(v=t.sku)!=null&&v.message?String(t.sku.message):void 0,disabled:i,...r("sku")})})}),o.jsx(S,{"data-error-anchor":"section-dimensions",children:o.jsx(ie,{icon:o.jsx(mo,{size:20}),title:"Dimensões e peso",subtitle:"Para cálculo de frete",error:l,errorMessage:p,children:o.jsxs(k,{spacing:2,children:[o.jsx(Jo,{control:e,disabled:i}),c!=null&&n==null&&o.jsxs(k,{spacing:.75,alignItems:"flex-start",children:[o.jsxs(q,{variant:"caption",color:"text.secondary",children:["Sem peso, o frete é cotado com o peso padrão da transportadora. Os produtos do combo somam"," ",Re(c)," kg."]}),o.jsxs(se,{size:"small",disabled:i,onClick:d,sx:{color:"primary.main",fontSize:"0.8125rem",fontWeight:600,textTransform:"none",p:0,minWidth:0,"&:hover":{backgroundColor:"transparent",opacity:.8}},children:["Usar ",Re(c)," kg"]})]})]})})}),o.jsx(ie,{icon:s?o.jsx(po,{size:20}):o.jsx(fo,{size:20}),title:"Visibilidade",subtitle:s?"Oculto da loja":"Visível na loja",filled:!!s,children:o.jsx(Q,{name:"oculto",control:e,render:({field:u})=>o.jsx(Ve,{control:o.jsx(Ze,{checked:!!u.value,onChange:_=>u.onChange(_.target.checked)}),label:"Ocultar combo da loja"})})})]})},me=0,qr=e=>{const r=(e.variation_details??[]).map(i=>({atributo:{id:i.atributo_id||0,nome:i.atributo_nome||""},atributo_valor:{id:i.atributo_valor_id||0,valor:i.valor||""}})),t=jo(r)||e.nome;return e.oculto?`${t} (oculta)`:t},kr=({component:e,product:r,disabled:t,onQuantityChange:i,onVariationChange:a,onRemove:s})=>{var c;const n=((r==null?void 0:r.produto_variacao)??[]).filter(d=>!d.deletado_em&&!d.flag_produto_simples);return o.jsxs(S,{sx:{display:"flex",alignItems:"center",gap:1.5,minHeight:go,p:"12px 16px",border:"1px solid",borderColor:"divider",borderRadius:`${ho}px`,opacity:r!=null&&r.oculto?.6:1},children:[o.jsx(sr,{imageUrl:((c=r==null?void 0:r.image_url)==null?void 0:c[0])||void 0,size:_o,sx:{borderRadius:`${xo}px`,flexShrink:0}}),o.jsxs(S,{sx:{flex:1,minWidth:0},children:[o.jsxs(k,{direction:"row",spacing:.5,alignItems:"center",children:[(r==null?void 0:r.oculto)&&o.jsx(nr,{sx:{fontSize:16,color:"text.secondary",flexShrink:0}}),o.jsx(q,{component:"div",sx:{...bo,...vo(yo),minWidth:0},children:(r==null?void 0:r.nome)??"Produto indisponível"})]}),r?n.length>0?o.jsxs(eo,{value:e.produto_variacao_id??me,onChange:d=>{const l=Number(d.target.value);a(l===me?null:l)},disabled:t,variant:"standard",disableUnderline:!0,sx:{maxWidth:"100%",fontSize:"0.75rem",color:"text.secondary","& .MuiSelect-select":{py:0,pr:3}},children:[o.jsx(Pe,{value:me,children:"Cliente escolhe"}),n.map(d=>o.jsx(Pe,{value:d.id,children:qr(d)},d.id))]}):null:o.jsx(q,{variant:"caption",color:"error.main",noWrap:!0,component:"div",children:"Produto excluído, remova do combo"})]}),o.jsxs(k,{direction:"row",alignItems:"center",spacing:.25,sx:{flexShrink:0},children:[o.jsx(ce,{size:"small","aria-label":"Diminuir quantidade",disabled:t||e.quantidade<=1,onClick:()=>i(e.quantidade-1),children:o.jsx(dr,{sx:{fontSize:18}})}),o.jsx(q,{sx:{fontSize:"0.875rem",fontWeight:600,minWidth:20,textAlign:"center"},children:e.quantidade}),o.jsx(ce,{size:"small","aria-label":"Aumentar quantidade",disabled:t,onClick:()=>i(e.quantidade+1),children:o.jsx(cr,{sx:{fontSize:18}})})]}),o.jsx(ce,{size:"small","aria-label":"Remover produto",disabled:t,onClick:s,sx:{flexShrink:0},children:o.jsx(lr,{sx:{fontSize:18}})})]})},Ir={level:"product",includeHiddenProducts:!0,productFilter:e=>!e.digital&&!e.combo}
7,Mr=({value:e,onChange:r,rawProductsById:t,componentProductsById:i,disabled:a,error:s,errorMessage:n})=>{const[c,d]=C.useState(!1),l=e.length===0?"Escolha os produtos do combo":e.length===1?"1 produto":`${e.length} produtos`,p=C.useMemo(()=>{const u=e.map((_,h)=>({id:_.id??-(h+1),produto_id:_.produto_id,produto_variacao_id:_.produto_variacao_id,quantidade:_.quantidade}));return mr(u,i).summary},[e,i]),m=u=>{const _=new Set(u.map(P=>P.productId)),h=new Set(e.map(P=>P.produto_id)),I=new Set(i?Array.from(i.keys()):[]),E=e.filter(P=>_.has(P.produto_id)||!I.has(P.produto_id)),W=u.filter(P=>!h.has(P.productId)).map(P=>({produto_id:P.productId,produto_variacao_id:null,quantidade:1}));r([...E,...W]),d(!1)},v=(u,_)=>{r(e.map((h,I)=>I===u?{...h,..._}:h))};return o.jsxs(S,{"data-error-anchor":"section-componentes",children:[o.jsx(ie,{icon:o.jsx(Co,{size:20}),title:"Produtos",subtitle:l,filled:e.length>0,defaultExpanded:!0,error:s,errorMessage:n,children:o.jsxs(k,{spacing:1.5,children:[e.length===0&&o.jsx(q,{variant:"body2",color:"text.secondary",children:"Escolha os produtos que fazem parte deste combo. O estoque do combo acompanha o estoque deles."}),e.map((u,_)=>o.jsx(kr,{component:u,product:t.get(u.produto_id),disabled:a,onQuantityChange:h=>v(_,{quantidade:h}),onVariationChange:h=>v(_,{produto_variacao_id:h}),onRemove:()=>r(e.filter((h,I)=>I!==_))},`${u.produto_id}-${u.id??"new"}`)),e.length>0&&i.size>0&&o.jsx(ur,{tone:p.tone,label:p.label,detail:p.detail}),o.jsx(se,{variant:"contained",size:"medium",disabled:a,onClick:()=>d(!0),sx:{borderRadius:2,alignSelf:"flex-start"},children:"Adicionar produtos"})]})}),o.jsx(ir,{open:c,initialSelectedIds:e.map(u=>`prod-${u.produto_id}`),onClose:()=>d(!1),onConfirm:m,title:"Adicionar produtos",confirmLabel:"Adicionar",flattenOptions:Ir})]})},Tr=e=>{const{user:r}=fe(),t=r==null?void 0:r.id,i=Array.from(new Set(e)).sort((a,s)=>a-s);return fr({queryKey:["products-fiscal",t,i],queryFn:async()=>{if(i.length===0)return new Map;const{data:a,error:s}=await O.from("produto_fiscal").select("produto_id, ncm").eq("user_id",t).in("produto_id",i);if(s)throw new Error(s.message);return new Map((a??[]).map(n=>[n.produto_id,n]))},enabled:!!t,staleTime:6e4})},De=e=>Math.round(e*100)/100,Ar=e=>Math.round(e*1e10)/1e10;function Rr(e,r){const t=r.length;if(t===0)return[];const i=r.reduce((d,l)=>d+l,0);if(!(i>0)){const d=Math.floor(e/t),l=new Array(t).fill(d);let p=e-d*t;for(let m=0;m<t&&p>0;m++,p--)l[m]+=1;return l}const a=r.map(d=>e*d/i),s=a.map(d=>Math.floor(d));let n=e-s.reduce((d,l)=>d+l,0);const c=a.map((d,l)=>({indice:l,frac:d-Math.floor(d)})).sort((d,l)=>l.frac-d.frac||d.indice-l.indice);for(let d=0;d<c.length&&n>0;d++,n--)s[c[d].indice]+=1;return s}function zr(e,r){if(r<=0||r<e.length)return e;const t=[];for(let s=0;s<e.length;s++)e[s]===0&&t.push(s);if(t.length===0)return e;const i=[...e],a=i.map((s,n)=>({valor:s,indice:n})).sort((s,n)=>n.valor-s.valor||s.indice-n.indice).map(s=>s.indice);for(const s of t){const n=a.find(c=>i[c]>1);if(n===void 0)break;i[n]-=1,i[s]+=1}return i}const Fr=(e,r)=>({item_id:e.id,produto_id:e.produto_id,produto_variacao_id:e.produto_variacao_id,quantidade:e.quantidade,preco_unitario:e.preco_snapshot,valor_linha:De(e.quantidade*e.preco_snapshot),combo_nome:r});function Or(e,r){const t=new Map;for(const a of e){if(a.combo_parent_item_id==null)continue;const s=t.get(a.combo_parent_item_id);s?s.push(a):t.set(a.combo_parent_item_id,[a])}const i=[];for(const a of e){if(a.combo_parent_item_id!=null)continue;const s=t.get(a.id)??[];if(!(r.isCombo(a.produto_id)&&s.length>0&&r.modo(a.produto_id)==="detalhado")){i.push(Fr(a,null));continue}const c=r.nomeCombo(a.produto_id),d=Math.round(De(a.quantidade*a.preco_snapshot)*100),l=s.map(u=>{const _=r.precoAvulso(u.produto_id,u.produto_variacao_id);return _!=null&&_>0?_*u.quantidade:0}),m=l.some(u=>u>0)?l:s.map(u=>u.quantidade),v=zr(Rr(d,m),d);s.forEach((u,_)=>{const h=v[_]/100;i.push({item_id:u.id,produto_id:u.produto_id,produto_variacao_id:u.produto_variacao_id,quantidade:u.quantidade,preco_unitario:u.quantidade>0?Ar(h/u.quantidade):0,valor_linha:h,combo_nome:c}
7)})}return i}const $r=[{value:"detalhado",label:"Detalhar os produtos",hint:"A nota lista cada produto do combo com o NCM dele, e divide o valor do combo entre eles.",recommended:!0},{value:"unico",label:"Emitir como um produto só",hint:"A nota tem uma linha só, com o nome e o NCM do combo. Use quando o combo é um kit fechado."}],Wr=({value:e,onChange:r,disabled:t=!1})=>{const i=oo();return o.jsx(k,{spacing:1,children:$r.map(a=>{const s=e===a.value;return o.jsxs(ro,{disabled:t,onClick:()=>r(a.value),focusRipple:!0,sx:{display:"flex",alignItems:"flex-start",gap:1.25,p:1.25,borderRadius:1.5,bgcolor:s?H(i.palette.primary.main,.06):"transparent",border:"1px solid",borderColor:s?"primary.main":"divider",transition:"background-color 120ms ease, border-color 120ms ease",textAlign:"left",width:"100%",opacity:t?.6:1},children:[o.jsx(S,{sx:{display:"flex",mt:"1px",color:s?"primary.main":"text.disabled"},children:s?o.jsx(So,{sx:{fontSize:20}}):o.jsx(_r,{sx:{fontSize:20}})}),o.jsxs(S,{sx:{minWidth:0,flex:1},children:[o.jsxs(k,{direction:"row",alignItems:"center",spacing:.75,children:[o.jsx(q,{sx:{fontWeight:600,fontSize:"0.9375rem",color:s?"primary.main":"text.primary"},children:a.label}),a.recommended&&o.jsx(Ue,{label:"Recomendado",tint:"brand"})]}),o.jsx(q,{variant:"caption",color:"text.secondary",sx:{display:"block",mt:.25,lineHeight:1.3},children:a.hint})]})]},a.value)})})},ze=e=>{const r=e.replace(/\D/g,"");return r.length!==8?e:`${r.slice(0,4)}.${r.slice(4,6)}.${r.slice(6,8)}`},Fe=(e,r)=>{if(!r)return null;const t=Le({id:e.id??-1,produto_id:e.produto_id,produto_variacao_id:e.produto_variacao_id,quantidade:e.quantidade},r);if(t==="fixed_variation"){const i=r.variacoes.find(a=>a.id===e.produto_variacao_id);return Te(i,r)}if(t==="choice"){const i=Mo(r).map(a=>Te(a,r)).filter(a=>a!=null);return i.length>0?Math.min(...i):null}return r.preco??null},Ur=(e,r)=>{if(!r)return"Produto";if(e.produto_variacao_id!=null){const t=r.variacoes.find(i=>i.id===e.produto_variacao_id);if(t)return`${r.nome} - ${t.nome}`}return r.nome},Lr=({control:e,isSubmitting:r,componentes:t,componentProductsById:i,error:a,errorMessage:s,precoEfetivo:n,produtosCarregados:c,onSetNcm:d})=>{const l=ge(),{data:p}=pe(),{data:m}=Be(),{triggerPaywall:v}=wo(),u=Eo(p),_=ue({control:e,name:"combo_nf_modo"})??"detalhado",h=ue({control:e,name:"ncm"}),I=C.useMemo(()=>t.map(x=>x.produto_id),[t]),{data:E,isPending:W}=Tr(I),P=t.length>0&&(!c||W),g=C.useMemo(()=>{if(t.length===0||n==null)return[];const x=-1,A=[{id:0,produto_id:x,produto_variacao_id:null,quantidade:1,preco_snapshot:n,combo_parent_item_id:null},...t.map((j,R)=>({id:R+1,produto_id:j.produto_id,produto_variacao_id:j.produto_variacao_id,quantidade:j.quantidade,preco_snapshot:0,combo_parent_item_id:0}))];return Or(A,{isCombo:j=>j===x,modo:()=>"detalhado",nomeCombo:()=>null,precoAvulso:(j,R)=>{const F=t.find(T=>T.produto_id===j&&T.produto_variacao_id===R);return F?Fe(F,i.get(j)):null}}).map(j=>{var T;const R=t[j.item_id-1],F=i.get(j.produto_id);return{key:`${j.produto_id}:${j.produto_variacao_id??""}:${j.item_id}`,nome:Ur(R,F),nomeProduto:(F==null?void 0:F.nome)??"Produto",produto_id:j.produto_id,quantidade:j.quantidade,valor:j.valor_linha,ncm:((T=E==null?void 0:E.get(j.produto_id))==null?void 0:T.ncm)??null}})},[t,i,n,E]),M=C.useMemo(()=>{const x=new Map;for(const A of g)A.ncm||x.set(A.produto_id,A.nomeProduto);return Array.from(x.values())},[g]),B=C.useMemo(()=>{var A;if(!E)return null;let x=null;for(const D of t){const j=(A=E.get(D.produto_id))==null?void 0:A.ncm;if(!j)continue;const R=i.get(D.produto_id),T=(Fe(D,R)??0)*D.quantidade;(!x||T>x.valor)&&(x={nome:(R==null?void 0:R.nome)??"Produto",ncm:j,valor:T})}return x},[t,i,E]),oe=C.useMemo(()=>t.some(x=>{const A=i.get(x.produto_id);return A?Le({id:x.id??-1,produto_id:x.produto_id,produto_variacao_id:x.produto_variacao_id,quantidade:x.quantidade},A)==="choice":!1}),[t,i]);return o.jsx(S,{"data-error-anchor":"section-fiscal",children:o.jsx(ie,{icon:o.jsx(No,{sx:{fontSize:20}}),title:"Nota fiscal",subtitle:_==="unico"?"Combo como item único":"Produtos detalhados",error:a,errorMessage:s,headerEnd:u?null:o.jsx(Po,{variant:"text",fontSize:"0.7rem"}),children:u?o.jsxs(k,{spacing:2,children:[!m&&o.jsx(le,{severity:"info",title:"Configure sua empresa",onClick:()=>l("/profile/fiscal"),children:"Cadastre os dados fiscais para emitir notas das suas vendas."}),o.jsx(Q,{name:"combo_nf_modo",control:e,render:({field:x})=>o.jsx(Wr,{value:x.value??"detalhado",onChange:x.onChange,disabled:r})}),_==="detalhado"?o.jsxs(k,{spacing:1.5,children:[P?o.jsx(k,{alignItems:"center",sx:{py:3},"aria-label":"Carregando a prévia da nota",children:o.jsx($e,{size:20})}):g.length===0?o.jsx(q,{variant:"caption",color:"text.secondary",children:"Adicione os produtos do combo e defina o preço para ver como a nota vai sair."}):o.jsxs(o.Fragment,{children:[o.jsx(q,{sx:qo,children:"Como a nota vai sair"}),o.jsx(k,{divider:o.jsx(to,{flexItem:!0}),sx:{border:"1px solid",borderColor:"divider",borderRadius:"8px"},children:g.map(x=>o.jsxs(k,{direction:"row",alignItems:"center",spacing:1,sx:{px:1.5,py:1.25},children:[o.jsxs(S,{sx:{minWidth:0,flex:1},children:[o.jsx(q,{variant:"body2",sx:{fontWeight:600},noWrap:!0,children:x.quantidade>1?`${x.quantidade}x ${x.nome}`:x.nome}),o.jsx(S,{sx:{mt:.25},children:x.ncm?o.jsxs(q,{variant:"caption",color:"text.secondary",children:["NCM ",ze(x.ncm)]}):o.jsx(Ue,{label:"Sem NCM",tint:"warning"})})]}),o.jsx(ko,{value:x.valor,sx:Io})]},x.key))}),oe&&o.jsx(q,{variant:"caption",color:"text.secondary",children:"Nos produtos em que o cliente escolhe a opção, o valor de cada linha muda conforme a escolha dele."})]}),!P&&M.length>0&&o.jsxs(le,{severity:"warning",title:"Falta NCM",children:[M.length===1?`O produto ${M[0]} está sem NCM.`:`${M.length} produtos do combo estão sem NCM: ${M.join(", ")}.`," ","Cadastre o NCM na tela de cada produto para conseguir emitir a nota."]})]}):o.jsxs(k,{spacing:2,children:[!h&&o.jsx(le,{severity:"warning",title:"Falta NCM",children:"Cadastre o NCM do combo abaixo. Sem ele a nota deste combo não é emitida."}),o.jsx(Xo,{control:e,disabled:r}),!h&&B&&o.jsxs(k,{spacing:.75,alignItems:"flex-start",children:[o.jsxs(q,{variant:"caption",color:"text.secondary",children:["Um kit costuma levar o NCM do produto principal."," ",B.nome," é o de maior valor no combo."]}),o.jsxs(se,{size:"small",disabled:r,onClick:()=>d(B.ncm),sx:{color:"primary.main",fontSize:"0.8125rem",fontWeight:600,textTransform:"none",p:0,minWidth:0,"&:hover":{backgroundColor:"transparent",opacity:.8}},children:["Usar NCM ",ze(B.ncm)]})]})]})]}):o.jsxs(k,{spacing:1.5,children:[o.jsx(q,{variant:"body2",color:"text.secondary",children:"Configure os dados fiscais do seu combo e emita notas fiscais para suas vendas."}),o.jsx(se,{variant:"contained",size:"medium",onClick:()=>v("product_fiscal",{pageAction:()=>l("/profile/paywall?initialPlan=black"),source:"combo_form"}),sx:{borderRadius:2,alignSelf:"flex-start",bgcolor:"#041E42","&:hover":{bgcolor:"#0A2A57"}},children:"Conhecer plano Black"})]})})})},Br=(e,r,t)=>{C.useEffect(()=>{const i=`imageStudioResult_${e}`,a=localStorage.getItem(i);if(a)try{const{generatedImageUrl:s,sourceImageId:n}=JSON.parse(a);if(!s)return;const c=r("image_urls")||[];let d=!1;const l=c.map(p=>p.id===n?(d=!0,{...p,url:s,previewUrl:s,status:"uploaded",file:void 0}):p);if(d)t("image_urls",l,{shouldDirty:!0});else{const p={id:`studio_${To(7)}`,previewUrl:s,url:s,status:"uploaded"};t("image_urls",[...c,p],{shouldDirty:!0})}}catch(s){console.error("Failed to apply Image Studio result",s)}finally{localStorage.removeItem(i)}},[e,r,t])},Dr=Ao(()=>Ro(()=>import("./AIDescriptionGenerator-Ds6TWqQ6.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10]))),Kr=({defaultValues:e,onSubmit:r,onSaveFormData:t,onDirtyChange:i,comboFormKey:a,isCreate:s=!1})=>{var xe,be,ve,ye,je,Ce,Se,we,Ee;const{data:n}=pe(),{isDesktop:c,drawerWidth:d}=zo(),{data:l}=Fo(),p=ge(),m=Oo(n),v=((xe=Ae[m])==null?void 0:xe.imagesPerProduct)||Ae.free.imagesPerProduct,{register:u,handleSubmit:_,control:h,watch:I,getValues:E,setValue:W,setError:P,formState:{errors:g,isSubmitting:
7M,isDirty:B}}=$o({resolver:Wo(jr),defaultValues:{...e,categoria_id:(e==null?void 0:e.categoria_id)??"",oculto:(e==null?void 0:e.oculto)??!1,componentes:(e==null?void 0:e.componentes)??[]}}),oe=I("productName"),x=I("sku"),A=I("oculto"),D=I("peso"),j=I("price"),R=I("promoPrice"),F=I("componentes"),T=C.useMemo(()=>F??[],[F]);C.useEffect(()=>{i==null||i(B)},[B,i]),Br(a,E,W);const X=C.useMemo(()=>new Map((l??[]).map(f=>[f.id,f])),[l]),Y=C.useMemo(()=>{const f=new Map;return(l??[]).forEach(y=>f.set(y.id,pr(y))),f},[l]),V=C.useMemo(()=>T.map((f,y)=>({id:f.id??-(y+1),produto_id:f.produto_id,produto_variacao_id:f.produto_variacao_id,quantidade:f.quantidade})),[T]),b=C.useMemo(()=>V.length>0?Uo(V,Y):null,[V,Y]),Z=C.useMemo(()=>{const f=w=>{if(w==null||w==="")return null;const K=Number(w);return isNaN(K)?null:K},y=f(R);return y!=null&&y>0?y:f(j)},[j,R]),G=C.useMemo(()=>{let f=0;for(const y of T){const w=X.get(y.produto_id);w!=null&&w.peso&&(f+=w.peso*y.quantidade)}return f>0?Math.round(f*1e3)/1e3:null},[T,X]),z=!!g.componentes,N=(be=g.componentes)!=null&&be.message?String(g.componentes.message):void 0,re=!!g.comprimento||!!g.altura||!!g.largura||!!g.peso,$=(ve=g.comprimento)!=null&&ve.message?String(g.comprimento.message):(ye=g.altura)!=null&&ye.message?String(g.altura.message):(je=g.largura)!=null&&je.message?String(g.largura.message):(Ce=g.peso)!=null&&Ce.message?String(g.peso.message):void 0,te=!!g.ncm||!!g.gtin||!!g.cest,Ke=(Se=g.ncm)!=null&&Se.message?String(g.ncm.message):(we=g.gtin)!=null&&we.message?String(g.gtin.message):(Ee=g.cest)!=null&&Ee.message?String(g.cest.message):void 0,he=g.productName?"field-productName":g.price||g.promoPrice?"field-price":g.description?"field-description":g.categoria_id?"field-categoria_id":z?"section-componentes":g.sku?"section-identif":re?"section-dimensions":te?"section-fiscal":null,He=()=>{he&&setTimeout(()=>{const f=document.querySelector(`[data-error-anchor="${he}"]`);f&&f.scrollIntoView({behavior:"smooth",block:"center"})},320)},Qe=async f=>{var y,w,K;try{if(l){const ae=f.componentes??[];for(const ne of ae){const de=X.get(ne.produto_id);if(!de){P("root.serverError",{message:"Um dos produtos do combo foi excluído. Remova-o da lista para salvar."});return}if(de.digital||de.combo){P("root.serverError",{message:"Produtos digitais e outros combos não podem fazer parte de um combo."});return}}}((y=f.image_urls)==null?void 0:y.some(ae=>ae.status==="uploading"))&&(await new Promise(ae=>{const ne=()=>{if(!(E("image_urls")??[]).some(Je=>Je.status==="uploading")){ae();return}setTimeout(ne,150)};ne()}),f={...f,image_urls:E("image_urls")}),await r(Zo(f))}catch(U){((U==null?void 0:U.field)==="sku"||(K=(w=U==null?void 0:U.message)==null?void 0:w.toLowerCase)!=null&&K.call(w).includes("sku"))&&P("sku",{message:"Já existe um produto com este código"}),P("root.serverError",{message:(U==null?void 0:U.message)||"Erro ao salvar. Tente novamente."})}},_e=f=>{var y,w;return o.jsxs(o.Fragment,{children:[((w=(y=g.root)==null?void 0:y.serverError)==null?void 0:w.message)&&o.jsx(S,{sx:{mb:1.5},children:o.jsx(le,{severity:"error",children:g.root.serverError.message})}),o.jsx(xr,{type:f?"button":"submit",variant:"contained",fullWidth:!0,size:"large",loading:f?!1:M,disabled:f?!1:M,tabIndex:f?-1:void 0,sx:{borderRadius:2,py:1.5,fontSize:"1rem"},children:"Salvar combo"})]})},Ge=f=>{if(f!=="produto")return;Lo(Bo.PRODUCT.CREATE_TYPE_SWITCH,{to:"produto"}),er();const y=E();t(y),or(y),C.startTransition(()=>{p("/products/create",{replace:!0})})};return o.jsxs("form",{onSubmit:_(Qe,He),children:[o.jsxs(k,{spacing:2,children:[o.jsx(Nr,{control:h,register:u,errors:g,isSubmitting:M,setValue:W,subscription:n,maxImagesAllowed:v,comboFormKey:a,onBeforeNavigateAway:()=>t(E()),componentsPriceSum:b,typeToggle:s?o.jsx(Yo,{value:"combo",onChange:Ge,hasProAccess:!0,disabled:M}):null}),o.jsx(S,{"data-error-anchor":"field-categoria_id",children:o.jsx(Q,{name:"categoria_id",control:h,render:({field:f,fieldState:y})=>{var w;return o.jsx(Vo,{value:f.value===""||f.value==null?null:Number(f.value),onChange:K=>f.onChange(K===null?"":String(K)),disabled:M,error:!!y.error,helperText:(w=y.error)!=null&&w.message?String(y.error.message):void 0})}})}),o.jsx(S,{"data-error-anchor":"field-description",children:o.jsx(Q,{name:"description",control:h,render:({field:f,fieldState:y})=>{var w;return o.jsx(C.Suspense,{fallback:null,children:o.jsx(Dr,{productName:oe,currentDescription:f.value,onChange:f.onChange,disabled:M,error:y.invalid,helperText:(w=y.error)==null?void 0:w.message,suggestedDescription:null,isLoadingAISuggestions:!1})})}})}),o.jsx(Q,{name:"componentes",control:h,render:({field:f})=>
7o.jsx(Mr,{value:f.value??[],onChange:y=>f.onChange(y),rawProductsById:X,componentProductsById:Y,disabled:M,error:z,errorMessage:N})}),o.jsx(Pr,{control:h,register:u,errors:g,isSubmitting:M,watchedSku:x,watchedOculto:A,watchedPeso:D,suggestedWeight:G,onApplySuggestedWeight:()=>W("peso",G,{shouldDirty:!0}),dimensionsError:re,dimensionsErrorMessage:$}),o.jsx(Lr,{control:h,isSubmitting:M,componentes:T,componentProductsById:Y,error:te,errorMessage:Ke,precoEfetivo:Z,produtosCarregados:!!l,onSetNcm:f=>W("ncm",f,{shouldDirty:!0})}),o.jsx(S,{"aria-hidden":!0,sx:{visibility:"hidden",pointerEvents:"none",p:2,pb:"calc(1rem + var(--safe-area-inset-bottom, 0px))"},children:_e(!0)})]}),o.jsx(S,{sx:{position:"fixed",bottom:0,left:c?`${d}px`:0,right:0,backgroundColor:"white",borderTop:"1px solid #e5e7eb",p:2,pb:"calc(1rem + var(--safe-area-inset-bottom, 0px))",zIndex:10},children:_e(!1)})]})},Hr=["COMBO_INVALID:","COMBO_DEPENDENCY:"],Qr=e=>{for(const r of Hr){const t=e.indexOf(r);if(t>=0){const i=e.slice(t+r.length).trim();return i?i.charAt(0).toUpperCase()+i.slice(1):null}}return null},ee=e=>{const r=e,t=Qr(e.message);return t?(r.message=t,r):(e.code==="23505"&&(e.message.includes("idx_unique_user_sku_active")?(r.field="sku",r.message="Este código já está em uso por outro produto."):e.message.includes("unique_user_nome_preco")?(r.field="nome_preco",r.message="Já existe um produto com este nome e preço."):e.message.includes("produto_codigo_de_barras_user_unique_idx")?(r.field="codigo_de_barras",r.message="Este código de barras já está em uso por outro produto."):e.message.includes("idx_pci_unique_component")&&(r.message="O combo tem o mesmo produto e opção repetidos. Remova a duplicata.")),r)},Gr=async(e,r,t)=>{const i=new Set;for(const m of t){const v=`${m.produto_id}:${m.produto_variacao_id??0}`;if(i.has(v))throw new Error("O combo tem o mesmo produto e opção repetidos. Remova a duplicata.");i.add(v)}const{data:a,error:s}=await O.from("produto_combo_item").select("id, produto_id, produto_variacao_id, quantidade, ordem").eq("combo_produto_id",e);if(s)throw ee(s);const n=a??[],c=new Set(t.map(m=>m.id).filter(m=>m!=null)),d=n.filter(m=>!c.has(m.id));if(d.length>0){const{error:m}=await O.from("produto_combo_item").delete().in("id",d.map(v=>v.id));if(m)throw ee(m)}const l=async()=>{if(d.length!==0)try{await O.from("produto_combo_item").insert(d.map(m=>({user_id:r,combo_produto_id:e,produto_id:m.produto_id,produto_variacao_id:m.produto_variacao_id,quantidade:m.quantidade,ordem:m.ordem})))}catch{}},p=[];for(let m=0;m<t.length;m++){const v=t[m],u=v.id!=null?n.find(_=>_.id===v.id):void 0;if(u){if(u.quantidade!==v.quantidade||u.produto_variacao_id!==v.produto_variacao_id||u.ordem!==m){const{error:h}=await O.from("produto_combo_item").update({quantidade:v.quantidade,produto_variacao_id:v.produto_variacao_id,ordem:m,atualizado_em:new Date().toISOString()}).eq("id",u.id);if(h)throw await l(),ee(h)}}else p.push({user_id:r,combo_produto_id:e,produto_id:v.produto_id,produto_variacao_id:v.produto_variacao_id,quantidade:v.quantidade,ordem:m})}if(p.length>0){const{error:m}=await O.from("produto_combo_item").insert(p);if(m)throw await l(),ee(m)}},Jr=()=>{const e=gr(),{user:r}=fe(),t=r==null?void 0:r.id,{triggerRevalidation:i}=Do();return hr({mutationFn:async a=>{if(!t)throw new Error("User not authenticated");const s={...a.fields};s.sku===""&&(s.sku=null),s.categoria_id||(s.categoria_id=null);let n,c=!1;if(a.id){const{data:l,error:p}=await O.from("produto").update({...s,combo:!0}).eq("id",a.id).eq("user_id",t).eq("combo",!0).select("id");if(p)throw ee(p);if(!l||l.length===0)throw new Error("Não foi possível salvar este combo. Recarregue a página e tente de novo.");n=a.id}else{const{data:l,error:p}=await O.from("produto").insert([{...s,combo:!0,controlar_estoque:!1,destaque:999999,user_id:t}]).select("id").single();if(p)throw ee(p);n=l.id,c=!0}try{await Gr(n,t,a.componentes)}catch(l){throw c&&await O.from("produto").delete().eq("id",n),l}const d=!!a.fiscal&&(!!a.fiscal.ncm||!!a.fiscal.cest||!!a.fiscal.gtin||a.fiscal.origem!==0||a.fiscal.unidade!=="UN"||!!a.fiscal.regra_tributacao_id);if(a.fiscal&&(!c||d))try{const l={produto_id:n,user_id:t,ncm:a.fiscal.ncm||null,cest:a.fiscal.cest||null,origem:a.fiscal.origem??0,unidade:a.fiscal.unidade||"UN",gtin:a.fiscal.gtin||null,..."regra_tributacao_id"in a.fiscal?{regra_tributacao_id:a.fiscal.regra_tributacao_id??null}:{}};let{error:p}=await O.from("produto_fiscal").upsert(l,{onConflict:"produto_id,user_id"});(p==null?void 0:p.code)==="23503"&&"regra_tributacao_id"in l&&({error:p}=await O.from("produto_fiscal").upsert({...l,regra_tributacao_id:null},{onConflict:"produto_id,user_id"})),p&&console.error("Error saving combo fiscal data:",p)}catch(l){console.error("Error saving combo fiscal data:",l)}
7try{await O.rpc("refresh_combo_em_estoque_by_combo",{p_combo_id:n})}catch{}return{id:n}},onSuccess:a=>{e.invalidateQueries({queryKey:["products"]}),e.invalidateQueries({queryKey:["productsCount"]}),e.invalidateQueries({queryKey:["products-visibility-count"]}),e.invalidateQueries({queryKey:["combo-definitions"]}),e.invalidateQueries({queryKey:["products-fiscal"]}),e.invalidateQueries({queryKey:["product",String(a.id)]}),e.invalidateQueries({queryKey:["comboCurrentCost"]}),e.invalidateQueries({queryKey:["productSales"]}),i()}})},Et=()=>{var V;const{productId:e}=Ko(),r=!!e,t=ge(),{user:i}=fe(),{data:a}=Be(),s=(a==null?void 0:a.formData.crt)===3,{mutateAsync:n}=Jr(),{data:c,isLoading:d,isError:l}=br(e??""),{data:p,isLoading:m,isFetching:v,isError:u}=vr({enabled:r}),_=r?`combo_edit_${e}`:"combo_create",h=`comboFormData_${_}`,I=r?"Editar combo":"Novo combo",[E,W]=C.useState(()=>{const b=localStorage.getItem(h);if(b)try{return rr(JSON.parse(b))}catch{}return r?null:{image_urls:[],productName:"",price:null,promoPrice:null,description:"",sku:"",categoria_id:"",oculto:!1,comprimento:null,largura:null,altura:null,peso:null,componentes:[],combo_nf_modo:"detalhado",ncm:"",cest:"",origem:0,unidade:"UN",gtin:"",regra_tributacao_id:null}});C.useEffect(()=>{localStorage.removeItem(h)},[h]);const[P,g]=C.useState(!1),[M,B]=C.useState(!1),[oe,x]=C.useState(!1);C.useEffect(()=>{r&&c&&!c.combo&&t(`/products/${e}/edit`,{replace:!0})},[r,c,e,t]),C.useEffect(()=>{if(E)return;let b=!1;if(c&&p){const Z=tr(c),G=p.get(Number(e))??[];if(G.length===0)return;(async()=>{var re;let N=null;if(i!=null&&i.id){const{data:$,error:te}=await O.from("produto_fiscal").select("*").eq("produto_id",c.id).eq("user_id",i.id).maybeSingle();if(te)throw new Error(te.message);N=$}b||W({id:c.id,productName:c.nome,description:c.descricao,price:Z.price,promoPrice:Z.promoPrice,sku:c.sku??"",categoria_id:c.categoria_id??"",oculto:c.oculto??!1,image_urls:((re=c.image_url)==null?void 0:re.map($=>({url:$,id:$,previewUrl:$,status:"uploaded"})))??[],comprimento:c.comprimento??null,largura:c.largura??null,altura:c.altura??null,peso:c.peso??null,componentes:G.map($=>({id:$.id,produto_id:$.produto_id,produto_variacao_id:$.produto_variacao_id,quantidade:$.quantidade})),combo_nf_modo:c.combo_nf_modo==="unico"?"unico":"detalhado",ncm:(N==null?void 0:N.ncm)??"",cest:(N==null?void 0:N.cest)??"",origem:(N==null?void 0:N.origem)??0,unidade:(N==null?void 0:N.unidade)??"UN",gtin:(N==null?void 0:N.gtin)??"",regra_tributacao_id:(N==null?void 0:N.regra_tributacao_id)??null})})().catch(()=>{b||g(!0)})}return()=>{b=!0}},[E,h,r,c,p,e,i==null?void 0:i.id]);const A=async b=>{const Z=Array.isArray(b.image_urls)?b.image_urls.filter(z=>z&&typeof z.url=="string"&&z.url.trim()!=="").map(z=>z.url.trim()):[],G=await n({id:r?Number(e):void 0,fields:{nome:b.productName,descricao:b.description,preco:b.preco??0,preco_cheio:b.preco_cheio??null,image_url:Z,sku:b.sku&&b.sku.trim()!==""?b.sku:null,categoria_id:b.categoria_id||null,oculto:!!b.oculto,comprimento:b.comprimento??null,largura:b.largura??null,altura:b.altura??null,peso:b.peso??null,combo_nf_modo:b.combo_nf_modo==="unico"?"unico":"detalhado"},fiscal:{ncm:b.ncm||null,cest:b.cest||null,origem:b.origem??0,unidade:b.unidade||"UN",gtin:b.gtin||null,...s?{regra_tributacao_id:b.regra_tributacao_id||null}:{}},componentes:(b.componentes??[]).map(z=>({id:z.id,produto_id:z.produto_id,produto_variacao_id:z.produto_variacao_id??null,quantidade:z.quantidade}))});localStorage.removeItem(h),r||ar(),t(`/products/${G.id}`,{replace:!0})},D=b=>{localStorage.setItem(h,JSON.stringify(b))},j=()=>{localStorage.removeItem(h),r?t(`/products/${e}`,{replace:!0}):t(-1)},R=()=>{M?x(!0):j()},F=()=>{x(!1);const b=document.querySelector('form button[type="submit"]');b&&b.click()},T=r&&(d||m||!E),X=r&&!!p&&!!c&&!v&&(((V=p.get(Number(e)))==null?void 0:V.length)??0)===0,Y=r&&(l||u||X||P);return o.jsx(yr,{title:I,children:o.jsxs(S,{sx:{position:"relative",padding:2,overflow:"auto"},children:[o.jsx(We,{title:I,navigateBack:!0,onBack:R}),Y?o.jsx(Ho,{primaryText:"Erro ao carregar o combo",secondaryText:"Por favor, tente novamente mais tarde."}):T||!E?o.jsx(S,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"70vh"},children:o.jsx($e,{})}):o.jsx(Kr,{defaultValues:E,onSubmit:A,onSaveFormData:D,onDirtyChange:B,comboF
7ormKey:_,isCreate:!r},_),o.jsx(Qo,{open:oe,onSave:F,onDiscard:()=>{x(!1),j()},onCancel:()=>x(!1)})]})})};export{Et 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.