CD_INDICEMARKUP - Perfil de Índice de Markup Contábil (Padrão da Empresa)
Tela: MFA001 - Parâmetros de Faturamento Localização: Parâmetros → Ambos → Operação 2 → campo editável ao lado de "Movimentos e Operações Padrão" Tabela:
PARMFATUR.CD_INDICEMARKUPTipo: Inteiro (DOM_INTEGER) Valor padrão:NULL(vazio — sem perfil padrão) Componente na UI:edtNR_PERFIL(TDBEdit, DataField =CD_INDICEMARKUP), com hint "Lista de Perfil dos Índices<F9>"
:::note Não confundir com PC_INDICE1
PC_INDICEMARKUP é o perfil de markup contábil (composição de índices de venda, compra, despesa e impostos). PC_INDICE1 (PARMFATUR.PC_INDICE1, configurado em MFA001 — Parâmetros de Faturamento, aba Pedidos / O.S. → Opção 1) é um benchmark de lucratividade no pedido. São sistemas independentes.
:::
O que o parâmetro faz
Define o número do perfil de índices de Markup Contábil usado como padrão pela empresa. Esse perfil, cadastrado na tabela INDICEMARCKUP (tela TFA042 / TFI001), contém uma composição de percentuais que o sistema aplica sobre o preço/custo para calcular:
- % Markup de Venda — desconto/comissão sobre o preço de venda
- % Markup de Compra — frete/ICMS sobre compras
- % Markup de Despesa — despesas operacionais
- % Imposto de Venda — impostos incidentes sobre venda
- % Imposto de Compra — impostos incidentes sobre compra
O sistema usa o perfil em relatórios de análise de markup (CNF008), cálculos de margem em NF de saída (MNF001/MNF002), pedidos de venda (MPD002), orçamentos (MPD018) e cadastro de itens (CFA003).
Hierarquia de resolução
Quando o sistema precisa do perfil de markup, segue esta ordem de precedência:
| Prioridade | Origem | Descrição |
|---|---|---|
| 1ª | CONDFISCAL.CD_INDICEMARKUP | Perfil vinculado à Condição Fiscal do item (tela TFI001 — Condições Fiscais) |
| 2ª | EMPRESA.NR_PERFIL | Perfil vinculado à Empresa (quando preenchido na tela de consulta) |
| 3ª | PARMFATUR.CD_INDICEMARKUP | Este parâmetro — padrão global da empresa |
Ou seja: se o item tem condição fiscal com perfil próprio, esse é usado; caso contrário, cai para o padrão de PARMFATUR.
Telas impactadas
| Tela | Programa | Uso |
|---|---|---|
| CFA003 | Cadastro de Itens | Cálculo de margem/markup ao abrir análise do item (btnMargemClick, btnIndicesClick) |
| CNF008 | Análise de Vendas | Relatório de Análise de Markup por quebra (cliente, grupo, item etc.) |
| MNF001 | NF de Saída | Cálculo de markup ao exibir dados do item na aba Produtos |
| MNF002 | NF de Entrada | Mesma lógica do MNF001 para entrada |
| MPD002 | Pedido de Venda | Cálculo de markup ao exibir análise do item no pedido |
| MPD018 | Orçamento | Cálculo de markup na aba de análise do item no orçamento |
| MCO006 | Ordem de Compra | Leitura do parâmetro em BuscaParametros_MCO006 |
| MNF008 | Relatório NF | Leitura do parâmetro em BuscaParametros_MNF008 |
| TFI001 | Condições Fiscais | Permite informar CD_INDICEMARKUP por condição fiscal (sobrepõe o padrão) |
| RNF006 | Relatório | Filtro: AND C.CD_INDICEMARKUP IS NULL (busca itens sem perfil) |
Campos envolvidos
| Tabela | Campo | Papel |
|---|---|---|
PARMFATUR | CD_INDICEMARKUP | Perfil padrão da empresa (este parâmetro) |
PARMFATUR | TP_ANALISE | Define qual custo é usado na análise de markup (configurado em MFA001 — Parâmetros de Faturamento, mesma aba Operação 2) |
CONDFISCAL | CD_INDICEMARKUP | Perfil específico por condição fiscal (sobrepõe o padrão) |
INDICEMARCKUP | NR_PERFIL | Código do perfil (chave de agrupamento dos índices) |
INDICEMARCKUP | DS_PERFIL | Descrição do perfil |
INDICEMARCKUP | TP_INDICE | Tipo do índice (C=Compra, V=Venda, D=Despesa, I=Imposto) |
INDICEMARCKUP | PC_INDICE | Percentual do índice |
INDICEMARCKUP | ST_INDICE | Ativo (S) ou Inativo (N) |
Opções disponíveis
| O que faz | Detalhe |
|---|---|
| Campo editável numérico | Digite o número do perfil (NR_PERFIL) cadastrado em INDICEMARCKUP. Tecla <F9> abre lista de perfis. |
| Validação ao sair do campo | Verifica se o perfil existe na tabela INDICEMARCKUP; se não existir, exibe erro "O Perfil não está Cadastrado [TFA042]!" |
| Pode ficar vazio | Sim. Se vazio, o sistema usa o perfil da condição fiscal do item ou, em alguns relatórios, bloqueia a execução. |
Preenchido com um perfil válido
Simulação passo a passo
- Acesse MFA001 — Parâmetros de Faturamento.
- Selecione a empresa desejada.
- Na aba Operação 2, localize o campo de perfil de índices (edit numérico com hint "Lista de Perfil dos Índices
<F9>"). - Digite o número do perfil, por exemplo 1 (correspondente a "PERFIL 1" em
INDICEMARCKUP). - Pressione
<Tab>para sair do campo. O sistema valida o perfil e preenche automaticamente a descrição ao lado. - Salve os parâmetros (
<Ctrl+S>ou botão Salvar). - Ao abrir um pedido (MPD002) ou NF de saída (MNF001) e visualizar a análise de markup do item, o sistema usará esse perfil para calcular os percentuais de venda, compra, despesa e impostos.
Resultado esperado: Todos os cálculos de markup contábil da empresa usam os percentuais do perfil informado como padrão, quando o item não possuir condição fiscal com perfil próprio.
Vazio (NULL)
Simulação passo a passo
- Acesse MFA001 — Parâmetros de Faturamento.
- Selecione a empresa desejada.
- Na aba Operação 2, deixe o campo de perfil de índices vazio.
- Salve os parâmetros.
Resultado esperado: O sistema buscará o perfil exclusivamente na condição fiscal do item (CONDFISCAL.CD_INDICEMARKUP). Em telas de análise de markup (CFA003), se nem a condição fiscal tiver perfil, será exibido erro: "O Número do Índice é obrigatório para calcular os índices de Markup. Verifique! [CFA003][TFI001][MFA001]". No relatório CNF008, itens sem perfil serão sinalizados e a consulta será abortada.
Exceção / Importante: No relatório CNF008 (Análise de Vendas), o sistema percorre todos os registros retornados e, se encontrar qualquer item com
CD_INDICEMARKUPvazio, bloqueia a execução com a mensagem: "Existem Itens sem Perfil de Índices Markup Parametrizados [TFA042]. Verifique [TPO001/TFI001] ou Informe um Perfil Padrão [CNF008/MFA001]!". É obrigatório que todos os itens tenham perfil (via condição fiscal ou padrão da empresa).
Regra de validação
Ao preencher o campo, a rotina tabPARMFATURCD_INDICEMARKUPValidate (UdmMFA001.pas:1900-1916) executa:
SELECT FIRST 1 DS_PERFIL FROM INDICEMARCKUP WHERE NR_PERFIL = <valor digitado>
- Se retorna registro → preenche a descrição (
DS_PERFIL) no campo ao lado. - Se não retorna → erro "O Perfil não está Cadastrado [TFA042]!".
- Se o campo é limpo → a descrição também é limpa.
Interação com TP_ANALISE
TP_ANALISE (configurado em MFA001 — Parâmetros de Faturamento, aba Operação 2) define qual tipo de custo é usado como base para o cálculo do markup (Empresa, Último Custo, Tabela de Compra, Custo Nota ou Mediana). Enquanto CD_INDICEMARKUP define quais percentuais compõem o markup, TP_ANALISE define o valor base sobre o qual os percentuais incidem.
Procedures impactadas
Rotinas Delphi com referência direta ao campo
| Rotina | Arquivo | Linha | Resumo |
|---|---|---|---|
TdmMFA001.tabPARMFATURCD_INDICEMARKUPValidate | source/MFA001/UdmMFA001.pas | 1900 | Valida perfil ao editar o campo em MFA001 |
TfrmCFA003.btnMargemClick | source/CFA003/UCFA003.pas | 790 | Busca perfil para análise de margem do item |
TfrmCFA003.btnIndicesClick | source/CFA003/UCFA003.pas | 1032 | Abre TFA042 com perfil para cálculo de índices |
TfrmCNF008.btnProcurarClick | source/CNF008/UCNF008.pas | 864 | Monta query de análise com COALESCE(CF.CD_INDICEMARKUP, PF.CD_INDICEMARKUP) |
TdmMNF001.Calcula_Markup | source/MNF001/UdmMNF001.pas | 8646 | Lê perfil para cálculo de markup em NF saída |
TfrmMNF001.PagProdutosChange | source/MNF001/UMNF001.pas | 4377 | Exibe markup na aba de produtos |
TdmMNF002.Calcula_Markup | source/MNF002/UdmMNF002.pas | 9279 | Lê perfil para cálculo de markup em NF entrada |
TdmMNF002.BuscaParametros_MNF002 | source/MNF002/UdmMNF002.pas | 10503 | Carrega parâmetros incluindo CD_INDICEMARKUP |
TdmMPD002.Calcula_Markup | source/MPD002/UdmMPD002.pas | 5129 | Calcula markup no pedido de venda |
TdmMPD018.Calcula_Markup | source/MPD018/UdmMPD018.pas | 1608 | Calcula markup no orçamento |
TfrmMPD018.pgc1Change | source/MPD018/UMPD018.pas | 1928 | Exibe markup na troca de aba do orçamento |
TdmMCO006.BuscaParametros_MCO006 | source/MCO006/UdmMCO006.pas | 2112 | Carrega parâmetros de faturamento |
TdmMNF008.BuscaParametros_MNF008 | source/MNF008/UdmMNF008.pas | 768 | Carrega parâmetros de faturamento |
TdmTFI001.tabCONDFISCALCD_INDICEMARKUPValidate | source/TFI001/UdmTFI001.pas | 80 | Valida perfil na condição fiscal (TFI001) |
TfrmTFI001.edtCD_INDICEMARKUPKeyDown | source/TFI001/UTFI001.pas | 246 | Abertura de lookup na tela TFI001 |
TfrmRNF006.btnImprimirClick | source/RNF006/URNF006.pas | 1197 | Filtra itens sem perfil: CD_INDICEMARKUP IS NULL |
SQL — referências diretas ao campo
| Arquivo | Descrição |
|---|---|
source/CNF008/UCNF008.pas:876,938-945,952,984,1011,1018-1020 | Queries que usam COALESCE(CF.CD_INDICEMARKUP, PF.CD_INDICEMARKUP) e passam o perfil para RETORNA_INDICEMARCKUP e RETORNA_IMPOSTOMARCKUP |
source/CNF008/UdmCNF008.dfm:77,88,139 | Queries estáticas no datamodule |
SQL — procedures/views candidatas (usam a tabela PARMFATUR mas não referenciam o campo diretamente)
As seguintes procedures em Scripts/ utilizam a tabela PARMFATUR mas não contêm referência direta ao campo CD_INDICEMARKUP: ATUALIZA_PESSOA, ATUALIZA_PRECOVENDA, BUSCAPRECORECAP, CALCULA_CENTRORESULT, CALCULA_CENTRORESULTITEM, CALCULA_COMISSAO, CALCULA_COMISSAO_V2, CALCULA_JUROVENDA, CALCULA_MAQUINA, CALCULA_MAQUINAFICHA, CANCELA_MESTRA, CANCELA_NOTAFISCAL, CONFIRMA_ORDEMSERVICO, CONFIRMA_ORDEMSERVICOMETAL, CONSOME_LOTEMATERIAPRIMA, CREDITOPERIODICO_AI0, CREDITOPERIODICOGRUPO_AI0, EXPORTACAO_ALLABOR, EXPORTACAO_DOMINIOCADASTROS, EXPORTACAO_DOMINIOCUPOM.