Pular para o conteúdo principal

Parâmetro de Bloqueio de Pedidos / Ordens de Serviço

Tela de configuração: MFA001 - Parâmetros de Faturamento Localização: Parâmetros → Pedidos / O.S. → Opção 1 (label "Bloqueio Pedido", combo cmbST_BLOQUEIOPED - UMFA001.dfm linha 8261) Tabela: PARMFATUR.ST_BLOQUEIOPED Valor padrão: N (Não Bloqueia) - definido em UdmMFA001.pas linha 438 (AfterInsert) Obrigatório no BeforePost: sim - valida em UdmMFA001.pas linha 925 (mensagem "É Obrigatório Informar o Status do Bloqueio de Pedidos!")

Controla quando e por que motivo um Pedido de Venda, Pedido de Compra, Orçamento ou Ordem de Serviço será bloqueado automaticamente. O valor escolhido define quais regras (limite de crédito, duplicatas em atraso, preço mínimo da tabela, etc.) serão aplicadas pela procedure VERIFICA_BLOQUEIO.

Telas impactadas​

MóduloCódigoDescrição
Parâmetros FaturamentoMFA001Tela de configuração (combo principal)
Pedido de VendaMPD002Leitura em UdmMPD002.pas linhas 1363, 1372, 1654, 1937, 2073, 2119, 5737; UMPD002.pas linhas 3818, 3829, 6813
Pedido de Venda (Simplificado)MPD005UdmMPD005.pas linhas 244, 374, 392
Pedido Outro TipoMPD017UdmMPD017.pas linhas 148, 211, 226
OrçamentoMPD018UdmMPD018.pas linhas 245, 286, 301, 842
Pedido MobileMPD020UdmMPD020.pas linhas 237, 318, 346
Painel/Roteirização PedidosMPD081UdmMPD081.pas linha 90 (campo persistente); UMPD081.pas linhas 552, 593, 618, 656, 878, 889
Pedido CompraMPD092UdmMPD092.pas linhas 235, 277, 290, 810
Validação de Pedidos (lote)MPD010UMPD010.pas linhas 1400, 1410, 1415, 1420, 1499, 1509, 1514, 1519
NF Saída/EntradaMNF017UdmMNF017.pas linha 276; UMNF017.pas linhas 162, 188, 1378-1380
Ordem de ServiçoMOF001UdmMOF001.pas linhas 439, 723, 742; UMOF001.pas linhas 3032, 3043
Ordem de Serviço (Outra)MOF002UdmMOF002.pas linhas 191, 295, 312
Ordem de Serviço (Outra)MOF006UdmMOF006.pas linhas 233, 296, 312
OS com PagamentoMOF008UMOF008.pas linhas 804, 815
Recap - ArmazenamentoMRC025UMRC025.pas linha 2141
Recap - AgendaMRC026UMRC026.pas linha 1362
Recap - Pedido PneuMRC040UdmMRC040.pas linha 80 (campo persistente); UdmMRC040.dfm linhas 77, 272
Recap - LiberaçãoMRC001UformMRC001.pas linha 81
Histórico PedidojCommon/HistoricoPedidoUdmHistoricoPedido.pas linha 143

Procedures impactadas​

Procedures SQL que consomem PARMFATUR.ST_BLOQUEIOPED​

ProcedureArquivoDescrição
VERIFICA_BLOQUEIOScripts/VERIFICA_BLOQUEIO.sqlProcedure central de validação de bloqueio. Lê ST_BLOQUEIOPED na linha 143-152 e atribui a V_ST_BLOQUEIO para documentos P (Pedido), R (Recap) e O (OS com bloqueio pelo pedido) - linhas 173, 277, 350-355
GERA_PEDIDOCOTACAOPECAScripts/GERA_PEDIDOCOTACAOPECA.sqlAo gerar pedido a partir de cotação, se PARMCOMPRA.ST_BLOQUEIOPED = 'S' + módulo = MCO008, grava pedido com ST_PEDIDO='B', TP_BLOQUEIO='C' (linhas 47, 67, 72, 382-393). Atenção: consulta coluna homônima da PARMCOMPRA (configurada em MFA004), não de PARMFATUR.
VALIDA_MODELOBLOQUEIOVLLIMITEScripts/VALIDA_MODELOBLOQUEIOVLLIMITE.sqlChamada pela VERIFICA_BLOQUEIO com o valor de V_ST_BLOQUEIO. Dispara validação de limite de crédito se o código estiver em ('C','A','O','Q','B','F','G') (linha 40) e de limite acumulado se em ('T','A','O','B','F','G') (linha 108)
VALIDA_MODELOBLOQUEIODIASATRASOScripts/VALIDA_MODELOBLOQUEIODIASATRASO.sqlValida dias de atraso se V_ST_BLOQUEIO estiver em ('D','A','O','Q','B','Y','E','G') (linha 37)
VERIFICA_BLOQUEIOSUBGRUPOreferenciada em VERIFICA_BLOQUEIO.sql linha 177Valida bloqueios por subgrupo quando ST_SEPARABLOQUEIOPED = 'S'
RETORNA_MOTIVOBLOQUEIOreferenciada em VERIFICA_BLOQUEIO.sql linha 674Monta descrição amigável dos motivos do bloqueio

