Pular para o conteúdo principal

Parâmetro Tipo de Conferência de Pedido

Tela de configuração: MFA001 - Parâmetros de Faturamento Localização: aba Pedidos / O.S. → sub-aba Opção 1 → grupo Parâmetros de Pedidos/ Ordem de Serviço (pagPedidos → pagPedidoOp1 → grpPedidos), label "Tipo de Conferência" (Label86 em UMFA001.dfm:8207-8220) com indicação [MPD031/MPD091] (Label87 em UMFA001.dfm:8221-8234) Tabela: PARMFATUR.TP_CONFERENCIAPEDIDO Valor padrão: M (Bloqueia Maior Qtde.) - definido em UdmMFA001.pas:564 (AfterInsert) e no DDL PARMFATUR.sql:189 (DOM_CHAR1 DEFAULT 'M' NOT NULL)

Define qual tipo de divergência entre a quantidade/peso conferido e o saldo do pedido deve ser bloqueado (ou apenas alertado) durante a conferência de itens em MPD031 (Conferência Item/Pesagem) e MPD091 (Conferência Item).

Atua apenas sobre a validação da quantidade/peso conferida versus o saldo do ITEMPEDIDO (QT_PEDIDA - QT_CONFERENCIA, PS_PEDIDO - PS_CONFERENCIA). Não interfere em preço, fiscal ou geração de nota.

Domínio (de UMFA001.dfm:9137-9140):

  • M - Bloqueia Maior Qtde. (padrão): impede que a conferência exceda o saldo do pedido, mas permite conferência parcial (menor que o saldo) mediante confirmação.
  • N - Bloqueia Menor Qtde.: impede conferência parcial (qualquer item não totalmente conferido bloqueia), mas não testa excesso acima do saldo.
  • A - Bloqueia Ambas: impede qualquer divergência - nem a mais, nem a menos.

Telas impactadas​

