Pular para o conteúdo principal

TP_BLOQUEIO — Bloqueio de Pessoas por Período

Tela de configuração: ADM010 — Parâmetros do Sistema Localização: Aba Bloqueio/Cadastro Pessoa → campo "Bloqueio de Pessoas por Período" Tabela: PARMSISTEMA.TP_BLOQUEIO Valor padrão: I (Inativar)

Telas impactadas​

TelaContexto
ADM010 (Parâmetros do Sistema)Onde o parâmetro é configurado
MNF001, MNF002, MNF017, MNF026 (Faturamento)Consomem VERIFICA_BLOQUEIO que retorna O_TP_BLOQUEIO
MOF001 (Ordem de Serviço)Usa PARMOFICINA.TP_BLOQUEIO (parâmetro diferente — ver nota abaixo)

Campos envolvidos​

CampoTabelaDescrição
TP_BLOQUEIOPARMSISTEMATipo de ação ao bloquear pessoa por inatividade
NR_DIASBLOQUEIOPARMSISTEMAQuantidade de dias sem compra para acionar bloqueio
NR_DIASABLOQUEARPARMSISTEMADias após liberação para voltar a bloquear
NR_DIASBLOQLIBPARMSISTEMADias de "carência" após a liberação
ST_BLOQUEIOPESSOAPARMSISTEMAAtiva/desativa o bloqueio de pessoas
ST_ATIVAPESSOAMarcada como N quando pessoa é inativada
ST_BLOQUEADAPESSOAMarcada como S quando pessoa vai para SCPC
ST_SCPCPESSOAMarcada como S quando pessoa entra no SCPC
DT_LIBERACAOPESSOAData da última liberação manual

Nota: Existe outro TP_BLOQUEIO em PARMOFICINA (configurado em OFI001 — Parâmetros de Oficina, aba Parâmetros) que controla liberação de vendedores na Ordem de Serviço. Esse documento trata exclusivamente do TP_BLOQUEIO de PARMSISTEMA.

Opções disponíveis​

I — Inativar​

O que fazDetalhe
Pessoa sem movimento no períodoRecebe ST_ATIVA = 'N' (inativada)
Período pós-liberaçãoSe NR_DIASABLOQUEAR estiver preenchido, inativa novamente após os dias configurados
Editável/bloqueadoPessoa fica inativa e não aparece em consultas padrão de clientes ativos

Simulação passo a passo​

  1. Acesse ADM010 → aba Bloqueio/Cadastro Pessoa.
  2. Confirme que ST_BLOQUEIOPESSOA está como S.
  3. Defina NR_DIASBLOQUEIO com o valor desejado (ex.: 180 dias).
  4. Selecione TP_BLOQUEIO = Inativar (I).
  5. Salve os parâmetros.
  6. Ao executar a procedure VERIFICA_BLOQUEIOPESSOA, o sistema busca todas as pessoas do tipo Cliente/Ambo com ST_ATIVA = 'S'.
  7. Para cada pessoa cuja data da última compra (NOTA.DT_EMISSAO) seja anterior a CURRENT_DATE - NR_DIASBLOQUEIO, o sistema executa UPDATE PESSOA SET ST_ATIVA = 'N'.

Resultado esperado: Pessoas sem movimento há mais de 180 dias aparecem como inativas (ST_ATIVA = 'N') no cadastro de pessoas.

Exceção / Importante: O consumidor final (configurado em PARMFATUR.CD_CONSUMIDOR) nunca é bloqueado. A liberação manual (atribuição de DT_LIBERACAO) concede carência de NR_DIASBLOQLIB dias antes de um novo bloqueio.


S — Deixar SCPC​

O que fazDetalhe
Pessoa sem movimento no períodoRecebe ST_SCPC = 'S' e ST_BLOQUEADA = 'S'
Período pós-liberaçãoSe NR_DIASABLOQUEAR estiver preenchido, marca ST_SCPC = 'S' novamente após os dias configurados
Editável/bloqueadoPessoa é marcada como bloqueada/SCPC, mas permanece ativa no cadastro

Simulação passo a passo​

  1. Acesse ADM010 → aba Bloqueio/Cadastro Pessoa.
  2. Confirme que ST_BLOQUEIOPESSOA está como S.
  3. Defina NR_DIASBLOQUEIO com o valor desejado (ex.: 180 dias).
  4. Selecione TP_BLOQUEIO = Deixar SCPC (S).
  5. Salve os parâmetros.
  6. Ao executar a procedure VERIFICA_BLOQUEIOPESSOA, o sistema busca todas as pessoas do tipo Cliente/Ambo com ST_BLOQUEADA = 'N' e ST_SCPC = 'N'.
  7. Para cada pessoa cuja data da última compra seja anterior a CURRENT_DATE - NR_DIASBLOQUEIO, o sistema executa UPDATE PESSOA SET ST_SCPC = 'S', ST_BLOQUEADA = 'S'.

