Pular para o conteúdo principal

Origem do Custo para Cálculo de Markup

Tela de configuração: MFA001 - Parâmetros de Faturamento Localização: Parâmetros → Faturamento → Opção 2 → Origem do Custo Tabela: PARMFATUR.TP_ANALISE Valor padrão: E (Custo Médio Estoque)

Define qual valor de custo é usado como base para o cálculo do Markup (índice que compõe o preço sugerido de venda) na Análise de Markup do item, tanto em Pedidos de Venda e Notas Fiscais de Saída quanto em Orçamentos. O valor escolhido aqui é lido em tempo de venda, comparado com o preço praticado e, em conjunto com o CD_INDICEMARKUP, dispara alertas de margem mínima/custo.

Atenção - homônimo: existem outros campos TP_ANALISE em tabelas diferentes (ex.: ANALISE.TP_ANALISE em laboratório/captação de leite — TLA001/LAB001/LAB003 com valores E/M; campos locais EMPRESA.TP_ANALISE em relatórios como CFA003/CNF005-009/RPD012/RNF006/RNF010 — que são parâmetros de relatório, não leem PARMFATUR). Este documento trata exclusivamente do campo PARMFATUR.TP_ANALISE configurado na MFA001.

Telas impactadas​

MóduloCódigoDescriçãoReferência no código
Parâmetros de FaturamentoMFA001Tela de configuração do parâmetro (ComboBox cmbTP_ANALISE)source/MFA001/UMFA001.dfm:4214-4243; source/MFA001/UdmMFA001.pas:208, 532; source/MFA001/UMFA001.pas:260, 1137, 1441
Pedido de VendaMPD002Cálculo de markup/custo na análise do item do pedidosource/MPD002/UdmMPD002.pas:5185-5201, 5752
Nota Fiscal de SaídaMNF002Cálculo de markup/custo na análise do item da NFsource/MNF002/UdmMNF002.pas:9343-9359, 10503
OrçamentoMPD018Cálculo de markup/custo na análise do item do orçamentosource/MPD018/UdmMPD018.pas:1661-1677
NF/Troca SaídaMNF008Carrega TP_ANALISE do PARMFATUR via SELECT (passa adiante na estrutura de parâmetros)source/MNF008/UdmMNF008.pas:768
Conferência CarregamentoMCO006Carrega TP_ANALISE do PARMFATUR via SELECTsource/MCO006/UdmMCO006.pas:2112
Nota Fiscal EntradaMNF001Consulta PARMFATUR.TP_ANALISE para cálculo do índice markupsource/MNF001/UdmMNF001.pas:8646

Procedures impactadas​

ObjetoArquivoTipoDescrição
RETORNA_IMPOSTOMARKUPScripts/RETORNA_IMPOSTOMARKUP.sqlProcedureRecebe I_TP_ANALISE (derivado do PARMFATUR.TP_ANALISE) e decide qual coluna de custo usar: para C retorna R.VL_ULTIMOCUSTOIMP, para M retorna R.VL_MEDIANOTAIMP, para E/U/T utiliza o I_VL_ANALISE informado

Observação: quando a tela é MFA001 (PARMFATUR.TP_ANALISE), o Delphi lê o valor via ParmFatur.Values['TP_ANALISE'] e seleciona a coluna de custo localmente (VL_CUSTOMEDIO / VL_ULTIMOCUSTO / VL_TABCOMPRA / VL_CUSTONOTA / VL_MEDIANOTA). A procedure RETORNA_IMPOSTOMARKUP apenas replica a lógica quando chamada por telas de relatório (CFA003, CNF008, RNF006 etc.) que usam o mesmo conjunto de códigos E/U/T/C/M.

Campos envolvidos​

TabelaCampoObservação
PARMFATURTP_ANALISEParâmetro (1 char) por empresa: E, U, T, C ou M
PARMFATURCD_INDICEMARKUPPerfil de markup usado em conjunto com TP_ANALISE
Análise (dataset interno)VL_CUSTOMEDIOOpção E - custo médio calculado do estoque
Análise (dataset interno)VL_ULTIMOCUSTOOpção U - último custo pago na última entrada de estoque
Análise (dataset interno)VL_TABCOMPRAOpção T - valor da tabela de compra do item
Análise (dataset interno)VL_CUSTONOTAOpção C - custo da última nota de compra do item
Análise (dataset interno)VL_ULTIMOCUSTOIMPOpção C - índice de imposto da última nota de compra
Análise (dataset interno)VL_MEDIANOTAOpção M - média dos custos das notas de compra
Análise (dataset interno)VL_MEDIANOTAIMPOpção M - índice de imposto pela média das notas
Análise (dataset interno)VL_CUSTOBRUTOCampo destino, recebe o custo conforme opção

