1import{j as a,C as O,R as v,a as C,A as E,b,B as F,S as X,P as _,F as V,c as J}from"./vendor-ui-bootstrap-613dad89.js";import{r as d}from"./vendor-react-4c7f50f2.js";import{F as H,a as K,c as W,b as Y,d as Z}from"./index-947c1c93.js";import{e as aa,d as ea,b as w,_ as oa}from"./vendor-firebase-7ea6fd91.js";import{d as sa,G as z}from"./main-722823a7.js";import ta from"./index-8735b8ba.js";import"./vendor-ui-material-b69ee68f.js";import"./iconBase-eddb2c83.js";import"./vendor-utils-de6b936e.js";const ra=10,B=200,m=s=>typeof s=="string"?s.trim():s?String(s):"",na=async()=>{const h=(await aa(ea(oa(sa,"entidades"),w("metadados.successorId","==","")))).docs.map(n=>{var g;const r=n.data(),j=r.dadosPessoais||{},l=r.dadosEndereco||{},u=r.dadosContato||{};return{id:n.id,nome:m(j.name),cnpj:m(j.cnpj),cep:m(l.cep),logradouro:m(l.logradouro),logradouroNumero:m(l.logradouroNumero),logradouroComplemento:m(l.logradouroComplemento),logradouroBairro:m(l.logradouroBairro),logradouroMunicipio:m(l.logradouroMunicipio),logradouroUF:m(l.logradouroUF),email:m(u.email),telefone:m(u.telefone),celular:m(u.celular),ativa:((g=r.metadados)==null?void 0:g.active)===!0,filiados:null,erroContagem:null}});return h.sort((n,r)=>n.nome.localeCompare(r.nome,"pt-BR")),h},$=async s=>{const h=[w("dadosFiliacao.vinculadoAEntidadeID","==",s),w("metadados.successorId","==","")];try{return{total:await z.getCollectionSizeByConditions("praticantes",h)}}catch(n){console.warn(`[ExportacaoEntidadesFiliados] Recontando ${s} após falha:`,n==null?void 0:n.message),await new Promise(r=>setTimeout(r,700));try{return{total:await z.getCollectionSizeByConditions("praticantes",h)}}catch(r){return console.error(`[ExportacaoEntidadesFiliados] Falha ao contar filiados de ${s}:`,r),{total:null,erro:(r==null?void 0:r.message)||"Erro desconhecido"}}}},ia=async()=>z.getCollectionSizeByConditions("praticantes",[w("metadados.successorId","==","")]),ja=()=>{const[s,h]=d.useState([]),[n,r]=d.useState(!1),[j,l]=d.useState(""),[u,g]=d.useState({concluidas:0,total:0}),[A,y]=d.useState(""),[N,P]=d.useState(!1),[I,k]=d.useState(!1),[p,L]=d.useState(null),f=d.useRef(!1),x=d.useMemo(()=>s.filter(e=>e.erroContagem),[s]),i=d.useMemo(()=>{const e=s.filter(t=>typeof t.filiados=="number"),c=e.reduce((t,o)=>t+o.filiados,0);return{entidades:s.length,ativas:s.filter(t=>t.ativa).length,inativas:s.filter(t=>!t.ativa).length,filiados:c,semFiliados:e.filter(t=>t.filiados===0).length,naoAtribuidos:typeof p=="number"?p-c:null}},[s,p]),S=d.useCallback(async(e,c)=>{let t=0,o=0;const R=async()=>{for(;;){const M=t;if(t+=1,M>=e.length||f.current)return;await c(e[M]),o+=1,g({concluidas:o,total:e.length})}};await Promise.all(Array.from({length:Math.min(ra,e.length)},R))},[]),q=d.useCallback(async()=>{f.current=!1,r(!0),P(!1),y(""),h([]),k(!1),L(null),g({concluidas:0,total:0});try{l("Lendo as entidades (ativas e inativas)...");const[e,c]=await Promise.all([na(),ia()]);if(L(c),e.length===0){y("Nenhuma entidade encontrada com metadados.successorId vazio.");return}l(`Contando filiados de ${e.length} entidades...`),g({concluidas:0,total:e.length}),await S(e,async t=>{const{total:o,erro:R}=await $(t.id);t.filiados=o,t.erroContagem=R||null}),e.forEach(t=>{t.filiados===null&&!t.erroContagem&&(t.erroContagem="Contagem não realizada â processamento cancelado.")}),h(e),P(!f.current),l(f.current?"Processamento interrompido pelo usuário.":"")}catch(e){console.error("[ExportacaoEntidadesFiliados] Erro ao gerar o relatório:",e),y(`Erro ao gerar o relatório: ${(e==null?void 0:e.message)||e}`)}finally{r(!1)}},[S]),T=d.useCallback(async()=>{if(x.length!==0){f.current=!1,r(!0),l(`Recontando ${x.length} entidade(s) que falharam...`),g({concluidas:0,total:x.length});try{const e=[...x];await S(e,async c=>{const{total:t,erro:o}=await $(c.id);c.filiados=t,c.erroContagem=o||null}),h([...s]),P(s.every(c=>typeof c.filiados=="number")),l("")}catch(e){console.error("[ExportacaoEntidadesFiliados] Erro ao recontar falhas:",e),y(`Erro ao recontar falhas: ${(e==null?void 0:e.message)||e}`)}finally{r(!1)}}},[s,x,S]),D=d.useCallback(()=>{f.current=!0,l("Cancelando...")},[]),G=d.useCallback(async()=>
1{if(s.length===0)return;const e=[{column:"Nome",type:String,width:45,value:o=>o.nome},{column:"CNPJ",type:String,width:20,value:o=>o.cnpj},{column:"CEP",type:String,width:12,value:o=>o.cep},{column:"Logradouro",type:String,width:35,value:o=>o.logradouro},{column:"Número",type:String,width:10,value:o=>o.logradouroNumero},{column:"Complemento",type:String,width:20,value:o=>o.logradouroComplemento},{column:"Bairro",type:String,width:25,value:o=>o.logradouroBairro},{column:"MunicÃpio",type:String,width:25,value:o=>o.logradouroMunicipio},{column:"UF",type:String,width:6,value:o=>o.logradouroUF},{column:"E-mail",type:String,width:35,value:o=>o.email},{column:"Telefone",type:String,width:18,value:o=>o.telefone},{column:"Celular",type:String,width:18,value:o=>o.celular},{column:"Qtde. Filiados",type:Number,width:15,value:o=>typeof o.filiados=="number"?o.filiados:null}],c=[{indicador:"Gerado em",valor:new Date().toLocaleString("pt-BR")},{indicador:"Entidades no relatório (successorId vazio)",valor:String(i.entidades)},{indicador:"Entidades ativas",valor:String(i.ativas)},{indicador:"Entidades inativas",valor:String(i.inativas)},{indicador:"Entidades sem nenhum filiado",valor:String(i.semFiliados)},{indicador:"Soma da coluna Qtde. Filiados",valor:String(i.filiados)},{indicador:"Praticantes correntes no sistema",valor:typeof p=="number"?String(p):"não apurado"},{indicador:"Praticantes não atribuÃdos a nenhuma entidade da lista",valor:typeof i.naoAtribuidos=="number"?String(i.naoAtribuidos):"não apurado"},{indicador:"Por que sobram praticantes",valor:"O praticante entra na contagem pelo campo dadosFiliacao.vinculadoAEntidadeID. Ficam de fora os que estão sem esse vÃnculo e os que apontam para uma versão antiga (arquivada) do cadastro da entidade, em vez do cadastro corrente."},{indicador:"Critério da contagem",valor:"Praticantes com metadados.successorId vazio, ativos e inativos somados."}],t=[{column:"Indicador",type:String,width:55,value:o=>o.indicador},{column:"Valor",type:String,width:90,value:o=>o.valor}];try{const o=new Date().toISOString().slice(0,19).replace(/[:T]/g,"-");await ta([s,c],{schema:[e,t],sheets:["Entidades","Resumo"],fileName:`entidades_filiados_${o}.xlsx`})}catch(o){console.error("[ExportacaoEntidadesFiliados] Erro ao exportar XLSX:",o),y(`Erro ao exportar o arquivo: ${(o==null?void 0:o.message)||o}`)}},[s,p,i]),Q=u.total>0?Math.round(u.concluidas/u.total*100):0,U=I?s:s.slice(0,B);return a.jsxs(O,{fluid:!0,className:"py-4",children:[a.jsx(v,{children:a.jsxs(C,{children:[a.jsxs("h2",{className:"mb-4",children:[a.jsx(H,{className:"me-2"}),"Exportação de Entidades com Quantidade de Filiados"]}),a.jsxs(E,{variant:"info",children:[a.jsx("strong",{children:"Sobre esta ferramenta:"})," exporta em XLSX ",a.jsx("strong",{children:"todas as entidades"})," ","correntes (",a.jsx("code",{children:"metadados.successorId"})," vazio), ativas e inativas, com nome, CNPJ, endereço detalhado, contatos e a quantidade de praticantes filiados a cada uma.",a.jsx("br",{}),"A contagem de filiados considera os praticantes correntes vinculados à entidade,"," ",a.jsx("strong",{children:"ativos e inativos somados"}),", sem distinção entre eles."]})]})}),a.jsx(v,{className:"mb-4",children:a.jsx(C,{md:8,children:a.jsx(b,{children:a.jsxs(b.Body,{children:[a.jsxs("div",{className:"d-flex flex-wrap gap-2",children:[a.jsx(F,{variant:"primary",onClick:q,disabled:n,children:n?a.jsxs(a.Fragment,{children:[a.jsx(X,{animation:"border",size:"sm",className:"me-2"}),"Processando..."]}):a.jsxs(a.Fragment,{children:[a.jsx(K,{className:"me-2"}),"Gerar relatório"]})}),n&&a.jsxs(F,{variant:"outline-danger",onClick:D,children:[a.jsx(W,{className:"me-2"}),"Cancelar"]}),s.length>0&&!n&&a.jsxs(F,{variant:"success",onClick:G,children:[a.jsx(Y,{className:"me-2"}),"Exportar para Excel"]})]}),(n||j)&&a.jsxs("div",{className:"mt-3",children:[j&&a.jsx("div",{className:"text-muted mb-2",children:j}),u.total>0&&a.jsx(_,{now:Q,label:`${u.concluidas} / ${u.total}`,striped:n,animated:n})]})]})})})}),A&&a.jsx(v,{className:"mb-3",children:a.jsx(C,{children:a.jsx(E,{variant:"danger",children:A})})}),s.length>0&&a.jsxs(a.Fragment,{children:[a.jsx(v,{className:"mb-3",children:a.jsxs(C,{children:[a.jsxs(E,{variant:N?"success":"warning",children:[a.jsx("strong",{children:i.entidades})," entidade(s) (",i.ativas," ativas /"," ",i.inativas," inativas) ·"," ",a.jsx("strong",{children:i.filiados.toLocaleStr
1ing("pt-BR")})," filiado(s) no total ·"," ",a.jsx("strong",{children:i.semFiliados})," entidade(s) sem nenhum filiado.",!N&&" Processamento interrompido â os números abaixo estão incompletos."]}),N&&i.naoAtribuidos>0&&a.jsxs(E,{variant:"warning",children:[a.jsx("strong",{children:"Conciliação:"})," o sistema tem"," ",a.jsx("strong",{children:p.toLocaleString("pt-BR")})," praticantes correntes, mas a soma da coluna ",a.jsx("em",{children:"Qtde. Filiados"})," é"," ",a.jsx("strong",{children:i.filiados.toLocaleString("pt-BR")})," â"," ",a.jsx("strong",{children:i.naoAtribuidos.toLocaleString("pt-BR")})," praticante(s) não entram em nenhuma entidade da lista. São os que estão sem"," ",a.jsx("code",{children:"dadosFiliacao.vinculadoAEntidadeID"})," e, principalmente, os que apontam para uma ",a.jsx("strong",{children:"versão antiga (arquivada)"})," do cadastro da entidade em vez do cadastro corrente. Não é uma falha desta exportação: é o estado do vÃnculo gravado no praticante."]})]})}),x.length>0&&a.jsx(v,{className:"mb-3",children:a.jsx(C,{children:a.jsxs(E,{variant:"danger",className:"d-flex justify-content-between align-items-center",children:[a.jsxs("span",{children:[a.jsx("strong",{children:x.length})," entidade(s) ficaram sem a contagem de filiados (falha de consulta ou cancelamento). Elas aparecem como"," ",a.jsx("em",{children:"n/d"})," na tela e saem do arquivo com a coluna"," ",a.jsx("em",{children:"Qtde. Filiados"})," em branco â nunca como zero."]}),a.jsxs(F,{variant:"outline-danger",size:"sm",onClick:T,disabled:n,children:[a.jsx(Z,{className:"me-2"}),"Recontar falhas"]})]})})}),a.jsx(v,{children:a.jsx(C,{children:a.jsx(b,{children:a.jsxs(b.Body,{children:[s.length>B&&a.jsx(V.Check,{type:"switch",className:"mb-3",id:"mostrar-todas-entidades",label:`Exibir todas as ${s.length} linhas (a pré-visualização mostra as ${B} primeiras)`,checked:I,onChange:e=>k(e.target.checked)}),a.jsxs(J,{striped:!0,bordered:!0,hover:!0,responsive:!0,size:"sm",children:[a.jsx("thead",{children:a.jsxs("tr",{children:[a.jsx("th",{children:"Nome"}),a.jsx("th",{children:"CNPJ"}),a.jsx("th",{children:"CEP"}),a.jsx("th",{children:"Logradouro"}),a.jsx("th",{children:"Número"}),a.jsx("th",{children:"Complemento"}),a.jsx("th",{children:"Bairro"}),a.jsx("th",{children:"MunicÃpio"}),a.jsx("th",{children:"UF"}),a.jsx("th",{children:"E-mail"}),a.jsx("th",{children:"Telefone"}),a.jsx("th",{children:"Celular"}),a.jsx("th",{className:"text-end",children:"Qtde. Filiados"})]})}),a.jsx("tbody",{children:U.map(e=>a.jsxs("tr",{children:[a.jsx("td",{children:e.nome}),a.jsx("td",{children:e.cnpj}),a.jsx("td",{children:e.cep}),a.jsx("td",{children:e.logradouro}),a.jsx("td",{children:e.logradouroNumero}),a.jsx("td",{children:e.logradouroComplemento}),a.jsx("td",{children:e.logradouroBairro}),a.jsx("td",{children:e.logradouroMunicipio}),a.jsx("td",{children:e.logradouroUF}),a.jsx("td",{children:e.email}),a.jsx("td",{children:e.telefone}),a.jsx("td",{children:e.celular}),a.jsx("td",{className:"text-end",children:typeof e.filiados=="number"?e.filiados:a.jsx("span",{className:"text-danger",title:e.erroContagem||"Contagem indisponÃvel.",children:"n/d"})})]},e.id))})]})]})})})})]})]})};export{ja as default}; 2//# sourceMappingURL=ExportacaoEntidadesFiliadosPage-ff5062f4.js.map
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.