Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.


01. DADOS GERAIS

Produto:

Solucoes_totvs_cross
SolucaoCrossTOTVS RH

Linha de Produto:

Linhas_totvs
SegmentoDistribuição
RegionConstrução Projetos
LinhaLinha Protheus

Segmento:

Segmentos_totvs
SegmentoRH

Módulo:SIGAPON
Função:

PONAPI01

PONAPIRR1

PONA030

Requisito/Story/Issue (informe o requisito relacionado) :

DRHPAG-40173

DRHPAG-40184

DRHPAG-40185

DRHPAG-44762

DRHPAG-44973


02. 
SITUAÇÃO/REQUISITO

Atualmente o sistema trabalha com a tabela MSA_CONTROL_MARCAC quando é efetuado a integração com a Carol ou Suricato. 

...

Como a tabela MSA_CONTROL_MARCAC não possui estrutura de dicionário de dados padrão e no caso do Suricato é efetuado um acesso direito ao banco de dados, houve a necessidade de criação de uma tabela padrão do Protheus existente no dicionário de dados e a criação de uma API para que o Suricato efetue a integração das marcações, evitando assim a necessidade de conexão direta com o banco de dados..

03. SOLUÇÃO

Ao Ajuste ao iniciar o processo de importação das marcações , para integração com a Carol e o processo de leitura de marcações (PONM010) , para integração com o Suricato , será iniciado para iniciar a migração automática dos dados da tabela MSA_CONTROL_MARCAC para a tabela RR1. A partir dessa migração, o sistema somente passará a validar a tabela RR1.

Além disso, foi disponibilizado a API recordClockMarkings API REST recordClockMarkings com o método POST para que o Suricato efetue a integração informando as marcações e o Protheus efetue a gravação das marcações na tabela RR1, ou seja, não haverá mais acesso direto ao banco de dados do Protheus.

Informações
titleImportante

As alterações estão incluídas no pacote de Expedição Contínua do RH disponível na Central de Downloads liberado a partir de XX27/XX12/XXXX2021.

Foram necessárias alterações no dicionário, listadas abaixo, que serão aplicadas na base com a execução do UPDDISTR com o dicionário diferencial liberado no pacote de expedição contínua do RH.

...

Deck of Cards
startHiddenfalse
iddicionario
Card
defaulttrue
idsix
labelSIX
titleÍndices

Criação de índices na tabela RR1:

OrdemChave
1RR1_CODUNI+RR1_LOGIP+DTOS(RR1_DATMAR)
2RR1_CODUNI+DTOS(RR1_DATMAR)
3RR1_CODREP+RR1_LOGIP+DTOS(RR1_DATMAR)
4RR1_CODREL+RR1_LOGIP+DTOS(RR1_DATMAR)
5RR1_CODREL+STR(RR1_CODNSR,9)
6STR(RR1_VALCON,16)+RR1_CODREL+STR(RR1_CODNSR,9)
7RR1_CODREP+STR(RR1_CODNSR,9)
8STR(RR1_VALCON,16)+RR1_CODREP+STR(RR1_CODNSR,9)
Card
idsx2
labelSX2
titleTabela

Criação da tabela RR1:

ArquivoNomeCompartilhamento FilialCompartilhamento Unidade de NegócioCompartilhamento EmpresaX2_UNICO
RR1990Integração de marcaçõesCCCRR1_VALCON
RR1_
Card
idsx3
labelSX3
titleCampos

Criação de campos na tabela RR1:

OrdemCampoTipoTamanhoDecimalFormatoContextoPropriedadeTítuloDescriçãoHelp
01RR1_FILIALCaracter20
RealAlterarFilialFilial

Filial

02RR1_VALCONNumérico160@E 9,999,999,999,999,999RealAlterarControl. MarControle Marcação

Código de controle da marcação

03RR1_
CODPRE
Caracter200RealAlterarCod. Id. PreCod. ID Previd. Social

Código ID Previdência Social

04
CODRELCaracter1000
RealAlterarCod. RelógioCódigo Relógio

Código do relógio

05RR1_NUMDANumérico2099RealAlterarDireção AcesDireção Acesso

Direção de acesso

06
04RR1_CODFUNCaracter1000
RealAlterarCod. Func.Código do funcionário

Código do funcionário

07
05RR1_
CODFEDCaracter500RealAlterarCod. Fed.Código da Federação

Código da federação

08RR1_CODHASCaracter2540RealAlterarCod. HashCódigo hash

Código do hash

09RR1_11
LOGIPCaracter10
RealAlterarLog Import.Log de importação

Log de importação do registro

10RR1_CODLOTCaracter1000RealAlterarCod. LoteCódigo do lote

Código do lote

06
RR1_CODNSRNumérico90@E 999,999,999RealAlterarCod. NSRCódigo NSR

Código NSR

12
07RR1_CODPISCaracter120
RealAlterarCod. PISCódigo do PIS

Código do PIS

13
08RR1_
VALPERNumérico80@E 99,999,999RealAlterarPerfil AcessPerfil de acesso

