Árvore de páginas

Versões comparadas

Chave

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

...

Totvs custom tabs box
tabsMenu,Navegação,Dicionário Protheus,Informações Técnicas APIs
idsmenu,naveg,dicionario,tech
Totvs custom tabs box items
defaultyes
referenciamenu

Menu - Rotina GPEM929


Primeiro, devemos adicionar a nova tela ao menu.

Como sugestão, posicionar dentro do menu Miscelânea no módulo SIGAGPE → Cadastrar o grupo 'Integração Ahgora' e o item 'Integração'


Grupo



Novo Item 'Integração' com a rotina GPEM929 dentro do grupo 'Integração Ahgora'



Clicar em Gerar, preencher com SIGAGPE e clicar em Gerar

Totvs custom tabs box items
defaultno
referencianaveg

Navegação e Opções em tela


Ao acessar o novo menu criado, abre-se uma nova tela.

Nessa nova tela, será exibido o menu para integração dos funcionários, afastamentos e exclusões dos afastamento com a Ahgora

Image Added


Deck of Cards
idIntegracaoAhgora
Card
idIntegAhgoraLista
labelIntegração Funcionário
  • Integração dos funcionários

Inicialmente a tela abre vazia esperando que sejam informados os filtros.

Na tela inicial o filtro é genérico com filial, admissão de/até e qual status da integração deseja filtrar.

Para mais filtros, é necessário acessar a opção de 'Filtros Avançados'

Apresentação das Informações

Ao aplicarmos os filtros será apresentada a seguinte tela:

Lista de Funcionários

Ao obter a lista de funcionários, temos as colunas:

  • Status → Correspondente ao status do registro. 

          - Legenda verde, Tag 'NI' - Integrados

          - Legenda azul, Tag 'IN' - Não integrados

          - Legenda vermelha, Tag 'CI' - Com Inconsistências 

          - Legenda laranja, Tag 'AR' - Aguardando Retorno

          Image Removed

  • Matrícula Ahgora → Matrícula composta por Empresa + Filial + Matrícula do funcionário no GPE, campo RA_MAT;
  • Nome → Nome do funcionário, campo RA_NOME;
  • Dt. Admissão → Campo RA_ADMISSA;
  • Dt. Demissão → Campo RA_DEMISSA;
  • Turno → Turno do funcionário, campo RA_TNOTRAB;
  • Função → Função do funcionário, campo RA_CODFUNC;
  • Movimento → Inclusão/Alteração;
  • Dt. Movimento → Data da movimentação;


Como sugestão, a 'Data Admissão De' vem preenchida com um mês anterior que a data atual e a 'Data Admissão Até' com a data atual.

Filtros de 'Filial' e 'Data Admissão De' são obrigatórios. 

Image Added


Filtro 'Filial' aceita multivalores 

Image Added

Image Added


Na opção de 'Filtros Avançados', é possível realizar mais alguns filtros específicos além dos filtros já apresentados na primeira tela.

Image Added

Image Added

Image Added


Selecionando os filtros na tela de filtros avançados ou na tela inicial, e ao clicar no botão 'Aplicar Filtros', o sistema buscará as informações dos funcionários.

Apresentação das Informações

Ao aplicarmos os filtros será apresentada a seguinte tela:

Lista de Funcionários

Ao obter a lista de funcionários, temos as colunas:

  • Status → Correspondente ao status do registro. 

          - Legenda verde, Tag 'NI' - Integrados

          - Legenda azul, Tag 'IN' - Não integrados

          - Legenda vermelha, Tag 'CI' - Com Inconsistências 

          - Legenda laranja, Tag 'AR' - Aguardando Retorno

          Image Added

  • Matrícula Ahgora → Matrícula composta por Empresa + Filial + Matrícula do funcionário no GPE, campo RA_MAT;
  • Nome → Nome do funcionário, campo RA_NOME;
  • Dt. Admissão → Campo RA_ADMISSA;
  • Dt. Demissão → Campo RA_DEMISSA;
  • Turno → Turno do funcionário, campo RA_TNOTRAB;
  • Função → Função do funcionário, campo RA_CODFUNC;
  • Movimento → Inclusão/Alteração;
  • Dt. Movimento → Data da movimentação;


Serão listados 100 registros por página, ao final da página será mostrado o botão para carregar mais resultados.

Image Added

Image Added


Selecionando um registro para integração.

Image Added


Ao integrar o registro, se ocorrer tudo certo, o registro será alterado para 'Aguardando Retorno'.

Image Added


Com o registro com status com legenda laranja, 'Aguardando Retorno', será necessário atualizar o status para que seja feita a consulta com o sistema Ahgora, para que possamos saber se o registro foi aceito ou não.

Image Added


Image Added


Ao final da atualização do status, o registro será alterado, nesse caso alterou para 'IN' - Integrado, ou seja, o registro foi integrado com sucesso.

Image Added



Registro com erro fica com a legenda em vermelho, e você pode consultar o erro, na opção status que está localizada ao clicar nos 3 pontinhoa na parte direita da tabela.

Image Added


Image Added

Status

Nesse caso, o retorno do erro para o registro foi o E-mail já cadastrado, erro esse enviado pela Ahgora, ou seja, ela não aceitou o registro, pois o e-mail já está cadastrado em outro funcionário.

Image Added


Consulta lote

A segunda opção é a consulta do lote de envio para o ahgora.

Ao abrir a tela do lote, é possível salvar o arquivo .json.

Image Added



