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;
Campos - affectorsIHistoricoAfastamentoIHistoricoAfastamento R038AFA AciAnt AciAnt AciTra AciTra AtePat AtePat CauDem CauDem CgcCes CgcCes CgcSin CgcSin CgcSuc CgcSuc CodAte CodAte CodDoe CodDoe CodSit SitAfa CodSub CodSub ConTov ConTov DatAfa DatAfa DatAlt DatAlt DatNex DatNex DatPar DatPar DatPer DatPer DatTer DatTer DiaJus DiaJus DiaPrv DiaPrv EstCon EstCon ExmRet ExmRet HorAfa HorAfa HorTer HorTer MsmMot MsmMot NomAte NomAte NumCad NumCad NumEmp NumEmp NumPro NumPro ObsAfa ObsAfa OnuCes OnuCes OnuSin OnuSin OrgCla OrgCla OriMot OriMot PrvTer PrvTer QhrAfa QhrAfa RegCon RegCon RisNex RisNex SitIni SitIni StaAtu StaAtu TipCol TipCol IHistoricoEscalaIHistoricoEscala R038HES CodCat CodCat CodEqp CodEqp CodEsc CodEsc CodTma CodTma DatAlt DatAlt HorBas HorBas HorDsr HorDsr HorSab HorSab HorSem HorSem StaAcc StaAcc StaHis StaHis TurInt TurInt IHistoricoAnotacoesIHistoricoAnotacoes R038NOT CadDig CadDig DatNot DatNot EmpDig EmpDig NotFic NotFic NumDoc NroDoc SeqNot SeqNot TipDig TipDig TipNot TipNot IHistoricoApuracaoIHistoricoApuracao R038APU AjuPon AjuPon AprPon AprPon ApuPon ApuPon ArtClt ArtClt CodDsi CodDsi FusMar FusMar IniApu IniApu ParPfa ParPfa ITrocaHorarioITrocaHorario R064THR CodHor CodHor CodInt CodInt DatIni DatIni StaAcc StaAcc IcompensacaoIcompensacao R064CMP CodHor CodHor CodSit CodSit DatFim DatFim DatIni DatIni FimInt FimInt IniInt IniInt MotSit MotSit PerCmp PerCmp QtdHor QtdHor StaAcc StaAcc TipCmp TipCmp IponteIponte R064PON DiaHo1 DiaHo1 DiaHo2 DiaHo2 StaAcc StaAcc IAutorizacaoSaidaIAutorizacaoSaida R064ASA CadAut CadAut CodSit CodSit DatAsa DatAsa EmpAut EmpAut HorAsa HorAsa HorTer HorTer ObsAfa ObsAfa StaAcc StaAcc TclAut TclAut IAutorizacaoHoraExtraIAutorizacaoHoraExtra R064EXT CadAut CadAut CodUsu CodUsu DatFim DatFim DatIni DatIni EmpAut EmpAut HorFim HorFim HorIni HorIni ObsExt ObsExt StaAcc StaAcc TclAut TclAut ISobreavisoProntidaoISobreavisoProntidao R064SOB CodSit CodSit DatFim DatFim DatIni DatIni HorFim HorFim HorIni HorIni ObsSob ObsSob SobCon SobCon ITrocaEscalaITrocaEscala R064TES CodCat CodCat CodEqp CodEqp CodEsc CodEsc CodTma CodTma DatFim DatFim DatIni DatIni StaAcc StaAcc TurInt TurInt IProjecaoHorarioIProjecaoHorario R064PFO CodHor CodHor DatFim DatFim DatIni DatIni TipPfo TipPfo IPenalidadeIncidenteIPenalidadeIncidente R009PEN Codigo CodPen Descricao DesPen DiasAfastamento DiaAfa Documento ModDoc ExigeDescricaoAnotacao ExiNot ExigeDocumento GerDoc GerarAfastamento GerAfa RelevanciaPenalidade RelPen SituacaoAfastamento SitAfa TipoAnotacao TipNot IDefinicaoIncidenteIDefinicaoIncidente R009GID Codigo CodGin ConsiderarSequenciasAgrupamento ConAgr CorpoEmail EmaCor Descricao DesGin EnviaEmailGestor EmaGes IDefinicaoAssinaturaEspelhoPontoIDefinicaoAssinaturaEspelhoPonto R009ADE BloqueiaAcertoMesAtual BloAce Codigo CodDad Descricao DesDad DiasUteis DiaAss DiasUteisCancelar DiaCan EnviaEmailAssinaturasVencidas NotVen EnviaEmailConfirmacaoAssinatura NotCfm EnviaEmailReprovacaoAssinatura NotRep ModeloRelatorioEspelhoPonto ModRel PermiteCancelarAssinatura PerCan IAcoesAcertoIAcoesAcerto R010ACE AbrSit AbrSit CodAce CodAce CodSit CodSit DesAce DesAce FimVal FimVal IncAfa IncAfa IncSit IncSit IniVal IniVal LimHor LimHor NotObg NotObg SolNot SolNot TipNot TipNot - 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
Os Principais SystemComponents, Entidades e Data Sets estão disponíveis conforme tabela abaixo:
SystemComponents, Entidades e Data Sets | |||
---|---|---|---|
Assunto | SystemComponent | Entidade | DataSet |
Ações de acerto | SCAcaoAcerto | IAcoesAcerto | DsAcaoAcerto |
Autorização de Hora extras | SCProgramacoes | IAutorizacaoHoraExtra | DsAutorizacaoHoraExtra |
Autorização de saída | SCProgramacoes | IAutorizacaoSaida | DsAutorizacaoSaida |
Compensação | SCProgramacoes | ICompensacao | DsCompensacao |
Definição de assinatura do espelho do ponto | SCDefinicaoAssinaturaEspelhoPonto | IDefinicaoAssinaturaEspelhoPonto | DsDefinicaoAssinaturaEspelhoPonto |
Definição de gestão de incidentes | SCDefinicaoIncidente | IDefinicaoIncidente | DsDefinicaoIncidente |
Histórico de afastamento | SCHistoricoAfastamento | IHistoricoAfastamento | DsHistoricoAfastamento |
Histórico de anotação | SCHistoricoAnotacoes | IHistoricoAnotacoes | DsHistoricoAnotacao |
Histórico de apuração | SCHistoricoApuracao | IHistoricoApuracao | DsHistoricoApuracao |
Histórico de escala | SCHistoricoEscala | IHistoricoEscala | DsHistoricoEscala |
Marcação | SCAcertoColaborador | IMarcacao | DsMarcacao |
Penalidades para incidentes do ponto | SCPenalidadeIncidente | IPenalidadeIncidente | DsPenalidadeIncidente |
Ponte | SCProgramacoes | IPonte | DsPonte |
Projeção de horário | SCProgramacoes | IProjecaoHorario | DsProjecaoHorario |
Sobreaviso | SCProgramacoes | ISobreavisoProntidao | DsSobreavisoProntidao |
Situação Apurada | SCAcertoColaborador | ISituacaoApurada | DsSituacaoApurada |
Troca de escala | SCProgramacoes | ITrocaEscala | DsTrocaEscala |
Troca de horário | SCProgramacoes | ITrocaHorario | DsTrocaHorario |
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>)