Perfil de acesso

14RR1_
DATMARData80
RealAlterarData Marc.Data da marcação

Data da marcação

15
09RR1_NUMMARNumérico60@E 999,999RealAlterarNum Hor Mar.Número da hora marcação

Número com o horário da marcação

16
10RR1_CODREPCaracter170
RealAlterarCod. REPCódigo do REP

Código do REP

17
11RR1_CODUNICaracter1000
RealAlterarCod. Unid.Código da Unidade

Código da unidade

18
12RR1_CODUSUCaracter1000
RealAlterarCod. UsuarioCódigo do usuário

Código do usuário

Card
idsx6
labelSX6
titleParâmetros

Criação de parâmetro:

NomeTipoDescriçãoConteúdo padrão
MV_APISURLógico

Define se a integração do Suricato com o Protheus ocorre por API (.T.) ou direto no banco (.F.) 

.F.
Dica
titleObservação

O parâmetro MV_APISUR somente será avaliado na integração com o Suricato e serve para indicar se o Suricato já foi atualizado e está configurado para efetuar a integração das marcações via API.

...

Informações
titleInformação

Segue um de X para da tabela MSA_CONTROL_MARCAC para a tabela RR1

COD_ID_FEDER
De (MSA_CONTROL_MARCAC)Para (RR1)Observação

RR1_FILIALNunca será validado e sempre será gravado sem conteúdo.
VAL_CONTROL_MARCACRR1_VALCONNão há.COD_ID_PREVID_SOCIALRR1_CODPRENão há.
COD_RELOGIO_EXT_CHAVERR1_CODRELNão há.NUM_DIRECAO_ACESRR1_NUMDANão há.
COD_FUNC_MSARR1_CODFUNNão há.RR1_CODFEDNão há.
COD_HASHRR1_CODHASNão há.
LOG_IMPORT_PRODUTRR1_LOGIPNão há.
COD_LOTERR1_CODLOTNão há.COD_NSRRR1_CODNSRNão há.
COD_PIS_MSARR1_CODPISNão há.
VAL_PERF_ACESRR1_VALPERNão há.
DAT_MARCAC_ACESRR1_DATMARSomente irá conter a data. A hora do registro não será importada, já que tal informação também é gravada no campo RR1_NUMMAR.
NUM_HORAR_MARCAC_ACESRR1_NUMMARNão há.
COD_REPRR1_CODREPNão há.
COD_UNID_EXT_CHAVERR1_CODUNINão há.
COD_USUAR_EXT_CHAVERR1_CODUSUNão há.


A API REST recordClockMarkings será consumido pelo Suricato e poderá receber no método POST os seguintes parâmetros:

PROPRIEDADEDESCRIÇÃOTIPOObrigatório?
itemsArray das marcaçõesArraySim
items.codRelogioExtChaveCódigo RelógioCaracterNão
items.codFuncMsaCódigo do funcionárioCaracterSim
items.codNsrCódigo NSRNuméricoSim
items.codPisMsaCódigo do PISCaracterSim
items.

...

datMarcacAcesData da marcaçãoCaracterSim
items.numHorarMarcacAcesNúmero da hora marcaçãoNuméricoSim
items.codRepCódigo do REPCaracterNão
items.codUnidExtChaveCódigo da UnidadeCaracterSim
items.codUsuarExtChaveCódigo do usuárioCaracterSim



Informações
titleInformação

Segue um de X para da API recordClockMarkings para a tabela RR1

De (recordClockMarkings)Para (RR1)
codRelogioExtChaveRR1_CODREL
codFuncMsaRR1_CODFUN
codNsrRR1_CODNSR
codPisMsaRR1_CODPIS
datMarcacAcesRR1_DATMAR
numHorarMarcacAcesRR1_NUMMAR
codRepRR1_CODREP
codUnidExtChaveRR1_CODUNI
codUsuarExtChaveRR1_CODUSU


Exemplo de Request Exemplo de Body para requisição Post para chamada da API recordClockMarkings:

Bloco de código
{
	"companyIditems": "T2",
	"branchId" [
				{
					"codRelogioExtChave": "L MG 01",
					"itemscodFuncMsa": ["400425",
				{	"codNsr": 1,
					"codIdPrevidSocialcodPisMsa": "1012076853075",
					"codRelogioExtChavedatMarcacAces": "2020-10-16 08:30:00.000",
					"numDirecaoAcesnumHorarMarcacAces": 030600,
					"codFuncMsacodRep": "40042500000000000000001",
					"codIdFedercodUnidExtChave": "0T2L MG 01",
					"codHashcodUsuarExtChave": "050C9CD87C9BBF6C165EAF1DCB5E"T2L MG 01 400425"
				},
					"logImportProdut": 0,{
					"codLotecodRelogioExtChave": "000001",
					"codNsrcodFuncMsa": 1"400426",
					"codPisMsacodNsr": "012076853075"2,
					"valPerfAcescodPisMsa": 1"012047284033",
					"datMarcacAces": "2020-10-16 08:30:00.000999",
					"numHorarMarcacAces": 30600,
					"codRep": "00000000000000001",
					"codUnidExtChave": "T2L MG 01",
					"codUsuarExtChave": "T2L MG 01 400425400426"
				}
		]
}


Retornos da API recordClockMarkings:

ErroMensagemSolução
400A tabela RR1 não existe no dicionário de dados. É necessário a atualização do sistema para utilizar este serviço.Efetue a execução do UPDDISTR para criação da tabela RR1 no dicionário de dados.
500Ocorreu uma falha no retorno da informação: [descrição do erro]Houve algum erro interno do servidor. Contate o administrator do sistema para mais detalhes.


A API irá retornar a lista com o indicativo individual de sucesso ou erro na gravação. Os retornos possíveis estão na lista abaixo:

StatuserrorCodemessage
200
"Gravação efetuada com sucesso."
400"00001""PIS em formato inválido ou inexistente no cadastro."
400"00002""NSR duplicado. Número já foi importado na tabela"
400"00003""NSR não foi informado e é obrigatório"
400"00006""Não foi informado algum dos campos obrigatórios: 'codRelogioExtChave', 'codFuncMsa', 'codPisMsa', 'datMarcacAces', 'numHorarMarcacAces', 'codRep', 'codUnidExtChave' ou 'codUsuarExtChave'."
400"00006""Campo 'codRelogioExtChave' no formato incorreto. Deve ser preenchido como texto."
400"00006""Campo 'codFuncMsa' no formato incorreto. Deve ser preenchido como texto."
400"00006""Campo 'codNsr' no formato incorreto. Deve ser preenchido como numérico."
400"00006""Campo 'codPisMsa' no formato incorreto. Deve ser preenchido como texto."
400"00006""Campo 'datMarcacAces' no formato incorreto. Deve ser preenchido como data."
400"00006""Campo 'numHorarMarcacAces' no formato incorreto. Deve ser preenchido como numérico."
400"00006""Campo 'codRep' no formato incorreto. Deve ser preenchido como texto."
400"00006""Campo 'codUnidExtChave' no formato incorreto. Deve ser preenchido como texto."
400"00006""Campo 'codUsuarExtChave' no formato incorreto. Deve ser preenchido como texto."
400"00007""Foi enviado marcações de um relógio que não está cadastrado no ERP."
400"99999""Erro interno no lock da tabela RR1. Registro não foi gravado"


Exemplo de retorno da API recordClockMarkings:

Bloco de código
{
	"items": [
				{
					"codIdPrevidSocial"codFuncMsa": "400425",
					"codNsr": 1,
					"codPisMsa": "2012076853075",
					"codRelogioExtChavedatMarcacAces": "2020-10-16 08:30:00.000",
					"numDirecaoAcesnumHorarMarcacAces": 030600,
					"codFuncMsacodUnidExtChave": "400426T2L MG 01",
					"codIdFedercodUsuarExtChave": "T2L MG 01 "0"400425",
					"status": 400,
					"codHasherrorCode": "050C9CD87C9BBF6C165EAF1DCB5Z000006",
					"logImportProdutmessage": 0, "Não foi informado algum dos campos obrigatórios: 'codRelogioExtChave', 'codFuncMsa', 'codPisMsa', 'datMarcacAces', 'numHorarMarcacAces', 'codRep', 'codUnidExtChave' ou 'codUsuarExtChave'."
				},
				{
					"codLotecodRelogioExtChave": "000001",
					"codNsrcodFuncMsa": 2"400426",
					"codPisMsacodNsr": "012047284033"2,
					"valPerfAcescodPisMsa": 1"012047284033",
					"datMarcacAces": "2020-10-16 08:30:00.999",
					"numHorarMarcacAces": 30600,
					"codRep": "00000000000000001",
					"codUnidExtChave": "T2L MG 01",
					"codUsuarExtChave": "T2L MG 01 400426",
					"status": 400,
					"errorCode": "00002",
					"message": "NSR duplicado. Número já foi importado na tabela"
				}
		]
}

04. DEMAIS INFORMAÇÕES

Não há.


05. ASSUNTOS RELACIONADOS

Integração Protheus x Carol - Importação de Batidas.

Integração Protheus x Suricato.

Configuração REST.



Templatedocumentos


HTML
<style>
div.theme-default .ia-splitter #main {
    margin-left: 0px;
}
.ia-fixed-sidebar, .ia-splitter-left {
    display: none;
}
#main {
    padding-left: 10px;
    padding-right: 10px;
    overflow-x: hidden;
}

.aui-header-primary .aui-nav,  .aui-page-panel {
    margin-left: 0px !important;
}
.aui-header-primary .aui-nav {
    margin-left: 0px !important;
}

.aui-tabs.horizontal-tabs>.tabs-menu>.menu-item.active-tab a::after { 
	background: #FF9900; !important 
}

.menu-item.active-tab { 
	border-bottom: none !important; 
}

</style>