Aviso
titleImportante
  • Atualizar Status só irá consultar registros com
Aviso
titleImportante
  • Atualizar status só irá consultar registros co status 'AR' - Aguardando retorno;
  • Botão Integrar funcionários só ficará habilitado quando houver registro selecionado;
  • Registros com status 'AR' - Aguardando retorno e 'IN' - Integrados, não serão integrados novamente, para integrar novamente um registro já integrado, ele precisará sofrer alguma alteração no cadastro;
  • Opção de consultar lote só estará disponível para registros com status diferente de 'NI' - Não integrados;
  • Após integração, a consulta do retorno com o sistema da Ahgora fica disponível por 1 hora, ou seja, é de extrema importância que após a integração, seja feita a consulta do status para obter o retorno; 
Card
idIntegAhgoraAfast
labelIntegração Afastamento



Card
idIntegAhgoraExclu
labelIntegração Exclusão Afastamento


Totvs custom tabs box items
defaultno
referenciadicionario

Dicionário


Totvs custom tabs box items
defaultno
referenciatech

Informações Técnicas da API

Este detalhamento tem como objetivo registrar os endpoints da interface da integração com Ahgora, desenvolvida utilizando PO-UI.


Deck of Cards
idIntegracaoAhgora
Card
idIntegAhgoraLista
labelIntegração Funcionário

Objetivo: Busca dos dados para listagem dos funcionários e envio dos funcionários selecionados para o back-end.


Tipo de requisição: GET/POST

Endpoint: /api/rh/v1/ahgora/funcionarios


Get:

Query Params:

Nome

Descrição

Tipo

Obrigatório

Exemplo

page

Número da página

number

Sim

1

pageSize

Tamanho da página

number

Sim

100

dataAdmissaoDe

Data de Admissão De

string

Sim

"2023-01-02T16:37:02-03:00"

dataAdmissaoAte

Data de demissão do funcionário Até

string

Não

"2024-01-02T16:37:02-03:00"

branchCode

Filial (Multi Valores separados por vírgula)

string

Sim

“D MG 01,D MG 02”

matCode

Matrícula De

string

Não

000001

matCodeAte

Matrícula Até

string

Não

000004

situacao

Situação do funcionário (Multi Valores separados por vírgula)

string

Não

N,A

categoria

Categoria do funcionário (Multi Valores separados por vírgula)

string

Não

M,E

tipostatus

Tipo do status (Multi Valores separados por vírgula)

string

Não

0,6

codCC

Centro de custo De 

string

Não

001

codCCAte

Centro de Custo Até

string

Não

001

codFuncao

Função De

string

Não

001

codFuncaoAte

Função Até

string

Não

001

codDepto

Departamento De

string

Não

000000061

codDeptoAte

Departamento Até

string

Não

000000061

turnoCode

Turno De

string

Não

001

turnoCodeAte

Turno Até

string

Não

001


Estrutura de Retorno:

Campo

Tipo

Exemplo

statusAhgora(obrigatório)

string

NI(Não Integrado), IN(Integrado), CI(Com inconsistência), AR(Aguardando retorno)

matricula(obrigatório)

string

0101000001

dataAdmissao(obrigatório)

string

2024-01-01

dataDemissao

string

""

escala_padrao

string

001

cargo

string

001 - BIOMEDICO ASSIST. II

departamento

string

001 - Departamento RH

centroCusto

string

001 - CC Tecnologia 

codInterno(obrigatório)

string

01|01|040924

tpMovimento(obrigatório)

string

I(Inclusão), A(Alteração)

dtMovimento(obrigatório)

string

2024-09-05


Exemplo de Requisição:

GET: api/rh/v1/ahgora/funcionarios?page=1&pageSize=100&dataAdmissaoDe=2024-01-01T17:29:41-03:00&dataAdmissaoAte=2024-09-05T17:29:41-03:00&branchCode=01,02&situacao=

N,A&categoria=M,E&tipostatus=0,6&codCC=001%20%20%20%20%20%20&codCCAte=001%20%20%20%20%20%20&codFuncao=001%20%20&codFuncaoAte=001%20%20&turnoCode=001&turnoCodeAte=001

Se atentar com a paginação.

Expandir
titleExemplo de retorno

{
  "items": [
      {
          "statusAhgora": "NI",
          "matricula": "0101040924",
          "nome": "John Doe",
          "dataAdmissao": "2024-01-01",
          "dataDemissao": "",
          "escala_padrao": "001",
          "cargo": "001 - BIOMEDICO ASSIST. II",
          "departamento": "",
          "centroCusto": "001 - CC Tecnologia da Informac",
          "codInterno": "01|01|040924",
          "tpMovimento": "I",
          "dtMovimento": "2024-09-05"
      },
      {
          "statusAhgora": "NI",
          "matricula": "0101999557",
          "nome": "Jane Doe",
          "dataAdmissao": "2024-01-01",
          "dataDemissao": "",
          "escala_padrao": "001",
          "cargo": "001 - BIOMEDICO ASSIST. II",
          "departamento": "",
          "centroCusto": "001 - CC Tecnologia da Informac",
          "codInterno": "01|01|999557",
          "tpMovimento": "I",
          "dtMovimento": "2024-09-05"
      }
  ],
  "hasNext": false
}


Post: /api/rh/v1/ahgora/funcionarios

Nome

Descrição

Tipo

Obrigatório

Exemplo

codInterno

Código interno do funcionário

string

Sim

01|01|210824

dtMovimento

Data do movimento

string

Sim

2024-09-05