Campos/Panels de UI relacionados em outras telas​

  • MFA001.cmbST_BLOQUEIOPED - combo principal (DataField ST_BLOQUEIOPED da PARMFATUR)
  • MFA004.cmbST_BLOQUEIOPED - combo homônimo mas distinto vinculado a PARMCOMPRA.ST_BLOQUEIOPED (valores S/N - "Bloqueia Pedidos de Cotação [MCO008]" - UframeMFA004.dfm linhas 203-204, 584-594)

Campos envolvidos​

CampoTabelaDescrição
ST_BLOQUEIOPEDPARMFATURO parâmetro em si (DOM_CHAR1)
ST_BLOQUEIONFPARMFATURParâmetro equivalente para Notas Fiscais - quando I_TP_DOCTO='N' (nota), a VERIFICA_BLOQUEIO usa este em vez de ST_BLOQUEIOPED
ST_SEPARABLOQUEIOPEDPARMFATURSe S, separa subgrupos e grava PEDIDO.TP_BLOQUEIO='F' para bloqueio por crédito em venda bloqueada (VERIFICA_BLOQUEIO linhas 551-556)
TP_MODELOBLOQUEIOPARMFATURSe diferente de N, combina com PARMUSUARIO.PC_MAXDESCONTO para alçada de liberação
TP_BLOQSUBGRUPOPARMFATURModo de bloqueio por subgrupo
PC_DESCONTOPEDPARMFATURDesconto máximo aplicado quando o parâmetro aciona validação de desconto
PC_MARGEMSEGURANCAPARMFATURMargem de segurança sobre o custo
CD_TABCOMPRAPARMFATURTabela de compra usada para checar margem
VL_MINIMOPEDIDOPARMFATURValor mínimo do pedido
PEDIDO.ST_PEDIDO / PEDIDO.TP_BLOQUEIO / PEDIDO.DS_BLOQUEIOPEDIDOCampos gravados quando o pedido é bloqueado
ORDEMSERVICO.ST_ORDEMSERVICOORDEMSERVICOMarcado como B ao bloquear OS por análise de crédito

Opções disponíveis​

N - Não Bloqueia​

O que fazDetalhe
Aplica alguma regra de bloqueio?Não
Permite validar cupom de terceiro, cond. de pagamento, forma de pagamento?Sim (essas validações são independentes de V_ST_BLOQUEIO)
Comportamento do MPD010Lote "Validar Pedidos" ignora o pedido (if iST_BLOQUEIOPED <> 'N' - linhas 1420 e 1519 de UMPD010.pas)
É o valor padrão ao inserir novo registro?Sim (UdmMFA001.pas linha 438)

Simulação passo a passo​

  1. MFA001 → Parâmetros → Ambos → Opção 1 → ST_BLOQUEIOPED = "Não Bloqueia"
  2. Salve (F6)
  3. Lance um Pedido de Venda (MPD002) para um cliente inadimplente, com preço abaixo da tabela e duplicatas vencidas
  4. Salve o pedido → salva normalmente sem bloqueio de crédito/preço
  5. Na MPD010, use "Validar Pedidos" → os pedidos não são revalidados (bloco protegido por if iST_BLOQUEIOPED <> 'N')

Resultado esperado: o fluxo de crédito não é disparado. Apenas validações básicas (condição/forma de pagamento permitida para a pessoa, cupom de terceiro) continuam funcionando.


D - Duplicatas em Atraso​

O que fazDetalhe
ValidaSomente dias de atraso e maior vencimento do cliente (VALIDA_MODELOBLOQUEIODIASATRASO - I_ST_BLOQUEIO IN ('D','A','O','Q','B','Y','E','G'))
Bloqueia por limite de crédito?Não
Bloqueia por preço da tabela?Não

Simulação passo a passo​

  1. MFA001 → ST_BLOQUEIOPED = "Duplicatas em Atraso"
  2. Cadastre cliente com duplicatas em aberto há mais dias do que o CREDITO.NR_DIASATRASO permite
  3. Abra Pedido de Venda (MPD002) para esse cliente
  4. Salve → pedido é bloqueado com motivo "dias de atraso"
  5. Para um cliente dentro do limite de dias → salva normal

Resultado esperado: só bloqueia quando o cliente tem duplicatas vencidas há mais dias do que o permitido no cadastro de crédito.


C - Limite de Crédito​

O que fazDetalhe
ValidaLimite de crédito simples (VALIDA_MODELOBLOQUEIOVLLIMITE linha 40: I_ST_BLOQUEIO IN ('C','A','O','Q','B','F','G'))
ConsideraCREDITO.VL_CREDITO do cliente contra valor_pedido + duplicatas em aberto
Bloqueia por duplicatas em atraso?Não

Simulação passo a passo​

  1. MFA001 → ST_BLOQUEIOPED = "Limite de Crédito"
  2. Cadastre crédito do cliente (TFA001 → aba Crédito) com VL_CREDITO = 1.000,00
  3. Abra Pedido de Venda de R$ 1.500,00 para este cliente
  4. Salve → pedido é bloqueado: limite de crédito ultrapassado
  5. Para pedido de R$ 500,00 → salva normal

Resultado esperado: bloqueia se (duplicatas em aberto + valor do pedido atual) exceder o limite de crédito. Ignora atrasos.


T - Limite Crédito Acumulado​

O que fazDetalhe
ValidaLimite acumulado (VALIDA_MODELOBLOQUEIOVLLIMITE linha 108: I_ST_BLOQUEIO IN ('T','A','O','B','F','G'))
ConsideraCREDITO.VL_CREDITOACUM
Uso típicoControle de crédito por acumulado histórico, separado do limite corrente

Simulação passo a passo​

  1. MFA001 → ST_BLOQUEIOPED = "Limite Crédito Acumlado"
  2. Cliente com CREDITO.VL_CREDITOACUM = 5.000,00 já atingido
  3. Emita pedido que, somado aos acumulados, ultrapasse o valor
  4. Salve → pedido bloqueado por limite acumulado

Resultado esperado: bloqueia quando o consumo acumulado + pedido atual extrapola VL_CREDITOACUM.


B - Limite e Duplicatas em Atraso​

O que fazDetalhe
ValidaLimite de crédito + Dias de atraso + Limite acumulado (aparece nos três IN (...) das procedures)
CombinaçãoAgrega as validações de C, D e T

Simulação passo a passo​

  1. MFA001 → ST_BLOQUEIOPED = "Limite e Dupl. em Atraso"
  2. Cliente com limite de R$ 1.000,00 e uma duplicata em atraso
  3. Faça pedido de R$ 500,00 → bloqueia por atraso
  4. Quite a duplicata e faça pedido de R$ 1.500,00 → bloqueia por limite

Resultado esperado: bloqueia em qualquer uma das condições (limite estourado OU duplicata em atraso).


P - Tabela de Preço​

O que fazDetalhe
ValidaValor unitário vs preço da tabela (VERIFICA_BLOQUEIO linha 1052-1062: V_ST_BLOQUEIO IN ('P','O','A'))
Bloqueio V_TP_BLOQUEIO='P'Quando V_VL_UNITARIO < V_VL_PRECO da tabela
Valida tambémValidade da tabela vs data de vencimento (linha 1065-1074, bloqueio Z)
Bloqueia por crédito?Não

Simulação passo a passo​

  1. MFA001 → ST_BLOQUEIOPED = "Tabela de Preço"
  2. Produto X com preço R$ 50,00 na tabela
  3. Lance pedido com produto X a R$ 40,00
  4. Salve → bloqueado: "O Valor Unitário está abaixo da Tabela de Preço"
  5. Lance a R$ 50,00 ou mais → salva normal

Resultado esperado: só permite vender pelo preço da tabela ou acima. Não olha crédito.


V - Tabela Mínima Vendedor​

