Pular para o conteúdo principal

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_VALIDAPESO Valor padrão: N (Não valida)

Telas impactadas​

MóduloCódigoDescrição
Pedido de CompraMPD001Valida peso/quantidade do item no pedido de compra
Pedido de VendaMPD002Valida peso/quantidade do item no pedido de venda
NF EntradaMNF001Reforça o cálculo de total do item ao importar XML
NF SaídaMNF002Valida peso/quantidade do item na NF de saída
NF TransferênciaMNF008Carrega o parâmetro na leitura do PARMFATUR
Cadastro de ClienteMCO006Carrega 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âmetro PARMFATUR.ST_VALIDAPESO documentado aqui.

Campos envolvidos​

TabelaCampoDescrição
ITEMPS_MINIMOPeso mínimo (ou fator mínimo) cadastrado para o produto
ITEMPS_MAXIMOPeso máximo (ou fator máximo) cadastrado para o produto
ITEMPS_LIQUIDOPeso líquido de conversão do produto (precisa ser 0 para a validação disparar)
ITEMPEDIDOQT_PEDIDA / PS_PEDIDOQuantidade e peso do item no pedido
ITEMNOTAQT_ITEMNOTA / PS_ITEMNOTAQuantidade e peso do item na nota fiscal

Opções disponíveis​

S - Sim (valida peso e quantidade)​

O que fazDetalhe
Dispara validação?Sim
Pré-requisitoProduto precisa ter PS_MINIMO, PS_MAXIMO preenchidos e PS_LIQUIDO = 0
Validação de pesopsItem = PS_ITEMPEDIDO / QT_PEDIDA deve estar entre PS_MINIMO e PS_MAXIMO
Validação de quantidadeQT_PEDIDA deve estar entre PS_MINIMO e PS_MAXIMO quando apenas o peso é informado
Em caso de erroBloqueia 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)​

  1. Em MFA001 → Parâmetros → Ambos → Opção 1 → Valida Peso = "Sim"
  2. Salve os parâmetros (F6)
  3. Cadastre um produto X com PS_MINIMO = 10, PS_MAXIMO = 20, PS_LIQUIDO = 0 (faixa de conversão)
  4. Abra um Pedido de Venda (MPD002)
  5. Adicione o produto X informando QT_PEDIDA = 1 e PS_PEDIDO = 15 → psItem = 15 / 1 = 15 → dentro da faixa → salva
  6. Altere para PS_PEDIDO = 25 → psItem = 25 → fora da faixa → erro W-0000 e foco volta ao campo
  7. Tente salvar com QT_PEDIDA = 25 e PS_PEDIDO = 100 → quantidade fora da faixa [10;20] → erro W-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 fazDetalhe
Dispara validação?Não
Liberdade do usuárioPode 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​

  1. Em MFA001 → Valida Peso = "Não"
  2. Salve os parâmetros (F6)
  3. Abra um Pedido de Venda e adicione o produto X (mesmo cenário: PS_MINIMO=10, PS_MAXIMO=20)
  4. Informe QT_PEDIDA = 1 e PS_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 (AfterInsert grava 'N').


Tabela Comparativa Resumida​

OpçãoDescriçãoValida faixa de peso?Valida faixa de quantidade?Bloqueia salvamento?
SSimSim (se PS_MINIMO/PS_MAXIMO cadastrados e PS_LIQUIDO=0)SimSim, com erro W-0000 / W-0352
NNão (padrão)NãoNãoNã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 — Label Caption = 'Valida Peso'
  • source/MFA001/UMFA001.dfm:3435-3461 — cmbVALIDAPESO: TwwDBComboBox com DataField = 'ST_VALIDAPESO' e Items.Strings = ('Sim'#9'S', 'Não'#9'N')

Pedido de Venda (MPD002)​

  • source/MPD002/UdmMPD002.pas:5415-5455 — procedure ValidaPeso: consulta PS_MINIMO/PS_MAXIMO/PS_LIQUIDO em ITEM e dispara erro W-0000 se psItem fora da faixa
  • source/MPD002/UdmMPD002.pas:5457-5492 — procedure ValidaQuantidade: valida QT_PEDIDA contra faixa, dispara W-0352
  • source/MPD002/UdmMPD002.pas:5752 — lê P.ST_VALIDAPESO do PARMFATUR no carregamento

Pedido de Compra (MPD001)​

  • source/MPD001/UdmMPD001.pas:1563-1601 — procedure ValidaPeso
  • source/MPD001/UdmMPD001.pas:1603-1632 — procedure ValidaQuantidade

NF Saída (MNF002)​

  • source/MNF002/UdmMNF002.pas:9817-9926 — procedure ValidaPeso: mesma lógica, chamada no BeforePost
  • source/MNF002/UdmMNF002.pas:9928-9980 — procedure ValidaQuantidade
  • source/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ça Edit no item para reforçar recálculo de QT_ITEMNOTA e VL_TOTAL (chamado 216717)
  • source/MNF001/UdmMNF001.pas:10502 — lê P.ST_VALIDAPESO do PARMFATUR

Outros módulos que carregam o parâmetro​

  • source/MNF008/UdmMNF008.pas:767
  • source/MCO006/UdmMCO006.pas:2111

SQL (Scripts/)​

  • Scripts/INSERE_PRODUTOSNOVOSGRADE.sql:175,178,222,225 — copia PRODUCAO.ST_VALIDAPESO (coluna homônima da ficha de produção, não confundir com PARMFATUR.ST_VALIDAPESO) ao duplicar produtos/grade

DDL​

  • docs/schema/tables/PARMFATUR.sql:188 — ST_VALIDAPESO DOM_CHAR1 DEFAULT 'N' NOT NULL