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:

  1. Crie um SystemComponent. Para estender um novo, utilize a opção Arquivo > Novo > Outras, do Ambiente de Customização (Senior Developer);
  2. Dentro da pasta Senior, selecione a opção “SystemComponent”. Esta operação precisa ser feita dentro do projeto de customização:
  3. 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.

Observação

Verifique a tabela com Systecomponents base disponíveis.

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.

<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>

  1. 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();
    }
}
  1. 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>

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>)

Este artigo ajudou você?