12588 - Cálculo da folha - Não foi encontrado o registro mestre R046FFR - R020RAT
Problema: Ao efetuar o cálculo da folha para determinada competência ocorre o erro: Erro de acesso ao Banco de dados: Não foi encontrado o registro-Mestre para este Registro R046FFR(CodRat) - R020RAT (CodRat).
Quando ocorre / onde se aplica: Cálculos > Efetuar Cálculo.
Solução: A mensagem aponta que existe um registro de rateio órfão, ou seja, que foi utilizado em alguma rotina do sistema e que não está cadastrado na tabela de rateio, R020RAT. Quando ocorrer esta mensagem, existem algumas verificações que devem ser realizadas na base, conforme abaixo:
- Verificar se existem códigos de rateio vinculados aos centros de custo, e estes códigos de rateio não estão cadastrados na tabela de rateios (R020RAT). Para identificar se existem códigos de rateio nesta situação, pode ser utilizado o seguinte comando:
select numemp, codrat,codccu from r018ccu where not exists (select 1 from r020rat where r018ccu.codrat = r020rat.codrat)
Caso este comando retorne registros, deve-se efetuar os ajustes necessários na base (incluir o código de rateio na tabela R020RAT ou alterar o código do rateio no cadastro do centro de custo) e recalcular a folha.
- Verificar se existem códigos de rateio sendo utilizados em tabelas do sistema e que não estejam cadastrados na tabela de rateios (R020RAT0. Para identificar se existem códigos de rateio nesta situação, podem ser utilizados os seguintes comandos:
SELECT DISTINCT CODRAT FROM R020ELC WHERE CODRAT NOT IN (SELECT CODRAT FROM R020RAT);
SELECT DISTINCT CODRAT FROM R020EXC WHERE CODRAT NOT IN (SELECT CODRAT FROM R020RAT);
SELECT DISTINCT CODRAT FROM R020INT WHERE CODRAT NOT IN (SELECT CODRAT FROM R020RAT);
SELECT DISTINCT CODRAT FROM R020PRJ WHERE CODRAT NOT IN (SELECT CODRAT FROM R020RAT);
SELECT DISTINCT RATRMO FROM R020RLC WHERE RATRMO NOT IN (SELECT CODRAT FROM R020RAT);
SELECT DISTINCT RATRMO FROM R020RMO WHERE RATRMO NOT IN (SELECT CODRAT FROM R020RAT);
SELECT DISTINCT CODRAT FROM R020TOM WHERE CODRAT NOT IN (SELECT CODRAT FROM R020RAT);
SELECT DISTINCT CODRAT FROM R032OPR WHERE CODRAT NOT IN (SELECT CODRAT FROM R020RAT);
SELECT DISTINCT CODRAT FROM R032PRR WHERE CODRAT NOT IN (SELECT CODRAT FROM R020RAT);
SELECT DISTINCT CODRAT FROM R042RCR WHERE CODRAT NOT IN (SELECT CODRAT FROM R020RAT);
SELECT DISTINCT CODRAT FROM R043RCR WHERE CODRAT NOT IN (SELECT CODRAT FROM R020RAT);
SELECT DISTINCT CODRAT FROM R046FFR WHERE CODRAT NOT IN (SELECT CODRAT FROM R020RAT);
SELECT DISTINCT CODRAT FROM R046PRR WHERE CODRAT NOT IN (SELECT CODRAT FROM R020RAT);
SELECT DISTINCT CODRAT FROM R046SIR WHERE CODRAT NOT IN (SELECT CODRAT FROM R020RAT);
SELECT DISTINCT CODRAT FROM R064RAT WHERE CODRAT NOT IN (SELECT CODRAT FROM R020RAT);
SELECT DISTINCT CODRAT FROM R146PRR WHERE CODRAT NOT IN (SELECT CODRAT FROM R020RAT);
SELECT DISTINCT CODRAT FROM R171APR WHERE CODRAT NOT IN (SELECT CODRAT FROM R020RAT);
SELECT DISTINCT CODRAT FROM R171DPR WHERE CODRAT NOT IN (SELECT CODRAT FROM R020RAT);
Caso estes comandos retornem registros, deve-se efetuar os ajustes necessários na base (incluir o código de rateio na tabela R020RAT ou alterar o código do rateio no cadastro do centro de custo) e recalcular a folha.
- Executar um select na tabela R044MOV e verificar se existem lançamentos com códigos de rateio que não estejam cadastrados na tabela R020RAT. Via tela, o erro ficará camuflado, pois como o código de rateio não existe na tabela R020RAT, o sistema não demonstrará o mesmo. Para identificar se existem registros nesta situação, utilizar os selects abaixo:
select * from r044mov where numemp = xx and tipcol = xx and numcad = xxx and codcal = xxx
-> Lista os lançamentos do colaborador para o qual ocorre o erro.
select distinct codrat from r044mov where codrat not in (select codrat from r020rat)
-> Retorna todos os registros órfãos (Descartar os com código 0).
select * from r044mov where codrat = aaa and codcal = bbb
-> Lista todos os rateios que impedem a execução do código de cálculo bbb (Substituir o bbb pelo código de cálculo em questão). Substituir o aaa pelos códigos de rateio apresentados no resultado do comando mencionado no item acima. Por exemplo, se retornar o codrat 1, substituir o aaa por 1 e assim por diante.
Desta forma, deve-se ajustar a tabela de movimentos ou cadastrar o código de rateio em questão, para que consiga realizar o cálculo da folha.
Quando ocorre / onde se aplica: Cálculos > Efetuar Cálculo.
Solução: A mensagem aponta que existe um registro de rateio órfão, ou seja, que foi utilizado em alguma rotina do sistema e que não está cadastrado na tabela de rateio, R020RAT. Quando ocorrer esta mensagem, existem algumas verificações que devem ser realizadas na base, conforme abaixo:
- Verificar se existem códigos de rateio vinculados aos centros de custo, e estes códigos de rateio não estão cadastrados na tabela de rateios (R020RAT). Para identificar se existem códigos de rateio nesta situação, pode ser utilizado o seguinte comando:
select numemp, codrat,codccu from r018ccu where not exists (select 1 from r020rat where r018ccu.codrat = r020rat.codrat)
Caso este comando retorne registros, deve-se efetuar os ajustes necessários na base (incluir o código de rateio na tabela R020RAT ou alterar o código do rateio no cadastro do centro de custo) e recalcular a folha.
- Verificar se existem códigos de rateio sendo utilizados em tabelas do sistema e que não estejam cadastrados na tabela de rateios (R020RAT0. Para identificar se existem códigos de rateio nesta situação, podem ser utilizados os seguintes comandos:
SELECT DISTINCT CODRAT FROM R020ELC WHERE CODRAT NOT IN (SELECT CODRAT FROM R020RAT);
SELECT DISTINCT CODRAT FROM R020EXC WHERE CODRAT NOT IN (SELECT CODRAT FROM R020RAT);
SELECT DISTINCT CODRAT FROM R020INT WHERE CODRAT NOT IN (SELECT CODRAT FROM R020RAT);
SELECT DISTINCT CODRAT FROM R020PRJ WHERE CODRAT NOT IN (SELECT CODRAT FROM R020RAT);
SELECT DISTINCT RATRMO FROM R020RLC WHERE RATRMO NOT IN (SELECT CODRAT FROM R020RAT);
SELECT DISTINCT RATRMO FROM R020RMO WHERE RATRMO NOT IN (SELECT CODRAT FROM R020RAT);
SELECT DISTINCT CODRAT FROM R020TOM WHERE CODRAT NOT IN (SELECT CODRAT FROM R020RAT);
SELECT DISTINCT CODRAT FROM R032OPR WHERE CODRAT NOT IN (SELECT CODRAT FROM R020RAT);
SELECT DISTINCT CODRAT FROM R032PRR WHERE CODRAT NOT IN (SELECT CODRAT FROM R020RAT);
SELECT DISTINCT CODRAT FROM R042RCR WHERE CODRAT NOT IN (SELECT CODRAT FROM R020RAT);
SELECT DISTINCT CODRAT FROM R043RCR WHERE CODRAT NOT IN (SELECT CODRAT FROM R020RAT);
SELECT DISTINCT CODRAT FROM R046FFR WHERE CODRAT NOT IN (SELECT CODRAT FROM R020RAT);
SELECT DISTINCT CODRAT FROM R046PRR WHERE CODRAT NOT IN (SELECT CODRAT FROM R020RAT);
SELECT DISTINCT CODRAT FROM R046SIR WHERE CODRAT NOT IN (SELECT CODRAT FROM R020RAT);
SELECT DISTINCT CODRAT FROM R064RAT WHERE CODRAT NOT IN (SELECT CODRAT FROM R020RAT);
SELECT DISTINCT CODRAT FROM R146PRR WHERE CODRAT NOT IN (SELECT CODRAT FROM R020RAT);
SELECT DISTINCT CODRAT FROM R171APR WHERE CODRAT NOT IN (SELECT CODRAT FROM R020RAT);
SELECT DISTINCT CODRAT FROM R171DPR WHERE CODRAT NOT IN (SELECT CODRAT FROM R020RAT);
Caso estes comandos retornem registros, deve-se efetuar os ajustes necessários na base (incluir o código de rateio na tabela R020RAT ou alterar o código do rateio no cadastro do centro de custo) e recalcular a folha.
- Executar um select na tabela R044MOV e verificar se existem lançamentos com códigos de rateio que não estejam cadastrados na tabela R020RAT. Via tela, o erro ficará camuflado, pois como o código de rateio não existe na tabela R020RAT, o sistema não demonstrará o mesmo. Para identificar se existem registros nesta situação, utilizar os selects abaixo:
select * from r044mov where numemp = xx and tipcol = xx and numcad = xxx and codcal = xxx
-> Lista os lançamentos do colaborador para o qual ocorre o erro.
select distinct codrat from r044mov where codrat not in (select codrat from r020rat)
-> Retorna todos os registros órfãos (Descartar os com código 0).
select * from r044mov where codrat = aaa and codcal = bbb
-> Lista todos os rateios que impedem a execução do código de cálculo bbb (Substituir o bbb pelo código de cálculo em questão). Substituir o aaa pelos códigos de rateio apresentados no resultado do comando mencionado no item acima. Por exemplo, se retornar o codrat 1, substituir o aaa por 1 e assim por diante.
Desta forma, deve-se ajustar a tabela de movimentos ou cadastrar o código de rateio em questão, para que consiga realizar o cálculo da folha.