tpMovimento

Tipo do movimento

string

Sim

I(Inclusão)


A partir do filtro realizado, ao clicar em integrar funcionário, os dados serão enviados para o back-end.

Expandir
titleExemplo do post

{
  "items":
  [
    {
      "codInterno":"01|01|210824",
      "tpMovimento":"I",
      "dtMovimento":"2024-09-05"
    }
  ]
}


Com os dados postados, o back-end se encarregará de montar o body para requisição de envio para o Ahgora: https://api.ahgora.com.br/people

Expandir
titleExemplo de envio para Ahgora

[
  {
    "matricula": "0101210824",
    "nome": "John Doe",
    "pis": "",
    "matricula_esocial": "010121082420240821162913      ",
    "dataAdmissao": "2024-01-01",
    "dataDemissao": "",
    "localizacoes": "",
    "escala_padrao": "001",
    "lastChangeDefaultSchedule": "",
    "tipo_escala": "",
    "ctps": "       ",
    "cargo": "001 - BIOMEDICO ASSIST. II",
    "departamento": "",
    "sexo": "M",
    "email": "                                                  ",
    "cpf": "           ",
    "rg": "               ",
    "cnpj": "53113791000122",
    "dataCnpj": "",
    "centroCusto": "001",
    "regimeTrabalho": "CLT",
    "dataNascimento": "1990-01-01",
    "dataCargo": "",
    "carga_horaria": 220,
    "bate_ponto": "Ponto Obrigatorio",
    "data_troca_elegibilidade_ponto": "2024-01-01",
    "matricula_chefia": "",
    "nome_chefia": "",
    "email_chefia": "",
    "codSindicato": "01",
    "dataCodSindicato": "",
    "telefone": "                    ",
    "sem_pis": true,
    "codInterno": "01|01|210824",
    "matricula_anterior": ""
  }
]


Retorno do código unique de processamento retornado pela Ahgora

Expandir
titleRertorno do unique criado pela Ahgora

{
  "company":"a148176",
  "message":"Employee's Integration on progress",
  "unique":"b6ca283f"
}


Devolver o retorno para o POUI com o status da integração para que seja atualizado a lista, nesse caso 'AR' (Aguardando retorno), pois ainda não foi feita a consulta do unique.

Estrutura de Retorno:

Campo

Tipo

Exemplo

codInterno

string

01|01|210824

statusAhgora

string

AR

Expandir
titleRertorno da integração para o POUI

{
  "items":
  [
    {
      "codInterno":"01|01|210824",
      "statusAhgora":"AR"
      }
  ]
}

Card documentos
InformacaoCom o código unique em mãos, será necessário consultar o status do processamento na Ahgora. Pode ser feito após o envio antes do retorno para o POUI ou através do botão 'Atualizar Status' que está disponível na tela
TituloImportante


Para o retorno de erro, seguir a estrutura abaixo.

Campo

Tipo

code

number

message

string

detailedMessage

string

type

string (“error”, “warning”, “success”)

Expandir
titleExemplo de retorno

{
    "code": 500,
    "detailedMessage": "",
    "message": "Internal Server Error",
    "type": "error"
}

Card
idIntegAhgoraAfast
labelIntegração Afastamento

Objetivo: Busca dos dados para listagem dos afastamentos e envio dos afastamentos selecionados para o back-end.


Tipo de requisição: GET/POST

Endpoint: /api/rh/v1/ahgora/afastamentos


Get:

Query Params:

Nome

Descrição

Tipo

Obrigatório

Exemplo

page

Número da página

number

Sim

1

pageSize

Tamanho da página

number

Sim

100

dataAfastDe

Data Afastamento De

string

Sim

"2019-01-02T16:37:02-03:00"

dataAfastAte

Data Afastamento Até

string

Não

"2024-01-02T16:37:02-03:00"

branchCode

Filial (Multi Valores separados por vírgula)

string

Sim

"01,02"

matCode

Matrícula De

string

Não

000004

matCodeAte

Matrícula Até

string

Não

000004

situacao

Situação do funcionário (Multi Valores separados por vírgula)

string

Não

N,A

categoria

Categoria do funcionário (Multi Valores separados por vírgula)

string

Não

M,E

tipostatus

Tipo do status (Multi Valores separados por vírgula)

string

Não

0,6

codCC

Centro de custo De 

string

Não

001

codCCAte

Centro de Custo Até

string

Não

001

codFuncao

Função De

string

Não

001

codFuncaoAte

Função Até

string

Não

001

codDepto

Departamento De

string

Não

000000061

codDeptoAte

Departamento Até

string

Não

000000061

turnoCode

Turno De

string

Não

001

turnoCodeAte

Turno Até

string

Não

001


Estrutura de Retorno:

Campo

Tipo

Exemplo

statusAhgora(obrigatório)

string

NI(Não Integrado), IN(Integrado), CI(Com inconsistência), AR(Aguardando retorno)

matricula(obrigatório)

string

0101000001

nome

string

John Doe

motivo

string

004 - Afastamento Temporário por Doença

inicio

string

2019-01-01

fim

string

2019-01-02

cod_interno(obrigatório)

string

01.01.000004.001

tpMovimento(obrigatório)

string

I(Inclusão)

dtMovimento(obrigatório)

string

2024-09-06


Exemplo de Requisição:

GET: api/rh/v1/ahgora/afastamentos?page=1&pageSize=100&dataAfastDe=2000-01-01T08:39:02-03:00&dataAfastAte=2024-09-06T08:39:02-03:00&branchCode=01&

