Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🏷️ AutoPreço NFe — Automação de Custos e Preços para ERP Bling

O AutoPreço NFe é uma ferramenta de automação em Python que facilita a gestão de custos e preços no ERP Bling. O sistema lê Notas Fiscais Eletrônicas (XML), cruza com o inventário exportado do Bling (CSV) e gera um ficheiro atualizado pronto para reimportação — com cálculos tributários precisos, suporte a produtos sortidos, preços promocionais terminados em ,90 e múltiplos níveis de proteção contra erros.


📋 Índice


🧠 Como Funciona a Inteligência do Programa

1. Cálculo Avançado do Custo Real

Diferente de uma simples cópia de preços, o programa calcula o Custo de Aquisição Real Unitário de forma detalhada:

  • Valor de Compra: Preço unitário extraído da tag <vUnCom> do XML.
  • Multiplicador de Compra: Permite multiplicar o valor de compra antes de qualquer cálculo (ex: produtos que chegam com valor fracionado na nota → multiplicador 2).
  • IPI Fracionado: Identifica o valor total do IPI na nota (<vIPI>) e divide pela quantidade comprada (<qCom>), aplicando o custo de imposto perfeitamente à unidade.
  • DIFAL/ICMS Dinâmico: Lê a alíquota de ICMS de cada produto no XML (<pICMS>). Se a compra for fora de SP, calcula automaticamente a diferença para 18% (ex: ICMS de 4% → adiciona 14%). Se o XML não trouxer alíquota, aplica 6% como margem de segurança.
  • Frete Extra: Percentagem personalizável definida pelo utilizador na interface.

2. Sincronização Inteligente em 3 Níveis

O programa utiliza três estratégias hierárquicas para encontrar os produtos correspondentes no CSV:

  1. Tentativa 0 (Modo Sortido): Verifica se o item da NFe possui vínculo manual definido para um ou mais códigos do CSV.
  2. 1ª Tentativa (EAN): Cruza o GTIN/EAN do XML com a coluna GTIN/EAN do CSV — funciona para a maioria dos produtos com código de barras válido.
  3. 2ª Tentativa (cProd — Fallback): Se o produto vier com SEM GTIN no XML, o programa usa o código interno do fornecedor (<cProd>) e cruza com a coluna Cód. no fornecedor do CSV.

3. Sincronização Pai e Filho (Variações)

  • Identifica o EAN (ou cProd) da variação na nota.
  • Procura todas as outras variações do mesmo Produto Pai no CSV.
  • Atualiza o Produto Pai com o preço da variação mais barata, garantindo que a vitrine do e-commerce/loja exiba a chamada "A partir de...".

4. Decisão de Preço com Limiar Configurável

Pensado para lojas físicas onde pequenas variações de preço não justificam troca de etiqueta:

  • Campo "Consultar se diferença < R$" na interface (padrão: R$ 15).
  • Quando a diferença entre o preço antigo e o novo for menor que esse valor, abre um popup perguntando se deseja aumentar ou manter o preço.

5. Alerta de Estoque em Risco

Quando um produto vai ter o preço aumentado e há unidades no estoque do CSV, o programa exibe um alerta no log em destaque:

⚠ ESTOQUE EM RISCO: Cod 14826 | Essência Bamboo | 3 un. no estoque ao preço antigo R$ 170,00

Isso alerta que existem unidades no estoque físico compradas ao custo antigo.


6. Soma de Estoque (Acumulativo)

  • Checkbox "📦 Somar Estoque" na interface.
  • Quando ativo, a quantidade da nota (qCom) é SOMADA ao estoque existente no CSV, sem substituir o valor anterior.

7. Exportação Enxuta (Lean CSV)

  • O ficheiro gerado (produtos_atualizados.csv) contém apenas os itens que sofreram alteração (filhos da nota + seus respectivos pais).
  • Todas as colunas de código (EAN, Código, Código Pai, ID) são forçadas como texto com quoting=csv.QUOTE_ALL para evitar corrupção de dados por notação científica (ex: 7,91E+12).

🛍️ Modo Sortido & Pré-visualização de Itens

Em muitas notas fiscais, os produtos chegam como itens sortidos (ex: "Cobre leito sortido solteiro") em uma única linha da NFe, mas no cadastro do ERP Bling existem vários produtos individuais divididos por cor ou estampa.

Para resolver isso, o AutoPreço NFe possui o Modo Sortido:

👁️ Pré-visualização dos Itens da Nota

  • Botão "👁️ Pré-visualizar Itens da Nota (Modo Sortido)" na interface principal.
  • Abre uma janela que lê a NFe e extrai o nome real de cada produto (<xProd>), código, valor unitário e código de barras.
  • Permite alternar cada item entre modo Individual e modo Sortido.

🔗 Janela de Vínculo Sortido (N:1)

Ao clicar em Vincular em um item sortido:

  • Combobox por Tamanho: Detecta automaticamente variações de tamanho no CSV (ex: Tamanho:Solteiro, Tamanho:Casal, Tamanho:Queen, Tamanho:King) de forma case-insensitive. Ao selecionar "Solteiro", o sistema seleciona todos os produtos com o tamanho Solteiro de uma só vez.
  • Checkboxes Visuais (☑ / ☐): Permite marcar ou desmarcar itens individualmente sem risco de perder as seleções anteriores.
  • Identificação Completa do Produto: Associa o nome do Produto Pai ao filho no CSV (ex: "Lençol com elástico e fronha... — Tamanho:Casal") facilitando a identificação exata da linha do produto.
  • Vínculos em Memória: Os vínculos são definidos a cada execução conforme a NFe do momento, sem necessidade de salvar arquivos de configuração em disco.

