Skip to content

Repository files navigation

CENTRAL ATLAS

Visão geral:

  • Atlas Contabilidade precisava de uma aplicação que realizasse a importação de dados do banco legado (firebird questor) e disponibilizasse, por meio de uma pesquisa por nome ou codigo da empresa, informacoes como CNPJ, endereço, dados dos socios, senhas de acessos, faturamento, receitas, despesas, impostos pagos e responsaveis por setor. Além disso, o sistema contempla um dashboard interativo e o tratamento de informações derivadas de planilhas internas e externas(clientes), realizando automações para modificar e permitir a importação direta desses dados por meio da ferramenta Questor.

Produtos internos:

  • Importações ( Clientes, Despesas, Prefeituras, Receitas, Responsaveis, Socios, Faturamento, Impostos)

  • Dashboard (Receitas, Despesas)

  • Automações (Tratamento de planilha padrão cliente para modelo de importação Questor)

  • Consultas ( Consultas das informações dos clientes, dados, receitas, despesas, faturamentos)

Quem utiliza:

  • Adminstradores, Time Fiscal, Contábil, Pessoal, Financeiro, Estagiarios.

Tecnologias utilizadas e decisões técnicas

Django

O Django foi utilizado como uma maneira robusta e escalável para uma aplicação web, permitindo automações e ferramentas necessárias para desempenhar uma boa aplicação interna.

A escolha do Django permitiu:

  • Centralizar regras de negócio relacionadas aos dados contábeis e fiscais.

  • Criar Management Commands para importação, consulta e manutenção de dados.

  • Facilitar a evolução do sistema sem dependência de interface gráfica.

Firebird (Questor)

O banco de dados Firebird é utilizado por ser o banco legado do Sistema Questor, que concentra todos dados importados, clientes, faturamentos, receitas, despesas e todas informações produzidas pelos analistas para cada empresa.

A integração com o Firebird foi necessária para:

  • Garantir a fidelidade dos dados originais.

  • Evitar dependência de informações manuais.

  • Permitir consultas e importações automatizadas por empresa.

Management Commands:

Os management commands foram adotados como principal forma de execução da rotina de importação dos dados, bem como a consulta, exclusão e tratamento das informações. Permitindo controle explícito da execução, parametrizada via argumentos facilitando a manutenção.

Planilhas Excel:

As planilhas são utilizadas como fonte de dados internos, preenchidos pelos analistas, refletindo a realidade operacional do escritório onde nem sempre as informações estão disponíveis no sistema legado (Questor).

Foram criadas rotinas para tratamento, validação e importação dos dados para:

  • Padronizar dados antes da importação
  • Reduzir erros manuais
  • Integrar informações externas e adicionais

Celery (Rotinas Assíncronas):

O celery foi utilizado no sistema para execução das tarefas assíncronas, como tratamento e processamento de planilhas derivadas dos clientes.

A adoção do Celery permitiu:

  • Executar rotinas longas sem bloquear a aplicação principal
  • Controlar os estados das execuções (pendente, processando, concluído ou erro)
  • Organizar as tarefas que podem ser executadas de forma independente

Essa abordagem foi necessária principalmente para tarefas que envolvem grande volume de dados, como o processamento fiscal/contabil.

O uso das tarefas assíncronas evita falhas por timeout, melhora a experiencia operacional e permite maior controle sobre erros e processamentos.

App_variaveis

A aplicação app_variaveis foi criada para realizar o controle e administração das rotinas assíncronas, centralizando informações de estado, parâmetros e variáveis utilizadas pelas tarefas executadas via Celery.

Ela atua em conjunto com o Celery e Redis, permitindo o acompanhamento das execuções, controle de estado e apoio às rotinas.

Essa abordagem facilita o monitoramento, a rastreabilidade e a manutenção das rotinas automatizadas do sistema.

Redis

O Redis foi utilizado como broker de mensageria para o Celery, sendo responsável por intermediar a comunicação entre o disparo das tarefas e a execução assíncrona das rotinas do sistema

A adoção do Redis permitiu:

  • Garantir o enfileiramento e a distribuição das tarefas assíncronas
  • Evitar bloqueios na execução principal da aplicação
  • Controlar o fluxo de execução das rotinas de importação e sincronização
  • Manter a execução desacoplada do processamento pesado