matCode=&matCodeAte=&situacao=&categoria=&tipostatus=&codCC=&codCCAte=&codFuncao=&codFuncaoAte=&codDepto=&codDeptoAte=&turnoCode=&turnoCodeAte=

Se atentar com a paginação.

Expandir
titleExemplo de retorno

{
  "items": [
      {
          "statusAhgora": "NI",
          "matricula": "0101000004",
          "nome": "John Doe",
          "motivo": "004 - Afastamento Temporário por Doença",
          "inicio": "2019-01-01",
          "fim": "2019-01-02",
          "cod_interno": "01.01.000004.001",
          "tpMovimento": "I",
          "dtMovimento": "2024-09-06"
      },
      {
          "statusAhgora": "NI",
          "matricula": "0101000962",
          "nome": "John Doe",
          "motivo": "004 - Afastamento Temporário por Doença",
          "inicio": "2023-01-01",
          "fim": "2023-01-02",
          "cod_interno": "01.01.000962.003",
          "tpMovimento": "I",
          "dtMovimento": "2024-09-06"
      }
  ],
  "hasNext": true
}


Post: /api/rh/v1/ahgora/afastamentos

Nome

Descrição

Tipo

Obrigatório

Exemplo

cod_interno

Código interno do afastamento

string

Sim

01.01.000004.001

dtMovimento

Data do movimento

string

Sim

2024-09-06

tpMovimento

Tipo do movimento

string

Sim

I(Inclusão)


A partir do filtro realizado, ao clicar em integrar afastamento, os dados serão enviados para o back-end.

Expandir
titleExemplo do post

{
  "items":
  [
    {
      "cod_interno":"01.01.000004.001",
      "tpMovimento":"I",
      "dtMovimento":"2024-09-06"
    }
  ]
}


Com os dados postados, o back-end se encarregará de montar o body para requisição de envio para o Ahgora: https://api.ahgora.com.br/absences

Obs* Caso não exista data fim, enviar uma fictícia, exemplo: 31/12/2099 

Expandir
titleExemplo de envio para Ahgora

[
  {
    "matricula": "0101000004",
    "motivo": "004",
    "inicio": "2019-01-01",
    "fim": "2019-01-02",
    "cod_interno": "01.01.000004.001",
    "operation": "INS"
  }
]


Retorno do código unique de processamento retornado pela Ahgora

Expandir
titleRertorno do unique criado pela Ahgora

{
  "company":"a148176",
  "message":"Employee's Integration on progress",
  "unique":"c5ga345h"
}


Devolver o retorno para o POUI com o status da integração para que seja atualizado a lista, nesse caso 'AR' (Aguardando retorno), pois ainda não foi feita a consulta do unique.

Estrutura de Retorno:

Campo

Tipo

Exemplo

codInterno

string

01.01.000004.001

statusAhgora

string

AR

Expandir
titleRertorno da integração para o POUI

{
  "items":
  [
    {
      "codInterno":"01.01.000004.001",
      "statusAhgora":"AR"
    }
  ]
}

Card documentos
InformacaoCom o código unique em mãos, será necessário consultar o status do processamento na Ahgora. Pode ser feito após o envio antes do retorno para o POUI ou através do botão 'Atualizar Status' que está disponível na tela
TituloImportante


Para o retorno de erro, seguir a estrutura abaixo.

Campo

Tipo

code

number

message

string

detailedMessage

string

type

string (“error”, “warning”, “success”)

Expandir
titleExemplo de retorno

{
    "code": 500,
    "detailedMessage": "",
    "message": "Internal Server Error",
    "type": "error"
}

Card
idIntegAhgoraExclu
labelIntegração Exclusão Afastamento

Objetivo: Busca dos dados para listagem dos afastamentos excluídos e envio dos afastamentos excluídos selecionados para o back-end.


Tipo de requisição: GET/POST

Endpoint: /api/rh/v1/ahgora/afastamentos/exclusao


Get:

Query Params:

Nome

Descrição

Tipo

Obrigatório

Exemplo

page

Número da página

number

Sim

1

pageSize

Tamanho da página

number

Sim

100

dataExcDe

Data Exclusão De

string

Sim

"2019-01-02T16:37:02-03:00"

dataExcAte

Data Exclusão Até

string

Não

"2024-01-02T16:37:02-03:00"

branchCode

Filial (Multi Valores separados por vírgula)

string

Sim

"01,02"

matCode

Matrícula De

string

Não

000002

matCodeAte

Matrícula Até

string

Não

000002

situacao

Situação do funcionário (Multi Valores separados por vírgula)

string

Não

N,A

categoria

Categoria do funcionário (Multi Valores separados por vírgula)

string

Não

M,E

tipostatus

Tipo do status (Multi Valores separados por vírgula)

string

Não

0,6

codCC

Centro de custo De 

string

Não

001

codCCAte

Centro de Custo Até

string

Não

001

codFuncao

Função De

string

Não

001

codFuncaoAte

Função Até

string

Não

001

codDepto

Departamento De

string

Não

000000061

codDeptoAte

Departamento Até

string

Não

000000061

turnoCode

Turno De

string

Não

001

turnoCodeAte

Turno Até

string

Não

001


Estrutura de Retorno:

Campo

Tipo

Exemplo

statusAhgora(obrigatório)

string

NI(Não Integrado), IN(Integrado), CI(Com inconsistência), AR(Aguardando retorno)

matricula(obrigatório)

string

0101000001

nome

string

John Doe

