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

...

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.

...

Direção de acesso
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:

Arquivo
Card
idsx2
labelSX2
titleTabela

Criação da tabela RR1:

ArquivoNomeCompartilhamento FilialCompartilhamento Unidade de NegócioCompartilhamento EmpresaX2_UNICO
RR1990Integração de marcaçõesCCCRR1_VALCON
Código ID Previdência Social
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
CODRELCaracter
20
1000
RealAlterarCod.
Id. Pre
Cod. ID Previd. Social
RelógioCódigo Relógio

Código do relógio

04RR1_
CODREL
CODFUNCaracter1000
RealAlterarCod. Func.
Relógio
Código
Relógio
do funcionário

Código do

relógio

funcionário

05RR1_
NUMDA
LOGIP
Numérico
Caracter
2
10
99

RealAlterar
Direção AcesDireção Acesso
Log Import.Log de importação

Log de importação do registro

06RR1_
CODFUN
CODNSR
Caracter
Numérico
100
90@E 999,999,999RealAlterarCod.
Func.
NSRCódigo
do funcionário
NSR

Código

do funcionário

NSR

07RR1_
CODFED
CODPISCaracter
50
120
RealAlterarCod.
Fed.
PISCódigo
da Federação
do PIS

Código

da federação

do PIS

08RR1_
CODHAS
DATMAR
Caracter
Data
254
80
RealAlterar
Cod
Data Marc.
Hash
Código hashCódigo do hash
Data da marcação

Data da marcação

09RR1_
LOGIP
NUMMAR
Caracter
Numérico
1
60@E 999,999RealAlterar
Log Import
Num Hor Mar.
Log de importaçãoLog de importação do registro
Número da hora marcação

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

10RR1_
CODLOT
CODREPCaracter
100
170
RealAlterarCod.
Lote
REPCódigo do
lote
REP

Código do

lote

REP

11RR1_
CODNSR
CODUNI
Numérico
Caracter
9
1000
@E 999,999,999

RealAlterarCod.
NSR
Unid.Código
NSR
da Unidade

Código

NSR

da unidade

12RR1_
CODPIS
CODUSUCaracter
12
1000
RealAlterarCod.
PIS
UsuarioCódigo do
PIS
usuário

Código do

PIS

usuário

13
RR1_VALPERNumérico8

Criação de parâmetro:

Card
id
sx6
label
0@E 99,999,999RealAlterarPerfil AcessPerfil de acesso

Perfil de acesso

14RR1_DATMARData80RealAlterarData Marc.Data da marcação

Data da marcação

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

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

16RR1_CODREPCaracter170RealAlterarCod. REPCódigo do REP

Código do REP

17RR1_CODUNICaracter1000RealAlterarCod. Unid.Código da Unidade

Código da unidade

18RR1_CODUSUCaracter1000RealAlterarCod. UsuarioCódigo do usuário

Código do usuário

Card
idsx6
labelSX6
titleParâmetros
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.

  1. Para a integração com a Carol, a substituição do uso da tabela MSA_CONTROL_MARCAC será automática, desde que o dicionário de dados esteja atualizado. Dessa forma, quando for executado a integração para a importação das marcações, o sistema irá primeiro migrar os dados da tabela MSA_CONTROL_MARCAC para a tabela RR1 e as novas marcações já serão gravadas na tabela RR1.
  2. Para a integração com o Suricato, a substituição do uso da tabela MSA_CONTROL_MARCAC será automática, desde que o dicionário de dados esteja atualizado e o parâmetro MV_APISUR esteja ativo (configurado com .T.). Dessa forma, quando for executado o processo de leitura de marcações, o sistema irá primeiro migrar os dados da tabela MSA_CONTROL_MARCAC para a tabela RR1.

...

titleInformação

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

...

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

...

titleInformação

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

...

Exemplo de Request da API recordClockMarkings:

Bloco de código
{
	"companyId": "T2",
	"branchId" : "L MG 01",
	"items": [
				{
					"codIdPrevidSocial": "1",
					"codRelogioExtChave": "",
					"numDirecaoAces": 0,
					"codFuncMsa": "400425",
					"codIdFeder": "0",
					"codHash": "050C9CD87C9BBF6C165EAF1DCB5E",
					"logImportProdut": 0,
					"codLote": "000001",
					"codNsr": 1,
					"codPisMsa": "012076853075",
					"valPerfAces": 1,
					"datMarcacAces": "2020-10-16 08:30:00.000",
					"numHorarMarcacAces": 30600,
					"codRep": "00000000000000001",
					"codUnidExtChave": "T2L MG 01",
					"codUsuarExtChave": "T2L MG 01 400425"
				},
				{
					"codIdPrevidSocial": "2",
					"codRelogioExtChave": "",
					"numDirecaoAces": 0,
					"codFuncMsa": "400426",
					"codIdFeder": "0",
					"codHash": "050C9CD87C9BBF6C165EAF1DCB5Z",
					"logImportProdut": 0,
					"codLote": "000001",
					"codNsr": 2,
					"codPisMsa": "012047284033",
					"valPerfAces": 1,
					"datMarcacAces": "2020-10-16 08:30:00.999",
					"numHorarMarcacAces": 30600,
					"codRep": "00000000000000001",
					"codUnidExtChave": "T2L MG 01",
					"codUsuarExtChave": "T2L MG 01 400426"
				}
		]
}

Retornos da API recordClockMarkings:

...

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


  1. Para a integração com a Carol, a substituição do uso da tabela MSA_CONTROL_MARCAC será automática, desde que o dicionário de dados esteja atualizado. Dessa forma, quando for executado a integração para a importação das marcações, o sistema irá primeiro migrar os dados da tabela MSA_CONTROL_MARCAC para a tabela RR1 e as novas marcações já serão gravadas na tabela RR1.
  2. Para a integração com o Suricato, a substituição do uso da tabela MSA_CONTROL_MARCAC será automática, desde que o dicionário de dados esteja atualizado e o parâmetro MV_APISUR esteja ativo (configurado com .T.). Dessa forma, quando for executado o processo de leitura de marcações, o sistema irá primeiro migrar os dados da tabela MSA_CONTROL_MARCAC para a tabela RR1.


Informações
titleInformação

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

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_RELOGIO_EXT_CHAVERR1_CODRELNão há.
COD_FUNC_MSARR1_CODFUNNão há.
LOG_IMPORT_PRODUTRR1_LOGIPNão há.
COD_NSRRR1_CODNSRNão há.
COD_PIS_MSARR1_CODPISNã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 da API recordClockMarkings:

Bloco de código
{
	"items": [
				{
					"codRelogioExtChave": "",
					"codFuncMsa": "400425",
					"codNsr": 1,
					"codPisMsa": "012076853075",
					"datMarcacAces": "2020-10-16 08:30:00.000",
					"numHorarMarcacAces": 30600,
					"codRep": "00000000000000001",
					"codUnidExtChave": "T2L MG 01",
					"codUsuarExtChave": "T2L MG 01 400425"
				},
				{
					"codRelogioExtChave": "",
					"codFuncMsa": "400426",
					"codNsr": 2,
					"codPisMsa": "012047284033",
					"datMarcacAces": "2020-10-16 08:30:00.999",
					"numHorarMarcacAces": 30600,
					"codRep": "00000000000000001",
					"codUnidExtChave": "T2L MG 01",
					"codUsuarExtChave": "T2L MG 01 400426"
				}
		]
}


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": [
				{
					"codFuncMsa": "400425",
					"codNsr": 1,
					"codPisMsa": "012076853075",
					"datMarcacAces": "2020-10-16 08:30:00.000",
					"numHorarMarcacAces": 30600,
					"codUnidExtChave": "T2L MG 01",
					"codUsuarExtChave": "T2L MG 01 400425",
					"status": 400,
					"errorCode": "000006",
					"message": "Não foi informado algum dos campos obrigatórios: 'codRelogioExtChave', 'codFuncMsa', 'codPisMsa', 'datMarcacAces', 'numHorarMarcacAces', 'codRep', 'codUnidExtChave' ou 'codUsuarExtChave'."
				},
				{
					"codRelogioExtChave": "",
					"codFuncMsa": "400426",
					"codNsr": 2,
					"codPisMsa": "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.

...