Regras para realizar consistências em cadastros de históricos e programações
Para realizar consistências, é necessário estender os SystemComponents disponibilizados pelo Gestão do Ponto realizando os seguintes passos:
- Crie um SystemComponent. Para estender um novo, utilize a opção Arquivo > Novo > Outras, do Ambiente de Customização (Senior Developer);
- Dentro da pasta Senior, selecione a opção "SystemComponent". Esta operação precisa ser feita dentro do projeto de customização:
- Informe o nome do SystemComponent desejado e o SystemComponent base;
Observação
Verifique a tabela com Systecomponents base disponíveis.
Exemplo:O nome do SystemComponent é "SCValidaEscala" e o SystemComponent base é "SCHistoricoEscala".
Importante
A classe Java pode ser gerada automaticamente. Para isso, basta assinalar Gerar o fonte Java do SystemComponent.
Ao criar as classes, o arquivo Entities.json também já é atualizado. Esse arquivo contém as declarações dos SystemComponents criados. Caso for necessário copiar um SystemComponent direto para o projeto de customização sem utilizar o wizard de criação, é necessário editar o arquivo Entities.json e inserir a classe desejada. Esse arquivo possui a estrutura conforme abaixo. Cada SystemComponent criado deve constar neste arquivo.
{
systemcomponents: [
{
extension: "custom.senior.regras.SCValidaEscala",
base: "br.com.senior.rh.gp.sc.historico.escala.SCHistoricoEscala"
},
{
extension: "custom.senior.regras.SCValidaTrocaEscala",
base: "br.com.senior.gp.sc.programacoes.SCProgramacoes"
}
]
}
- Implemente o SystemComponent. Na classe Java do Systemcomponent, implemente as consistências necessárias para cada situação, utilizando o Contexto geral.
Exemplo:
package custom.senior.regras;
import com.senior.ContextoGeralRH;
@SystemComponentExtension("br.com.senior.rh.gp.sc.historico.escala.SCHistoricoEscala")
public class SCValidaEscala extends AbstractSystemComponentExtension {
private ContextoGeralRH contextoGeral;
public SCValidaEscala(IEntitySession entitySession) {
super(entitySession);
HelperContextoGeral instance = HelperContextoGeral.getInstance();
contextoGeral = instance.getContextoGeral();
}
public String validarEscala(IFieldAccessor<IHistoricoEscala> field, IHistoricoEscala historicoEscala, IBookmark bookmark) {
String retorno = "True";
if (consisteHorasSemanais (historicoEscala)){
retorno = "A quantidade de horas semanais da nova escala não pode ser diferente da escala atual!. Para esta alteração entre em contato com a área de RH.";
}
return retorno
}
//Verifica se a qtde de horas semanais da escala anterior e nova são diferentes.
private boolean consisteHorasSemanais(IHistoricoEscala hisEscala) {
int codEscAnt = getEscalaAnterior(hisEscala);
int codEscAtu = hisEscala.getCodEsc();
Escala escalaAnterior = contextoGeral.getEscala(codEscAnt);
Escala escalaAtual = contextoGeral.getEscala(codEscAtu);
if (escalaAnterior.getHorasSemanal() != escalaAtual.getHorasSemanal()){
return true;
}
return false;
}
private int getEscalaAnterior(IHistoricoEscala hisEscala) {
//Encontra a última escala do histórico do colaborador
Escala escalaPrevista = contextoGeral.getEscalaPrevistaColaborador(hisEscala.getNumEmp(), hisEscala.getTipoCol(), hisEscala.getNumCad(), hisEscala.getDatAlt());
return escalaPrevista.getCodigo();
}
}
- Ajuste a extensão do SystemComponent. Ao criar o SystemComponent, é criado também uma extensão de SystemComponent, que é um arquivo com a extensão .sc na mesma pasta onde foi criado o SystemComponent. Neste arquivo, informe as seguintes propriedades:
- id: nome do Data Set para o qual se deseja construir a regra. Para mais detalhes sobre os Data Sets disponíveis, consulte a tabela;
- name: nome da validação. Este campo é uma descrição livre e não possui ligação com a classe de implementação da regra;
- calculator: nome do método que será executado para validação. Este nome deve ser igual ao nome do método criado na classe java;
- affectors: campos que devem ser verificados para que o método seja executado. Para informar mais de um campo, utilize a virgula;
- checkOnInsert: indique se o método será executado na inclusão;
- checkOnUpdate: indique se o método será executado na alteração;
- checkOnRemove: indique se o método será executado na exclusão.
Exemplo:Duas validações com os nomes validarEscala e validarEscala123 (arquivo SCValidaEscala.sc):
{
extensionOf: "br.com.senior.rh.gp.sc.historico.escala.SCHistoricoEscala",
datasetExtensions: [{
id: "DsHistoricoEscala",
verifications: [{
name: "USU_SCValidaEscala",
calculator: "validarEscala",
affectors: ["CodEsc"],
checkOnInsert: true,
checkOnUpdate: true,
checkOnRemove: false
},{
name: "USU_SCValidaEscala123",
calculator: "validarEscala123",
affectors: ["CodEsc,CodTma,TurInt"],
checkOnInsert: true,
checkOnUpdate: true,
checkOnRemove: false
}]
}]
}
Principais SystemComponents, Entidades e Data Sets
Estão disponíveis:
Assunto | SystemComponent | Entidade | DataSet |
---|---|---|---|
Histórico de afastamento | SCHistoricoAfastamento | IHistoricoAfastamento | DsHistoricoAfastamento |
Histórico de escala | SCHistoricoEscala | IHistoricoEscala | DsHistoricoEscala |
Histórico de anotação | SCHistoricoAnotacoes | IHistoricoAnotacoes | DsHistoricoAnotacao |
Histórico de apuração | SCHistoricoApuracao | IHistoricoApuracao | DsHistoricoApuracao |
Troca de horário | SCProgramacoes | ITrocaHorario | DsTrocaHorario |
Compensação | SCProgramacoes | ICompensacao | DsCompensacao |
Ponte | SCProgramacoes | IPonte | DsPonte |
Autorização de saída | SCProgramacoes | IAutorizacaoSaida | DsAutorizacaoSaida |
Autorização de Hora extras | SCProgramacoes | IAutorizacaoHoraExtra | DsAutorizacaoHoraExtra |
Sobreaviso | SCProgramacoes | ISobreavisoProntidao | DsSobreavisoProntidao |
Troca de escala | SCProgramacoes | ITrocaEscala | DsTrocaEscala |
Projeção de horário | SCProgramacoes | IProjecaoHorario | DsProjecaoHorario |
Penalidades para incidentes do ponto | SCPenalidadeIncidente | IPenalidadeIncidente | DsPenalidadeIncidente |
Definição de gestão de incidentes | SCDefinicaoIncidente | IDefinicaoIncidente | DsDefinicaoIncidente |
Definição de assinatura do espelho do ponto | SCDefinicaoAssinaturaEspelhoPonto | IDefinicaoAssinaturaEspelhoPonto | DsDefinicaoAssinaturaEspelhoPonto |
Ações de acerto | SCAcaoAcerto | IAcoesAcerto | DsAcaoAcerto |
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>)