💰 Estratégias de Preço de Venda

O programa oferece duas estratégias flexíveis para formação do preço de venda:

1. Margem Padrão (2x) + Múltiplo de 5

  • Fórmula: Preço = Custo Real × 2 (Margem de 100%).
  • Arredondamento: Arredonda para o múltiplo de R$ 5,00 mais próximo (ex: R$ 66,08 → R$ 65,00), mantendo a tabela limpa.

2. Preço de Venda Terminando em ,90 (usar_preco_990)

  • Checkbox: 💰 Preço terminar em ,90 na interface.
  • Fórmula: $$\text{Preço} = \text{round}(\text{Custo Real} \times 2) - 0{,}10$$
  • Exemplo: Custo de R$ 90,58: $$\text{round}(90{,}58 \times 2) = \text{round}(181{,}16) = 181 \implies 181 - 0{,}10 = \mathbf{R$\ 180{,}90}$$
  • Trava Mínima: Garante um preço mínimo de R$ 0,90.
  • Ativável/desativável facilmente para aplicar a estratégias comerciais específicas.

🆕 Novidades da Versão Atual

Funcionalidade Descrição
Modo Sortido (N:1) Vincula 1 item da nota fiscal a múltiplos produtos do cadastros CSV de uma só vez.
Combobox por Tamanho Seleciona automaticamente todos os itens com Tamanho:Solteiro, Casal, Queen ou King.
Checkboxes de Seleção Coluna visual (☑ / ☐) para fácil marcação e desmarcação individual na janela de vínculos.
Nome do Produto Pai no Vínculo Exibe a combinação da descrição do Pai + Filho na lista de vínculos para fácil identificação.
Pré-visualização da NFe Extrai a descrição real do produto (xProd) e valor da NFe antes de processar.
Estratégia Preço ,90 Checkbox opcional que calcula o preço final terminado em ,90 (round(custo × 2) - 0.10).
Multiplicador de compra Multiplica o valor de compra antes dos impostos para itens com preço fracionado na nota.
Decisão de preço com limiar Popup Sim/Não para diferenças menores que o valor configurado.
Alerta de estoque em risco Aviso visual quando o preço sobe e há unidades físicas no estoque.
Soma de estoque acumulativa Checkbox que soma a quantidade da nota ao estoque existente no CSV.
Fallback por cProd Sincroniza produtos sem GTIN pelo código do fornecedor (<cProd>Cód. no fornecedor).
Interface Dark Azul Tema dark padronizado com log colorido em tempo real.

🛠️ Estrutura do Projeto

Ficheiro Função
processar_custos.pyw Interface gráfica (GUI). Monta a janela, pré-visualização, vínculos sortidos, parâmetros e log visual. A extensão .pyw abre sem janela de console no Windows.
logica_nfe.py Cérebro do programa. Parser do XML da NFe, extração de tamanhos, calculadoras tributárias, estratégias de preço, cruzamento com CSV e exportação.
.gitignore Arquivo de ignorados do Git para arquivos temporários, logs, caches e CSV/XMLs gerados.
README.md Documentação técnica e guia do utilizador.

📋 Requisitos

  • Python 3.8+
  • Bibliotecas:
    pip install pandas

    As demais bibliotecas (tkinter, xml.etree.ElementTree, os, csv, re, traceback) são nativas da instalação padrão do Python.


🚀 Como Executar

  1. Exportar do Bling:

    • No ERP Bling, acesse Cadastros > Produtos.
    • Selecione os produtos e clique em "Exportar Planilha para Atualização".
    • Salve o arquivo CSV no seu computador.
  2. Obter a Nota Fiscal:

    • Baixe o arquivo .xml da Nota Fiscal Eletrônica do fornecedor.
  3. Abrir o Programa:

    • Execute o arquivo processar_custos.pyw (duplo-clique).
    • Selecione o CSV do Bling e o XML da NFe.
  4. Configurar Parâmetros & Modo Sortido (se necessário):

    • Ajuste % Frete, Consultar se diferença < R$ e Multiplicar compra por.
    • Marque 📦 Somar Estoque ou 💰 Preço terminar em ,90 se desejar.
    • (Opcional) Clique em "👁️ Pré-visualizar Itens da Nota" para vincular produtos sortidos por tamanho.
  5. Processar & Importar:

    • Clique em "🚀 PROCESSAR NFe".
    • Analise o log de processamento.
    • Pegue o arquivo produtos_atualizados.csv gerado na pasta e importe no Bling em Preferências > Importação de Dados > Importar e Atualizar Produtos.

🔒 Notas de Segurança

  • O programa nunca altera o ficheiro CSV original. Sempre gera uma cópia atualizada (produtos_atualizados.csv).
  • O CSV exportado utiliza quoting=QUOTE_ALL para evitar a corrupção de códigos EAN e códigos de barras por notação científica no Excel.
  • As exceções no Tkinter são capturadas com traceback completo no log de processamento.

Desenvolvido para gestão inteligente e rigorosa de e-commerce e loja física.

About

Automatiza a atualização de preços no Bling ERP a partir de Notas Fiscais (XML), com cálculo de IPI fracionado, DIFAL/ICMS dinâmico e proteção contra erros de sincronização.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages