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.
- Como Funciona a Inteligência do Programa
- Modo Sortido & Pré-visualização de Itens
- Estratégias de Preço de Venda
- Novidades da Versão Atual
- Estrutura do Projeto
- Requisitos
- Como Executar
- Notas de Segurança
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.
O programa utiliza três estratégias hierárquicas para encontrar os produtos correspondentes no CSV:
- Tentativa 0 (Modo Sortido): Verifica se o item da NFe possui vínculo manual definido para um ou mais códigos do CSV.
- 1ª Tentativa (EAN): Cruza o GTIN/EAN do XML com a coluna
GTIN/EANdo CSV — funciona para a maioria dos produtos com código de barras válido. - 2ª Tentativa (cProd — Fallback): Se o produto vier com
SEM GTINno XML, o programa usa o código interno do fornecedor (<cProd>) e cruza com a coluna Cód. no fornecedor do CSV.
- 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...".
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.
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.
- Checkbox "📦 Somar Estoque" na interface.
- Quando ativo, a quantidade da nota (
qCom) é SOMADA ao estoque existente no CSV, sem substituir o valor anterior.
- 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_ALLpara evitar corrupção de dados por notação científica (ex:7,91E+12).
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:
- 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.
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.
O programa oferece duas estratégias flexíveis para formação do preço de venda:
- 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.
-
Checkbox:
💰 Preço terminar em ,90na 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.
| 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. |
| 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. |
- 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.
-
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.
- No ERP Bling, acesse
-
Obter a Nota Fiscal:
- Baixe o arquivo
.xmlda Nota Fiscal Eletrônica do fornecedor.
- Baixe o arquivo
-
Abrir o Programa:
- Execute o arquivo
processar_custos.pyw(duplo-clique). - Selecione o CSV do Bling e o XML da NFe.
- Execute o arquivo
-
Configurar Parâmetros & Modo Sortido (se necessário):
- Ajuste
% Frete,Consultar se diferença < R$eMultiplicar compra por. - Marque
📦 Somar Estoqueou💰 Preço terminar em ,90se desejar. - (Opcional) Clique em "👁️ Pré-visualizar Itens da Nota" para vincular produtos sortidos por tamanho.
- Ajuste
-
Processar & Importar:
- Clique em "🚀 PROCESSAR NFe".
- Analise o log de processamento.
- Pegue o arquivo
produtos_atualizados.csvgerado na pasta e importe no Bling emPreferências > Importação de Dados > Importar e Atualizar Produtos.
- O programa nunca altera o ficheiro CSV original. Sempre gera uma cópia atualizada (
produtos_atualizados.csv). - O CSV exportado utiliza
quoting=QUOTE_ALLpara 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.