Essa abordagem permitiu maior estabilidade, previsibilidade e escalabilidade das rotinas assíncronas do sistema.

Waitress

O Waitress foi utilizado como servidor WSGI para a aplicação DJANGO, sendo responsável por atender as requisições da aplicação em ambiente Windows.

A escolha do Waitress se deu por:

  • Compatibilidade com o sistema operacional (Windows)
  • Simplicidade de configuração
  • Estabilidade para uso interno
  • Integração direta com DJANGO sem dependência adicionais

O Waitress é executado como serviço Windows por meio do NSSM, garantindo que a aplicação permanceça ativa de forma contínua.

Whitenoise

O Whitenoise foi utilizado para o gerenciamento e a entrega dos arquivos estáticos da aplicação DJANGO, permitindo que esses recursos fossem servidos diretamente pela aplicação.

Essa escolha foi adotada considerando o uso interno do sistema em ambiente Windows, onde a utilização de um servidor web externo como Nginx não se mostrou necessária.

NSSM (Non-Sucking Service Manager)

O NSSM foi utilizado para realizar a execução dos processos essenciais do sistema como serviço do Windows, mantendo as aplicações sempre ativas independente da variação do sistema operacional.

Foram registrados serviços como:

  • Celery
  • Redis
  • Waitress
  • Serviços relacionados ao DJANGO (incluindo Whitenoise no contexto de serving estático)

A utilização do NSSM contribuiu para:

  • Executar serviços de forma automática junto à inicialização do sistema
  • Evitar dependência de execução manual do sistema
  • Garantir maior estabilidade operacional
  • Facilitar o controle de Start, Stop e reinicialização dos serviços.

Essa abordagem foi adotada devido ao ambiente de execução em Windows, permitindo que o servidor Django e as rotinas assíncronas permaneçam ativas de forma confiável e controlada.

Execução Via CLI (Terminal)

A execução das rotinas via terminal foi utilizada para permitir um maior controle, rastreabilidade e segurança das ações e execuções realizadas no sistema. Principalmente tarefas sensíveis e importantes como importações, correções e restauração de backups (Questor legado).

Logs e tratamento de erros

O sistema possui tratamento de erros e listagem em logs para maior confiabilidade da operação do sistema, trazendo mais clareza e visibilidade geral do sistema, bem como a identificação de falhas durante as rotinas de importação e sincronização dos dados. Permitindo uma correção rápida e segura.

Fluxos criticos:

Atualizar_clientes:

Entrada:

Management Commands: atualizar_clientes

Fonte de dados: Banco legado Questor (Firebird)

arguments:

--CNPJ > atualizar apenas 1 empresa buscando pelo parametro INSCRFEDERAL
--codigo_empresa > atualizar apenas 1 empresa buscando pelo parametro CODIGOEMPRESA
  • Inclui no banco e atualiza clientes importando do banco legado Questor(firebird):
    • Filtra por meio de CNPJ e codigo de empresa e cria um SQL filtrando por esses parametros.

    • Faz o tratamento do CNPJ com a função normalize_cnpj, para retornar apenas numeros ex: 85.411.064.0001-38 > 85411064000138

    • Faz a modificação para identificar o tipo de registro da empresa: "codigo_filial_from_apelido": 1: junta comercial, 2: cartorio, 3: OAB.

    • Modificar_data > tratamento da data para DD/MM/AAAA, pois do sistema importa: dd-mm-aaaa.

    • APELIDOESTAB do SQL informa Matriz, Filial 2, Filial 3. codigo_filial_from_apelido: Pelo retorno do SQL trata essa informação e salva como 1, 2, 3. Sendo 1 Matriz, 2 Filial, 3 Filial(2).

Campos incluidos no Models -- TABELA CLIENTE --:

  • Nome
  • Numero
  • Filial
  • Endereco
  • Email
  • Inicio_atividade
  • CNPJ
  • Inscricao_estadual
  • Inscricao_municipal
  • Contato
  • Cnae
  • Atividade_federal
  • tipo_registro

Importar_planos:

Entrada:

Management Commands: importar_planos

Fonte de dados: Banco legado Questor (Firebird)

MODULO CONTÁBIL (questor)

  • Faz a importação do plano de contas separando contas analíticas e sintéticas importando do banco legado Questor(Firebird):
    • Faz a validação das contas encontradas para nao duplicar (Apenas atualiza contas novas)

