Pular para o conteúdo principal

Obriga Parâmetros MFA006 nos Pedidos

Tela de configuração: MFA001 - Parâmetros de Faturamento Localização: Parâmetros → Pedidos / O.S. → Opção 1 (combo wwDBComboBox5 com label "Obriga Parâmetros MFA006 nos Pedidos" - UMFA001.dfm linha 7949 / combo linhas 8665-8691) Tabela: PARMFATUR.ST_BLOQPEDIDOMFA006 Valor padrão: N (Não) - definido em UdmMFA001.pas linha 489 (AfterInsert)

Quando ligado (S), ao lançar um item de serviço em pedidos, ordens de serviço, pedido de pneus ou ordens de produção da recapadora, o sistema obriga que exista uma tabela de preço cadastrada para a pessoa (cliente) em PARMTABPRECO com o preço do serviço em ITEMTABPRECO - parâmetros mantidos na tela MFA006 "Parâmetros de Tabela de Preço". Se não houver cadastro, o valor unitário é bloqueado/trava com a mensagem "Para o Serviço X Não Há Parâmetros de Tabela de Preço Y. Verifique! [TFA006]".

Telas impactadas​

MóduloCódigoDescrição
Parâmetros FaturamentoMFA001Tela de configuração do parâmetro (combo principal)
Tabela de Preço / Parâmetros MFA006MFA006Cadastro de PARMTABPRECO e ITEMTABPRECO consultado quando o parâmetro está ativo
Pedido de VendaMPD002UdmMPD002.pas linha 2740 (obrigatoriedade em serviços) e linha 5744 (SELECT em grid/painel)
Pedido de Venda (Simplificado)MPD005UdmMPD005.pas linhas 376, 402 (carrega iValidaTabPreco) e 1178, 1187, 1202, 1215, 1373-1376, 1391, 1405 (validação)
Painel/Roteirização PedidosMPD052UdmMPD052.pas linhas 689, 737, 744 (carrega parâmetro via Busca_Parametros)
Recapadora - Ordem de ProduçãoMRC006UdmMRC006.pas linha 251, 257 (consulta em Busca_Parametros)
Recapadora - OP Pneu 7MRC007UdmMRC007.pas linha 335
Recapadora - OP Pneu 8MRC008UdmMRC008.pas linha 348
Recapadora - OP Pneu 9MRC009UdmMRC009.pas linha 338
Recapadora - OP Pneu 10MRC010UdmMRC010.pas linha 304
Recapadora - OP Pneu 11MRC011UdmMRC011.pas linha 256
Recapadora - OP Pneu 12MRC012UdmMRC012.pas linha 288
Recapadora - OP Pneu 13MRC013UdmMRC013.pas linha 235
Recapadora - OP Pneu 14MRC014UdmMRC014.pas linha 304
Recapadora - OP Pneu 15MRC015UdmMRC015.pas linha 237
Recapadora - OP Pneu 16MRC016UdmMRC016.pas linha 299
Recapadora - ArmazenamentoMRC025UdmMRC025.pas linha 1035 (uso direto)
Recapadora - OP 27MRC027UdmMRC027.pas linha 229
Recapadora - OP 28MRC028UdmMRC028.pas linha 287
Recapadora - Etapa DesenvelopamentoMRC034UdmMRC034.pas linha 186
Recapadora - Etapa Desenvelopamento 35MRC035UdmMRC035.pas linha 186
Recapadora - Pedido PneuMRC039UdmMRC039.pas linha 110 (SELECT) e 525 (uso direto na validação do item)
Recapadora - OP 47MRC047UdmMRC047.pas linhas 158, 214, 219, 495

Procedures impactadas​

O parâmetro não é consultado por nenhuma procedure SQL (grep em Scripts/ST_BLOQPEDIDOMFA006 → 0 matches). Toda a lógica de bloqueio/obrigatoriedade é aplicada no lado Delphi, com consultas diretas a PARMTABPRECO e ITEMTABPRECO.

Campos envolvidos​

CampoTabelaDescrição
ST_BLOQPEDIDOMFA006PARMFATURO parâmetro em si (DOM_CHAR1: S/N)
CD_TABPRECOPARMTABPRECOTabela de preço associada a uma pessoa (cliente) em MFA006
CD_PESSOAPARMTABPRECOPessoa para a qual a tabela se aplica
VL_PRECOITEMTABPRECOPreço unitário do item na tabela de preço daquela pessoa
CD_ITEMITEMTABPRECOServiço/produto cadastrado na tabela
ITEMPEDIDO.VL_UNITARIOITEMPEDIDOCampo que recebe o valor vindo de ITEMTABPRECO.VL_PRECO
CAMPOSINICIAIS.VLPNEUCAMPOSINICIAIS (MRC039)Valor do pneu no pedido de recapagem
LISTAEXPORT.VLUNITARIOLISTAEXPORT (MRC025)Valor do serviço no armazenamento

Opções disponíveis​

N - Não (valor padrão)​

