Situação:
Muitas pessoas precisam construir fórmulas de preço de custo que reflitam corretamente todos os componentes que compõem o custo do produto (preço, impostos, fretes, encargos, descontos, rateios etc,). Fórmulas incorretas geram custos errados, distorcem margens e impactam o valor de venda. O objetivo desta base é fornecer um guia completo e detalhado que explique cada variável disponível, cada símbolo/operador, mostrar exemplos práticos e apresente um passo a passo para montar, depurar e testar fórmulas de preço de custo no sistema.
Solução:
A seguir está a lista das variáveis exatamente como aparecem no sistema, suas definições e uma explicação aprofundada dos símbolos, com exemplos, Depois há várias seções com exemplos numéricos, instruções de verificação e a explicação detalhada da fórmula-completa de exemplo, dissecada parte a parte.
--------------------------------------------------------------------------------
Tabela de Variáveis (usar exatamente estes nomes)
--------------------------------------------------------------------------------
MF_PrecoNF - Preço unitário na Nota Fiscal
MF_AliqIPI - Alíquota de IPI
MF_AliqICM - Alíquota de ICMS da NF de Compra
MF_BaseICM - Base de cálculo do ICMS da NF de Compra
MF_DescVlr - Desconto em valor do item
MF_DescPercItem - Desconto em % do item (desativado)
MF_TipoFisc - Tipo fiscal
MF_QtdUnidSaida - Quantidade
MF_IcmSubstItem - Valor do ICMS ST do item
MF_ProdutoSTEntrada - Indica se o produto é ST na entrada (S ou N)
MF_UFFornecedor - UF do fornecedor (MG, DF, SP, RJ, ES, etc)
MF_TotalNF - Total da Nota Fiscal
MF_DescPerc - Desconto em percentual
MF_TotalIPI - Total de IPI
MF_Encargos - Total de encargos
MF_EncNaoTribut - Total de encargos não tributáveis
MF_IPIEncargos - Total de IPI sobre encargos
MF_FreteNF - Frete na Nota Fiscal
MF_TipoFreteConhec - Tipo do frete de conhecimento (“C” CIF ou “F” FOB)
MF_FreteConhec - Valor do frete de conhecimento
MF_DescVlrNF - Desconto em valor da Nota Fiscal
MF_DescBoleta - Desconto obtido no boleto
MF_TotalICM - Total de ICMS
MF_IcmSubstit - ICMS substituição
MF_AliqICMConhec - Alíquota de ICMS do frete de conhecimento
MF_AliqICMProd - ICMS padrão do produto (ao vender)
MF_BaseICMProd - Base ICMS padrão do produto (ao vender)
MF_EncForaNF - Encargos fora da nota fiscal
MF_Dvv - Despesas variáveis de venda
MF_IcmSTForaNF - Valor de ICMS ST fora da nota fiscal
MF_AcrescimoCusto - Acréscimo no custo
MF_AliqPIS - Alíquota de PIS
MF_AliqCOFINS - Alíquota de COFINS
MF_FreteIncideICMS - Indica se o frete incide na base de ICMS e ICMSST (S ou N)
MF_Frete_CTE - Valor do frete de CT-e do item
MF_CifFob_CTE - Tipo do frete CT-e (CIF = 0/1 ou FOB = 2/3)
MF_ValorIPI - Valor de IPI
MF_Vlr_ICMS_Dest - Valor do ICMS do destino (DIFAL)
MF_Vlr_ICMS_Orig - Valor do ICMS da origem (DIFAL)
MF_ValorPIS - Valor do PIS do item na nota de entrada
MF_ValorCOFINS - Valor do COFINS do item na nota de entrada
MF_Vlr_FCP_ST - Valor do FCP de substituição tributária
MF_Vlr_FCP_ST_Fora - Valor do FCP-ST fora da NF
MF_Vlr_FCP_Dest - Valor do FCP do destino (DIFAL)
MF_Aliq_FCP_Dest - Alíquota do FCP do destino (DIFAL)
MF_AliqICMS_CTE - Alíquota de ICMS do CT-e
MF_ValorST_CTE - Valor do ICMS ST do CT-e
MF_GeraCreditoICMS - Indica se gera crédito de ICMS (S ou N)
MF_VlrCreditoICMS_SN - Valor do crédito de ICMS do Simples Nacional
MF_Frete_ICMSSTFNF_CTE - Valor do ICMS ST fora da NF (frete CT-e)
MF_CST - Código de Situação Tributária
MF_CSOSN - Código de Situação da Operação no Simples Nacional
MF_ValorICMSOp - Valor do ICMS da operação
MF_PercentualDIF - Percentual de diferimento
MF_ValorICMSDIF - Valor de ICMS diferido
MF_RegimeTributario - Regime tributário da filial (S – Simples / R – Lucro Real / P – Lucro Presumido)
MF_CodFilial - Código da filial
--------------------------------------------------------------------------------
Explicação detalhada dos símbolos e operadores (com exemplos práticos)
Observação: o sistema utiliza vírgula (,) como separador decimal em quase todos os valores numéricos nas fórmulas.
--------------------------------------------------------------------------------
+ Soma: adiciona dois valores, Exemplo: 100 + 20 = 120, Em fórmula de custo: MF_PRECONF + (MF_FRETE_CTE/MF_QTDUNIDSAIDA) soma o custo do frete ao preço do produto.
- Subtração: subtrai um valor de outro, Ex: 100 - 10 = 90, Na fórmula: (MF_PRECONF - MF_DESCVLR) dá o preço do item após desconto em valor.
* Multiplicação: expr1 * expr2, Ex: 100 * 1,15 = 115, Uso comum: aplicar fator para acréscimo, Para acrescentar 15% faz-se *1,15, Para aplicar alíquota: *(1 + ALIQ/100) ou preço*(ALIQ/100) se quiser só o valor do imposto.
/ Divisão: expr1 / expr2, Ex: 200 / 4 = 50, Usado para ratear valores pela quantidade: MF_FRETE_CTE / MF_QTDUNIDSAIDA calcula frete por unidade.
() Parênteses: agrupam operações e controlam a ordem. A expressão dentro de parênteses é resolvida primeiro, Ex,: (100 - 10) * 1,2 = 90 * 1,2 = 108, Sem parênteses, multiplicação ocorreria antes da subtração.
IF(condição, valor_se_verdadeiro, valor_se_falso): estrutura condicional que escolhe entre dois valores, Ex,: IF(MF_CIFFOB_CTE > 1, (MF_FRETE_CTE/MF_QTDUNIDSAIDA), 0) — se o indicador CIFFOB_CTE for maior que 1, retorna o frete dividido pela quantidade, senão retorna 0.
Operadores de comparação: >, <, >=, <=, =, <>, Usados dentro do IF, Exemplos: MF_CIFFOB_CTE > 1, MF_ICMSUBSTITEM = 0, MF_CST <> '51',
Uso de percentuais: sempre converta porcentagem para fração ao aplicar: ALIQ/100, Ex,: Alíquota 12% → MF_ALIQICM = 12, então para obter 12% sobre MF_PRECONF use MF_PRECONF*MF_ALIQICM/100.
Concatenação de termos: quando somamos várias parcelas, cada parcela deve estar bem isolada por parênteses se houver operações internas: ((parcelas)*fator)+(outraParte),
Exemplos práticos curtos:
1) Preço líquido com IPI: (MF_PRECONF - MF_DESCVLR) * (1 + MF_ALIQIPI/100)
2) Custo unitário do frete de CT-e somente se CIF/FOB indicar: IF(MF_CifFob_CTE > 1, MF_FRETE_CTE / MF_QTDUNIDSAIDA, 0)
3) Rateio de encargos: (MF_ENCARGOS + MF_EncNaoTribut - MF_DescVlrNF) * MF_PERCRATEIO / MF_QTDUNIDSAIDA
--------------------------------------------------------------------------------
Erros comuns e como evitá-los
--------------------------------------------------------------------------------
- Divisão por zero: sempre verifique MF_QTDUNIDSAIDA > 0 antes de usar em divisão, Ex,: IF(MF_QTDUNIDSAIDA > 0, MF_FRETE_CTE/MF_QTDUNIDSAIDA, 0)
- Sintaxe incorreta em IF: número de parâmetros errado ou falta de parênteses, IF precisa de 3 argumentos separados por vírgula,
- Uso incorreto de nomes de variáveis: usar MF_PRECONF e não MF_PreConf ou outra variação; o nome deve ser exatamente igual,
- Ordem de operações: esquecer parênteses causa resultados diferentes do esperado,
- Separador decimal e separador de argumentos: confira o padrão do sistema (vírgula ou ponto) e do editor de fórmulas,
- Valores negativos inesperados: reveja subtrações e condições IF que subtraem valores; pode ocorrer subtração de imposto que deveria ser soma,
--------------------------------------------------------------------------------
Checklist antes de aplicar fórmula em produção
--------------------------------------------------------------------------------
1) Conferir nomes das variáveis exatamente como listados.
2) Garantir MF_QTDUNIDSAIDA > 0 ou usar IF de proteção.
3) Testar a fórmula com exemplo numérico em Excel.
4) Fazer revisão por um colega ou documentação fiscal se houver impostos complexos (DIFAL, FCP, ST), 5) Registrar alteração com justificativa (por que o termo foi incluído).
--------------------------------------------------------------------------------
Exemplo numérico completo (passo a passo com valores) — caso real
--------------------------------------------------------------------------------
Valores de entrada (exemplo):
MF_PRECONF = 6,50 (preço unitário antes de desconto)
MF_DESCVLR = 0,10 (desconto em valor por unidade)
MF_ALIQIPI = 5 (5% de IPI)
MF_ENCARGOS = 10,00 (valor total dos encargos que serão rateados entre itens)
MF_ENCNAOTRIBUT = 0,00
MF_FRETENF = 5,00
MF_FRETECONHEC = 0,00
MF_ENCFORANF = 0,00
MF_DESCVLRNF = 0,00
MF_PERCRATEIO = 1 (usar 1 quando a totalidade dos encargos é aplicável)
MF_QTDUNIDSAIDA = 10
MF_CIFFOB_CTE = 2 (indica que o frete CT-e deve ser considerado)
MF_FRETE_CTE = 20,00
MF_ICMSUBSTITEM = 0,00
MF_ICMSTFORANF = 0,00
MF_CST = '00'
MF_ALIQICM = 12
MF_PERCENTUALDIF = 0
MF_ALIQPIS = 1,65
MF_ALIQCOFINS = 7,6
MF_VLR_ICMS_DEST = 219,38
Vamos calcular passo a passo usando a fórmula exemplo com inclusão de MF_VLR_ICMS_DEST conforme recomendado:
Fórmula (com DIFAL adicionado ao rateio de encargos unitários):
(((MF_PRECONF-MF_DESCVLR)*(1+MF_ALIQIPI/100))
+((MF_ENCARGOS+MF_ENCNAOTRIBUT+MF_FRETENF+MF_FRETECONHEC+MF_ENCFORANF-MF_DESCVLRNF+MF_VLR_ICMS_DEST)*MF_PERCRATEIO/MF_QTDUNIDSAIDA)
+IF(MF_CIFFOB_CTE > 1,(MF_FRETE_CTE/MF_QTDUNIDSAIDA),0)
+(MF_ICMSUBSTITEM/MF_QTDUNIDSAIDA)
+(MF_ICMSTFORANF/MF_QTDUNIDSAIDA)
-IF(MF_ICMSUBSTITEM=0,(MF_PRECONF-MF_DESCVLR)*((IF((MF_CST<>'51'),MF_ALIQICM,MF_PERCENTUALDIF))/100),0)
+((MF_PRECONF*(MF_ALIQPIS+MF_ALIQCOFINS))/100))*1,15
Cálculo numérico:
1) Preço líquido: MF_PRECONF - MF_DESCVLR = 6,50 - 0,10 = 6,40
2) Aplicar IPI: 6,40 * (1 + 5/100) = 6,40 * 1,05 = 6,72
3) Soma encargos + DIFAL: MF_ENCARGOS + ,,, + MF_VLR_ICMS_DEST = 10 + 0 + 5 + 0 + 0 + 0 + 219,38 = 234,38
4) Rateio por unidade: 234,38 * MF_PERCRATEIO / MF_QTDUNIDSAIDA = 234,38 * 1 / 10 = 23,438
5) Frete CT-e por unidade (CIFFOB_CTE > 1): MF_FRETE_CTE / MF_QTDUNIDSAIDA = 20 / 10 = 2,0
6) ICMS-ST / unidade: MF_ICMSUBSTITEM / MF_QTDUNIDSAIDA = 0 / 10 = 0
7) ICMS ST fora NF / unidade: MF_ICMSTFORANF / MF_QTDUNIDSAIDA = 0 / 10 = 0
8) ICMS operação (condição MF_ICMSUBSTITEM=0 é verdadeira, então calcular): (MF_PRECONF - MF_DESCVLR) * (MF_ALIQICM/100) = 6,40 * 12/100 = 6,40 * 0,12 = 0,768
- Esta parcela é subtraída: -0,768 (porque na fórmula original o termo aparece com sinal de subtração)
9) PIS+COFINS: (MF_PRECONF*(MF_ALIQPIS+MF_ALIQCOFINS))/100 = 6,50 * (1,65+7,6)/100 = 6,50 * 9,25/100 = 6,50 * 0,0925 = 0,60125
10) Somando as partes antes do *1,15:
6,72 (preço+IPI) + 23,438 (rateio+difal) + 2,0 (frete CTe por unid) + 0 + 0 - 0,768 + 0,60125 = 32,0(aprox)
Soma exata = 6,72 + 23,438 + 2,0 - 0,768 + 0,60125 = 31,99125
11) Multiplicar por 1,15: 31,99125 * 1,15 = 36,7909375 → resultado final do custo unitário = 36,7909375
Interpretação: ao incluir o MF_VLR_ICMS_DEST (219,38) no rateio de encargos, o custo unitário aumenta substancialmente porque o DIFAL ficou alocado por unidade. Ajuste o MF_PERCRATEIO se desejar ratear apenas uma parte dos encargos sobre esse item.
--------------------------------------------------------------------------------
Explicação parte a parte da fórmula completa (uma descrição clara de cada trecho)
--------------------------------------------------------------------------------
(((MF_PRECONF-MF_DESCVLR)*(1+MF_ALIQIPI/100)) → Calcula o preço do produto após desconto e aplica IPI, obtendo o valor base com imposto.
+((MF_ENCARGOS+MF_ENCNAOTRIBUT+MF_FRETENF+MF_FRETECONHEC+MF_ENCFORANF-MF_DESCVLRNF+MF_VLR_ICMS_DEST)*MF_PERCRATEIO/MF_QTDUNIDSAIDA) → Soma todos os valores monetários que compõem encargos e o DIFAL, aplica o percentual de rateio configurado e divide pela quantidade para obter o custo unitário desses itens.
+IF(MF_CIFFOB_CTE > 1,(MF_FRETE_CTE/MF_QTDUNIDSAIDA),0) → Se o indicador CIFFOB_CTE indicar que o frete do CT-e deve ser considerado, adiciona o frete por unidade; caso contrário adiciona 0.
+(MF_ICMSUBSTITEM/MF_QTDUNIDSAIDA) → Acrescenta a parcela de ICMS por substituição (ICMS-ST) do item por unidade.
+(MF_ICMSTFORANF/MF_QTDUNIDSAIDA) → Acrescenta o ICMS-ST que foi informado fora da nota, rateado por unidade.
-IF(MF_ICMSUBSTITEM=0,(MF_PRECONF-MF_DESCVLR)*((IF((MF_CST<>'51'),MF_ALIQICM,MF_PERCENTUALDIF))/100),0) → Se não houver ICMS-ST no item, calcula o ICMS normal da operação (usando MF_ALIQICM, exceto quando MF_CST = '51' que usa MF_PERCENTUALDIF) e subtrai esse valor; se houver ICMS-ST não subtrai nada (0).
+((MF_PRECONF*(MF_ALIQPIS+MF_ALIQCOFINS))/100) → Calcula os valores de PIS e COFINS sobre o preço de referência e soma.
)*1,15 → Por fim multiplica todo o resultado por 1,15 aplicando um acréscimo final de 15% (pode representar ajuste, margem ou custo adicional definido pela empresa).
--------------------------------------------------------------------------------
Dicas avançadas e variações úteis
--------------------------------------------------------------------------------
- Incluir MF_VLR_ICMS_DEST separado: se preferir não afetar o rateio de encargos, você pode adicionar +(MF_VLR_ICMS_DEST/MF_QTDUNIDSAIDA) como uma parcela separada no final, em vez de somá-lo ao pacote de encargos, Isso deixa claro que é um imposto do tipo DIFAL alocado por unidade.
- Proteção contra divisão por zero: envolver divisões em IF para evitar erros, por exemplo: IF(MF_QTDUNIDSAIDA>0, MF_FRETE_CTE/MF_QTDUNIDSAIDA, 0).
- Documente cada alteração: sempre registre no change-log da fórmula o porquê de cada termo novo (ex: "incluído MF_VLR_ICMS_DEST para contabilizar DIFAL em operações interestaduais").
- Crie fórmulas "limpas" para testes: começar com uma fórmula mais simples e ir adicionando termos, testando entre cada passo.
--------------------------------------------------------------------------------
Conclusão
--------------------------------------------------------------------------------
Este documento teve por objetivo detalhar, exemplificar e ensinar como montar a fórmula de preço de custo no sistema, explicando cada variável, símbolo e construindo um exemplo prático com cálculos numéricos, Utilize os exemplos, checklist e dicas avançadas para validar e aplicar suas fórmulas com segurança.
Lembrando que tem uma videoaula que demonstra passo a passo no canal da Universidade ATS: https://www.youtube.com/watch?v=3laBe4ZKiTk