O que fazDetalhe
ValidaPreço unitário contra tabela mínima cadastrada para o VENDEDOR (VERIFICA_BLOQUEIO linha 1111-1137, V_ST_BLOQUEIO IN ('V','O','A'))
Fonte do preçoPARMTABPRECO + RETORNA_PRECOITEM filtrando pelo CD_VENDEDOR do pedido
Bloqueio V_TP_BLOQUEIO='V'Quando valor unitário < valor tabela do vendedor

Simulação passo a passo​

  1. MFA001 → ST_BLOQUEIOPED = "Tabela Mínima Vendedor"
  2. Cadastre tabela mínima para o vendedor (PARMTABPRECO)
  3. Produto X, tabela do vendedor = R$ 80,00
  4. Lance pedido com esse vendedor e produto X a R$ 70,00
  5. Salve → bloqueado: "Valor Unitário abaixo da Tabela Mínima do Vendedor"

Resultado esperado: cada vendedor tem um piso próprio. Impede que um vendedor venda abaixo do piso individual mesmo que a tabela padrão permita.


M - Preço Mínimo e Máximo​

O que fazDetalhe
ValidaV_VL_UNITARIO contra V_VL_MINIMO e V_VL_MAXIMO calculados a partir da tabela + PC_DESCONTOMAXIMOPRODUTO e PC_ACRESCIMOMAXIMOPRODUTO (VERIFICA_BLOQUEIO linhas 1173-1219, V_ST_BLOQUEIO IN ('M','O','A','F','G'))
Bloqueio V_TP_BLOQUEIO='M'Quando abaixo do mínimo ou acima do máximo

Simulação passo a passo​

  1. MFA001 → ST_BLOQUEIOPED = "Preço Mínimo e Máximo"
  2. Item com preço tabela R$ 100,00, desconto máx produto = 10%, acréscimo máx = 20%
  3. Lance a R$ 89,00 → bloqueado: "Valor Unitário abaixo do Preço Mínimo"
  4. Lance a R$ 125,00 → bloqueado: "Valor Unitário acima do Preço Máximo"
  5. Lance a R$ 95,00 → salva normal

Resultado esperado: cria uma faixa de preço aceitável (piso e teto) baseada no desconto/acréscimo máximo cadastrado por produto.


Q - Valor Líquido e Limite Crédito​

O que fazDetalhe
ValidaLimite de crédito + dias atraso + desconto do valor líquido (V_ST_BLOQUEIO IN ('Q','A','O') nas linhas 1019 e 1041-1048)
Bloqueio V_TP_BLOQUEIO='Q'Valor líquido do item abaixo do permitido

Simulação passo a passo​

  1. MFA001 → ST_BLOQUEIOPED = "Valor Líquido e Limite Crédito"
  2. Cliente com limite R$ 1.000,00
  3. Item com desconto máx 10%, vendido com 20% de desconto
  4. Salve → bloqueado: "Valor Líquido abaixo do Permitido"
  5. Se o valor líquido ok mas exceder limite → bloqueia por crédito

Resultado esperado: combina regra de crédito com regra de valor líquido mínimo do item.


L - Dupl. Liquid. após Vencto​

O que fazDetalhe
ValidaDuplicatas liquidadas com mais de 10 dias de atraso (VERIFICA_BLOQUEIO linhas 843-866, V_ST_BLOQUEIO IN ('L','O'))
QueryCOUNT(*) FROM CONTAS WHERE ST_CONTAS='L' AND (DT_LIQUIDACAO - DT_VENCIMENTO) > 10
Bloqueio V_TP_BLOQUEIO='L'Existem duplicatas históricas pagas com atraso > 10 dias

Simulação passo a passo​

  1. MFA001 → ST_BLOQUEIOPED = "Dupl. Liquid. após Vencto"
  2. Cliente tem duplicata paga 15 dias após o vencimento
  3. Lance novo pedido → bloqueado: "Duplicatas Liquidadas após 10 dias de Vencimento. Total: N"
  4. Cliente sem histórico ruim → salva normal

Resultado esperado: olha o histórico de pagamento do cliente. Bloqueia mesmo que o cliente esteja em dia hoje, se pagou anteriormente com atraso superior a 10 dias.


Y - Média de Vendas x Desconto​

