Skip to content

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

Firebird Product Migration

Firebird SQL License

Projeto desenvolvido para automatizar a exportação de produtos de um banco Firebird 2.0.3 para um layout de importação utilizado por outro ERP.

O objetivo foi transformar uma exportação manual em uma consulta SQL inteligente, aplicando automaticamente regras fiscais, tributárias e de negócio.


📌 Objetivo

Durante uma migração de ERP foi necessário exportar milhares de produtos do banco Firebird para um novo sistema.

Embora as informações existissem no banco, diversos dados precisavam ser tratados antes da importação, como:

  • definição automática de CST
  • definição automática de CFOP
  • localização correta do CEST
  • tratamento de produtos de balança
  • padronização das unidades
  • preservação do estoque
  • formatação dos valores monetários

Ao invés de realizar esse tratamento manualmente em Excel, foi desenvolvida uma consulta SQL que já gera o resultado no formato esperado pelo sistema de destino.


✨ Funcionalidades

  • Exportação de produtos ativos
  • Busca automática do CEST através da faixa do NCM
  • Definição automática do CST
  • Definição automática dos CFOPs
  • Tratamento de produtos de balança
  • Conversão automática da unidade para KG
  • Geração da referência da balança
  • Manutenção de estoques negativos
  • Formatação dos preços com duas casas decimais
  • Compatível com Firebird 2.0.3

🗄 Estrutura utilizada

Banco

Firebird 2.0.3

Tabelas

ESTOQUE
CEST

📋 Campos utilizados

ESTOQUE

Campo Finalidade
CODIGO Código do produto
DESCRICAO Nome
PRECO_VENDA Valor de venda
PRECO_CUSTO Valor de compra
COD_NCM NCM
BARRAS Código de barras
ST CST
UND Unidade
QTD Estoque
SITUACAO Produto ativo

CEST

Campo
CODIGO
FAIXA_NCM_INI
FAIXA_NCM_FIM

🔄 Fluxo da Migração

             Firebird

                │

                ▼

          Tabela ESTOQUE

                │

                ▼

        Aplicação das regras

        • Tributação
        • CFOP
        • CEST
        • Unidade
        • Produtos de balança

                │

                ▼

      Layout pronto para importação

                │

                ▼

           ERP de destino

📌 Regras implementadas

CST

Caso o campo ST esteja vazio:

102

Caso contrário:

ST

CFOP

CST 102

Operação CFOP
Venda Estadual 5102
Venda Interestadual 6102
Compra Estadual 1102
Compra Interestadual 2102

CST 500

Operação CFOP
Venda Estadual 5405
Venda Interestadual 6405
Compra Estadual 1403
Compra Interestadual 2403

Valores fixos

Campo Valor
CST PIS 49
CST COFINS 49
CST IPI 99
Origem 0
Redução BC 0
Enquadramento IPI 999
Gerenciar Estoque 1
ICMS 0
PIS 0
COFINS 0
IPI 0

🔎 Busca do CEST

Foi identificado durante o projeto que o campo:

ESTOQUE.COD_CEST

não era confiável.

A solução foi localizar automaticamente o CEST utilizando a tabela de faixas.

SELECT FIRST 1
       C.CODIGO
FROM CEST C
WHERE E.COD_NCM
BETWEEN
      C.FAIXA_NCM_INI
  AND C.FAIXA_NCM_FIM

Caso não exista correspondência, o campo permanece vazio.


⚖ Produtos de balança

Um produto é identificado como produto de balança quando:

  • possui exatamente 5 caracteres
  • inicia com o número 2

Exemplo

20123

Nesse caso:

Campo Resultado
Código de Barras vazio
Referência da Balança 0123
Unidade KG
Balança PDV 1

Demais produtos:

Campo Resultado
Código de Barras BARRAS
Unidade 2 primeiros caracteres
Balança PDV 0

📦 Estoque

Foi identificado que o estoque correto está armazenado no campo:

QTD

O projeto preserva estoques negativos.


💲 Preços

Os preços são exportados utilizando:

CAST(PRECO_VENDA AS NUMERIC(15,2))

CAST(PRECO_CUSTO AS NUMERIC(15,2))

💻 Compatibilidade

  • Firebird 2.0.3
  • IBExpert
  • SQL ANSI compatível com Firebird

📁 Estrutura sugerida

firebird-product-migration

├── README.md
├── LICENSE
│
├── sql
│   ├── export_produtos.sql
│   ├── validar_estoque.sql
│   └── consultas_auxiliares.sql
│
├── docs
│   ├── regras_de_negocio.md
│   ├── produtos_balanca.md
│   ├── cests.md
│   ├── arquitetura.md
│   └── decisoes_do_projeto.md
│
├── exemplos
│   ├── layout_importacao.xlsx
│   ├── resultado.csv
│   └── imagens
│
└── imagens
    ├── fluxo.png
    └── estrutura.png

🚀 Como utilizar

  1. Abrir o banco no IBExpert.
  2. Executar o script export_produtos.sql.
  3. Exportar o resultado para Excel ou CSV.
  4. Importar o arquivo no ERP de destino.

📚 Aprendizados

Durante o desenvolvimento foram identificadas algumas particularidades importantes:

  • O CST correto estava armazenado na coluna ST.
  • O campo COD_CEST da tabela ESTOQUE não era confiável.
  • O CEST precisava ser obtido por faixa de NCM.
  • Produtos de balança possuem um padrão específico de código de barras.
  • O estoque correto é obtido pela coluna QTD.
  • O Firebird 2.0.3 possui limitações que exigem funções clássicas como CASE, FIRST, SUBSTRING, STARTING WITH e COALESCE.

🔮 Próximos passos

Este projeto pode evoluir para uma ferramenta completa de migração, incluindo:

  • Conexão automática com Firebird via Python
  • Geração de arquivos Excel (.xlsx)
  • Interface gráfica para usuários
  • Configuração de regras fiscais por cliente
  • Exportação para diferentes layouts de ERP
  • Logs de execução
  • Testes automatizados

👨‍💻 Autor

Cássio Brito Rodrigues


📄 Licença

Este projeto está licenciado sob a licença MIT.

About

Ferramenta SQL para migração de produtos entre ERPs utilizando Firebird 2.0.3.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors