Parâmetro de Tabela de Venda
Tela de configuração: MFA001 - Parâmetros de Faturamento Localização: Parâmetros → Ambos → Opção 1 Tabela:
PARMFATUR.ST_TABPRECOValor padrão:N(Não Obrigatória)
Telas impactadas
| Módulo | Código | Descrição |
|---|---|---|
| Pedido de Venda | MPD002 | Pedidos de venda |
| Nota Fiscal Saída | MNF002 | Emissão de NF de saída |
| Orçamento | MPD018 | Orçamentos |
| Ordem de Serviço | MOF001 | Ordens de serviço |
| Recap NF | MRC020 | Notas fiscais recap |
| Pedido de Compra | MPD001 | Pedidos de compra (opções F/U) |
| NF Entrada | MNF001 | NF de entrada (opções F/U) |
| Ordem de Produção | MRC047 | Produção |
Campos envolvidos
| Campo | Descrição |
|---|---|
CD_TABPRECO | Código da tabela de preço vinculada ao item |
VL_UNITARIO | Valor unitário do item |
VL_TOTAL | Valor total do item |
Opções disponíveis
T - Obrigatória para Todos os Produtos
| O que faz | Detalhe |
|---|---|
| Exige tabela? | SIM, para TODOS os produtos |
| Pode trocar tabela? (F9) | Sim |
| Pode alterar preço? | Sim |
| Restrição | Se não informar CD_TABPRECO, bloqueia salvamento com erro |
Simulação passo a passo
- Vá em MFA001 → Parâmetros → Ambos → Opção 1 → ST_TABPRECO = "Obrigatória p/ Todos"
- Informe a Tabela de Venda padrão (CD_TABPRECO)
- Salve os parâmetros (F6)
- Abra um Pedido de Venda (MPD002)
- Adicione qualquer produto no pedido
- Tente salvar sem informar tabela de preço no item → Erro: tabela obrigatória
- Informe a tabela → Salva normalmente
Resultado esperado: Todo item DEVE ter uma tabela de preço vinculada, senão o sistema impede o salvamento.
S - Obrigatória para Produtos com Tabela
| O que faz | Detalhe |
|---|---|
| Exige tabela? | Condicional - só se o produto tiver preço cadastrado em alguma tabela (ITEMTABPRECO) |
| Pode trocar tabela? (F9) | Sim |
| Pode alterar preço? | Sim |
| Restrição | Se o produto TEM preço em tabela mas não foi informado → bloqueia |
Simulação passo a passo
- MFA001 → ST_TABPRECO = "Obrigatória p/ Produtos com Tabela"
- Salve os parâmetros (F6)
- Cadastre um produto A que TEM preço na tabela de venda (TFA006)
- Cadastre um produto B que NÃO TEM preço em nenhuma tabela
- Abra um Pedido de Venda
- Adicione produto A → Sistema exige informar tabela (obrigatório)
- Adicione produto B → Sistema NÃO exige tabela (permite sem tabela)
Resultado esperado: Só obriga tabela para produtos que possuem preço cadastrado em alguma tabela de venda.
B - Tabela Bloqueada (Tudo Travado)
| O que faz | Detalhe |
|---|---|
| Campo CD_TABPRECO | ReadOnly (não edita, não troca) |
| Campo VL_UNITARIO | ReadOnly (não altera preço) |
| Campo VL_TOTAL | ReadOnly (não altera total) |
| F9 (Pesquisa tabela) | BLOQUEADO |
| Pode alterar algo? | Não, nada de preço pode ser mexido |
Simulação passo a passo
- MFA001 → ST_TABPRECO = "Tabela Bloqueada"
- Salve os parâmetros (F6)
- Abra um Pedido de Venda
- Adicione um produto
- Tente clicar no campo de tabela de preço → Campo fica cinza/bloqueado
- Tente clicar no valor unitário → Campo fica cinza/bloqueado
- Tente clicar no valor total → Campo fica cinza/bloqueado
- Tente pressionar F9 na tabela → Pesquisa não abre
Resultado esperado: Nenhum campo de preço pode ser alterado. O preço vem automático da tabela e fica travado.
Exceção: Usuários com permissão de autorizador (
St_AlteraPreco = True) desbloqueiam tudo.
F - Preço Última Nota Fiscal da Pessoa
| O que faz | Detalhe |
|---|---|
| Origem do preço | Busca o preço da última NF de venda para aquele cliente específico |
| Query executada | SELECT FIRST 1 VL_UNITARIO FROM NOTA/ITEMNOTA WHERE CD_PESSOA=[CLIENTE] AND CD_ITEM=[ITEM] ORDER BY DT_EMISSAO DESC |
| Pode trocar tabela? | Sim |
| Pode alterar preço? | Sim |
| Módulos de venda (MPD002, MNF002, etc.) | Busca TP_NOTA = 'S' (saída) |
| Módulos de compra (MPD001, MNF001) | Busca TP_NOTA = 'E' (entrada) |
Simulação passo a passo
- MFA001 → ST_TABPRECO = "Preço Última NF Pessoa"
- Salve os parâmetros (F6)
- Certifique-se que o cliente X já comprou o produto Y antes (tem NF emitida)
- Abra um Pedido de Venda para o cliente X
- Adicione o produto Y
- O valor unitário vem automático como o preço da última NF vendida para este cliente
Resultado esperado: Se o cliente já comprou este produto, o preço volta automaticamente. Se nunca comprou, cai na lógica padrão de tabela.
U - Preço Última Nota Fiscal (Geral)
| O que faz | Detalhe |
|---|---|
| Origem do preço | Busca o preço da última NF de venda para QUALQUER cliente |
| Query executada | SELECT FIRST 1 VL_UNITARIO FROM NOTA/ITEMNOTA WHERE CD_ITEM=[ITEM] ORDER BY DT_EMISSAO DESC |
| Diferença de 'F' | Não filtra por cliente, pega o último preço vendido no geral |
| Pode trocar tabela? | Sim |
| Pode alterar preço? | Sim |
Simulação passo a passo
- MFA001 → ST_TABPRECO = "Preço Última NF"
- Salve os parâmetros (F6)
- Certifique-se que o produto Y já foi vendido para alguém
- Abra um Pedido de Venda para qualquer cliente
- Adicione o produto Y
- O valor vem do último preço praticado para este produto, independente de quem comprou
Resultado esperado: O preço sugerido é sempre o último preço que este produto foi vendido, para qualquer cliente.
N - Não Obrigatória (Livre)
| O que faz | Detalhe |
|---|---|
| Exige tabela? | Não |
| Pode trocar tabela? | Sim |
| Pode alterar preço? | Sim |
| Auto-atribuição de tabela | PULADA - o sistema não tenta preencher tabela automaticamente |
Simulação passo a passo
- MFA001 → ST_TABPRECO = "Não Obrigatória"
- Salve os parâmetros (F6)
- Abra um Pedido de Venda
- Adicione um produto
- Não informe nenhuma tabela → Salva normalmente
- Informe uma tabela → Salva normalmente
- Digite qualquer preço → Salva normalmente
Resultado esperado: Total liberdade. Não exige tabela, não sugere preço, deixa o usuário colocar o que quiser.
Este é o valor padrão ao criar um novo registro no MFA001.
V - Valor Unitário Bloqueado / Tabela Liberada
| O que faz | Detalhe |
|---|---|
| Campo CD_TABPRECO | Editável (pode trocar a tabela via F9) |
| Campo VL_UNITARIO | ReadOnly (preço vem da tabela, não edita) |
| Campo VL_TOTAL | ReadOnly (calculado automático) |
| Exige tabela? | Sim (como se fosse 'T') |
| Promoção | Não bloqueia desconto promocional (exceção especial no MNF002) |
Simulação passo a passo
- MFA001 → ST_TABPRECO = "Valor Unit. Bloqueado/Tabela Liberada"
- Salve os parâmetros (F6)
- Abra um Pedido de Venda
- Adicione um produto
- Pressione F9 no campo de tabela → Abre pesquisa, pode trocar a tabela
- Ao trocar a tabela → O preço atualiza automaticamente conforme a nova tabela
- Tente clicar no valor unitário → Campo fica bloqueado
- Tente digitar um preço → Não consegue
Resultado esperado: Pode escolher QUAL tabela usar, mas NÃO pode digitar preço manualmente. O preço sempre vem da tabela selecionada.
L - Tabela Bloqueada / Valor Acima Liberado
| O que faz | Detalhe |
|---|---|
| Campo CD_TABPRECO | ReadOnly (não troca tabela) |
| Campo VL_UNITARIO | Editável (pode digitar preço) |
| F9 tabela | BLOQUEADO |
| Restrição de preço | Preço digitado deve ser ≥ (maior ou igual) ao preço da tabela |
| Se preço < tabela | Erro: bloqueia salvamento |
Simulação passo a passo
- MFA001 → ST_TABPRECO = "Tab. Bloqueada e Valor Acima Liberado"
- Salve os parâmetros (F6)
- Suponha produto X com preço R$ 10,00 na tabela
- Abra um Pedido de Venda
- Adicione o produto X → Tabela vem preenchida automaticamente
- Tente trocar a tabela (F9) → Bloqueado, campo fica cinza
- Tente digitar preço R$ 15,00 → Permitido (15 ≥ 10)
- Tente digitar preço R$ 8,00 → ERRO: Valor unitário não pode ser menor que o preço da tabela
Resultado esperado: Pode vender mais caro que a tabela, mas nunca mais barato. A tabela fica fixa e não pode ser trocada.
A - Tabela Liberada / Valor Acima Liberado
| O que faz | Detalhe |
|---|---|
| Campo CD_TABPRECO | Editável (pode trocar tabela) |
| Campo VL_UNITARIO | Editável (pode digitar preço) |
| F9 tabela | Liberado |
| Restrição de preço | Preço digitado deve ser ≥ (maior ou igual) ao preço da tabela |
| Se preço < tabela | Erro: bloqueia salvamento |
Simulação passo a passo
- MFA001 → ST_TABPRECO = "Tab. Liberada e Valor Acima Liberado"
- Salve os parâmetros (F6)
- Suponha produto X com preço R$ 10,00 na tabela padrão
- Abra um Pedido de Venda
- Adicione o produto X → Tabela vem preenchida automaticamente
- Troque a tabela (F9) → Permitido, pode selecionar outra tabela
- Digite preço R$ 15,00 → Permitido (15 ≥ 10)
- Digite preço R$ 8,00 → ERRO: Valor não pode ser menor que preço da tabela
Resultado esperado: Pode trocar tabela E digitar preço, mas nunca permite vender abaixo do preço tabelado.
Regra Geral de Autorização
Todos os bloqueios (opções B, V, L) podem ser ignorados se o usuário logado tiver permissão de autorizador com St_AlteraPreco = True. Nesse caso, todos os campos ficam editáveis independente do parâmetro configurado.
Tabela Comparativa Resumida
| Opção | Descrição | Tabela editável? | Preço editável? | Exige tabela? | Pode vender abaixo da tabela? |
|---|---|---|---|---|---|
| T | Obrigatória p/ Todos | Sim | Sim | Sim (sempre) | Sim |
| S | Obrigatória p/ Produtos com Tabela | Sim | Sim | Sim (se tem preço) | Sim |
| B | Tabela Bloqueada | Não | Não | - | - |
| F | Última NF da Pessoa | Sim | Sim | Não | Sim |
| U | Última NF (Geral) | Sim | Sim | Não | Sim |
| N | Não Obrigatória | Sim | Sim | Não | Sim |
| V | Valor Bloq. / Tabela Liberada | Sim | Não | Sim | - |
| L | Tabela Bloq. / Valor Acima Liberado | Não | Sim | - | Não |
| A | Tabela Liberada / Valor Acima Liberado | Sim | Sim | - | Não |