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.
Exemplo:
<div class="Code"><p><span class="anotacao">@Rule</span>(description = <span class="azul">"DescricaoDaRegra"</span>)</p><p><span class="bordo">public class</span> RegraApuracao <span class="bordo">extends</span> Apuracao {</p><p></p><p class="Ident1"><span class="bordo">private</span> ContextoGeralRH getContextoGeral() {</p><p class="Ident2"><span class="bordo">return</span> getContainer().getContextoGeral();</p><p class="Ident1">}</p><p class="Ident1"></p><p class="Ident1"><span class="bordo">private</span> ContextoApuracao getContextoApuracao() {</p><p class="Ident2"><span class="bordo">return</span> getContainer().getContextoApuracao();</p><p class="Ident1">}</p><p class="Ident1"></p><p class="Ident1"><span class="anotacao">@Override</span></p><p class="Ident1"><span class="bordo">public void</span> execute() {</p><p class="Ident2"><span class="comentario">//A implementação abaixo é apenas um exemplo. Não é necessário implementar desta mesma forma.</span></p><p class="Ident2">HistoricoApuracao historicoApuracao = getContextoApuracao().getHistoricoApuracao();</p><p class="Ident2"><span class="bordo">int</span> anoData = getContextoGeral().getAnoData(historicoApuracao.getIniApu());</p><p class="Ident2"><span class="bordo">int</span> numEmp = historicoApuracao.getNumEmp();</p><p class="Ident2"><span class="bordo">if</span> (numEmp == 1 && anoData == 2014) {</p><p class="Ident3">getContextoApuracao().setGerarPendencia(true);</p><p class="Ident2">}</p><p class="Ident1">}</p><p>}</p></div> 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:
Exemplo:
<div class="Code"><p>Map<String, Object> param = <span class="bordo">new</span> HashMap<>();</p><p>param.put(<span class="azul">"NumEmp"</span>, aNumEmp);</p><p>param.put(<span class="azul">"CodCal"</span>, aCodCal);</p><p>DataAccessor da = <span class="bordo">new</span> DataAccessor(ContextSession.getSession());</p><p>ResultSet cur_R04cal = da.runQueryRS(</p><p class="Ident1"><span class="azul">"select numemp, codcal "</span> +</p><p class="Ident1"><span class="azul">"from r04cal "</span> +</p><p class="Ident1"><span class="azul">"where NumEmp = :NumEmp "</span> +</p><p class="Ident1"><span class="azul">"and CodCal = :CodCal"</span>,</p><p class="Ident1">param</p><p>);</p><p><span class="bordo">try</span> {</p><p class="Ident1"><span class="bordo">if</span> (cur_R04cal.next()) {</p><p class="Ident2">...</p><p class="Ident1">}</p><p>} <span class="bordo">catch</span> (Exception e) {</p><p class="Ident1"><span class="bordo">throw new</span> RegraApuracaoException(<span class="azul">"Erro ao selecionar tabela de cálculo."</span>);</p><p>} <span class="bordo">finally</span> {</p><p class="Ident1">cur_R04cal.close();</p><p>}</p></div> Contextos disponíveis: Contexto geral e Contexto de apuração.
English
Español

English
Español