Resultado esperado: Pessoas sem movimento há mais de 180 dias são marcadas como bloqueadas no SCPC (ST_SCPC = 'S', ST_BLOQUEADA = 'S'), mas continuam com ST_ATIVA = 'S' — ou seja, ainda aparecem no cadastro ativo.

Exceção / Importante: O consumidor final nunca é enviado ao SCPC. Ao liberar manualmente a pessoa (removendo ST_SCPC/ST_BLOQUEADA), a DT_LIBERACAO é atualizada, iniciando a contagem de NR_DIASBLOQLIB dias de carência. Se NR_DIASABLOQUEAR estiver preenchido, após esse período a pessoa voltará ao SCPC automaticamente.

Regra geral de funcionamento​

A procedure VERIFICA_BLOQUEIOPESSOA executa em dois momentos:

  1. Bloqueio por inatividade — controlado por NR_DIASBLOQUEIO: identifica pessoas sem compra há mais de N dias e aplica a ação definida em TP_BLOQUEIO (I = inativar; S = SCPC).
  2. Rebloqueio pós-liberação — controlado por NR_DIASABLOQUEAR: se preenchido, verifica pessoas que já foram liberadas e cujo prazo expirou (DT_LIBERACAO + NR_DIASABLOQUEAR <= data atual), aplicando novamente a ação de TP_BLOQUEIO.

Parâmetros correlacionados​

ParâmetroTelaDescrição
ST_BLOQUEIOPESSOAADM010 — aba Bloqueio/Cadastro PessoaAtiva (S) ou desativa (N) todo o mecanismo de bloqueio
NR_DIASBLOQUEIOADM010 — aba Bloqueio/Cadastro PessoaDias sem compra para considerar pessoa inativa
NR_DIASABLOQUEARADM010 — aba Bloqueio/Cadastro PessoaDias após liberação para voltar a bloquear
NR_DIASBLOQLIBADM010 — aba Bloqueio/Cadastro PessoaCarência em dias após uma liberação manual
TP_BLOQUEIO (PARMOFICINA)OFI001 — Parâmetros de Oficina, aba ParâmetrosControla liberação para vendedores em OS — parâmetro independente

Tabela comparativa resumida​

ValorNomeEfeito na pessoaST_ATIVAST_BLOQUEADAST_SCPC
IInativarPessoa fica inativaN——
SDeixar SCPCPessoa vai para SCPC e fica bloqueadaSSS

Procedures impactadas​

Referência direta ao campo em SQL​

Procedure/ViewArquivoUso
VERIFICA_BLOQUEIOPESSOAScripts/VERIFICA_BLOQUEIOPESSOA.sqlLê PARMSISTEMA.TP_BLOQUEIO para definir se inativa (I) ou marca SCPC (S)
VERIFICA_BLOQUEIOScripts/VERIFICA_BLOQUEIO.sqlPossui parâmetro de saída O_TP_BLOQUEIO — contexto de pedidos
RETORNA_MOTIVOBLOQUEIOScripts/RETORNA_MOTIVOBLOQUEIO.sqlRecebe I_TP_BLOQUEIO como parâmetro de entrada
VALIDA_BLOQDESCMAXSUBGRUPOScripts/VALIDA_BLOQDESCMAXSUBGRUPO.sqlRecebe I_TP_BLOQUEIO como parâmetro
VALIDA_MODELOBLOQUEIODIASATRASOScripts/VALIDA_MODELOBLOQUEIODIASATRASO.sqlRecebe I_TP_BLOQUEIO como parâmetro
VALIDA_MODELOBLOQUEIOPCDESCMAXScripts/VALIDA_MODELOBLOQUEIOPCDESCMAX.sqlRecebe I_TP_BLOQUEIO como parâmetro
VALIDA_MODELOBLOQUEIOVLLIMITEScripts/VALIDA_MODELOBLOQUEIOVLLIMITE.sqlRecebe I_TP_BLOQUEIO como parâmetro
VIEW_DOCUMENTOSBLOQUEADOSScripts/VIEW_DOCUMENTOSBLOQUEADOS.sqlPossui campo O_TP_BLOQUEIO
VERIFICA_BLOQUEIOSUBGRUPOScripts/VERIFICA_BLOQUEIOSUBGRUPO.sqlPossui parâmetro O_TP_BLOQUEIO

Referências em rotinas Delphi​

As rotinas Delphi listadas nas evidências (MNF001, MNF002, MNF003, MNF017, MNF026, MOF001, MOF004) referenciam TP_BLOQUEIO no contexto de pedidos/notas/OS — utilizam O_TP_BLOQUEIO retornado por procedures de bloqueio de vendas, não o parâmetro PARMSISTEMA.TP_BLOQUEIO diretamente. A exceção é UdmMOF001.pas (linha 5841) que lê PARMOFICINA.TP_BLOQUEIO, que é o parâmetro da Oficina, não o deste documento.