motivo

string

004 - Afastamento Temporário por Doença

inicio

string

2019-01-01

fim

string

2019-01-02

cod_interno(obrigatório)

string

01.01.000004.001

tpMovimento(obrigatório)

string

E(Inclusão)

dtMovimento(obrigatório)

string

2024-09-06


Exemplo de Requisição:

GET: api/rh/v1/ahgora/afastamentos/exclusao?page=1&pageSize=100&dataExcDe=2000-01-01T09:03:57-03:00&dataExcAte=2024-09-06T09:03:57-03:00&

branchCode=01&matCode=&matCodeAte=&situacao=&categoria=&tipostatus=&codCC=&codCCAte=&codFuncao=&codFuncaoAte=&codDepto=&codDeptoAte=&turnoCode=&turnoCodeAte=

Se atentar com a paginação.

Expandir
titleExemplo de retorno

{
  "items": [
      {
          "statusAhgora": "NI",
          "matricula": "0101000002",
          "nome": "Jane Doe",
          "motivo": "004 - Afastamento Temporário por Doença",
          "inicio": "2024-08-01",
          "fim": "2024-08-10",
          "cod_interno": "01.01.000002.001",
          "tpMovimento": "E",
          "dtMovimento": "2024-08-29"
      }
  ],
  "hasNext": false
}


Post:  /api/rh/v1/ahgora/afastamentos/exclusao

Nome

Descrição

Tipo

Obrigatório

Exemplo

cod_interno

Código interno do afastamento

string

Sim

01.01.000002.001

dtMovimento

Data do movimento

string

Sim

2024-08-29

tpMovimento

Tipo do movimento

string

Sim

E(Exclusão)


A partir do filtro realizado, ao clicar em integrar afastamento, os dados serão enviados para o back-end.

Expandir
titleExemplo do post

{
  "items":
  [
    {
      "cod_interno":"01.01.000002.001",
      "tpMovimento":"E",
      "dtMovimento":"2024-08-29"
    }
  ]
}


Com os dados postados, o back-end se encarregará de montar o body para requisição de envio para o Ahgora: https://api.ahgora.com.br/absences 

Expandir
titleExemplo de envio para Ahgora

Poderá ser enviado dessa forma

[
  {
    "matricula": "0101000002",
    "motivo": "004",
    "inicio": "2024-08-01",
    "fim": "2024-08-10",
    "cod_interno": "01.01.000002.001",
    "operation": "DEL"
  }
]


Ou enviar apenas o código interno e a operação

 [
  {
    "cod_interno": "01.01.000002.001",
    "operation": "DEL"
  }
]


Retorno do código unique de processamento retornado pela Ahgora

Expandir
titleRertorno do unique criado pela Ahgora

{
  "company":"a148176",
  "message":"Employee's Integration on progress",
  "unique":"d6jb378d"
}


Devolver o retorno para o POUI com o status da integração para que seja atualizado a lista, nesse caso 'AR' (Aguardando retorno), pois ainda não foi feita a consulta do unique.

Estrutura de Retorno:

Campo

Tipo

Exemplo

codInterno

string

01.01.000002.001

statusAhgora

string

AR

Expandir
titleRertorno da integração para o POUI

{
  "items":
  [
    {
      "codInterno":"01.01.000002.001",
      "statusAhgora":"AR"
    }
  ]
}

Card documentos
InformacaoCom o código unique em mãos, será necessário consultar o status do processamento na Ahgora. Pode ser feito após o envio antes do retorno para o POUI ou através do botão 'Atualizar Status' que está disponível na tela
TituloImportante


Para o retorno de erro, seguir a estrutura abaixo.

Campo

Tipo

code

number

message

string

detailedMessage

string

type

string (“error”, “warning”, “success”)

Expandir
titleExemplo de retorno

{
    "code": 500,
    "detailedMessage": "",
    "message": "Internal Server Error",
    "type": "error"
}

Card
idstatus
labelStatus/Consulta
Totvs custom tabs box items
defaultno
referenciastatus
Deck of Cards
idStatus/Consulta
Card
idstatus
labelAtualizar Status

Objetivo: Obter o status da integração


Tipo de requisição: POST

Endpoint: /api/rh/v1/ahgora/status/

Query Params:

Campo

Descrição

Tipo

Obrigatório

Exemplo

cApi

Tipo da API: 1-People; 2-Absences;

string

SIM

1


Ao selecionar os registros com status 'Aguardando retorno' e clicar no botão atualizar Status, os registros serão enviados para o back-end.

Exemplo de Requisição:

POST: api/rh/v1/ahgora/status/?cApi=1

Expandir
titleExemplo do post

{
  "items": [
   {
    "codInterno":"01|01|000002"
   }
  ]
}


POST: api/rh/v1/ahgora/status/?cApi=2

Expandir
titleExemplo de retorno

{
  "items":
  [
   {
    "codInterno":"01.01.000002.001"
   }
  ]
}


Com o código interno em mãos, será necessário encontrar o código unique gravado anteriormente para fazer o get na API da Ahgora:  https://api.ahgora.com.br/v2/process/?unique=0b8ef0cc

Retorno do status da Ahgora para o unique pesquisado.

Veja que nesse caso o retorno veio com 2 erros, que devem ser gravados para posterior consulta na tela.

Os erros precisam ser gravados separados por pipe quando existir mais de um, exemplo: Centro de custo inválido | CNPJ inválido

Expandir
titleRertorno do status da integração pela Ahgora

