Navegação

    Fórum Técnico Insoft4

    • Login
    • Pesquisar

    TRIG_AF_RW_FINALIZA_USUARIO

    Configurações
    1
    1
    8
    Carregando Mais Posts
    • Mais Antigo para Mais Recente
    • Mais Recente para Mais Antigo
    • Mais Votados
    Responder
    • Responder como tópico
    Entre para responder
    Este tópico foi deletado. Apenas usuários com privilégios de moderação de tópico podem vê-lo.
    • viniciusdalpiva
      viniciusdalpiva Desenvolvimento última edição por

      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 tabela IN4MB_CLIENTES.

      Seu objetivo principal é bloquear automaticamente os registros da tabela USUARIOS_FUNCIONARIOS assim que a base do cliente for bloqueada na PSM0020.


      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_VIGENCIA com a data calculada
        • Marca CLIENTE_DESATIVADO = 'S'

      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 OLD e NEW

      Ação

      • Recalcula v_data_fim = TRUNC(:NEW.DATA_DESATIVACAO) - 1
      • Atualiza apenas usuários já marcados como desativados:
        • Ajusta DATA_FINAL_VIGENCIA caso esteja diferente do novo valor

      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:
      beb7690b-e524-4ad0-8585-1bd3d5bd10e9-image.png

      Data Final Vigência gerada automaticamente para usuarios_funcionarios na PSM0030:
      cac43a89-e5ef-4152-97f6-c9ad7a6ed17d-image.png

      1 Resposta Última resposta Responder Citar 1
      • Primeiro post
        Último post
      Powered by NodeBB | Contributors