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_BLOQUEIOValor padrão:I(Inativar)
Telas impactadas
| Tela | Contexto |
|---|---|
| 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
| Campo | Tabela | Descrição |
|---|---|---|
TP_BLOQUEIO | PARMSISTEMA | Tipo de ação ao bloquear pessoa por inatividade |
NR_DIASBLOQUEIO | PARMSISTEMA | Quantidade de dias sem compra para acionar bloqueio |
NR_DIASABLOQUEAR | PARMSISTEMA | Dias após liberação para voltar a bloquear |
NR_DIASBLOQLIB | PARMSISTEMA | Dias de "carência" após a liberação |
ST_BLOQUEIOPESSOA | PARMSISTEMA | Ativa/desativa o bloqueio de pessoas |
ST_ATIVA | PESSOA | Marcada como N quando pessoa é inativada |
ST_BLOQUEADA | PESSOA | Marcada como S quando pessoa vai para SCPC |
ST_SCPC | PESSOA | Marcada como S quando pessoa entra no SCPC |
DT_LIBERACAO | PESSOA | Data da última liberação manual |
Nota: Existe outro
TP_BLOQUEIOemPARMOFICINA(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 doTP_BLOQUEIOdePARMSISTEMA.
Opções disponíveis
I — Inativar
| O que faz | Detalhe |
|---|---|
| Pessoa sem movimento no período | Recebe ST_ATIVA = 'N' (inativada) |
| Período pós-liberação | Se NR_DIASABLOQUEAR estiver preenchido, inativa novamente após os dias configurados |
| Editável/bloqueado | Pessoa fica inativa e não aparece em consultas padrão de clientes ativos |
Simulação passo a passo
- Acesse ADM010 → aba Bloqueio/Cadastro Pessoa.
- Confirme que
ST_BLOQUEIOPESSOAestá comoS. - Defina
NR_DIASBLOQUEIOcom o valor desejado (ex.: 180 dias). - Selecione TP_BLOQUEIO = Inativar (
I). - Salve os parâmetros.
- Ao executar a procedure
VERIFICA_BLOQUEIOPESSOA, o sistema busca todas as pessoas do tipo Cliente/Ambo comST_ATIVA = 'S'. - Para cada pessoa cuja data da última compra (
NOTA.DT_EMISSAO) seja anterior aCURRENT_DATE - NR_DIASBLOQUEIO, o sistema executaUPDATE 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 deDT_LIBERACAO) concede carência deNR_DIASBLOQLIBdias antes de um novo bloqueio.
S — Deixar SCPC
| O que faz | Detalhe |
|---|---|
| Pessoa sem movimento no período | Recebe ST_SCPC = 'S' e ST_BLOQUEADA = 'S' |
| Período pós-liberação | Se NR_DIASABLOQUEAR estiver preenchido, marca ST_SCPC = 'S' novamente após os dias configurados |
| Editável/bloqueado | Pessoa é marcada como bloqueada/SCPC, mas permanece ativa no cadastro |
Simulação passo a passo
- Acesse ADM010 → aba Bloqueio/Cadastro Pessoa.
- Confirme que
ST_BLOQUEIOPESSOAestá comoS. - Defina
NR_DIASBLOQUEIOcom o valor desejado (ex.: 180 dias). - Selecione TP_BLOQUEIO = Deixar SCPC (
S). - Salve os parâmetros.
- Ao executar a procedure
VERIFICA_BLOQUEIOPESSOA, o sistema busca todas as pessoas do tipo Cliente/Ambo comST_BLOQUEADA = 'N'eST_SCPC = 'N'. - Para cada pessoa cuja data da última compra seja anterior a
CURRENT_DATE - NR_DIASBLOQUEIO, o sistema executaUPDATE 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), aDT_LIBERACAOé atualizada, iniciando a contagem deNR_DIASBLOQLIBdias de carência. SeNR_DIASABLOQUEARestiver preenchido, após esse período a pessoa voltará ao SCPC automaticamente.
Regra geral de funcionamento
A procedure VERIFICA_BLOQUEIOPESSOA executa em dois momentos:
- Bloqueio por inatividade — controlado por
NR_DIASBLOQUEIO: identifica pessoas sem compra há mais de N dias e aplica a ação definida emTP_BLOQUEIO(I= inativar;S= SCPC). - 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 deTP_BLOQUEIO.
Parâmetros correlacionados
| Parâmetro | Tela | Descrição |
|---|---|---|
ST_BLOQUEIOPESSOA | ADM010 — aba Bloqueio/Cadastro Pessoa | Ativa (S) ou desativa (N) todo o mecanismo de bloqueio |
NR_DIASBLOQUEIO | ADM010 — aba Bloqueio/Cadastro Pessoa | Dias sem compra para considerar pessoa inativa |
NR_DIASABLOQUEAR | ADM010 — aba Bloqueio/Cadastro Pessoa | Dias após liberação para voltar a bloquear |
NR_DIASBLOQLIB | ADM010 — aba Bloqueio/Cadastro Pessoa | Carência em dias após uma liberação manual |
TP_BLOQUEIO (PARMOFICINA) | OFI001 — Parâmetros de Oficina, aba Parâmetros | Controla liberação para vendedores em OS — parâmetro independente |
Tabela comparativa resumida
| Valor | Nome | Efeito na pessoa | ST_ATIVA | ST_BLOQUEADA | ST_SCPC |
|---|---|---|---|---|---|
I | Inativar | Pessoa fica inativa | N | — | — |
S | Deixar SCPC | Pessoa vai para SCPC e fica bloqueada | S | S | S |
Procedures impactadas
Referência direta ao campo em SQL
| Procedure/View | Arquivo | Uso |
|---|---|---|
VERIFICA_BLOQUEIOPESSOA | Scripts/VERIFICA_BLOQUEIOPESSOA.sql | Lê PARMSISTEMA.TP_BLOQUEIO para definir se inativa (I) ou marca SCPC (S) |
VERIFICA_BLOQUEIO | Scripts/VERIFICA_BLOQUEIO.sql | Possui parâmetro de saída O_TP_BLOQUEIO — contexto de pedidos |
RETORNA_MOTIVOBLOQUEIO | Scripts/RETORNA_MOTIVOBLOQUEIO.sql | Recebe I_TP_BLOQUEIO como parâmetro de entrada |
VALIDA_BLOQDESCMAXSUBGRUPO | Scripts/VALIDA_BLOQDESCMAXSUBGRUPO.sql | Recebe I_TP_BLOQUEIO como parâmetro |
VALIDA_MODELOBLOQUEIODIASATRASO | Scripts/VALIDA_MODELOBLOQUEIODIASATRASO.sql | Recebe I_TP_BLOQUEIO como parâmetro |
VALIDA_MODELOBLOQUEIOPCDESCMAX | Scripts/VALIDA_MODELOBLOQUEIOPCDESCMAX.sql | Recebe I_TP_BLOQUEIO como parâmetro |
VALIDA_MODELOBLOQUEIOVLLIMITE | Scripts/VALIDA_MODELOBLOQUEIOVLLIMITE.sql | Recebe I_TP_BLOQUEIO como parâmetro |
VIEW_DOCUMENTOSBLOQUEADOS | Scripts/VIEW_DOCUMENTOSBLOQUEADOS.sql | Possui campo O_TP_BLOQUEIO |
VERIFICA_BLOQUEIOSUBGRUPO | Scripts/VERIFICA_BLOQUEIOSUBGRUPO.sql | Possui 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.