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 formatados em X9,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 X9,90 (ex: 157,60 → 159,90)na interface. -
Regra: Olha o dígito das unidades da parte inteira do preço calculado (
Custo Real × 2):- < 5 → desce para o
X9,90da dezena anterior. - ≥ 5 → sobe para o
X9,90da dezena seguinte.
- < 5 → desce para o
-
Exemplos:
Preço calculado Dígito das unidades Resultado R$ 158,77 8(≥ 5)R$ 159,90 R$ 154,10 4(< 5)R$ 149,90 R$ 155,00 5(≥ 5)R$ 159,90 R$ 150,00 0(< 5)R$ 149,90 R$ 191,00 1(< 5)R$ 189,90 -
Trava Mínima: Garante um preço mínimo de R$ 9,90.
-
Ativa/desativa facilmente por checkbox — sem alterar os outros parâmetros.
| 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. |
| Modo X9,90 | Checkbox que formata o preço final no padrão X9,90: dígito das unidades < 5 desce, ≥ 5 sobe. Ex: 154,10 → 149,90 / 158,77 → 159,90. |
| 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 X9,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.