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
wwDBComboBox5com label "Obriga Parâmetros MFA006 nos Pedidos" -UMFA001.dfmlinha 7949 / combo linhas 8665-8691) Tabela:PARMFATUR.ST_BLOQPEDIDOMFA006Valor padrão:N(Não) - definido emUdmMFA001.paslinha 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ódulo | Código | Descrição |
|---|---|---|
| Parâmetros Faturamento | MFA001 | Tela de configuração do parâmetro (combo principal) |
| Tabela de Preço / Parâmetros MFA006 | MFA006 | Cadastro de PARMTABPRECO e ITEMTABPRECO consultado quando o parâmetro está ativo |
| Pedido de Venda | MPD002 | UdmMPD002.pas linha 2740 (obrigatoriedade em serviços) e linha 5744 (SELECT em grid/painel) |
| Pedido de Venda (Simplificado) | MPD005 | UdmMPD005.pas linhas 376, 402 (carrega iValidaTabPreco) e 1178, 1187, 1202, 1215, 1373-1376, 1391, 1405 (validação) |
| Painel/Roteirização Pedidos | MPD052 | UdmMPD052.pas linhas 689, 737, 744 (carrega parâmetro via Busca_Parametros) |
| Recapadora - Ordem de Produção | MRC006 | UdmMRC006.pas linha 251, 257 (consulta em Busca_Parametros) |
| Recapadora - OP Pneu 7 | MRC007 | UdmMRC007.pas linha 335 |
| Recapadora - OP Pneu 8 | MRC008 | UdmMRC008.pas linha 348 |
| Recapadora - OP Pneu 9 | MRC009 | UdmMRC009.pas linha 338 |
| Recapadora - OP Pneu 10 | MRC010 | UdmMRC010.pas linha 304 |
| Recapadora - OP Pneu 11 | MRC011 | UdmMRC011.pas linha 256 |
| Recapadora - OP Pneu 12 | MRC012 | UdmMRC012.pas linha 288 |
| Recapadora - OP Pneu 13 | MRC013 | UdmMRC013.pas linha 235 |
| Recapadora - OP Pneu 14 | MRC014 | UdmMRC014.pas linha 304 |
| Recapadora - OP Pneu 15 | MRC015 | UdmMRC015.pas linha 237 |
| Recapadora - OP Pneu 16 | MRC016 | UdmMRC016.pas linha 299 |
| Recapadora - Armazenamento | MRC025 | UdmMRC025.pas linha 1035 (uso direto) |
| Recapadora - OP 27 | MRC027 | UdmMRC027.pas linha 229 |
| Recapadora - OP 28 | MRC028 | UdmMRC028.pas linha 287 |
| Recapadora - Etapa Desenvelopamento | MRC034 | UdmMRC034.pas linha 186 |
| Recapadora - Etapa Desenvelopamento 35 | MRC035 | UdmMRC035.pas linha 186 |
| Recapadora - Pedido Pneu | MRC039 | UdmMRC039.pas linha 110 (SELECT) e 525 (uso direto na validação do item) |
| Recapadora - OP 47 | MRC047 | UdmMRC047.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
| Campo | Tabela | Descrição |
|---|---|---|
ST_BLOQPEDIDOMFA006 | PARMFATUR | O parâmetro em si (DOM_CHAR1: S/N) |
CD_TABPRECO | PARMTABPRECO | Tabela de preço associada a uma pessoa (cliente) em MFA006 |
CD_PESSOA | PARMTABPRECO | Pessoa para a qual a tabela se aplica |
VL_PRECO | ITEMTABPRECO | Preço unitário do item na tabela de preço daquela pessoa |
CD_ITEM | ITEMTABPRECO | Serviço/produto cadastrado na tabela |
ITEMPEDIDO.VL_UNITARIO | ITEMPEDIDO | Campo que recebe o valor vindo de ITEMTABPRECO.VL_PRECO |
CAMPOSINICIAIS.VLPNEU | CAMPOSINICIAIS (MRC039) | Valor do pneu no pedido de recapagem |
LISTAEXPORT.VLUNITARIO | LISTAEXPORT (MRC025) | Valor do serviço no armazenamento |
Opções disponíveis
N - Não (valor padrão)
| O que faz | Detalhe |
|---|---|
Exige PARMTABPRECO/ITEMTABPRECO para serviços? | Não |
| Bloqueia se pessoa sem tabela de preço cadastrada? | Não |
| Fluxo em MPD002 linha 2740 | if 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
- MFA001 → Parâmetros → Ambos → Opção 1 → "Obriga Parâmetros MFA006 nos Pedidos" = "Não"
- Salve (F6)
- Abra um Pedido de Venda (MPD002) para cliente X que não possui cadastro em
PARMTABPRECO(MFA006) - Lance um item de serviço (tipo
S) no pedido - Digite o valor unitário manualmente (ou deixe o sistema preencher pelas regras de
ST_TABPRECOgené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 faz | Detalhe |
|---|---|
Exige PARMTABPRECO/ITEMTABPRECO para serviços? | Sim |
| Fluxo em MPD002 linhas 2740-2810 | Se 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 pessoa | Usa 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 1035 | Mesmo fluxo mas no armazenamento de pneus: tabLISTAEXPORTVLUNITARIO é preenchido a partir de ITEMTABPRECO.VL_PRECO |
| Em MRC039 linha 525 | Idem para tabCAMPOSINICIAISVLPNEU - valor do pneu é forçado a partir da tabela do cliente |
| Em MPD005 linhas 1178-1405 | Nas 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
- MFA001 → "Obriga Parâmetros MFA006 nos Pedidos" = "Sim" → F6
- Em MFA006, cadastre
PARMTABPRECOpara o Cliente C1 apontando para a tabela de preço T1; e emITEMTABPRECOcadastre o serviço S1 comVL_PRECO = 80,00 - Abra MPD002 e crie um Pedido para o Cliente C1
- Adicione o serviço S1 (tipo
S) digitandoVL_UNITARIO = 50,00 - Ao confirmar o item, o sistema sobrescreve o valor → grava
VL_UNITARIO = 80,00(vindo deITEMTABPRECO) - Repita criando Pedido para Cliente C2 sem cadastro em
PARMTABPRECOe sem item emITEMTABPRECOda tabela default - 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...). OST_BLOQPEDIDOMFA006é um reforço específico para serviços por pessoa - age depois que a tabela foi determinada peloST_TABPRECO, obrigando cadastro emITEMTABPRECOquando='S'.ST_REPROCESSATABPRECOeST_REPROTABPRECOMPD002: parâmetros de reprocessamento de tabela que compartilham lógica adjacente no mesmo bloco de MPD002 - quando ativos, reavaliam a tabela; oST_BLOQPEDIDOMFA006determina se essa reavaliação exige cadastro explícito.ST_REPROCESSAPRECOCLIENTE(Label "Reprocessar Preço Cliente [MFA006/MRC020]"): parâmetro separado (linha 4125 deUMFA001.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 deST_TABPRECOpadrã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.javalinha 38 eJunsoftBuilder.javalinha 362 o expõem comostBloqPedidoMFA006; eVulcanoProd/ParmFaturDAO.javalinhas 15 e 32 o lêem para o módulo de produção Vulcano. - O
BeforePostdeUdmMFA001.pasnão valida obrigatoriedade explícita deste campo (diferentemente deST_BLOQUEIOPEDeST_BLOQUEIONF) - o campo sempre teráSouNpor causa do default aplicado emAfterInsert.
Tabela Comparativa Resumida
| Opção | Exige PARMTABPRECO p/ pessoa? | Exige ITEMTABPRECO do serviço? | Sobrescreve VL_UNITARIO digitado? | Bloqueia salvar se ausente? |
|---|---|---|---|---|
| N | Não | Não | Não (segue regras de ST_TABPRECO) | Não |
| S | Sim | Sim | Sim (força valor da tabela) | Sim |
Referências no Código Fonte
| Arquivo | Linhas | Função |
|---|---|---|
source/MFA001/UMFA001.dfm | 7943-7956 | Label18 "Obriga Parâmetros MFA006 nos Pedidos" |
source/MFA001/UMFA001.dfm | 8665-8691 | ComboBox wwDBComboBox5 com DataField = 'ST_BLOQPEDIDOMFA006' e Items Sim/Não |
source/MFA001/UdmMFA001.pas | 145 | Declaração do field tabPARMFATURST_BLOQPEDIDOMFA006: TStringField |
source/MFA001/UdmMFA001.pas | 489 | Valor padrão 'N' em AfterInsert |
source/MFA001/UdmMFA001.dfm | 151, 1186-1189, 2383, 2543, 2758, 3031 | Field persistente, SELECT, INSERT, UPDATE da PARMFATUR |
source/MPD002/UdmMPD002.pas | 2740 | if ((parmfatur.values['ST_BLOQPEDIDOMFA006'] = 'S') and (tpItem ='S')) - porta de entrada do bloco de obrigatoriedade |
source/MPD002/UdmMPD002.pas | 5744 | SELECT P.ST_BLOQPEDIDOMFA006 da PARMFATUR em BuscaParametros |
source/MPD005/UdmMPD005.pas | 245 | Declaração de iValidaTabPreco: string (variável que recebe o valor) |
source/MPD005/UdmMPD005.pas | 376, 402 | SELECT e atribuição iValidaTabPreco := Resultado[18] |
source/MPD005/UdmMPD005.pas | 1178, 1187, 1202, 1215, 1373, 1376, 1391, 1405 | Validações if (iValidaTabPreco = 'S') em serviços e itens de ordem de serviço (mensagens W-2045/W-2046) |
source/MPD052/UdmMPD052.pas | 689, 737, 744 | Variável iValidaTabPreco, SELECT e atribuição em Busca_Parametros |
source/MRC006/UdmMRC006.pas | 251, 257 | SELECT e dmMRC006.iValidaTabPreco := Resultado[1] em Busca_Parametros |
source/MRC007/UdmMRC007.pas | 335 | SELECT ST_BLOQPEDIDOMFA006, ST_TABPRECO |
source/MRC008/UdmMRC008.pas | 348 | SELECT |
source/MRC009/UdmMRC009.pas | 338 | SELECT |
source/MRC010/UdmMRC010.pas | 304 | SELECT |
source/MRC011/UdmMRC011.pas | 256 | SELECT |
source/MRC012/UdmMRC012.pas | 288 | SELECT |
source/MRC013/UdmMRC013.pas | 235 | SELECT |
source/MRC014/UdmMRC014.pas | 304 | SELECT |
source/MRC015/UdmMRC015.pas | 237 | SELECT |
source/MRC016/UdmMRC016.pas | 299 | SELECT |
source/MRC025/UdmMRC025.pas | 1035 | if (frmMRC025.parmFatur.Values['ST_BLOQPEDIDOMFA006'] = 'S') + busca em ITEMTABPRECO e sobrescrita de VLUNITARIO |
source/MRC027/UdmMRC027.pas | 229 | SELECT |
source/MRC028/UdmMRC028.pas | 287 | SELECT |
source/MRC034/UdmMRC034.pas | 186 | SELECT |
source/MRC035/UdmMRC035.pas | 186 | SELECT |
source/MRC039/UdmMRC039.pas | 110 | SELECT ST_OBSCLIENTE, ST_BLOQPEDIDOMFA006, ST_TABPRECO |
source/MRC039/UdmMRC039.pas | 525 | if (dmMRC039.parmFatur.Values['ST_BLOQPEDIDOMFA006'] = 'S') - usa no pedido de pneu para travar VLPNEU via ITEMTABPRECO |
source/MRC047/UdmMRC047.pas | 158, 214, 219, 495 | Declaração de iValidaTabPreco, SELECT, atribuição e uso na OP 47 |
source/Server/VulcanoProd/VulcanoProdAS/.../ParmFaturDAO.java | 15, 32 | SELECT e setStBloqPedidoMFA006 na API Java |
source/Server/JunsoftWebAPI/.../JunsoftBuilder.java | 362 | .stBloqPedidoMFA006(resultMap.fieldByName("ST_BLOQPEDIDOMFA006").asString()) |
source/Server/JunsoftWebAPI/.../ParmFaturSQL.java | 38 | ST_BLOQPEDIDOMFA006 no SELECT base |