Opções disponíveis​

E - Custo Médio Estoque (padrão)​

O que fazDetalhe
Base do custoVL_CUSTOBRUTO := VL_CUSTOMEDIO
FonteCusto médio calculado a partir do movimento de estoque (MOVESTOQUE)
CaracterísticaReflete o custo médio ponderado atual, diluindo oscilações de preço entre entradas

Simulação passo a passo​

  1. No MFA001 → Faturamento → Opção 2 → Origem do Custo = Custo Médio Estoque.
  2. Salve os parâmetros (F6).
  3. Em MPD002 abra um pedido de venda e inclua um item qualquer.
  4. O Delphi executa tabANALISE com todas as colunas de custo (médio, último, tabela, nota, média notas).
  5. Como ParmFatur.Values['TP_ANALISE'] = 'E', o código source/MPD002/UdmMPD002.pas:5185 atribui tabANALISEVL_CUSTOBRUTO := tabANALISEVL_CUSTOMEDIO.
  6. A análise de markup (visível no balão/aba Análise do item) usa esse valor como referência para comparar com o preço praticado.

Resultado esperado: o sistema exibe o markup/margem calculados sobre o custo médio do estoque. Alertas de custo mínimo (ST_AVISACUSTO, ST_HABILITACUSTOMINIMO) também são disparados com base nesse valor.


U - Último Custo Estoque​

O que fazDetalhe
Base do custoVL_CUSTOBRUTO := VL_ULTIMOCUSTO
FonteÚltimo custo registrado no estoque (última entrada)
CaracterísticaSensível a oscilações: uma única compra com preço alto eleva imediatamente a base

Simulação passo a passo​

  1. No MFA001 → Opção 2 → Origem do Custo = Último Custo Estoque.
  2. Entre uma NF de compra do produto X com VL_CUSTO = 100,00 (último registro de estoque).
  3. Em MNF002 inclua o mesmo produto numa NF de saída.
  4. ParmFatur.Values['TP_ANALISE'] = 'U' → source/MNF002/UdmMNF002.pas:9346 atribui VL_CUSTOBRUTO := VL_ULTIMOCUSTO = 100,00.
  5. Se o preço de venda foi 110,00, o markup exibido é calculado sobre 100,00.

Resultado esperado: o custo usado no markup é o último custo registrado em VL_ULTIMOCUSTO, independente das entradas anteriores.


T - Tabela de Compra​

O que fazDetalhe
Base do custoVL_CUSTOBRUTO := VL_TABCOMPRA
FontePreço cadastrado na Tabela de Compra do item (ITEMTABCOMPRA)
CaracterísticaCusto teórico/negociado, independente do que está em estoque

Simulação passo a passo​

  1. No MFA001 → Opção 2 → Origem do Custo = Tabela de Compra.
  2. No cadastro de item, mantenha a Tabela de Compra atualizada (VL_TABCOMPRA = 80,00).
  3. Em MPD018 abra um orçamento e inclua o item.
  4. ParmFatur.Values['TP_ANALISE'] = 'T' → source/MPD018/UdmMPD018.pas:1667 atribui VL_CUSTOBRUTO := VL_TABCOMPRA = 80,00.
  5. Markup é calculado sobre 80,00, mesmo que o estoque tenha custo médio diferente.

Resultado esperado: o custo considerado é o negociado/cadastrado na Tabela de Compra, útil para análises baseadas em custo de reposição contratual.


C - Última Nota de Compra​

O que fazDetalhe
Base do custoVL_CUSTOBRUTO := VL_CUSTONOTA
Índice imposto auxiliarvlIndiceImposto := VL_ULTIMOCUSTOIMP
FonteValor da última NF de compra efetivamente emitida para o item
CaracterísticaConsidera impostos efetivamente recuperados/pagos na última entrada

Simulação passo a passo​

  1. No MFA001 → Opção 2 → Origem do Custo = Última Nota de Compra.
  2. Emita uma NF de compra para o produto X com VL_CUSTONOTA = 95,00 e índice de imposto recuperado.
  3. Em MPD002 inclua o produto.
  4. ParmFatur.Values['TP_ANALISE'] = 'C' → source/MPD002/UdmMPD002.pas:5194-5199 atribui VL_CUSTOBRUTO := VL_CUSTONOTA = 95,00 e captura vlIndiceImposto := VL_ULTIMOCUSTOIMP.
  5. A procedure RETORNA_IMPOSTOMARKUP (em relatórios auxiliares) recebe I_TP_ANALISE = 'C' e retorna R.VL_ULTIMOCUSTOIMP para compor o índice de imposto.