O que fazDetalhe
ValidaDesconto concedido vs tabela de desconto por faixa de faturamento médio (PARMDESCONTO) (VERIFICA_BLOQUEIO linhas 1140-1170, V_ST_BLOQUEIO IN ('A','O','Y'))
Bloqueio V_TP_BLOQUEIO='Y'Desconto acima da faixa permitida pela média de compras do cliente
Também validaDias de atraso (está no conjunto D)

Simulação passo a passo​

  1. MFA001 → ST_BLOQUEIOPED = "Média de Vendas x Desconto"
  2. Cadastre faixas em PARMDESCONTO (ex: faturamento médio R$ 0-1000 → 5%, R$ 1000-5000 → 10%)
  3. Cliente com média R$ 800 tenta pedido com 8% de desconto
  4. Salve → bloqueado: "Percentual de Desconto acima da Faixa permitida pelo Faturamento Médio"

Resultado esperado: cliente só consegue o desconto condizente com seu histórico de compras.


A - Ambos - Exceto Dupl. Liquid.​

O que fazDetalhe
ValidaTodas as regras anteriores EXCETO "Duplicatas Liquidadas após Vencto" (L). Presente em todos os IN (...) exceto ('L','O')
IncluiLimite crédito, dias atraso, limite acumulado, tabela de preço, tabela mínima vendedor, preço mín/máx, valor líquido, média x desconto, desconto máx da cond. pagto

Simulação passo a passo​

  1. MFA001 → ST_BLOQUEIOPED = "Ambos - Exceto Dupl. Liquid."
  2. Cliente com limite estourado + desconto excessivo + produto abaixo da tabela
  3. Salve pedido → bloqueado com múltiplos motivos agregados
  4. Se tiver histórico de pagamento com 15 dias de atraso mas hoje estiver ok → NÃO bloqueia por isso

Resultado esperado: regra ampla, porém ignora o histórico de pagamento antigo. Bloqueia tudo que é "situação atual".


O - Ambos​

O que fazDetalhe
ValidaTodas as regras de bloqueio disponíveis. Presente em todos os conjuntos IN (...)
Diferença de AInclui também "Duplicatas Liquidadas após Vencto" (L)

Simulação passo a passo​

  1. MFA001 → ST_BLOQUEIOPED = "Ambos"
  2. Mesmo cenário de "A" + cliente com histórico de duplicatas pagas 15 dias após vencimento
  3. Salve → bloqueado por múltiplos motivos, inclusive histórico de atraso

Resultado esperado: é o modo mais restritivo. Checa tudo — presente e passado.


X - Todos os Pedidos​

O que fazDetalhe
ComportamentoBloqueia TODO pedido automaticamente, independente de crédito ou valores (VERIFICA_BLOQUEIO linhas 543-565)
Ação internaMuda V_ST_BLOQUEIO para A e adiciona motivo "Venda Bloqueada para Análise de Crédito"
Com ST_SEPARABLOQUEIOPED = 'S'Grava PEDIDO.TP_BLOQUEIO='F'
Em OS (I_TP_DOCTO IN ('S','O'))Grava ORDEMSERVICO.ST_ORDEMSERVICO='B' com motivo "Ordem de Serviço Bloqueada para Análise de Crédito.[MOF007]"

Simulação passo a passo​

  1. MFA001 → ST_BLOQUEIOPED = "Todos os Pedidos"
  2. Lance um Pedido de Venda qualquer, mesmo para cliente sem crédito cadastrado
  3. Salve → pedido sempre fica bloqueado para análise
  4. Toda liberação precisa passar pela alçada (MOF007 para OS ou equivalente para pedidos)

Resultado esperado: utilizado por empresas que querem análise de crédito manual em 100% dos pedidos/OS antes de liberar.


E - Limite Desc. Cd. Pagto e Dupl. em Atraso​

O que fazDetalhe
ValidaDias de atraso + % de desconto máximo permitido pela Condição de Pagamento (VERIFICA_BLOQUEIO linhas 1222-1237, V_ST_BLOQUEIO IN ('E','A','O'))
Fonte do limiteCONDPAGTO.PC_DESCMAX
Bloqueio V_TP_BLOQUEIO='H'Desconto maior que o máximo da condição

Simulação passo a passo​

  1. MFA001 → ST_BLOQUEIOPED = "Limite Desc. Cd. Pagto e Dupl. em Atraso"
  2. Condição de Pagamento "30/60/90" com PC_DESCMAX = 5%
  3. Pedido com desconto de 8% usando essa condição
  4. Salve → bloqueado: "Percentual de Desconto acima do Máximo Permitido Da Condição de Pagamento"
  5. Também bloqueia se houver duplicatas em atraso

