TRIG_AF_RW_FINALIZA_USUARIO
-
Visão Geral
A trigger
TRIG_AF_RW_FINALIZA_USUARIOé responsável por manter a consistência do vínculo entre clientes e usuários/funcionários, reagindo a alterações na data de desativação do cliente (DATA_DESATIVACAO) na tabelaIN4MB_CLIENTES.Seu objetivo principal é bloquear automaticamente os registros da tabela
USUARIOS_FUNCIONARIOSassim que a base do cliente for bloqueada naPSM0020.
Definição Técnica
- Tipo: Trigger de linha (
FOR EACH ROW) - Momento:
AFTER UPDATE - Coluna monitorada:
DATA_DESATIVACAO - Tabela base:
IN4MB_CLIENTES
Regras de Negócio Implementadas
A trigger trata três cenários distintos relacionados à coluna
DATA_DESATIVACAO.
1. Bloqueio do Cliente
Condição
:OLD.DATA_DESATIVACAOéNULL:NEW.DATA_DESATIVACAOé NOT NULL
Ação
- Calcula
v_data_fim = TRUNC(:NEW.DATA_DESATIVACAO) - 1 - Atualiza os usuários vinculados ao cliente:
- Define
DATA_FINAL_VIGENCIAcom a data calculada - Marca
CLIENTE_DESATIVADO = 'S'
- Define
Impacto
- Finaliza a vigência dos usuários ativos no dia imediatamente anterior à desativação do cliente.
2. Alteração da Data de Bloqueio
Condição
:OLD.DATA_DESATIVACAOé NOT NULL:NEW.DATA_DESATIVACAOé NOT NULL- Datas diferentes entre
OLDeNEW
Ação
- Recalcula
v_data_fim = TRUNC(:NEW.DATA_DESATIVACAO) - 1 - Atualiza apenas usuários já marcados como desativados:
- Ajusta
DATA_FINAL_VIGENCIAcaso esteja diferente do novo valor
- Ajusta
Impacto
- Mantém a coerência das datas de vigência quando a data de desativação do cliente é alterada.
3. Desbloqueio do Cliente
Condição
:OLD.DATA_DESATIVACAOé NOT NULL:NEW.DATA_DESATIVACAOéNULL
Ação
- Remove a data final de vigência (
DATA_FINAL_VIGENCIA = NULL) - Marca
CLIENTE_DESATIVADO = 'N'
Impacto
- Reativa os usuários vinculados ao cliente, tornando-os novamente vigentes.
Relacionamentos Utilizados
A trigger atua apenas sobre usuários que possuam vínculo válido com o cliente, verificado pela tabela:
IN4MB_CLIENTES_USUARIOS_APP
Critério de vínculo
cua.id = uf.cliente_usuario_app_id and cua.cliente_id = :new.id
Exemplo prático
Data Desativação informada na PSM0020:

Data Final Vigência gerada automaticamente para
usuarios_funcionariosna PSM0030:

- Tipo: Trigger de linha (