1import{u as je,r,j as e}from"./react-vendor-BorBU4Bs.js";import{b as oe,a as ve,B as d,A as Ce,P as te,I as l,K as fe,M as Ne,N as _e,O as we,Q as z,U as h,V as Se,W as x,n as E,az as Q,T as ne,D as ie,i as re,j as ce,k as le,L as c,S as Y,d as X,f as Z,g as ee,h as M,G as be,J as de,s as ye}from"./index-DkhxOMdR.js";import{P as Ee}from"./PageHeader-BP8oDBUm.js";import{S as ae}from"./switch-FKqIeruD.js";import{P as ke}from"./pencil-Cf5Ul2CU.js";import"./radix-vendor-CazrR58L.js";import"./charts-vendor-BxJanGhU.js";import"./query-vendor-dlntIC_S.js";import"./supabase-vendor-BxTHC7hl.js";import"./xlsx-vendor-DOnNs5_d.js";import"./qr-vendor-Ca1-Dxvv.js";const p=ye,se={nome:"",nome_fantasia:"",apelido:"",cnpj:"",categoria:"",tipo:"mercadoria",contato:"",telefone:"",telefone_fixo:"",email:"",condicao_pagamento:"",condicoes_pagamento:[],observacao:"",ativo:!0},Te={mercadoria:"Mercadoria",servico:"Serviço"};function Me(){const i=je(),{toast:u}=oe(),{isMaster:k,userRole:T,isReadonly:B}=ve(),N=(k||T==="admin")&&!B,[f,_]=r.useState([]),[w,S]=r.useState(!0),[b,A]=r.useState(""),[P,j]=r.useState(!1),[v,V]=r.useState(null),[o,n]=r.useState({...se}),[D,y]=r.useState(!1),[L,s]=r.useState(null),[C,R]=r.useState(""),[F,me]=r.useState({}),[I,$]=r.useState(!1),W=Array.from(new Set(f.map(a=>(a.categoria??"").trim()).filter(Boolean))).sort((a,t)=>a.localeCompare(t)),H=async()=>{const{data:a}=await p.from("cmp_fornecedor_vendedores").select("fornecedor_id, whatsapp, ativo"),t={};for(const m of a??[]){const g=t[m.fornecedor_id]??{total:0,whats:0};g.total+=1,m.whatsapp&&m.ativo&&(g.whats+=1),t[m.fornecedor_id]=g}me(t)},J=()=>{const a=C.trim();a&&(n(t=>t.condicoes_pagamento.includes(a)?t:{...t,condicoes_pagamento:[...t.condicoes_pagamento,a]}),R(""))},xe=a=>n(t=>({...t,condicoes_pagamento:t.condicoes_pagamento.filter(m=>m!==a)})),O=async()=>{S(!0);const{data:a,error:t}=await p.from("cmp_fornecedores").select("*").order("codigo");t&&u({title:"Erro ao carregar fornecedores",description:t.message,variant:"destructive"}),_(a??[]),S(!1),H()};r.useEffect(()=>{O()},[]);const he=()=>{V(null),n({...se}),$(!1),j(!0)},pe=a=>{V(a),$(!1),n({nome:a.nome,nome_fantasia:a.nome_fantasia??"",apelido:a.apelido??"",cnpj:a.cnpj??"",categoria:a.categoria??"",tipo:a.tipo??"mercadoria",contato:a.contato??"",telefone:a.telefone??"",telefone_fixo:a.telefone_fixo??"",email:a.email??"",condicao_pagamento:a.condicao_pagamento??"",condicoes_pagamento:a.condicoes_pagamento??(a.condicao_pagamento?[a.condicao_pagamento]:[]),observacao:a.observacao??"",ativo:a.ativo}),j(!0)},ue=async()=>{if(!o.nome.trim()){u({title:"Informe o nome do fornecedor",variant:"destructive"});return}y(!0);try{const a={...o,condicoes_pagamento:o.condicoes_pagamento,condicao_pagamento:o.condicoes_pagamento[0]??null};if(v){const{error:t}=await p.from("cmp_fornecedores").update(a).eq("id",v.id);if(t)throw t}else{const{data:t,error:m}=await p.rpc("cmp_next_numero",{_prefix:"FN"});if(m)throw m;const{error:g}=await p.from("cmp_fornecedores").insert({...a,codigo:t});if(g)throw g}u({title:v?"Fornecedor atualizado":"Fornecedor cadastrado"}),j(!1),await O()}catch(a){u({title:"Erro ao salvar",description:a.message,variant:"destructive"})}finally{y(!1)}},ge=async a=>{if(!window.confirm(`Excluir o fornecedor ${a.codigo} â ${a.nome}?`))return;const{error:t}=await p.from("cmp_fornecedores").delete().eq("id",a.id);if(t){u({title:"Erro ao excluir",description:t.message,variant:"destructive"});return}u({title:"Fornecedor excluÃdo"}),await O()},K=b.trim().toLowerCase(),q=K?f.filter(a=>[a.codigo,a.nome,a.nome_fantasia,a.apelido,a.cnpj,a.categoria].some(t=>(t??"").toLowerCase().includes(K))):f;return e.jsxs("div",{children:[e.jsxs(d,{variant:"ghost",size:"sm",className:"mb-3",onClick:()=>i("/compras"),children:[e.jsx(Ce,{className:"h-4 w-4 mr-1"})," Voltar"]}),e.jsx(Ee,{title:"Fornecedores de Compras",description:`${q.length} fornecedor(es)`,action:N?e.jsxs(d,{onClick:he,children:[e.jsx(te,{className:"h-4 w-4 mr-1"})," Novo fornecedor"]}):void 0}),e.jsx("div",{className:"mb-4 max-w-sm",children:e.jsx(l,{placeholder:"Buscar por código, nome, CNPJ ou categoria",value:b,onChange:a=>A(a.target.value)})}),e.jsx(fe,{children:e.jsx(Ne,{className:"p-0 overflow-x-auto",children:e.jsxs(_e,{children:[e.jsx(we,{children:e.jsxs(z,{children:[e.jsx(h,{children:"Código"}),e.jsx(h,{children:"Nome"}),e.jsx(h,{children:"CNPJ"}),e.jsx(h,{children:"Tipo"}),e.jsx(h,{children:"Categoria"}),e.jsx(h,{children:"Contato"}),e.jsx(h,{children:"Vendedores"}),e.jsx(h,{children:"Pagamento"}),e.jsx(h,{children:"Situação"}),e.jsx(h,{className:"text-right",children:"Ações"})]})}),e.jsxs(Se,{children:[w&&e.jsx(z,{children:e.jsx(x,{colSpan:10,className:"text-center text-muted-foreground py-8",children:"Carregandoâ¦"})}),!w&&q.length===0&&e.jsx(z,{children:e.jsx(x,{colSpan:10,className:"text-center text-muted-foreground py-8",children:"Nenhum fornecedor cadastrado."})}),q.map(a=>{var t,m,g,U;return e.jsxs(z,{children:[e.jsx(x,{className:"font-medium",children:a.codigo}),e.jsxs(x,{children:[e.jsx("div",{children:a.nome}),(a.nome_fantasia||a.apelido)&&e.jsxs("div",{className:"text-xs text-muted-foreground",children:[a.nome_fantasia||"",a.nome_fantasia&&a.apelido?" ⢠":"",a.apelido?`â${a.apelido}â`:""]})]}),e.jsx(x,{children:a.cnpj||"â"}),e.jsx(x,{children:e.jsx(E,{variant:a.tipo==="servico"?"secondary":"outline",children:Te[a.tipo??"mercadoria"]})}),e.jsx(x,{children:a.categoria||"â"}),e.jsxs(x,{children:[e.jsx("div",{className:"text-sm",children:a.contato||"â"}),e.jsx("div",{className:"text-xs text-muted-foreground",children:[a.telefone,a.telefone_fixo].filter(
1Boolean).join(" / ")||a.email||""})]}),e.jsx(x,{children:e.jsxs(d,{variant:"outline",size:"sm",className:"gap-1",onClick:()=>s(a),children:[e.jsx(Q,{className:"h-3.5 w-3.5"}),((t=F[a.id])==null?void 0:t.total)??0,(m=F[a.id])!=null&&m.whats?e.jsxs(E,{variant:"secondary",className:"ml-1 text-[10px]",children:[F[a.id].whats," zap"]}):null]})}),e.jsx(x,{children:((g=a.condicoes_pagamento)!=null&&g.length?a.condicoes_pagamento:a.condicao_pagamento?[a.condicao_pagamento]:[]).length===0?"â":e.jsx("div",{className:"flex flex-wrap gap-1",children:((U=a.condicoes_pagamento)!=null&&U.length?a.condicoes_pagamento:[a.condicao_pagamento]).map(G=>e.jsx(E,{variant:"outline",className:"text-xs",children:G},G))})}),e.jsx(x,{children:e.jsx(E,{variant:a.ativo?"default":"secondary",children:a.ativo?"Ativo":"Inativo"})}),e.jsx(x,{className:"text-right",children:N&&e.jsxs("div",{className:"flex justify-end gap-1",children:[e.jsx(d,{variant:"ghost",size:"icon",title:"Vendedores",onClick:()=>s(a),children:e.jsx(Q,{className:"h-4 w-4"})}),e.jsx(d,{variant:"ghost",size:"icon",onClick:()=>pe(a),children:e.jsx(ke,{className:"h-4 w-4"})}),e.jsx(d,{variant:"ghost",size:"icon",onClick:()=>ge(a),children:e.jsx(ne,{className:"h-4 w-4 text-destructive"})})]})})]},a.id)})]})]})})}),e.jsx(ie,{open:P,onOpenChange:j,children:e.jsxs(re,{className:"max-w-lg",children:[e.jsx(ce,{children:e.jsx(le,{children:v?`Editar ${v.codigo}`:"Novo fornecedor"})}),e.jsxs("div",{className:"grid gap-3 sm:grid-cols-2",children:[e.jsxs("div",{className:"sm:col-span-2",children:[e.jsx(c,{children:"Nome *"}),e.jsx(l,{value:o.nome,onChange:a=>n({...o,nome:a.target.value})})]}),e.jsxs("div",{children:[e.jsx(c,{children:"Nome fantasia"}),e.jsx(l,{value:o.nome_fantasia,onChange:a=>n({...o,nome_fantasia:a.target.value})})]}),e.jsxs("div",{children:[e.jsx(c,{children:"Apelido"}),e.jsx(l,{value:o.apelido,onChange:a=>n({...o,apelido:a.target.value}),placeholder:"Como é chamado no dia a dia"})]}),e.jsxs("div",{children:[e.jsx(c,{children:"CNPJ"}),e.jsx(l,{value:o.cnpj,onChange:a=>n({...o,cnpj:a.target.value})})]}),e.jsxs("div",{children:[e.jsx(c,{children:"Tipo *"}),e.jsxs(Y,{value:o.tipo,onValueChange:a=>n({...o,tipo:a}),children:[e.jsx(X,{children:e.jsx(Z,{})}),e.jsxs(ee,{children:[e.jsx(M,{value:"mercadoria",children:"Mercadoria"}),e.jsx(M,{value:"servico",children:"Serviço"})]})]})]}),e.jsxs("div",{className:"sm:col-span-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(c,{children:"Categoria"}),e.jsx(d,{type:"button",variant:"link",size:"sm",className:"h-auto p-0 text-xs",onClick:()=>{$(!I),n(a=>({...a,categoria:""}))},children:I?"Escolher existente":"Nova categoria"})]}),I||W.length===0?e.jsx(l,{value:o.categoria,onChange:a=>n({...o,categoria:a.target.value}),placeholder:"Ex.: Insumos, Peças, Serviços"}):e.jsxs(Y,{value:o.categoria||void 0,onValueChange:a=>n({...o,categoria:a}),children:[e.jsx(X,{children:e.jsx(Z,{placeholder:"Selecione a categoria"})}),e.jsx(ee,{children:W.map(a=>e.jsx(M,{value:a,children:a},a))})]})]}),e.jsxs("div",{children:[e.jsx(c,{children:"Contato"}),e.jsx(l,{value:o.contato,onChange:a=>n({...o,contato:a.target.value})})]}),e.jsxs("div",{children:[e.jsx(c,{children:"Celular / WhatsApp"}),e.jsx(l,{value:o.telefone,onChange:a=>n({...o,telefone:a.target.value})})]}),e.jsxs("div",{children:[e.jsx(c,{children:"Telefone fixo"}),e.jsx(l,{value:o.telefone_fixo,onChange:a=>n({...o,telefone_fixo:a.target.value}),placeholder:"(45) 3333-0000"})]}),e.jsxs("div",{children:[e.jsx(c,{children:"E-mail"}),e.jsx(l,{value:o.email,onChange:a=>n({...o,email:a.target.value})})]}),e.jsxs("div",{className:"sm:col-span-2",children:[e.jsx(c,{children:"Condições de pagamento"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(l,{value:C,onChange:a=>R(a.target.value),onKeyDown:a=>{a.key==="Enter"&&(a.preventDefault(),J())},placeholder:"Ex.: 28 dias â pressione Enter para adicionar"}),e.jsx(d,{type:"button",variant:"outline",onClick:J,children:"Adicionar"})]}),o.condicoes_pagamento.length>0&&e.jsx("div",{className:"mt-2 flex flex-wrap gap-1",children:o.condicoes_pagamento.map(a=>e.jsxs(E,{variant:"secondary",className:"gap-1",children:[a,e.jsx("button",{type:"button",onClick:()=>xe(a),className:"ml-1 text-muted-foreground hover:text-destructive",children:"Ã"})]},a))}),e.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:"A primeira condição é usada como padrão nos pedidos."})]}),e.jsxs("div",{className:"sm:col-span-2",children:[e.jsx(c,{children:"Observação"}),e.jsx(be,{value:o.observacao,onChange:a=>n({...o,observacao:a.target.value})})]})]}),e.jsxs(de,{children:[e.jsx(d,{variant:"outline",onClick:()=>j(!1),children:"Cancelar"}),e.jsx(d,{onClick:ue,disabled:D,children:D?"Salvandoâ¦":"Salvar"})]})]})}),e.jsx(Ae,{fornecedor:L,onClose:()=>{s(null),H()}})]})}function Ae({fornecedor:i,onClose:u}){const{toast:k}=oe(),[T,B]=r.useState([]),[N,f]=r.useState(!1),[_,w]=r.useState(""),[S,b]=r.useState(""),[A,P]=r.useState(""),[j,v]=r.useState(""),[V,o]=r.useState(!1),n=async()=>
1{if(!i)return;f(!0);const{data:s}=await p.from("cmp_fornecedor_vendedores").select("*").eq("fornecedor_id",i.id).order("created_at");B(s??[]),f(!1)};r.useEffect(()=>{i&&n()},[i==null?void 0:i.id]);const D=async()=>{if(!i)return;if(!_.trim())return k({title:"Informe o nome do vendedor",variant:"destructive"});o(!0);const{error:s}=await p.from("cmp_fornecedor_vendedores").insert({fornecedor_id:i.id,nome:_.trim(),telefone:S.replace(/[^\d]/g,"")||null,email:A.trim()||null,cargo:j.trim()||null});if(o(!1),s)return k({title:"Erro ao adicionar",description:s.message,variant:"destructive"});w(""),b(""),P(""),v(""),await n()},y=async(s,C)=>{await p.from("cmp_fornecedor_vendedores").update(C).eq("id",s.id),await n()},L=async s=>{window.confirm(`Remover o vendedor ${s.nome}?`)&&(await p.from("cmp_fornecedor_vendedores").delete().eq("id",s.id),await n())};return e.jsx(ie,{open:!!i,onOpenChange:s=>{s||u()},children:e.jsxs(re,{className:"max-w-2xl",children:[e.jsx(ce,{children:e.jsxs(le,{children:["Vendedores â ",(i==null?void 0:i.apelido)||(i==null?void 0:i.nome_fantasia)||(i==null?void 0:i.nome)]})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Cadastre quantos vendedores forem necessários. Os marcados com WhatsApp ativo recebem as mensagens de compras."}),e.jsxs("div",{className:"space-y-2",children:[N&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"Carregandoâ¦"}),!N&&T.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"Nenhum vendedor cadastrado."}),T.map(s=>e.jsxs("div",{className:`flex items-center gap-3 rounded border p-2 ${s.ativo?"":"opacity-50"}`,children:[e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsxs("p",{className:"truncate text-sm font-medium",children:[s.nome,s.cargo?` â ${s.cargo}`:""]}),e.jsx("p",{className:"truncate text-xs text-muted-foreground",children:[s.telefone,s.email].filter(Boolean).join(" ⢠")||"sem contato"})]}),e.jsxs("label",{className:"flex items-center gap-1 text-xs",children:["WhatsApp",e.jsx(ae,{checked:s.whatsapp,onCheckedChange:C=>y(s,{whatsapp:C})})]}),e.jsxs("label",{className:"flex items-center gap-1 text-xs",children:["Ativo",e.jsx(ae,{checked:s.ativo,onCheckedChange:C=>y(s,{ativo:C})})]}),e.jsx(d,{variant:"ghost",size:"icon",onClick:()=>L(s),children:e.jsx(ne,{className:"h-4 w-4 text-destructive"})})]},s.id))]}),e.jsxs("div",{className:"grid gap-3 border-t pt-3 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(c,{children:"Nome *"}),e.jsx(l,{value:_,onChange:s=>w(s.target.value)})]}),e.jsxs("div",{children:[e.jsx(c,{children:"Celular / WhatsApp"}),e.jsx(l,{value:S,onChange:s=>b(s.target.value),placeholder:"45999998888"})]}),e.jsxs("div",{children:[e.jsx(c,{children:"Cargo"}),e.jsx(l,{value:j,onChange:s=>v(s.target.value),placeholder:"Ex.: Vendedor externo"})]}),e.jsxs("div",{children:[e.jsx(c,{children:"E-mail"}),e.jsx(l,{value:A,onChange:s=>P(s.target.value)})]})]}),e.jsxs(de,{children:[e.jsx(d,{variant:"outline",onClick:u,children:"Fechar"}),e.jsxs(d,{onClick:D,disabled:V,children:[e.jsx(te,{className:"mr-1 h-4 w-4"})," Adicionar vendedor"]})]})]})})}export{Me 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.