VALIDAÇÃO PARA NÃO PERMITIR CADASTRAR PESSOA COM AFASTAMENTO POR BLOQUEIO DEFINITIVO
-
Solicitação 23861 | OS10802VALIDAÇÃ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:
- Criação de um parâmetro customizado chamado
MOTIVOS_AFAST_BLOQ_DEFINITIVOque 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') /- Criação de uma trigger customizada sobre a tabela
TIPOS_CONTROLES_PESSOASque 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 - Criação de um parâmetro customizado chamado