O que fazDetalhe
Exige PARMTABPRECO/ITEMTABPRECO para serviços?Não
Bloqueia se pessoa sem tabela de preço cadastrada?Não
Fluxo em MPD002 linha 2740if devolve False, salta todo o bloco que busca CD_TABPRECO em PARMTABPRECO e preço em ITEMTABPRECO
É o valor padrão ao inserir novo registro?Sim (UdmMFA001.pas linha 489)

Simulação passo a passo​

  1. MFA001 → Parâmetros → Ambos → Opção 1 → "Obriga Parâmetros MFA006 nos Pedidos" = "Não"
  2. Salve (F6)
  3. Abra um Pedido de Venda (MPD002) para cliente X que não possui cadastro em PARMTABPRECO (MFA006)
  4. Lance um item de serviço (tipo S) no pedido
  5. Digite o valor unitário manualmente (ou deixe o sistema preencher pelas regras de ST_TABPRECO genéricas)

Resultado esperado: o pedido grava normalmente. O sistema não obriga nem verifica a existência de tabela de preço específica por cliente em MFA006. Qualquer valor informado no serviço é aceito (respeitando os demais parâmetros ativos como ST_TABPRECO padrão, ST_BLOQUEIOPED, etc.).


S - Sim​

O que fazDetalhe
Exige PARMTABPRECO/ITEMTABPRECO para serviços?Sim
Fluxo em MPD002 linhas 2740-2810Se tpItem='S' (serviço), consulta PARMTABPRECO por CD_PESSOA. Se existir CD_TABPRECO, busca VL_PRECO em ITEMTABPRECO. Se não existir → erro W-0000: "Para o Serviço X Não Há Parâmetros de Tabela de Preço Y. Verifique! [TFA006]". Se existir, força VL_UNITARIO := VL_PRECO (sobrescreve o digitado)
Quando não há PARMTABPRECO para a pessoaUsa RETORNA_TABPRECO com a condição de pagamento do pedido para descobrir a tabela padrão aplicável; ainda assim busca o preço em ITEMTABPRECO
Em MRC025 linha 1035Mesmo fluxo mas no armazenamento de pneus: tabLISTAEXPORTVLUNITARIO é preenchido a partir de ITEMTABPRECO.VL_PRECO
Em MRC039 linha 525Idem para tabCAMPOSINICIAISVLPNEU - valor do pneu é forçado a partir da tabela do cliente
Em MPD005 linhas 1178-1405Nas validações de item e de serviço (tabORDEMSERVITEM e tabSERVICOITEM): se iValidaTabPreco='S' e o item não estiver em ITEMTABPRECO → dispara mensagens W-2045 e W-2046

Simulação passo a passo​

  1. MFA001 → "Obriga Parâmetros MFA006 nos Pedidos" = "Sim" → F6
  2. Em MFA006, cadastre PARMTABPRECO para o Cliente C1 apontando para a tabela de preço T1; e em ITEMTABPRECO cadastre o serviço S1 com VL_PRECO = 80,00
  3. Abra MPD002 e crie um Pedido para o Cliente C1
  4. Adicione o serviço S1 (tipo S) digitando VL_UNITARIO = 50,00
  5. Ao confirmar o item, o sistema sobrescreve o valor → grava VL_UNITARIO = 80,00 (vindo de ITEMTABPRECO)
  6. Repita criando Pedido para Cliente C2 sem cadastro em PARMTABPRECO e sem item em ITEMTABPRECO da tabela default
  7. Ao adicionar o serviço S1 → erro bloqueante: "Para o Serviço S1 Não Há Parâmetros de Tabela de Preço T_default. Verifique! [TFA006]" — o item não pode ser salvo

Resultado esperado:

  • Para clientes com tabela cadastrada em MFA006: os preços de serviço são travados pelo valor da tabela, independentemente do que o usuário digite.
  • Para clientes/serviços sem tabela cadastrada: o pedido não pode ser salvo - o usuário é direcionado a TFA006/MFA006 para cadastrar a tabela antes.

Regra Geral / Interação com Outros Parâmetros​

  • ST_TABPRECO (PARMFATUR): parâmetro "pai" que controla o uso genérico de tabelas de preço (N, S, B, R...). O ST_BLOQPEDIDOMFA006 é um reforço específico para serviços por pessoa - age depois que a tabela foi determinada pelo ST_TABPRECO, obrigando cadastro em ITEMTABPRECO quando ='S'.
  • ST_REPROCESSATABPRECO e ST_REPROTABPRECOMPD002: parâmetros de reprocessamento de tabela que compartilham lógica adjacente no mesmo bloco de MPD002 - quando ativos, reavaliam a tabela; o ST_BLOQPEDIDOMFA006 determina se essa reavaliação exige cadastro explícito.
  • ST_REPROCESSAPRECOCLIENTE (Label "Reprocessar Preço Cliente [MFA006/MRC020]"): parâmetro separado (linha 4125 de UMFA001.dfm) que controla apenas o reprocesso do preço, sem exigir cadastro obrigatório.
  • Tipo do item: em MPD002, o filtro do bloco é (tpItem='S') - a obrigatoriedade só atua em itens com tipo Serviço. Itens de mercadoria seguem as regras de ST_TABPRECO padrão.

