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;
Exemplo:
O nome do SystemComponent é “SCValidaEscala” e o SystemComponent base é “SCHistoricoEscala”.
Caso a tela de seleção do SystemComponent base não exibir os componentes disponíveis, verifique a configuração do ambiente em Window > Preferences > Senior > Ambientes e a conectividade com o servidor.
Verifique a tabela com Systecomponents base disponíveis.
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.
<div class="Code"><p>{</p><p class="Ident1">systemcomponents: [</p><p class="Ident2">{</p><p class="Ident3">extension: <span class="azul">"custom.senior.regras.SCValidaEscala"</span>,</p><p class="Ident3">base: <span class="azul">"br.com.senior.rh.gp.sc.historico.escala.SCHistoricoEscala"</span></p><p class="Ident2">},</p><p class="Ident2">{</p><p class="Ident3">extension: <span class="azul">"custom.senior.regras.SCValidaTrocaEscala"</span>,</p><p class="Ident3">base: <span class="azul">"br.com.senior.gp.sc.programacoes.SCProgramacoes"</span></p><p class="Ident2">}</p><p class="Ident1">]</p><p>}</p></div>
- 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:
Campos - affectors
IHistoricoAfastamento
IHistoricoAfastamento | 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 |
IHistoricoEscala
IHistoricoEscala | 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 |
IHistoricoAnotacoes
IHistoricoAnotacoes | R038NOT |
|---|---|
CadDig | CadDig |
DatNot | DatNot |
EmpDig | EmpDig |
NotFic | NotFic |
NumDoc | NroDoc |
SeqNot | SeqNot |
TipDig | TipDig |
TipNot | TipNot |
IHistoricoApuracao
IHistoricoApuracao | R038APU |
|---|---|
AjuPon | AjuPon |
AprPon | AprPon |
ApuPon | ApuPon |
ArtClt | ArtClt |
CodDsi | CodDsi |
FusMar | FusMar |
IniApu | IniApu |
ParPfa | ParPfa |
ITrocaHorario
ITrocaHorario | R064THR |
|---|---|
CodHor | CodHor |
CodInt | CodInt |
DatIni | DatIni |
StaAcc | StaAcc |
Icompensacao
Icompensacao | R064CMP |
|---|---|
CodHor | CodHor |
CodSit | CodSit |
DatFim | DatFim |
DatIni | DatIni |
FimInt | FimInt |
IniInt | IniInt |
MotSit | MotSit |
PerCmp | PerCmp |
QtdHor | QtdHor |
StaAcc | StaAcc |
TipCmp | TipCmp |
Iponte
Iponte | R064PON |
|---|---|
DiaHo1 | DiaHo1 |
DiaHo2 | DiaHo2 |
StaAcc | StaAcc |
IAutorizacaoSaida
IAutorizacaoSaida | R064ASA |
|---|---|
CadAut | CadAut |
CodSit | CodSit |
DatAsa | DatAsa |
EmpAut | EmpAut |
HorAsa | HorAsa |
HorTer | HorTer |
ObsAfa | ObsAfa |
StaAcc | StaAcc |
TclAut | TclAut |
IAutorizacaoHoraExtra
IAutorizacaoHoraExtra | R064EXT |
|---|---|
CadAut | CadAut |
CodUsu | CodUsu |
DatFim | DatFim |
DatIni | DatIni |
EmpAut | EmpAut |
HorFim | HorFim |
HorIni | HorIni |
ObsExt | ObsExt |
StaAcc | StaAcc |
TclAut | TclAut |
ISobreavisoProntidao
ISobreavisoProntidao | R064SOB |
|---|---|
CodSit | CodSit |
DatFim | DatFim |
DatIni | DatIni |
HorFim | HorFim |
HorIni | HorIni |
ObsSob | ObsSob |
SobCon | SobCon |
ITrocaEscala
ITrocaEscala | R064TES |
|---|---|
CodCat | CodCat |
CodEqp | CodEqp |
CodEsc | CodEsc |
CodTma | CodTma |
DatFim | DatFim |
DatIni | DatIni |
StaAcc | StaAcc |
TurInt | TurInt |
IProjecaoHorario
IProjecaoHorario | R064PFO |
|---|---|
CodHor | CodHor |
DatFim | DatFim |
DatIni | DatIni |
TipPfo | TipPfo |
IPenalidadeIncidente
IPenalidadeIncidente | R009PEN |
|---|---|
Codigo | CodPen |
Descricao | DesPen |
DiasAfastamento | DiaAfa |
Documento | ModDoc |
ExigeDescricaoAnotacao | ExiNot |
ExigeDocumento | GerDoc |
GerarAfastamento | GerAfa |
RelevanciaPenalidade | RelPen |
SituacaoAfastamento | SitAfa |
TipoAnotacao | TipNot |
IDefinicaoIncidente
IDefinicaoIncidente | R009GID |
|---|---|
Codigo | CodGin |
ConsiderarSequenciasAgrupamento | ConAgr |
CorpoEmail | EmaCor |
Descricao | DesGin |
EnviaEmailGestor | EmaGes |
IDefinicaoAssinaturaEspelhoPonto
IDefinicaoAssinaturaEspelhoPonto | R009ADE |
|---|---|
BloqueiaAcertoMesAtual | BloAce |
Codigo | CodDad |
Descricao | DesDad |
DiasUteis | DiaAss |
DiasUteisCancelar | DiaCan |
EnviaEmailAssinaturasVencidas | NotVen |
EnviaEmailConfirmacaoAssinatura | NotCfm |
EnviaEmailReprovacaoAssinatura | NotRep |
ModeloRelatorioEspelhoPonto | ModRel |
PermiteCancelarAssinatura | PerCan |
IAcoesAcerto
IAcoesAcerto | 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 |
Exemplo:
Duas validações com os nomes validarEscala e validarEscala123 (arquivo SCValidaEscala.sc):
<div class="Code"><p>{</p><p class="Ident1">extensionOf: <span class="azul">"br.com.senior.rh.gp.sc.historico.escala.SCHistoricoEscala"</span>,</p><p></p><p class="Ident2">datasetExtensions: [{</p><p class="Ident3">id: <span class="azul">"DsHistoricoEscala"</span>,</p><p class="Ident3">verifications: [{</p><p class="Ident6">name: <span class="azul">"USU_SCValidaEscala"</span>,</p><p class="Ident6">calculator: <span class="azul">"validarEscala"</span>,</p><p class="Ident6">affectors: [<span class="azul">"CodEsc"</span>],</p><p class="Ident6">checkOnInsert: <span class="bordo">true</span>,</p><p class="Ident6">checkOnUpdate: <span class="bordo">true</span>,</p><p class="Ident6">checkOnRemove: <span class="bordo">false</span></p><p class="Ident3">},{</p><p class="Ident6">name: <span class="azul">"USU_SCValidaEscala123"</span>,</p><p class="Ident6">calculator: <span class="azul">"validarEscala123"</span>,</p><p class="Ident6">affectors: [<span class="azul">"CodEsc,CodTma,TurInt"</span>],</p><p class="Ident6">checkOnInsert:<span class="bordo"> true</span>,</p><p class="Ident6">checkOnUpdate: <span class="bordo">true</span>,</p><p class="Ident6">checkOnRemove: <span class="bordo">false</span></p><p class="Ident3">}]</p><p class="Ident2">}]</p><p>}</p></div>
- 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.
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 |
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>)
English
Español

English
Español