Resultado esperado: markup calculado sobre o valor real da última nota de compra, já considerando o índice de imposto daquela operação específica.


M - Média das Notas de Compra​

O que fazDetalhe
Base do custoVL_CUSTOBRUTO := VL_MEDIANOTA
Índice imposto auxiliarvlIndiceImposto := VL_MEDIANOTAIMP
FonteMédia aritmética dos custos das últimas NFs de compra do item
CaracterísticaSuaviza picos de custo, combinando histórico de várias compras

Simulação passo a passo​

  1. No MFA001 → Opção 2 → Origem do Custo = Média Notas de Compra.
  2. Tenha 3 NFs de compra recentes do produto X com valores 90,00, 95,00 e 100,00.
  3. VL_MEDIANOTA = 95,00.
  4. Em MNF002 inclua o item.
  5. ParmFatur.Values['TP_ANALISE'] = 'M' → source/MNF002/UdmMNF002.pas:9359 atribui VL_CUSTOBRUTO := VL_MEDIANOTA = 95,00 e capta vlIndiceImposto := VL_MEDIANOTAIMP.
  6. A procedure RETORNA_IMPOSTOMARKUP recebe I_TP_ANALISE = 'M' e retorna R.VL_MEDIANOTAIMP como índice de imposto.

Resultado esperado: markup calculado sobre a média dos custos das últimas notas, evitando que uma única compra anormal distorça a referência.


Tabela Comparativa Resumida​

OpçãoColuna de custo usadaColuna de índice impostoFonte dos dadosQuando usar
E (padrão)VL_CUSTOMEDIO(não aplica direto)Custo médio ponderado do estoque (MOVESTOQUE)Padrão. Suaviza oscilações e reflete o estoque atual
UVL_ULTIMOCUSTO(não aplica direto)Último custo registrado no estoqueFoco no custo de reposição mais recente
TVL_TABCOMPRA(não aplica direto)Tabela de Compra cadastradaCusto teórico/negociado, independente do estoque
CVL_CUSTONOTAVL_ULTIMOCUSTOIMPÚltima NF de compraRefletir o custo real (com impostos) da última compra efetiva
MVL_MEDIANOTAVL_MEDIANOTAIMPMédia das NFs de compraCusto histórico médio para suavizar variações

Referências no Código Fonte​

Delphi​

ArquivoLinhasFunção
source/MFA001/UMFA001.dfm3713-3727, 4214-4243, 215, 1541-1545, 3095Label lblTP_ANALISE (Caption Origem do Custo), ComboBox cmbTP_ANALISE com Items.Strings = ('Custo Médio Estoque'#9'E', 'Último Custo Estoque'#9'U', 'Tabela de Compra'#9'T', 'Última Nota de Compra'#9'C', 'Média Notas de Compra'#9'M'); SELECT incluindo PARMFATUR.TP_ANALISE; campo tabPARMFATURTP_ANALISE (Size=1, FixedChar)
source/MFA001/UdmMFA001.pas208, 532Declaração tabPARMFATURTP_ANALISE: TStringField; AfterInsert atribui valor padrão 'E'
source/MFA001/UMFA001.pas255, 260, 1137, 1441Declaração do componente cmbTP_ANALISE no form, foco via SetFocus ao navegar para pagFatOp2; label lblTP_ANALISE
source/MPD002/UdmMPD002.pas5185-5201, 5752Lê ParmFatur.Values['TP_ANALISE']; para cada valor (E/U/T/C/M) atribui a coluna de custo correspondente em tabANALISEVL_CUSTOBRUTO; inclui campo P.TP_ANALISE na query de carregamento de parâmetros
source/MNF002/UdmMNF002.pas9343-9359, 10503Mesma lógica da MPD002 para Nota Fiscal de Saída; inclui P.TP_ANALISE na query
source/MPD018/UdmMPD018.pas1661-1677Mesma lógica para Orçamento
source/MNF001/UdmMNF001.pas8646-8648Consulta SELECT PF.TP_ANALISE, PF.CD_INDICEMARKUP FROM PARMFATUR PF WHERE PF.CD_EMPRESA = ... para cálculo do índice markup em NF de entrada
source/MNF008/UdmMNF008.pas768Carrega P.TP_ANALISE na query de parâmetros de faturamento
source/MCO006/UdmMCO006.pas2112Carrega P.TP_ANALISE na query de parâmetros de faturamento

SQL (Scripts)​

ArquivoLinhasFunção
Scripts/RETORNA_IMPOSTOMARKUP.sql7, 54-91Parâmetro I_TP_ANALISE char(1). Branches: C → retorna VL_ULTIMOCUSTOIMP; M → retorna VL_MEDIANOTAIMP; E/U/T → usa I_VL_ANALISE informado