rictom / rede-cnpj

Visualização gráfica de relacionamentos entre sócios e empresas com dados públicos de CNPJ.
MIT License
183 stars 75 forks source link

Novas bases de dados #4

Closed henriquearake1 closed 2 years ago

henriquearake1 commented 3 years ago

Olá, existe a possibilidade de usar bases de dados próprias e privadas em conjunto com as da Receita Federal?

rictom commented 3 years ago

Você pode adicionar mais vínculos criando uma tabela links.db (o modelo está no github) image informando o identificador de origem e de destino. Para essas ligações aparecerem no gráfico, vc pressiona shift+1, tem que alterar o parâmetro do valor mínimo, dependendo da consulta. Na versão online, coloquei uma tabela com a base de doadores de campanha do TSE, vinculando os políticos e os doadores. Para exibir outros dados, teria que alterar a rotina, uma coisa a pensar.

rafaezio commented 2 years ago

Olá, achei a ferramenta muito interessante e venho utilizando no meu trabalho (tanto a versão online, como a offline) Gostaria de inserir dados de bases próprias e vi você mencionar que devo criar uma tabela links.db

Eu venho tentando inserir dados, inclusive consegui inserir dentro do CNPJ.db testando opções no código do sq_lite que você disponibilizou para conversão das bases da RFB.

Hoje vim aqui reler novamente as informações, pra ver se encontrava algum insight e notei essa pergunta.

Considerando o que você disse, queria saber como eu posso criar uma tabela links.db ou editar a mesma? Sei que a pergunta é meio boba, mas não sou do meio e estou me aventurando na ferramenta. Se puder, peço que me explique ou até mencionar programas que tenha que utilizar. Desde já, agradeço a atenção.

rictom commented 2 years ago

Oi rafaezio,

A interface ainda está meio inconsistente... Vc pode alterar o arquivo rede.ini e por na linha base_local = base_dados_modelo.db Isso vai habilitar umas opções image Usando essa opção, os itens e ligações que foram inseridos manualmente no gráfico vão ser adicionados ao arquivo base_dados_modelo.db A planilha rede-cnpj-v03-drop teste.xlsx tem uns exemplos de como inserir itens novos e ligações. A aba Planilha4B image Arrastando essas células para a rede, vc vai criar itens A1, B1, com uma ligação de nome ligacao1. A opção Banco de Dados>Exportar ao Servidor vai mandar os dados do gráfico para o banco sqlite. Posteriormente, se vc inserir o item A1 e clicar duas vezes nele, vai buscar os dados no base_dados_modelo.db e inserir as ligações de A1 com B1 e outros.

rafaezio commented 2 years ago

Olá, boa tarde!

Comecei a usar a opção que me mandou, cheguei a conseguir salvar alguns testes e notei um erro. Estou rodando a versão dos dados em desktop via cmd e o sistema não está aceitando a inclusão de qualquer célula que contenha CNPJ. Eu notei que se eu utilizar os 14 dígitos ou o PJ_ na frente, ocorre sempre o erro 500 e não consigo inserir.: Ex.: 12.345.678/0001-23 ou PJ_12.345.678/0001-23 não conseguem ser inseridos, apresentando sempre o mesmo erro.

Se eu usar o número incompleto ele até consegue inserir porque não reconhece como CNPJ, mas não tem como buscá-lo pois está incompleto. Teria alguma sugestão para me ajudar com isso?

Abaixo deixo o que aparece no CMD quando ocorre o erro 500 ao utilizar o seu exemplo na Planilha11 erro 500.txt

Desde já, agradeço pela atenção!

rictom commented 2 years ago

A string está com erro, na linha 591 de rede_relacionamentos.py coloca um f na frente, if camada==0:

gambiarra, em camada 0, não apaga a tabela tmp_socios, por isso pega dados de consulta anterior.

    query0 = f''' # <------ESTÁ FALTANDO UM F PARA O F-STRING
    CREATE TABLE {tmp}_socios AS
    SELECT t.cnpj, t.cnpj_cpf_socio, t.nome_socio, sq.descricao as cod_qualificacao
    FROM socios t
    left join qualificacao_socio sq ON sq.codigo=t.qualificacao_socio
    limit 0
    '''
    con.execute(query0)

Faça essa alteração e veja se resolve.

rafaezio commented 2 years ago

@rictom deu certo sim, muito obrigado!

Depois dessa alteração, venho conseguindo inserir e me surgiu uma outra dúvida. O que eu preciso fazer para permitir a busca em camadas nos itens inseridos no base_dados_modelo.db ? Você teria alguma sugestão?

Eu notei que o Rede não está conseguindo expandir em camadas nos itens que inseri, ele só consegue expandir se existirem camadas da base da RFB. Se a pessoa tiver mais relações e uma delas for com a RFB, dá certo. Se não, diz que não há nada na camada mesmo eu sabendo que tem.

Outra coisa que notei: se eu buscar um CNPJ da RFB vai aparecer relações que inseri, mas se fizer o contrário partindo do zero para buscar uma pessoa que inseri relacionada ao CNPJ, ela não dá resultado algum. Teria alguma ideia do porque isso acontece?

rictom commented 2 years ago

Estava com um erro, a rotina ignorava ligação na base local que fosse com origem em Pessoa Física. Fiz uma correção, espero que resolva.

eduardovbrito commented 2 years ago

Olá, Bom dia.

@rictom , por favor, gostaria de importar os endereços de algumas pessoas físicas e jurídicas para verificar possíveis coincidências de localização. Como faço para importá-los no mesmo formato que você utiliza? Penso ser importante utilizar a mesma formatação para que as coincidências possam ser efetivamente identificadas. Muito obrigado.

rictom commented 2 years ago

Carreguei o arquivo cnpj_normaliza_enderecos.py que faz a normalização dos endereços, telefones e emails. Se vc quiser adicionar novos endereços, vc terá que alterar as linhas having count({coluna})>1; para having count({coluna})>=1; Isso vai fazer que todos os endereços de cnpj passem a aparecer no gráfico, não apenas os endereços que tenham coincidência. Vc deverá rodar o cnpj_normaliza_enderecos.py, o que irá criar o arquivo cnpj_links_ete.db, com ligações de endereço.

Para incluir endereços adicionais, crie um arquivo excel endereco.xlsx como image e rode a rotina leArquivoEnderecos. Isso vai criar registros de ligação de endereço no arquivo base_dados_modelo.db. Para fazer efeito, inclua no arquivo rede.ini a linha base_local = base_dados_modelo.db

Vc tem que seguir o padrão de identificador, pessoa jurídica com PJxxxxxxxxxxxxxx e pessoa física PF*xxxxxx-NOME, tudo em maiúsculas. Não testei essa parte direito, talvez precise fazer algum ajuste.