MóduloCódigoUso
Parâmetros de FaturamentoMFA001Único local de configuração. ComboBox wwDBComboBox12 em UMFA001.dfm:9118-9145 com DataField = 'TP_CONFERENCIAPEDIDO' e Items.Strings = ('Bloqueia Maior Qtde.'#9'M', 'Bloqueia Menor Qtde.'#9'N', 'Bloqueia Ambas'#9'A')
Conferência Item (Pesagem)MPD031Lê o parâmetro direto via SELECT TP_CONFERENCIAPEDIDO FROM PARMFATUR em UMPD031.pas:149-152 e armazena em dmMPD031.iTP_CONFERENCIAPEDIDO - usado no tabITEMTROCABeforePost (UdmMPD031.pas:1177-1294) e no tabLOTESEMENTEBeforePost (UdmMPD031.pas:1375-1400) para bloquear/alertar divergências
Conferência ItemMPD091Lê o parâmetro via dmMPD091.ParmFatur.Values['TP_CONFERENCIAPEDIDO'] nas rotinas de validação da conferência (UdmMPD091.pas:477, 593, 626, 656, 666, 760)

Procedures impactadas​

Não há stored procedures/views no banco Firebird que leiam TP_CONFERENCIAPEDIDO - toda a lógica está nos módulos Delphi MPD031 e MPD091.

Campos envolvidos​

Tabela.CampoTipoDescrição
PARMFATUR.TP_CONFERENCIAPEDIDODOM_CHAR1 DEFAULT 'M' NOT NULLO próprio parâmetro (docs/schema/tables/PARMFATUR.sql:189, UdmMFA001.dfm:1758-1763). Domínio 'M'/'N'/'A'
ITEMPEDIDO.PS_PEDIDONUMERICPeso pedido (usado como PS_PEDIDO - COALESCE(PS_CONFERENCIA,0) para calcular saldo)
ITEMPEDIDO.QT_PEDIDANUMERICQuantidade pedida (usado como QT_PEDIDA - COALESCE(QT_CONFERENCIA,0) para calcular saldo)
ITEMPEDIDO.PS_CONFERENCIANUMERICPeso já conferido (acumulado)
ITEMPEDIDO.QT_CONFERENCIANUMERICQuantidade já conferida (acumulada)
ITEMPEDIDOSEMENTE.QT_LOTENUMERICQuantidade por lote na conferência por semente/lote (MPD031)
ITEMPEDIDOSEMENTE.QT_CONFERIDANUMERICQuantidade já conferida por lote

Opções disponíveis​

M - Bloqueia Maior Qtde. (padrão)​

O que fazDetalhe
Excesso (conferido > saldo)Bloqueia com erro W-0000 "Não é permitida conferência Maior que o Saldo do Item. Verifique! [MFA001]" (UdmMPD091.pas:676, UdmMPD031.pas:1281)
Falta (conferido < saldo)Não bloqueia. Gera msgAdvertencia ("Menor que o saldo do Item" com saldo e valor conferido) e, se houver, pergunta C-0000 "Continuar com a Conferência Parcial?" (UdmMPD091.pas:666-673, UdmMPD031.pas:1271-1278)
Itens não lançados na conferênciaSe existirem itens do pedido sem registro em tabITEMCONFERENCIA / tabITEMTROCA, monta msgNaoConferidos e pergunta C-0000 "Continuar com a Conferência Parcial?" (UdmMPD091.pas:679-691, UdmMPD031.pas:1283-1294)
Rollback de saldoQuando PS_SALDO < 0 ou QT_SALDO < 0 após o lançamento, o AfterPost em MPD091 desfaz o lançamento e zera o valor digitado (UdmMPD091.pas:760-785)

Simulação passo a passo​

  1. Em MFA001 → aba Pedidos / O.S. → Opção 1 → Tipo de Conferência = Bloqueia Maior Qtde. (wwDBComboBox12 = M)
  2. Salve os parâmetros → PARMFATUR.TP_CONFERENCIAPEDIDO = 'M'
  3. Abra MPD091 (ou MPD031) e selecione um pedido com item I001 de saldo 100,000 kg
  4. Lance na conferência 110,000 kg para I001 e tente confirmar → Erro W-0000 "Não é permitida conferência Maior que o Saldo do Item. Verifique! [MFA001]" - conferência não é gravada
  5. Ajuste para 80,000 kg (parcial) e tente confirmar → Sistema pergunta C-0000 "Menor que o saldo do Item [...] Continuar com a Conferência Parcial?"
    • Sim → lança 80,000 kg e grava ITEMPEDIDO.PS_CONFERENCIA += 80,000
    • Não → W-0000 "Operação Cancelada!"
  6. Deixe um item do pedido sem lançar conferência e confirme → C-0000 "Itens não Conferidos: - I002 - [...] Continuar com a Conferência Parcial?"

Resultado esperado: Permite conferência parcial com aviso, mas nunca deixa passar excesso acima do saldo. Cenário típico para empresas que lidam com produtos a granel/peso (recapagem, ração, sementes) onde o peso real conferido pode ser ligeiramente menor que o pedido por perdas operacionais, mas nunca pode exceder o saldo de estoque vinculado.


N - Bloqueia Menor Qtde.​

O que fazDetalhe
Excesso (conferido > saldo)Não bloqueia. Apenas gera msg "Menor que o saldo do Item" (obs.: a mensagem é genérica - a rotina registra divergência, mas o bloqueio final só dispara por falta, não por excesso) (UdmMPD091.pas:626-640, UdmMPD031.pas:1212-1228)
Falta (conferido < saldo)Bloqueia com erro W-0000 "Não é permitida conferência Divergente do Saldo do Item. Verifique! [MFA001]" (UdmMPD091.pas:656-662, UdmMPD031.pas:1261-1267)
Itens não lançados na conferênciaBloqueia (junto com divergências de saldo) pela mesma mensagem acima - toda a lista de itens não conferidos é exibida junto
Rollback de saldoA verificação PS_SALDO < 0 em tabITEMCONFERENCIAAfterPost só é feita para M ou A (UdmMPD091.pas:760) - em N não há rollback automático

Simulação passo a passo​

  1. Em MFA001 → Tipo de Conferência = Bloqueia Menor Qtde. (wwDBComboBox12 = N)
  2. Salve → PARMFATUR.TP_CONFERENCIAPEDIDO = 'N'
  3. Abra MPD091, selecione pedido com itens I001 (100 kg) e I002 (50 kg)
  4. Lance I001 = 100 kg mas não lance I002. Confirme → Erro W-0000 "Não é permitida conferência Divergente do Saldo do Item. Verifique! [MFA001] - Itens não Conferidos: - I002 - [...]"
  5. Lance I001 = 90 kg (parcial) e I002 = 50 kg. Confirme → Erro "[...] I001 - [...] Menor que o saldo do Item"
  6. Lance I001 = 100 kg e I002 = 50 kg (conferência total) → confirma sem erro
  7. Lance I001 = 120 kg e I002 = 50 kg (excesso no I001) → sistema não bloqueia o excesso (o código só bloqueia por falta na lógica do modo N)

Resultado esperado: Exige conferência completa de todos os itens (não permite pedidos parcialmente conferidos), mas não protege contra excesso. Cenário típico para empresas onde o pedido é a grade-mestre do faturamento e o fluxo exige ITEMPEDIDO.QT_CONFERENCIA = QT_PEDIDA antes de seguir - por exemplo, separação de produto unitário (distribuidoras) em que não pode sobrar item por conferir.


A - Bloqueia Ambas​

O que fazDetalhe
Excesso (conferido > saldo)Bloqueia - o bloco if (TP_CONFERENCIAPEDIDO = 'M') or (TP_CONFERENCIAPEDIDO = 'A') dispara msg "Maior que o saldo do Item" e impede confirmação (UdmMPD091.pas:593-623, UdmMPD031.pas:1177-1210)
Falta (conferido < saldo)Bloqueia - o bloco if (TP_CONFERENCIAPEDIDO = 'N') or (TP_CONFERENCIAPEDIDO = 'A') dispara msg "Menor que o saldo do Item" (UdmMPD091.pas:626-640, UdmMPD031.pas:1212-1228)
Itens não lançados na conferênciaBloqueia junto com a mensagem de divergência (UdmMPD091.pas:656-662) - mesma rota do modo N
Rollback de saldoAtivo - o AfterPost em MPD091 desfaz o lançamento quando PS_SALDO < 0 ou QT_SALDO < 0 (UdmMPD091.pas:760-785)
Mensagem finalSempre W-0000 "Não é permitida conferência Divergente do Saldo do Item. Verifique! [MFA001]" + lista de itens divergentes + lista de não conferidos

Simulação passo a passo​

  1. Em MFA001 → Tipo de Conferência = Bloqueia Ambas (wwDBComboBox12 = A)
  2. Salve → PARMFATUR.TP_CONFERENCIAPEDIDO = 'A'
  3. Abra MPD091, selecione pedido com item I001 de saldo 100 kg
  4. Lance 110 kg (excesso) → ao tentar gravar no AfterPost, o rollback desfaz: tabITEMPS_SALDO é restaurado e tabITEMCONFERENCIA é cancelado
  5. Lance 90 kg (parcial) e confirme → Erro W-0000 "Não é permitida conferência Divergente do Saldo do Item. Verifique! [MFA001] [...] I001 Menor que o saldo do Item"
  6. Lance exatamente 100 kg e confirme → confirma sem erro
  7. Qualquer item do pedido sem conferência lançada → bloqueia confirmação

Resultado esperado: Conferência estritamente idêntica ao saldo do pedido. Nem peso a mais, nem a menos, nem item faltando. Cenário típico para operações fiscais rigorosas (auditorias, DIFAL, substituição tributária) onde a NF tem que refletir exatamente o que foi pedido, sem ajustes operacionais.


Interação com outros parâmetros de conferência​

O TP_CONFERENCIAPEDIDO atua em conjunto com dois outros parâmetros do grupo "Parâmetros de Pedidos" em Opção 1:

ParâmetroFunçãoRelação com TP_CONFERENCIAPEDIDO
ST_BLOQFATNAOCONFERIDOS"Validar Quantidade Conferida [MPD031/MPD091/MPD097]" (UMFA001.dfm:10154-10172)Bloqueia faturamento de pedidos que não passaram pela conferência, independente do modo escolhido em TP_CONFERENCIAPEDIDO. Quando ='S', exige que QT_CONFERENCIA = QT_PEDIDA antes de gerar NF
ST_IGNORACONFERENCIAPEDIDOOS"Ignorar conferência para pedidos de OS" (UMFA001.dfm:10174-10181)Quando ='S', permite pular TP_CONFERENCIAPEDIDO em pedidos ligados a Ordem de Serviço (o sistema trata a OS como já conferida)

Também não confundir com:

  • ST_CONTENTREGACONF - conferência de entrega (via PEDIDO.ST_ENTREGAOFICINA) - fluxo completamente distinto, tratado em ST_CONTENTREGACONF.
  • TP_CONFERENCIANOTA / aba pagCONFERENCIANOTA (UMFA001.dfm:5608) - conferência de Nota de Entrada (outra tela, outro fluxo, outros campos).

Tabela Comparativa Resumida​

OpçãoNomeExcesso (maior que saldo)Falta (menor que saldo)Item não conferidoRollback PS_SALDO menor que 0Cenário típico
MBloqueia Maior Qtde. (padrão)Bloqueia (W-0000)Alerta + C-0000 "Continuar parcial?"Alerta + C-0000SimProdutos a granel/peso (recapagem, ração)
NBloqueia Menor Qtde.Não bloqueiaBloqueia (W-0000)BloqueiaNãoSeparação unitária (distribuidoras) - exige pedido 100% conferido
ABloqueia AmbasBloqueia (W-0000)Bloqueia (W-0000)BloqueiaSimOperações fiscais rigorosas - conferência = pedido exato

Referências no Código Fonte​

ComboBox e valor padrão​

ArquivoLinha(s)Trecho
source/MFA001/UMFA001.dfm8207-8220Label Label86 → Caption "Tipo de Conferência"
source/MFA001/UMFA001.dfm8221-8234Label Label87 → Caption "[MPD031/MPD091]"
source/MFA001/UMFA001.dfm9118-9145wwDBComboBox12: TwwDBComboBox com DataField = 'TP_CONFERENCIAPEDIDO' e Items.Strings = ('Bloqueia Maior Qtde.'#9'M', 'Bloqueia Menor Qtde.'#9'N', 'Bloqueia Ambas'#9'A')
source/MFA001/UdmMFA001.dfm260PARMFATUR.TP_CONFERENCIAPEDIDO no SELECT do tabPARMFATUR
source/MFA001/UdmMFA001.dfm1758-1763Campo tabPARMFATURTP_CONFERENCIAPEDIDO: TStringField (FieldName = 'TP_CONFERENCIAPEDIDO', Origin = '"PARMFATUR"."TP_CONFERENCIAPEDIDO"', FixedChar = True, Size = 1)
source/MFA001/UdmMFA001.dfm2840TP_CONFERENCIAPEDIDO = :TP_CONFERENCIAPEDIDO no UPDATE gerado pelo FireDAC
source/MFA001/UdmMFA001.dfm3140PARMFATUR.TP_CONFERENCIAPEDIDO na query de navegação
source/MFA001/UdmMFA001.pas245Declaração tabPARMFATURTP_CONFERENCIAPEDIDO: TStringField
source/MFA001/UdmMFA001.pas564AfterInsert: tabPARMFATURTP_CONFERENCIAPEDIDO.AsString := 'M' (valor padrão quando registro é criado pelo MFA001)

Consumidores (leem o parâmetro)​

ArquivoLinha(s)Uso
source/MPD031/UMPD031.pas149-152SELECT TP_CONFERENCIAPEDIDO FROM PARMFATUR WHERE CD_EMPRESA = ... → dmMPD031.iTP_CONFERENCIAPEDIDO := Resultado[0]
source/MPD031/UdmMPD031.pas227Declaração do campo público iTP_CONFERENCIAPEDIDO: String no TdmMPD031
source/MPD031/UdmMPD031.pas1177-1210tabITEMTROCABeforePost: se = 'M' ou 'A', bloqueia excesso (Maior que o saldo do Item)
source/MPD031/UdmMPD031.pas1212-1228Idem: se = 'N' ou 'A', bloqueia falta (Menor que o saldo do Item)
source/MPD031/UdmMPD031.pas1247-1258Se = 'N' e PESO <= 0, não monta lista de itens não conferidos
source/MPD031/UdmMPD031.pas1261-1294Decisão final: se 'N'/'A' dispara W-0000 divergente; se 'M' pergunta C-0000 parcial
source/MPD031/UdmMPD031.pas1375-1400Mesma lógica aplicada à conferência por lote/semente (tabLOTESEMENTE vs ITEMPEDIDOSEMENTE)
source/MPD091/UdmMPD091.pas477Verifica se <> 'N' para incluir itens do pedido na lista de "Não Conferidos"
source/MPD091/UdmMPD091.pas593-623Se = 'M' ou 'A': monta msg "Maior que o saldo" e msgAdvertencia "Menor que o saldo"
source/MPD091/UdmMPD091.pas626-640Se = 'N' ou 'A': monta msg "Menor que o saldo"
source/MPD091/UdmMPD091.pas656-662Decisão: 'N'/'A' dispara W-0000 "Não é permitida conferência Divergente do Saldo do Item"
source/MPD091/UdmMPD091.pas666-691Decisão: 'M' dispara C-0000 parcial e/ou W-0000 para excesso
source/MPD091/UdmMPD091.pas760-785tabITEMCONFERENCIAAfterPost: rollback de saldo ativo apenas para 'M' ou 'A'

Tabelas afetadas (DDL)​

ArquivoLinhaCampo
docs/schema/tables/PARMFATUR.sql189TP_CONFERENCIAPEDIDO DOM_CHAR1 DEFAULT 'M' NOT NULL