Parâmetro de Validação de Peso/Quantidade do Item
Tela de configuração: MFA001 - Parâmetros de Faturamento Localização: Parâmetros → Ambos → Opção 1 (label "Valida Peso") Tabela:
PARMFATUR.ST_VALIDAPESOValor padrão:N(Não valida)
Telas impactadas
| Módulo | Código | Descrição |
|---|---|---|
| Pedido de Compra | MPD001 | Valida peso/quantidade do item no pedido de compra |
| Pedido de Venda | MPD002 | Valida peso/quantidade do item no pedido de venda |
| NF Entrada | MNF001 | Reforça o cálculo de total do item ao importar XML |
| NF Saída | MNF002 | Valida peso/quantidade do item na NF de saída |
| NF Transferência | MNF008 | Carrega o parâmetro na leitura do PARMFATUR |
| Cadastro de Cliente | MCO006 | Carrega o parâmetro na leitura do PARMFATUR |
Nota: a coluna
PRODUCAO.ST_VALIDAPESO(ficha de produção) existe em TEQ004, TEQ011, TFA077 e MEQ006, mas se refere a um flag por item de produção — independente do parâmetroPARMFATUR.ST_VALIDAPESOdocumentado aqui.
Campos envolvidos
| Tabela | Campo | Descrição |
|---|---|---|
ITEM | PS_MINIMO | Peso mínimo (ou fator mínimo) cadastrado para o produto |
ITEM | PS_MAXIMO | Peso máximo (ou fator máximo) cadastrado para o produto |
ITEM | PS_LIQUIDO | Peso líquido de conversão do produto (precisa ser 0 para a validação disparar) |
ITEMPEDIDO | QT_PEDIDA / PS_PEDIDO | Quantidade e peso do item no pedido |
ITEMNOTA | QT_ITEMNOTA / PS_ITEMNOTA | Quantidade e peso do item na nota fiscal |
Opções disponíveis
S - Sim (valida peso e quantidade)
| O que faz | Detalhe |
|---|---|
| Dispara validação? | Sim |
| Pré-requisito | Produto precisa ter PS_MINIMO, PS_MAXIMO preenchidos e PS_LIQUIDO = 0 |
| Validação de peso | psItem = PS_ITEMPEDIDO / QT_PEDIDA deve estar entre PS_MINIMO e PS_MAXIMO |
| Validação de quantidade | QT_PEDIDA deve estar entre PS_MINIMO e PS_MAXIMO quando apenas o peso é informado |
| Em caso de erro | Bloqueia salvamento com mensagem W-0000 (peso) ou W-0352 (quantidade) — foca o campo em erro |
| Específico para NF (importação XML) | Em MNF001, ao importar XML o sistema força um Edit no grid para reforçar o recálculo do VL_TOTAL (chamado 216717) |
Simulação passo a passo (Pedido de Venda)
- Em MFA001 → Parâmetros → Ambos → Opção 1 → Valida Peso = "Sim"
- Salve os parâmetros (F6)
- Cadastre um produto X com
PS_MINIMO = 10,PS_MAXIMO = 20,PS_LIQUIDO = 0(faixa de conversão) - Abra um Pedido de Venda (MPD002)
- Adicione o produto X informando
QT_PEDIDA = 1ePS_PEDIDO = 15→psItem = 15 / 1 = 15→ dentro da faixa → salva - Altere para
PS_PEDIDO = 25→psItem = 25→ fora da faixa → erroW-0000e foco volta ao campo - Tente salvar com
QT_PEDIDA = 25ePS_PEDIDO = 100→ quantidade fora da faixa[10;20]→ erroW-0352
Resultado esperado: o sistema impede salvar itens cujo peso por unidade (PS / QT) ou quantidade estejam fora da faixa [PS_MINIMO; PS_MAXIMO] cadastrada no produto. Útil para produtos vendidos a granel/peso variável (carnes, grãos) em que há tolerância mínima e máxima.
N - Não (padrão, sem validação)
| O que faz | Detalhe |
|---|---|
| Dispara validação? | Não |
| Liberdade do usuário | Pode informar qualquer peso e quantidade sem crítica |
| Comportamento em XML (MNF001) | Não força reedição do item após import |
Simulação passo a passo
- Em MFA001 → Valida Peso = "Não"
- Salve os parâmetros (F6)
- Abra um Pedido de Venda e adicione o produto X (mesmo cenário:
PS_MINIMO=10,PS_MAXIMO=20) - Informe
QT_PEDIDA = 1ePS_PEDIDO = 500→ salva sem crítica
Resultado esperado: nenhuma validação de faixa de peso/quantidade é feita. O sistema confia nos valores informados pelo usuário.
Este é o valor padrão ao criar um novo registro no MFA001 (
AfterInsertgrava'N').
Tabela Comparativa Resumida
| Opção | Descrição | Valida faixa de peso? | Valida faixa de quantidade? | Bloqueia salvamento? |
|---|---|---|---|---|
| S | Sim | Sim (se PS_MINIMO/PS_MAXIMO cadastrados e PS_LIQUIDO=0) | Sim | Sim, com erro W-0000 / W-0352 |
| N | Não (padrão) | Não | Não | Não |
Referências no Código Fonte
Valor padrão (AfterInsert)
source/MFA001/UdmMFA001.pas:543—tabPARMFATURST_VALIDAPESO.AsString := 'N';
ComboBox da tela
source/MFA001/UMFA001.dfm:2597— LabelCaption = 'Valida Peso'source/MFA001/UMFA001.dfm:3435-3461—cmbVALIDAPESO: TwwDBComboBoxcomDataField = 'ST_VALIDAPESO'eItems.Strings = ('Sim'#9'S', 'Não'#9'N')
Pedido de Venda (MPD002)
source/MPD002/UdmMPD002.pas:5415-5455— procedureValidaPeso: consultaPS_MINIMO/PS_MAXIMO/PS_LIQUIDOemITEMe dispara erroW-0000sepsItemfora da faixasource/MPD002/UdmMPD002.pas:5457-5492— procedureValidaQuantidade: validaQT_PEDIDAcontra faixa, disparaW-0352source/MPD002/UdmMPD002.pas:5752— lêP.ST_VALIDAPESOdoPARMFATURno carregamento
Pedido de Compra (MPD001)
source/MPD001/UdmMPD001.pas:1563-1601— procedureValidaPesosource/MPD001/UdmMPD001.pas:1603-1632— procedureValidaQuantidade
NF Saída (MNF002)
source/MNF002/UdmMNF002.pas:9817-9926— procedureValidaPeso: mesma lógica, chamada noBeforePostsource/MNF002/UdmMNF002.pas:9928-9980— procedureValidaQuantidadesource/MNF002/UdmMNF002.pas:5905,6264— blocos de cálculo equivalentes preservados como comentários
NF Entrada (MNF001)
source/MNF001/UMNF001.pas:1835-1842— ao importar XML, forçaEditno item para reforçar recálculo deQT_ITEMNOTAeVL_TOTAL(chamado 216717)source/MNF001/UdmMNF001.pas:10502— lêP.ST_VALIDAPESOdoPARMFATUR
Outros módulos que carregam o parâmetro
source/MNF008/UdmMNF008.pas:767source/MCO006/UdmMCO006.pas:2111
SQL (Scripts/)
Scripts/INSERE_PRODUTOSNOVOSGRADE.sql:175,178,222,225— copiaPRODUCAO.ST_VALIDAPESO(coluna homônima da ficha de produção, não confundir comPARMFATUR.ST_VALIDAPESO) ao duplicar produtos/grade
DDL
docs/schema/tables/PARMFATUR.sql:188—ST_VALIDAPESO DOM_CHAR1 DEFAULT 'N' NOT NULL