{
  "data": {
    "errors": [
      {
        "identifier": "0101000004",
        "message": [
          "Centro de custo inválido",

          "CNPJ inválido"

        ]
      }
    ]
  },
  "company": "a148176",
  "unique": "0b8ef0cc",
  "status": "error",
  "progress": {
    "done": "1",
    "total": "1"
  }
}


Estrutura de Retorno para o POUI:

Campo

Tipo

codInterno

string

statusAhgora

string


Como o retorno está com inconsistência, devolvo com status 'CI'

Expandir
titleExemplo de retorno

{
  "items": [
    {
      "codInterno":  "01.01.000004.001",
      "statusAhgora":"CI"
      }
    ]
}


Para o retorno de erro, seguir a estrutura abaixo.

Campo

Tipo

code

number

message

string

detailedMessage

string

type

string (“error”, “warning”, “success”)

Expandir
titleExemplo de retorno

{
    "code": 500,
    "detailedMessage": "",
    "message": "Internal Server Error",
    "type": "error"
}

Card
idregistro
labelStatus do registro

Objetivo: Consulta status do registro com inconsistência posicionado na linha


Tipo de requisição: GET

Endpoint: /api/rh/v1/ahgora/status/:codInterno

Query Params:

Campo

Descrição

Tipo

Obrigatório

Exemplo

cApi

Tipo da API: 1-People; 2-Absences;

string

SIM

1


Estrutura de Retorno:

Campo

Tipo

status

string


Exemplo de Requisição:

GET: api/rh/v1/ahgora/status/010100004?cApi=1

Buscamos o status do registro com inconsistência, no retorno da Ahgora caso exista mais de um erro deve ser separado por pipe conforme explicado na seção 'Atualizar Status'

Expandir
titleExemplo de retorno

{
  "items": [
    {
      "status":"Centro de custo inválido | CNPJ inválido"
      }
    ]
  }


O pipe é necessário para a quebra de linha e visualização em tela conforme imagem abaixo.

Obs* A numeração é feita pelo POUI.


Para o retorno de erro, seguir a estrutura abaixo.

Campo

Tipo

code

number

message

string

detailedMessage

string

type

string (“error”, “warning”, “success”)

Expandir
titleExemplo de retorno

{
    "code": 500,
    "detailedMessage": "",
    "message": "Internal Server Error",
    "type": "error"
}

Card
idlote
labelConsulta Lote

Objetivo: Consulta do lote de envio


Tipo de requisição: GET

Endpoint: /api/rh/v1/ahgora/lote/:codInterno

Query Params:

Campo

Descrição

Tipo

Obrigatório

Exemplo

cApi

Tipo da API: 1-People; 2-Absences;

string

SIM

2


Estrutura de Retorno:

Campo

Tipo

lote

string

data

string

hora

string


Exemplo de Requisição:

GET: api/rh/v1/ahgora/lote/01.01.125803.001?cApi=2

Passamos o código interno do funcionário e o tipo da API para que possam encontrar o lote salvo anteriormente para o registro.

Expandir
titleExemplo de retorno

{
  "items": [
      {
          "lote": "[{\"matricula\": \"0101125803\",\"motivo\": \"001\",\"inicio\": \"2024-01-29\",\"fim\": \"2024-02-17\",\"cod_interno\": \"01.01.125803.001\",\"operation\": \"INS\"}]",
          "data": "2024-08-30",
          "hora": "19:44:02"
      }
  ]
}


Para o retorno de erro, seguir a estrutura abaixo.

Campo

Tipo

code

number

message

string

detailedMessage

string

type

string (“error”, “warning”, “success”)

Expandir
titleExemplo de retorno

{
    "code": 500,
    "detailedMessage": "",
    "message": "Internal Server Error",
    "type": "error"
}



Card
idfiltros
labelFiltros
Totvs custom tabs box items
defaultno
referenciafiltros
Deck of Cards
idFiltros
Card
idbranches
labelBranches

Objetivo: Listagem de Filiais 


Tipo de requisição: GET

Endpoint: /api/rh/v1/ahgora/branches

Query Params:

Campo

Descrição

Tipo

Obrigatório

Exemplo

page

Número da página

number

SIM

1

pageSize

Tamanho da página

numer

SIM

50

filter

Campo automático do lookup. Pode filtrar o código ou nome da filial

string

Não

“Filial X”


Estrutura de Retorno:

Para conseguirmos abranger todas as áreas, utilizamos a nomenclatura abaixo.

Campo

Tipo

branchCode

string

branchName

string


Exemplo de Requisição:

GET: api/rh/v1/ahgora/branches?filter=&page=1&pageSize=50

Expandir
titleExemplo de retorno

{
  "items": [
      {
          "branchCode": "01",
          "branchName": "Matriz"
      },
      {
          "branchCode": "02",
          "branchName": "Suporte-Suporte"
      },
      {
          "branchCode": "03",
          "branchName": "Santos"
      },
      {
          "branchCode": "04",
          "branchName": "São Vicente"
      }
  ],
  "hasNext": false
}


É possível também digitar no campo sem entrar no lookup para buscar uma filial.

Get: api/rh/v1/ahgora/branches/01

Expandir
titleExemplo de retorno

{
  "items": [
      {
          "branchCode": "01",
          "branchName": "Matriz"
      }
  ]
}


Para o retorno de erro, seguir a estrutura abaixo.

Campo

Tipo

code

number

message

string

detailedMessage

string

type

string (“error”, “warning”, “success”)

Expandir
titleExemplo de retorno