Resultado esperado: garante que descontos respeitem o teto por condição de pagamento e valida atraso.


I - Inadimplência e Condição de Pagamento​

O que fazDetalhe
Característica únicaAltera comportamento da UI antes mesmo de salvar
Auto-preenchimentoEm MPD002 (UdmMPD002.pas linhas 1363, 1372), NÃO preenche CD_CONDPAGTO e CD_PESSOA automáticos a partir do parâmetro (deixa em branco para o usuário escolher com base no cliente)
Valida condiçãoNo BeforePost e no AfterScroll (linhas 1654-1670, 2073-2088 de UdmMPD002.pas): consulta PESSOACONDPAGTO e exige que a condição usada esteja liberada para o cliente. Mensagem: "O Cliente não possui a Condição de Pagamento utilizada liberada. Verifique![TFA001]"
Combo de condiçãoEm MOF001/MPD002/MOF008/MPD081, a pesquisa CONDPAGTOPESSOA é usada em vez de CONDPAGTO plena (linhas 3032-3045 UMOF001.pas, 3818-3831 UMPD002.pas, 804-817 UMOF008.pas, 877-891 UMPD081.pas). Isso exige que a pessoa esteja informada para listar apenas as condições permitidas a ela
Combina com ST_BLOQUEIAPRAZOMEDIO='S'Mesmo efeito - os dois parâmetros compartilham o fluxo de CONDPAGTOPESSOA
Validação na SP VERIFICA_BLOQUEIOA procedure em si não trata o código I explicitamente em V_ST_BLOQUEIO; o bloqueio/validação é feito pela aplicação Delphi

Simulação passo a passo​

  1. MFA001 → ST_BLOQUEIOPED = "Inadimplência e Condição de Pagamento"
  2. Cliente A tem apenas as condições "À Vista" e "30 dias" liberadas em TFA001 → aba Condição de Pagamento
  3. Abra Pedido de Venda (MPD002) para cliente A
  4. Note que CD_CONDPAGTO e CD_PESSOA não vêm mais preenchidos automaticamente (ficam em branco)
  5. Pressione F9 em Condição de Pagamento → o sistema mostra apenas as 2 condições liberadas para o cliente A
  6. Se tentar gravar com uma condição não liberada (forçando) → erro: "O Cliente não possui a Condição de Pagamento utilizada liberada. Verifique![TFA001]"

Resultado esperado: controle forte de condição de pagamento por cliente, com filtro dinâmico na pesquisa e validação no salvamento.


F - Preço Mínimo, Limite de Crédito e Acumulado​

O que fazDetalhe
ValidaPreço mínimo (M) + Limite de Crédito (C) + Limite Acumulado (T). Presente em VALIDA_MODELOBLOQUEIOVLLIMITE (C e T) e em VERIFICA_BLOQUEIO linha 1173 (M)
ExceçãoEm VERIFICA_BLOQUEIO linhas 1187-1188 e 1211, quando V_ST_BLOQUEIO='F' (e 'G'), o fluxo específico de reprocessamento de tabela (ST_REPROCESSATABPRECO='S') não gera o bloqueio P tradicional nem o bloqueio por preço máximo - só dispara o preço mínimo
Não validaDuplicatas em atraso (não está no conjunto de D)

Simulação passo a passo​

  1. MFA001 → ST_BLOQUEIOPED = "Preço Mín, Lim. Créd., Acum."
  2. Cliente com limite R$ 1.000,00 (já R$ 800,00 em aberto), produto com preço mínimo R$ 90,00
  3. Pedido R$ 150,00 com item a R$ 85,00 → bloqueado por preço mínimo
  4. Pedido R$ 300,00 com item no preço ok → bloqueado por limite de crédito
  5. Pedido R$ 100,00 dentro do acumulado → salva

Resultado esperado: combinação específica para empresas que querem controlar crédito + piso de preço, mas não se importam com histórico de atraso.


G - Preço Mín, Lim. Créd., Acum. e Dupl. Atraso​

O que fazDetalhe
ValidaIgual ao F + Duplicatas em Atraso ('G' aparece em todos os conjuntos: C, T, M, D, P, Q, L, Y, A, O, E)
Diferença de FInclui a validação de VALIDA_MODELOBLOQUEIODIASATRASO
Exceção de reprocessoMesmo comportamento do F nas linhas 1187-1188 de VERIFICA_BLOQUEIO.sql