Observação Importante​

  • O grep retorna 0 matches em Scripts/ para este parâmetro. Não existe procedure que o consome - a lógica vive inteiramente no código Delphi (cliente-side).
  • O parâmetro é persistido também por APIs REST: JunsoftWebAPI/ParmFaturSQL.java linha 38 e JunsoftBuilder.java linha 362 o expõem como stBloqPedidoMFA006; e VulcanoProd/ParmFaturDAO.java linhas 15 e 32 o lêem para o módulo de produção Vulcano.
  • O BeforePost de UdmMFA001.pas não valida obrigatoriedade explícita deste campo (diferentemente de ST_BLOQUEIOPED e ST_BLOQUEIONF) - o campo sempre terá S ou N por causa do default aplicado em AfterInsert.

Tabela Comparativa Resumida​

OpçãoExige PARMTABPRECO p/ pessoa?Exige ITEMTABPRECO do serviço?Sobrescreve VL_UNITARIO digitado?Bloqueia salvar se ausente?
NNãoNãoNão (segue regras de ST_TABPRECO)Não
SSimSimSim (força valor da tabela)Sim

Referências no Código Fonte​

ArquivoLinhasFunção
source/MFA001/UMFA001.dfm7943-7956Label18 "Obriga Parâmetros MFA006 nos Pedidos"
source/MFA001/UMFA001.dfm8665-8691ComboBox wwDBComboBox5 com DataField = 'ST_BLOQPEDIDOMFA006' e Items Sim/Não
source/MFA001/UdmMFA001.pas145Declaração do field tabPARMFATURST_BLOQPEDIDOMFA006: TStringField
source/MFA001/UdmMFA001.pas489Valor padrão 'N' em AfterInsert
source/MFA001/UdmMFA001.dfm151, 1186-1189, 2383, 2543, 2758, 3031Field persistente, SELECT, INSERT, UPDATE da PARMFATUR
source/MPD002/UdmMPD002.pas2740if ((parmfatur.values['ST_BLOQPEDIDOMFA006'] = 'S') and (tpItem ='S')) - porta de entrada do bloco de obrigatoriedade
source/MPD002/UdmMPD002.pas5744SELECT P.ST_BLOQPEDIDOMFA006 da PARMFATUR em BuscaParametros
source/MPD005/UdmMPD005.pas245Declaração de iValidaTabPreco: string (variável que recebe o valor)
source/MPD005/UdmMPD005.pas376, 402SELECT e atribuição iValidaTabPreco := Resultado[18]
source/MPD005/UdmMPD005.pas1178, 1187, 1202, 1215, 1373, 1376, 1391, 1405Validações if (iValidaTabPreco = 'S') em serviços e itens de ordem de serviço (mensagens W-2045/W-2046)
source/MPD052/UdmMPD052.pas689, 737, 744Variável iValidaTabPreco, SELECT e atribuição em Busca_Parametros
source/MRC006/UdmMRC006.pas251, 257SELECT e dmMRC006.iValidaTabPreco := Resultado[1] em Busca_Parametros
source/MRC007/UdmMRC007.pas335SELECT ST_BLOQPEDIDOMFA006, ST_TABPRECO
source/MRC008/UdmMRC008.pas348SELECT
source/MRC009/UdmMRC009.pas338SELECT
source/MRC010/UdmMRC010.pas304SELECT
source/MRC011/UdmMRC011.pas256SELECT
source/MRC012/UdmMRC012.pas288SELECT
source/MRC013/UdmMRC013.pas235SELECT
source/MRC014/UdmMRC014.pas304SELECT
source/MRC015/UdmMRC015.pas237SELECT
source/MRC016/UdmMRC016.pas299SELECT
source/MRC025/UdmMRC025.pas1035if (frmMRC025.parmFatur.Values['ST_BLOQPEDIDOMFA006'] = 'S') + busca em ITEMTABPRECO e sobrescrita de VLUNITARIO
source/MRC027/UdmMRC027.pas229SELECT
source/MRC028/UdmMRC028.pas287SELECT
source/MRC034/UdmMRC034.pas186SELECT
source/MRC035/UdmMRC035.pas186SELECT
source/MRC039/UdmMRC039.pas110SELECT ST_OBSCLIENTE, ST_BLOQPEDIDOMFA006, ST_TABPRECO
source/MRC039/UdmMRC039.pas525if (dmMRC039.parmFatur.Values['ST_BLOQPEDIDOMFA006'] = 'S') - usa no pedido de pneu para travar VLPNEU via ITEMTABPRECO
source/MRC047/UdmMRC047.pas158, 214, 219, 495Declaração de iValidaTabPreco, SELECT, atribuição e uso na OP 47
source/Server/VulcanoProd/VulcanoProdAS/.../ParmFaturDAO.java15, 32SELECT e setStBloqPedidoMFA006 na API Java
source/Server/JunsoftWebAPI/.../JunsoftBuilder.java362.stBloqPedidoMFA006(resultMap.fieldByName("ST_BLOQPEDIDOMFA006").asString())
source/Server/JunsoftWebAPI/.../ParmFaturSQL.java38ST_BLOQPEDIDOMFA006 no SELECT base