{
    "code": 500,
    "detailedMessage": "",
    "message": "Internal Server Error",
    "type": "error"
}

Card
idmatricula
labelMatrícula

Objetivo: Listagem das Matrículas


Tipo de requisição: GET

Endpoint: /api/rh/v1/ahgora/matricula

Query Params:

Campo

Descrição

Tipo

Obrigatório

Exemplo

page

Número da página

number

SIM

1

pageSize

Tamanho da página

numer

SIM

50

filter

Campo automático do lookup. Pode filtrar a matrícula

string

Não

“Matrícula X”

branchCode

Código da filial que está no filtro

string

Não

04


Obs* O filtro da filial é obrigatório, ele vai estar no filtro da matrícula caso queira retornar apenas as matrículas das filiais selecionadas.


Estrutura de Retorno:

Para conseguirmos abranger todas as áreas, utilizamos a nomenclatura abaixo.

Campo

Tipo

branchCode

string

branchName

string


Exemplo de Requisição:

GET: api/rh/v1/ahgora/matricula?filter=&page=1&pageSize=50&branchCode=04 

Expandir
titleExemplo de retorno

Como passei a filial 04 que está no filtro, optei por carregar apenas matrículas dessa filial

{
  "items": [
      {
          "filMat": "04",
          "matCode": "000001",
          "matName": "John Doe"
      },
      {
          "filMat": "04",
          "matCode": "152062",
          "matName": "Jane Doe"
      }
  ],
  "hasNext": false
}


Para o retorno de erro, seguir a estrutura abaixo.

Campo

Tipo

code

number

message

string

detailedMessage

string

type

string (“error”, “warning”, “success”)

Expandir
titleExemplo de retorno

{
    "code": 500,
    "detailedMessage": "",
    "message": "Internal Server Error",
    "type": "error"
}

Card
idturno
labelTurno

Objetivo: Listagem dos Turnos


Tipo de requisição: GET

Endpoint: /api/rh/v1/ahgora/turno

Query Params:

Campo

Descrição

Tipo

Obrigatório

Exemplo

page

Número da página

number

SIM

1

pageSize

Tamanho da página

numer

SIM

50

filter

Campo automático do lookup. Pode filtrar o turno

string

Não

“Turno X”

branchCode

Código da filial que está no filtro

string

Não

02


Obs* O filtro da filial é obrigatório, ele vai estar no filtro do turno caso queira retornar apenas os turnos das filiais selecionadas.


Estrutura de Retorno:

Campo

Tipo

filTurno

string

turnoCode

string

turnoDesc

string


Exemplo de Requisição:

GET: api/rh/v1/ahgora/turno?filter=&page=1&pageSize=50&branchCode=02

Expandir
titleExemplo de retorno

Como passei a filial 02 que está no filtro, optei por carregar apenas os turnos dessa filial

{
  "items": [
      {
          "filTurno": "02",
          "turnoCode": "001",
          "turnoDesc": "001"
      }
  ],
  "hasNext": false
}


Para o retorno de erro, seguir a estrutura abaixo.

Campo

Tipo

code

number

message

string

detailedMessage

string

type

string (“error”, “warning”, “success”)

Expandir
titleExemplo de retorno

{
    "code": 500,
    "detailedMessage": "",
    "message": "Internal Server Error",
    "type": "error"
}

Card
idccusto
labelCentro de Custo

Objetivo: Listagem dos Centros de Custo


Tipo de requisição: GET

Endpoint: /api/rh/v1/ahgora/ccusto

Query Params:

Campo

Descrição

Tipo

Obrigatório

Exemplo

page

Número da página

number

SIM

1

pageSize

Tamanho da página

numer

SIM

50

filter

Campo automático do lookup. Pode filtrar o C.Custo

string

Não

“CCusto X”

branchCode

Código da filial que está no filtro

string

Não

02


Obs* O filtro da filial é obrigatório, ele vai estar no filtro do centro de custo caso queira retornar apenas os centros de custo das filiais selecionadas.


Estrutura de Retorno:

Campo

Tipo

filCC

string

codCC

string

ccDesc

string


Exemplo de Requisição:

GET: api/rh/v1/ahgora/ccusto?filter=&page=1&pageSize=10&branchCode=02

Expandir
titleExemplo de retorno

Como a tabela de Centro de Custo é compartilhada, mesmo com a filial, eu retorno todos

{
  "items": [
      {
          "filCC": "  ",
          "codCC": "000000003",
          "ccDesc": "03"
      },
      {
          "filCC": "  ",
          "codCC": "000000010",
          "ccDesc": "010"
      },
      {
          "filCC": "  ",
          "codCC": "000000022",
          "ccDesc": "22"
      },
      {
          "filCC": "  ",
          "codCC": "00001    ",
          "ccDesc": "TESTE TITULO"
      },
      {
          "filCC": "  ",
          "codCC": "012      ",
          "ccDesc": "CONC 012"
      }
  ],
  "hasNext": true
}


Para o retorno de erro, seguir a estrutura abaixo.

Campo

Tipo

code

number

message

string

detailedMessage

string

type

string (“error”, “warning”, “success”)

Expandir
titleExemplo de retorno

{
    "code": 500,
    "detailedMessage": "",
    "message": "Internal Server Error",
    "type": "error"
}

Card
idfuncao
labelFunção

Objetivo: Listagem das Funções


Tipo de requisição: GET

Endpoint: /api/rh/v1/ahgora/funcao

Query Params:

Campo

Descrição

Tipo