Simulação passo a passo​

  1. MFA001 → ST_BLOQUEIOPED = "Preço Mín, Lim. Créd., Acum. e Dupl. Atraso"
  2. Mesmo cenário do F, mas cliente também tem duplicata vencida há 20 dias
  3. Pedido dentro do limite, preço ok → agora também bloqueia por atraso

Resultado esperado: é a combinação "F + atraso de duplicatas".


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

  • ST_SEPARABLOQUEIOPED (PARMFATUR): quando S, a procedure separa a classificação em subgrupos e grava PEDIDO.TP_BLOQUEIO='F' para bloqueio por análise (VERIFICA_BLOQUEIO linhas 177, 551-556).
  • ST_BLOQUEIAPRAZOMEDIO='S': compartilha com a opção I o fluxo de CONDPAGTOPESSOA em MPD002, MOF001, MOF008, MPD081. Basta um dos dois estar ativo para filtrar condições por cliente.
  • TP_MODELOBLOQUEIO <> N ativa o cadastro de alçadas por usuário (PARMUSUARIO.PC_MAXDESCONTO + ST_HABILITADESCMAXSUBGRUPO).
  • TP_DOCTO em VERIFICA_BLOQUEIO:
    • P (Pedido) → V_ST_BLOQUEIO = V_ST_BLOQUEIOPED
    • R (Recap) → V_ST_BLOQUEIO = V_ST_BLOQUEIOPED
    • O (OS avaliada pela regra do pedido) → V_ST_BLOQUEIO = V_ST_BLOQUEIOPED
    • S (OS com regra própria) → V_ST_BLOQUEIO = V_TP_BLOQUEIOOS (usa PARMOFICINA, não este parâmetro)
    • N (Nota Fiscal) → V_ST_BLOQUEIO = V_ST_BLOQUEIONF (parâmetro ST_BLOQUEIONF separado)

Observação Importante​

  • PARMCOMPRA.ST_BLOQUEIOPED é um parâmetro homônimo mas separado, configurado em MFA004. Controla apenas se pedidos gerados a partir de cotação de peças (MCO008) são marcados como bloqueados ao serem gravados. Não interfere no PARMFATUR.ST_BLOQUEIOPED descrito aqui.
  • PARMONMS.ST_BLOQUEIOPEDCLIENTE (usado em MFA015, TRD016, OFI001) é outro parâmetro diferente - controla bloqueio de pedido pelo cliente em módulos específicos (ONMS/Palm).

Tabela Comparativa Resumida​

OpçãoDescriçãoCrédito Simples (C)Crédito Acum. (T)Dias Atraso (D)Dupl. Liquid. >10d (L)Preço Tabela (P)Preço Mín/Máx (M)Tab. Mín. Vendedor (V)Valor Líq. (Q)Desc. Média (Y)Desc. Cond. Pagto (E)Filtra Cond. Pagto do Cliente
NNão Bloqueia-----------
DDuplicatas em Atraso--Sim--------
CLimite de CréditoSim----------
TLimite Acumulado-Sim---------
BLimite e Dupl. AtrasoSimSimSim--------
PTabela de Preço----Sim------
VTabela Mín. Vendedor------Sim----
MPreço Mín/Máx-----Sim-----
QVal. Líq. + LimiteSim-Sim----Sim---
LDupl. Liquid. Vencto---Sim-------
YMédia x Desconto--Sim-----Sim--
AAmbos (exceto L)SimSimSim-SimSimSimSimSimSim-
OAmbos (tudo)SimSimSimSimSimSimSimSimSimSim-
XTodos os PedidosForça bloqueio de TODO pedido/OS-
EDesc. Cd. Pagto + Atraso--Sim------Sim-
IInadimp. e Cond. Pagto----------Sim
FPreço Mín + Crédito + Acum.SimSim---Sim-----
GF + Dupl. AtrasoSimSimSim--Sim-----

Referências no Código Fonte​