Tipo de campos SQL:

  • CONTACTB: Conta contabil no plano de contas da empresa
  • TIPOCONTA: Informa 1 ou 2, sendo 1 sintetica e 2 analítica
  • DESCRCONTA: Informa o nome da conta contabil
  • INSCRFEDERAL: Informa o CNPJ da empresa
  • NATURSALDO: Natureza da conta débito ou crédito
  • CODIGOEMRPESA: Informa o codigo da empresa presente no banco

Campos incluidos no Models -- TABELA PLANODECONTAS --:

  • Cliente
  • Contactb
  • Classifconta
  • Tipoconta
  • Descrconta
  • Incrfederal
  • Natursaldo
  • Data_importacao

Atualizar_despesas:

Entrada:

Management Commands: atualizar_despesas

Fonte de dados: Banco legado Questor (Firebird)

MODULO CONTÁBIL (questor)

  • Realiza a importação das despesas buscando pelas contas com classificação iniciando em "5.7" (despesas). Faz a validação pelo plano de contas importado para cada empresa, separando sempre por mês e ano.

Tipo de campos SQL:

  • DATALCTOCTB: Data do lançamento contábil
  • VALORLCTOCTB: Valor do lançamento contábil
  • CODIGOESTAB: Codigo filial (1,2,3)

Campos incluidos no Models --TABELA DADOSCONTABEIS--:

  • cliente
  • mes
  • total_receitas
  • total_despesas

Atualizar_receitas:

Entrada:

Management Commands: atualizar_receitas

Fonte de dados: Banco legado Questor (Firebird)

MODULO CONTÁBIL (questor)

  • Realiza a importação das receitas buscando pelas contas com classificação iniciando em "4.0" (receitas). Faz a validação pelo plano de contas importado para cada empresa, separando sempre por mês e ano.

Tipo de campos SQL:

  • DATALCTOCTB: Data do lançamento contábil
  • VALORLCTOCTB: Valor do lançamento contábil
  • CODIGOESTAB: Codigo filial (1,2,3)

Campos incluidos no Models --TABELA DADOSCONTABEIS--:

  • cliente
  • mes
  • total_despesas

Importar_faturamento:

Entrada:

Management Commands: importar_faturamento

Fonte de dados: Banco legado Questor (Firebird)

MODULO FISCAL (questor)

  • Importa valores de faturamento por empresa e vincula a cada cliente existente no DJANGO:

    • Faz o tratamento do CNPJ com a função normalize_cnpj, para retornar apenas numeros ex: 85.411.064.0001-38 > 85411064000138

    • Importa as informações do MODULO FISCAL, dados e informações deriva de notas fiscais lançadas.

Tipo de campos SQL:

  • INSCRFEDERAL: CNPJ do empresa
  • DATALCTOFIS: Data do lançamento da nota fiscal (data NF)
  • VALORCONTABILIMPOSTO: Valor deduzido para alcançar o valor correto de faturamento.
  • LCTOFISSAICFOP: CFOP da nota fiscal de saída
  • CODIGOESTAB: Codigo filial (1,2,3)
  • CODIGOCFOP: CFOP do lançamento
  • CFOPREGRA: Filtra pela regra de CFOP apra ignorar notas de devolução(exemplo)

Campos incluidos no Models --TABELA FATURAMENTO--:

  • cliente
  • mes
  • valor

Importar_simples:

Entrada:

Management Commands: importar_simples

Fonte de dados: Banco legado Questor (Firebird)

MODULO FISCAL (questor)

  • Importa valores do imposto Simples Nacional por empresa e vincula a cada cliente existente no DJANGO.

    • Faz o tratamento do CNPJ com a função normalize_cnpj, para retornar apenas numeros ex: 85.411.064.0001-38 > 85411064000138

    • Importa as informações do MODULO FISCAL, os dados derivam da tabela TOTALSSIMPLESFEDERAL, vinculando pelo CODIGOOPERACAOFIS, o padrão é (2601, 2603, 2609, 2652).

