Navegação

    Fórum Técnico Insoft4

    • Login
    • Pesquisar

    VALIDAÇÃO PARA NÃO PERMITIR CADASTRAR PESSOA COM AFASTAMENTO POR BLOQUEIO DEFINITIVO

    Customizações
    pontosoft-enterprise akitasoft randon
    1
    1
    14
    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.
    • jonathan
      jonathan Desenvolvimento última edição por jonathan

      ✨ Solicitação 23861 | OS10802

      VALIDAÇÃO DE INCLUSÃO OU ATIVAÇÃO DE PESSOA PARA NÃO PERMITIR EM CASO DE EXISTÊNCIA DE AFASTAMENTO POR BLOQUEIO DEFINITIVO

      Esta customização foi solicitada pelo cliente Randon e consiste em não permitir incluir um novo histórico de pessoa (ou reativar um histórico já desligado da pessoa removendo a data de desligamento) quando a mesma possuir em algum momento de sua história na empresa um afastamento que tenha sido realizado pelo motivo de BLOQUEIO DEFINITIVO.

      Para que a validação seja ativada são necessários dois passos:

      1. Criação de um parâmetro customizado chamado MOTIVOS_AFAST_BLOQ_DEFINITIVO que deverá conter o código do motivo de afastamento que deve ser validado como bloqueio definitivo. Caso tenha mais de um código de motivo de afastamento eles devem ser informados separados por vírgula. Inicialmente o código informado pelo cliente para utilização é o código 23.
      insert into parametros_customizados_pontos ( nome_parametro, valor_parametro, descr_parametro )
      values ( 'MOTIVOS_AFAST_BLOQ_DEFINITIVO', '23','LISTA DE CÓDIGOS DE MOTIVO DE AFASTAMENTO QUE INDICAM BLOQUEIO DEFINITIVO')
      /
      
      1. Criação de uma trigger customizada sobre a tabela TIPOS_CONTROLES_PESSOAS que irá realizar a validação e impedir a criação ou reativação de histórico de pessoa que possuir o afastamento.
      CREATE OR REPLACE TRIGGER TRIG_BF_RW_TCP_BLOQ_DEFINITIVO
      BEFORE INSERT OR UPDATE OF DATA_DESLIGAMENTO, TIPO_PESSOA, COD_EMPRESA_PESSOA, COD_CARTAO
      ON TIPOS_CONTROLES_PESSOAS
      FOR EACH ROW
      DECLARE
      -------------------- VERSAO CUSTOMIZADA ESPECÍFICA --------------------
      -- OS10802, 24/04/2024, Jonathan.
      --
      cursor c_afastamento is
        select ma.descr_motivo
        from   afastamentos_pessoas         ap,
               motivos_afastamentos_acessos ma
        where  ap.cod_pessoa = :new.cod_pessoa
        and    pack_util.consta_lista(pack_util.valor_param_customizado('MOTIVOS_AFAST_BLOQ_DEFINITIVO'),ap.cod_motivo) = 'S'
        and    ma.cod_motivo = ap.cod_motivo
        and rownum = 1;
      --
      vmotivo_afastamento motivos_afastamentos_acessos.descr_motivo%type;
      --
      BEGIN
        --
        -- Deve validar ao incluir uma pessoa ou ao reativar uma pessoa removendo a data de desligamento
        --
        if ( (inserting) 
           or (updating and :new.data_desligamento is null and :old.data_desligamento is not null)
           or (updating and :new.tipo_pessoa <> :old.tipo_pessoa)
           or (updating and nvl(:new.cod_empresa_pessoa,-1) <> nvl(:old.cod_empresa_pessoa,-1))
           or (updating and nvl(:new.cod_cartao,-1) <> nvl(:old.cod_cartao,-1)) ) then
          --
          open c_afastamento;
            fetch c_afastamento into vmotivo_afastamento;
          close c_afastamento;
          --
          if vmotivo_afastamento is not null then
            --
            raise_application_error(-20750, 'Não é possível cadastrar/ativar esta pessoa pois ela possui um registro de afastamento com o motivo '||vmotivo_afastamento||'.');
            --
          end if;
          --
        end if;
        --
      END TRIG_BF_RW_TCP_BLOQ_DEFINITIVO;
      

      Scripts disponibilizados na pasta:
      O:\PONTO\Clientes\32.Randon\CustomizacoesEspecificas\PATCHS\OS10802

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