Regra de apuração
É utilizada para realizar customizações na apuração de horas padrão do sistema, sendo possível modificar as horas apuradas pelo sistema e também criar novas situações. A regra de apuração é executada sempre que o sistema apurar um dia para um colaborador, após a apuração padrão do sistema e antes da gravação da apuração.
Ela é executada nos seguintes momentos:
- Cálculo de apuração (para cada dia apurado);
- Recálculo de apuração (para cada dia apurado);
- Acertos para colaborador e gestor. Sempre que o usuário utilizar a opção de apurar ou o sistema executar a apuração automaticamente como nas opções de "Editar marcações" e Históricos e programações.
@Rule(description = "DescricaoDaRegra")
public class RegraApuracao extends Apuracao {
private ContextoGeralRH getContextoGeral() {
return getContainer().getContextoGeral();
}
private ContextoApuracao getContextoApuracao() {
return getContainer().getContextoApuracao();
}
@Override
public void execute() {
//A implementação abaixo é apenas um exemplo. Não é necessário implementar desta mesma forma.
HistoricoApuracao historicoApuracao = getContextoApuracao().getHistoricoApuracao();
int anoData = getContextoGeral().getAnoData(historicoApuracao.getIniApu());
int numEmp = historicoApuracao.getNumEmp();
if (numEmp == 1 && anoData == 2014) {
getContextoApuracao().setGerarPendencia(true);
}
}
}
Importante
Para que um campo de usuário customizado esteja com os valores atualizados, sem a necessidade de atualização da página, é necessário que a regra busque este valor através da entidade da tela, utilizando o método getField().getValue() do cursor e especificando o campo da seguinte maneira:
Object value = cursor.getField(<nome do campo de usuário>).getValue(<entidade que representa tabela>)
Nas regras de apuração, não é recomendável utilizar o Cursor para realizar o select na tabela R070ACC devido a problemas de performance. Em vez disso, recomenda-se o uso do classe ResultSet, como mostrado no exemplo abaixo:
Map<String, Object> param = new HashMap<>();
param.put("NumEmp", aNumEmp);
param.put("CodCal", aCodCal);
DataAccessor da = new DataAccessor(ContextSession.getSession());
ResultSet cur_R04cal = da.runQueryRS(
"select numemp, codcal " +
"from r04cal " +
"where NumEmp = :NumEmp " +
"and CodCal = :CodCal",
param
);
try {
if (cur_R04cal.next()) {
...
}
} catch (Exception e) {
throw new RegraApuracaoException("Erro ao selecionar tabela de cálculo.");
} finally {
cur_R04cal.close();
}
Contextos disponíveis: Contexto geral e Contexto de apuração.
English
Español
English
Español