Tipo de campos SQL:

  • INSCRFEDERAL: CNPJ da empresa
  • CODIGOESTAB: Filial
  • DATATOTAL: Mes do imposto
  • TOTALSSIMPLESFEDERAL: Valores do imposto
  • CODIGOOPERACAOFIS: Tipo do imposto apurado, derivado do CFOP de cada nota fiscal.

Campos incluidos no models --TABELA IMPOSTO--:

  • faturamento
  • tipo
  • valor

Atualizar_socios:

Entrada:

Management Commands: atualizar_socios

Fonte de dados: Banco legado Questor (Firebird)

MODULO CONTABIL (questor)

  • Importa informações dos sócios de cada empresa e vincula por cada cliente existe no DJANGO.

    • Faz o tratamento de digitos do CPF com "normalize_digits", recebe do SQL exemplo: 123.456.789.10 > 12345678910.

    • Verifica instancia da data de nascimento e faz o tratamento dos dados, se vier como: 01-01-1900 transforma em 01/01/1900.

    • Para o endereço foi criado a função (montar_endereco) para juntar, pois o retorno do SQL para o endereço possui varios campos.

    • Criado função para verificar o socio ativo. Verifica se a data fim de DATAFIMSOCIO é inferior a data atual, caso sim retorna False, impedindo o socio de ser incluido no banco de dados (DJANGO)

Tipo de campos SQL:

  • ENDERECOSOCIO: Retorna a Rua
  • NUMENDERSOCIO: Retorna o numero
  • COMPLENDERSOCOIO: Retorna o complemento
  • BAIRROENDERSOCIO: Retorna o bairro
  • SIGLAESTADO: Retorna a sigla do estado, exemplo: "SC"
  • CEPENDERSOCIO: Retorna o CEP

Campos incluídos no models -- TABELA SOCIO--:

  • cliente
  • nome
  • cpf
  • rg
  • data_nascimento
  • endereco
  • email
  • contato
  • responsavel_receita

Sync_Questor_Completo:

Entrada:

Management Commands: sync_questor_completo

Orquestrador

  • Realiza a sincronização completa de todos os dados por meio dos management commands, caso algum comando ocorra erro irá ocorrer um erro: "Erro crítico na etapa "comando" e o erro mencionado".

  • Tratado erro para qualquer tipo de erro que possa acontecer.

Sincronizações:

  • atualizar_clientes
  • importar_planos
  • atualizar_socios
  • atualizar_receitas
  • atualizar_despesas
  • importar_faturamento
  • importar_simples
  • atualizar_dashboard

Observações:

  • Otimizado logica para importação dos dados, tempo de resposta entre 20 a 30 sec.

Atualizar_Prefeituras:

Entrada:

Management Commands: atualizar_prefeituras_planilha_fiscal

Fonte de dados: Planilha interna setor Fiscal

  • Realiza a importação dos dados de acesso a prefeitura de cada empresa advindo da planilha do setor fiscal.

  • Importação faz a vinculação pelo CNPJ da empresa que vem da planilha e retorna o cliente_id, fazendo assim o vinculo com o DJANGO.

  • Realizado funções para:

    • Normalizar: Normaliza o valor sem espaços.
    • Normalizar_cnpj: Retornao CNPJ sem espaços.
    • Normalizar_prefeitura: Retira hífen em nome de prefeituras.

Campos incluídos no models -- TABELA ACESSOS --:

  • cliente
  • login_prefeitura
  • senha_prefeitura
  • prefeitura

Atualizar_responsaveis:

Entrada:

Management Commands: atualizar_responsaveis

Fonte de dados: Planilha Gestta (Sistema interno):

  • Atualiza os responsáveis de cada setor por empresa, importando os dados de uma planilha derivada do sistema Gestta (controle de tarefas), faz o vínculo pelo CNPJ incluído caso o cliente esteja presente no banco DJANGO.

arguments:

--arquivo > seleciona o caminho completo para o arquivo excel contendo as informações dos responsáveis

Comandos Administrativos

Consulta_socios:

Entrada:

Management Commands: consulta_socios

Fonte de dados: Banco Django (SQLITE)

  • Retorna no terminal as informações de sócios, selecionando por empresa ou id do sócio cadastrado

arguments:

--id > socio que deseja consultar
--cnpj > cnpj do cliente para consultar (123456789)

Consulta_clientes:

Entrada:

Management Commands: consultar_clientes