Obrigatório

Exemplo

page

Número da página

number

SIM

1

pageSize

Tamanho da página

numer

SIM

50

filter

Campo automático do lookup. Pode filtrar o C.Custo

string

Não

“Funcao X”

branchCode

Código da filial que está no filtro

string

Não

02


Obs* O filtro da filial é obrigatório, ele vai estar no filtro da função caso queira retornar apenas as funções das filiais selecionadas.


Estrutura de Retorno:

Campo

Tipo

filFuncao

string

codFuncao

string

funcaoDesc

string


Exemplo de Requisição:

GET: api/rh/v1/ahgora/funcao?filter=&page=1&pageSize=10&branchCode=02

Expandir
titleExemplo de retorno

Como passei a filial 02 que está no filtro, optei por carregar apenas as funções dessa filial

{
  "items": [
      {
          "filFuncao": "02",
          "codFuncao": "00001",
          "funcaoDesc": "CP038"
      },
      {
          "filFuncao": "02",
          "codFuncao": "00002",
          "funcaoDesc": "65456"
      }
  ],
  "hasNext": false
}


Para o retorno de erro, seguir a estrutura abaixo.

Campo

Tipo

code

number

message

string

detailedMessage

string

type

string (“error”, “warning”, “success”)

Expandir
titleExemplo de retorno

{
    "code": 500,
    "detailedMessage": "",
    "message": "Internal Server Error",
    "type": "error"
}

Card
iddepto
labelDepartamento

Objetivo: Listagem dos Departamentos


Tipo de requisição: GET

Endpoint: /api/rh/v1/ahgora/departamento

Query Params:

Campo

Descrição

Tipo

Obrigatório

Exemplo

page

Número da página

number

SIM

1

pageSize

Tamanho da página

numer

SIM

50

filter

Campo automático do lookup. Pode filtrar o C.Custo

string

Não

“Funcao X”

branchCode

Código da filial que está no filtro

string

Não

02


Obs* O filtro da filial é obrigatório, ele vai estar no filtro da função caso queira retornar apenas os departamentos das filiais selecionadas.


Estrutura de Retorno:

Campo

Tipo

filDepto

string

codDepto

string

deptoDesc

string


Exemplo de Requisição:

GET: api/rh/v1/ahgora/departamento?filter=&page=1&pageSize=10&branchCode=02

Expandir
titleExemplo de retorno

Como passei a filial 02 que está no filtro, optei por carregar apenas os departamentos dessa filial

{
  "items": [
      {
          "filDepto": "02",
          "codDepto": "000000060",
          "deptoDesc": "DEP MAT 002042"
      },
      {
          "filDepto": "02",
          "codDepto": "000000061",
          "deptoDesc": "DEP DELETADO"
      },
      {
          "filDepto": "02",
          "codDepto": "0002     ",
          "deptoDesc": "Depto Vendas"
      }
  ],
  "hasNext": false
}


Para o retorno de erro, seguir a estrutura abaixo.

Campo

Tipo

code

number

message

string

detailedMessage

string

type

string (“error”, “warning”, “success”)

Expandir
titleExemplo de retorno

{
    "code": 500,
    "detailedMessage": "",
    "message": "Internal Server Error",
    "type": "error"
}

Card
idsitcateg
labelSituação/Categoria

Objetivo: Listagem da situação do funcionário e categoria


Tipo de requisição: GET

Endpoint: /api/rh/v1/ahgora/opcoes

Query Params:

Campo

Descrição

Tipo

Obrigatório

Exemplo

tipo

Tipo da Busca: 1-Categora, 2-Situação

string

Sim

1

filter

Campo automático do lookup. Pode filtrar a situação

string

Não

“Mensalista”


Obs* Embora esteja sendo passado o tipo, sempre será retornado os dois conjuntos de dados na requisição, estou usando o tipo para validação na busca individual no lookup.


Estrutura de Retorno:

Para o retorno, utilizamos a forma abaixo.

Campo

Tipo

label

string

value

string


Exemplo de Requisição:

GET api/rh/v1/ahgora/opcoes?filter=&tipo=1 ou api/rh/v1/ahgora/opcoes?filter=&tipo=2

O retorno precisa ser uma lista com a propriedade 'opcoes', com os dois arrays 'SitOptions' para a situação e 'catOptions' para as categorias.

Expandir
titleExemplo de retorno

{
  "opcoes": {
      "sitOptions": [
          {
              "value": "N",
              "label": "SITUACAO NORMAL"
          },
          {
              "value": "A",
              "label": "AFASTADO TEMP."
          },
          {
              "value": "D",
              "label": "DEMITIDO"
          },
          {
              "value": "F",
              "label": "FERIAS"
          },
          {
              "value": "T",
              "label": "TRANSFERIDO"
          }
      ],
      "catOptions": [
          {
              "value": "A",
              "label": "AUTONOMO"
          },
          {
              "value": "H",
              "label": "HORISTA"
          },
          {
              "value": "M",
              "label": "MENSALISTA"
          },
          {
              "value": "P",
              "label": "PRO-LABORE"
          },
          {
              "value": "S",
              "label": "SEMANALISTA"
          }
      ]
  }
}


Para o retorno de erro, seguir a estrutura abaixo.

Campo

Tipo

code

number

message

string

detailedMessage

string

type

string (“error”, “warning”, “success”)

Expandir
titleExemplo de retorno

{
    "code": 500,
    "detailedMessage": "",
    "message": "Internal Server Error",
    "type": "error"
}

...