ArquivoLinhasFunção
source/MFA001/UMFA001.dfm8261-8305ComboBox cmbST_BLOQUEIOPED com 18 opções
source/MFA001/UMFA001.pas298Declaração do combo
source/MFA001/UdmMFA001.pas35, 438, 925-929Field persistente, valor padrão N, validação obrigatória
source/MPD002/UdmMPD002.pas1363, 1372, 1654, 1937, 2073, 2119, 5737Leitura de ParmFatur.Values['ST_BLOQUEIOPED'], especialmente fluxo da opção I
source/MPD002/UMPD002.pas3818, 3829, 6813Chamada de CONDPAGTOPESSOA quando I ou ST_BLOQUEIAPRAZOMEDIO; cálculo de PC_DESCONTOMAXIMO por item
source/MPD005/UdmMPD005.pas244, 374, 392Carrega parâmetro ao abrir tela
source/MPD017/UdmMPD017.pas148, 211, 226Carrega parâmetro
source/MPD018/UdmMPD018.pas245, 286, 301, 842Carrega parâmetro e usa em VERIFICA_CREDITO do orçamento
source/MPD020/UdmMPD020.pas237, 318, 346Carrega parâmetro (pedido mobile)
source/MPD081/UdmMPD081.pas90Campo persistente tabPEDIDOST_BLOQUEIOPED
source/MPD081/UMPD081.pas552, 593, 618, 656, 878, 889SELECT de PF.ST_BLOQUEIOPED no grid; verifica = 'I' para CONDPAGTOPESSOA
source/MPD092/UdmMPD092.pas235, 277, 290, 810Orçamento de compra
source/MPD010/UMPD010.pas1400-1420, 1499-1519"Validar Pedidos" em lote; se N ignora
source/MNF017/UdmMNF017.pas276Variável iST_BLOQUEIOPED para validação
source/MNF017/UMNF017.pas162, 188, 1378-1380SELECT do parâmetro e uso em VERIFICA_CREDITO
source/MOF001/UdmMOF001.pas439, 723, 742Carrega parâmetro da OS
source/MOF001/UMOF001.pas3032, 3043CONDPAGTOPESSOA para OS
source/MOF002/UdmMOF002.pas191, 295, 312Carrega parâmetro (OS outra)
source/MOF006/UdmMOF006.pas233, 296, 312Carrega parâmetro (OS outra)
source/MOF008/UMOF008.pas804, 815CONDPAGTOPESSOA
source/MRC025/UMRC025.pas2141Dispara VERIFICA_BLOQUEIO ao gerar pedido
source/MRC026/UMRC026.pas1362Dispara VERIFICA_BLOQUEIO ao gerar pedido
source/MRC040/UdmMRC040.pas80Field persistente tabPedidoPneuST_BLOQUEIOPED
source/MRC040/UdmMRC040.dfm77, 272SelectSQL inclui PF.ST_BLOQUEIOPED
source/MRC001/UformMRC001.pas81Atribui iBloqueio := parmFatur.Values['ST_BLOQUEIOPED']
source/MFA004/UdmMFA004.pas37, 119Campo ST_BLOQUEIOPED da PARMCOMPRA (parâmetro distinto homônimo)
source/MFA004/UframeMFA004.dfm203, 584-594Combo "Bloqueia Pedidos de Cotação [MCO008]" da PARMCOMPRA
source/CPD009/UdmCPD009.dfm300, 448, 531DML (insert/update) incluindo ST_BLOQUEIOPED
source/RCA006/UdmRCA006.dfm3049, 3197, 3280DML (insert/update) incluindo ST_BLOQUEIOPED
source/HistoricoPedido/UdmHistoricoPedido.pas143Variável em histórico do pedido
Scripts/VERIFICA_BLOQUEIO.sql20, 143, 149, 173, 277, 350, 355, 543-565, 640, 660, 679, 830, 843, 870, 1019, 1052, 1065, 1078, 1111, 1140, 1173, 1188, 1211, 1222Procedure central - atribui V_ST_BLOQUEIO, aciona cada validação conforme o código
Scripts/VALIDA_MODELOBLOQUEIOVLLIMITE.sql40, 108Limite simples: I_ST_BLOQUEIO IN ('C','A','O','Q','B','F','G'); Acumulado: IN ('T','A','O','B','F','G')
Scripts/VALIDA_MODELOBLOQUEIODIASATRASO.sql37Dias de atraso: I_ST_BLOQUEIO IN ('D','A','O','Q','B','Y','E','G')
Scripts/GERA_PEDIDOCOTACAOPECA.sql47, 67, 72, 382-393Usa PARMCOMPRA.ST_BLOQUEIOPED (não o de PARMFATUR)