Fonte de dados: Banco legado Questor (Firebird)

  • Retorna no terminal as informações de clientes cadastros, selecionando por CNPJ ou código da empresa cadastrada.

arguments:

--cnpj > CNPJ do cliente que deseja consultar
--codigo_empresa > Codigo da empresa que deseja consultar

Tipo de campos SQL:

  • NOMEESTABCOMPLETO: Retorna o nome da empresa completo
  • CODIGOEMPRESA: Retorna o codigo da empresa no Questor
  • APELIDOESTAB: Retorna o nome fantasia da empresa
  • EMAIL: Email cadastrado
  • INSCRFEDERAL: Retorna o CNPJ
  • DDDFONE: Retorna o DDD do telefone cadastrado
  • NUMEROFONE: Retorna o numero de telefone cadastrado para empresa

Excluir_cliente:

Entrada:

Management Commands: excluir_cliente

Fonte de dados: Banco Django (SQLITE)

  • Exclui um cliente cadastrado no banco Django selecionando por CNPJ.

arguments:

--cnpj > CNPJ do cliente que deseja excluir

Excluir_socio:

Entrada:

Management Commands: excluir_socio

Fonte de dados: Banco Django (SQLITE)

  • Exclui sócios do banco pelo CPF, CNPJ da empresa ou todos.

arguments:

--cpf > CPF do cliente que deseja excluir
--cnpj > CNPJ do socio que deseja excluir
--todos > Remove todos socios do banco (warning!)

Mudar_informacoes:

Entrada:

Management Commands: mudar_informacoes

Fonte de dados: Banco Django (SQLITE)

  • Altera informações do banco pelo CNPJ da empresa.

arguments:

--cnpj > CNPJ da empresa que deseja alterar
--set (tabela que deseja alterar), exemplo de uso:
    --cnpj=123456789 --set inscricao_municipal=123456 filial=2

Realizar_backup:

Entrada:

Management Commands: realizar_backup

Fonte de dados: Banco Django (SQLITE)

  • Realiza um backup do banco de dados DJANGO salvando-o na pasta raiz do projeto.

Restaurar_fbk:

Entrada:

Management Commands: restaurar_fbk

Fonte de dados: Banco legado Questor (Firebird)

  • Realiza a restauração do backup, arquivo .fbk do banco legado Questor, utilizado para descompactação, retornando em um arquivo .fdb onde é realizado as consultas e importações de informações.

arguments:

--fbk > caminho do arquivo .FBK
--destino > Caminho onde o banco para consulta irá ser criado (.fdb)
--usuario > Usuario do banco legado firebird.
--senha > Senha do banco legado firebird
--gbak > caminho para o gbak (gbak.exe) utilizado para descompactação.

Observações:

  • A descompactação deve ser realizada utilizando Firebird_2_5, com intuíto de minimizar erros e divergencias de versão.

Estrutura e Organização do Projeto:

  • A aplicação Central Atlas foi estruturada em multiplos APPS do Django, organizados de acordo com suas responsabilidades e domínio de negócio.

APP_CLIENTES:

  • O app_clientes é responsavel pelo gerenciamento, armazenamento e execução das rotinas de tratamento e importação dos dados provenientes do sistema legado Questor (Firebird). Além disso, realiza a disponibilização dessas informações por meio da interface da aplicação, permitindo consultas em ambiente de rede interna.

A aplicação concentra regras e dados específicos de negócio, como cliente, faturamento, impostos e informações contábeis.

Os management commands estão presentes, mantendo a proximidade entre a regra de negócio e as rotinas de importação, consulta e manutenção dos dados.

APP_VARIAVEIS:

  • O app_variaveis é responsável pelo controle e apoio dos processos assíncronos do sistema, permitindo a utilização de processos em segundo plano sem impactar a aplicação principal.

Ele atua em conjunto com o Celery e o Redis centralizando informações de estado, parâmetros e controle das execuções assíncronas.

🖼️ Screenshots

Página inicial do sistema

Página inicial

Campo de busca com autocomplete

Autocomplete

Dados

Autocomplete

Faturamento e Impostos

Autocomplete

Dashboard consolidado

Dashboard

Processamento assíncrono com Celery

Celery

Processo finalizado

Concluído

About

Automação contábil com Django e Celery integrada a banco legado (Firebird)

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Contributors

Languages