Páginas filhas
  • Totvs - Dashboard RH - Ponto Eletrônico

Versões comparadas

Chave

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


Contexto de negócio

Cada vez mais o mercado exige que as operações complexas de dados sejam ainda mais ágeis e com custos reduzidos. Com o RH não é diferente, os processos cada vez mais complexos e com muitas variáveis a serem analisadas no que tange as informações do ponto eletrônico os profissionais de RH precisam de agilidade na hora de controlar processos funcionais da empresa.

Com essa necessidade e a importância desta área dentro da empresa, surgiu a necessidade da criação de um produto que possibilite a visualização de indicadores de funcionários que realizam o ponto eletrônico e marcações integradas com o Clock In. Para isso foi desenvolvido o Dashboard RH. Nele estarão presentes 8 indicadores no total, sendo eles:

  1. Total de funcionários que utilizam o ponto eletrônico
  2. Total de funcionários com o ponto completo
  3. Total de funcionários com o ponto incompleto
  4. Total de funcionários sem marcações
  5. Total de marcações no Clock In
  6. Total de marcações integradas
  7. Total de marcações pendentes de integração
  8. Total de Marcações sem NSR no Clock In


Pré requisitos, configuração serviço REST

(Acesse a documentação aqui)

API

No total foram desenvolvidas 6 APIs para atender o Dashboard, sendo elas:
1 - DbHrBranches para listar as filiais que serão utilizadas no filtro.
2 - DbHrManagers para listar os gestores que serão utilizados no filtro.
3 - DbHrAttendanceControl para trazer os indicadores do ponto dos funcionários.
4 - DbHrClockin para trazer as marcações do Clock In e seus status referente a intregração com o Clock In.
5 - DbHrEmail para o envio do e-mail contendo as informações do Dashboard.
6 - DbHrGetExcel para gerar uma planilha do Excel 

Totvs custom tabs box
tabsFiliais,Gestores,Controle do Ponto ERP,Integração Clock In, E-mail
idsfiliais,gestores,ponto,clockin,email
Totvs custom tabs box items
defaultyes
referenciafiliais

Filiais - api/rh/v1/DbHrBranches

API responsável por trazer todas as filiais para serem utilizadas no filtro do Dashboard RH. Assim será possível ter uma visão macro da empresa ou apenas de uma filial em específico.

Ativação/Desativação da API

Por padrão esta API estará no sistema, porém será necessário realizar a devida configuração do serviço REST.

Controle de Ambiente

Exige que os seguintes pontos sejam revisados:

  • Protheus com sua arquitetura devidamente estruturada.

Controle de Versão

O grupo TOTVS, representado por suas marcas, irá administrar as demandas de evolução dos layouts e demais ajustes, acordando junto aos solicitantes o prazo de liberação de release.

Todas as evoluções programadas deverão ser discutidas e aprovadas pelas marcas antes do início do desenvolvimento e somente serão desenvolvidas em caso de concordância da linha Protheus.

Suporte

O suporte aos recursos da API será de responsabilidade da linha Protheus onde será analisada pela equipe de suporte da Totvs.

Fluxo das Informações

Esta API traz a funcionalidade exclusivamente para consultar todas as filiais cadastradas para serem utilizadas no filtro do Dashboard RH.

Cadastro

Esta API contempla apenas a consulta das filiais cadastradas.

Processos

O Dashboard RH realizará o consumo da API para buscar todas as filiais.

Como realizar a chamada da API REST

  • Preenchimento do EndPoint da API PONAPIDSB;
  • Utilizar a chamada do método Get e do Serviço api/rh/v1/DbHrBranches;

Internamente o Protheus identifica automaticamente o endereço do servidor REST, porém para que isso aconteça será necessário habilitar a porta multiprotocolo do Appserver. Para mais informações sobre a porta multiprotocolo acesse o link abaixo:
https://tdn.totvs.com/x/jIUoI

Formatos de Data

Por ser uma API que retorna todas as filiais, não existe qualquer parâmetro que precisa ser enviado.


Parâmetros e Chamada do Método:

Para a realização de testes foi utilizado a ferramenta Postman e após a configuração do server protheus a API Rest, a requisição deverá ser semelhante a imagem abaixo:

{protocolo}://{host}:{porta}/{endereço Rest}/api/rh/v1/DbHrBranches

Response da API:

Application/json
{
    "branches": [
        "D MG 01 ",
        "D MG 02 ",
        "D RJ 01 ",
        "D RJ 02 ",
        "M PR 01 ",
        "M PR 02 ",
        "M SP 01 ",
        "M SP 02 ",
        "M SP 03 "
    ]
}

Totvs custom tabs box items
defaultno
referenciagestores

Filiais - api/rh/v1/DbHrManagers

API responsável por trazer todos os gestores para serem utilizadas no filtro do Dashboard RH. Assim será possível realizar filtros dos funcionários separados por gestor ou gestores.

Ativação/Desativação da API

Por padrão esta API estará no sistema, porém será necessário realizar a devida configuração do serviço REST.

Controle de Ambiente

Exige que os seguintes pontos sejam revisados:

  • Protheus com sua arquitetura devidamente estruturada.

Controle de Versão

O grupo TOTVS, representado por suas marcas, irá administrar as demandas de evolução dos layouts e demais ajustes, acordando junto aos solicitantes o prazo de liberação de release.

Todas as evoluções programadas deverão ser discutidas e aprovadas pelas marcas antes do início do desenvolvimento e somente serão desenvolvidas em caso de concordância da linha Protheus.

Suporte

O suporte aos recursos da API será de responsabilidade da linha Protheus onde será analisada pela equipe de suporte da Totvs.

Fluxo das Informações

Esta API traz a funcionalidade exclusivamente para consultar todos os gestores cadastrados para serem utilizadas no filtro do Dashboard RH.

Cadastro

Esta API contempla apenas a consulta dos gestores cadastrados.

Processos

O Dashboard RH realizará o consumo da API para buscar todos os gestores.

Como realizar a chamada da API REST

  • Preenchimento do EndPoint da API PONAPIDSB;
  • Utilizar a chamada do método Get e do Serviço api/rh/v1/DbHrManagers;

Internamente o Protheus identifica automaticamente o endereço do servidor REST, porém para que isso aconteça será necessário habilitar a porta multiprotocolo do Appserver. Para mais informações sobre a porta multiprotocolo acesse o link abaixo:
https://tdn.totvs.com/x/jIUoI

Formatos de Data

Por ser uma API que retorna todos os gestores, não existe qualquer parâmetro que precisa ser enviado.


Parâmetros e Chamada do Método:

Para a realização de testes foi utilizado a ferramenta Postman e após a configuração do server protheus a API Rest, a requisição deverá ser semelhante a imagem abaixo:

{protocolo}://{host}:{porta}/{endereço Rest}/api/rh/v1/DbHrManagers

Response da API:

Application/json
{

    "managers": [
        "GESTOR FINANCEIRO D MG (D MG 01  - 000001)",
        "GESTOR RH M SP (M SP 01  - 000001)",
        "GESTOR TI D MG (D MG 01  - 000002)"
    ]
}

Para que o Dashboard consigo localizar corretamente os funcionários que percentem à um gestor é necessário informar a filial e matrícula (separados por espaço + "-" + espaço) dos gestores entre parênteses. Exemplo: Gestor A (M SP 01 - 000001), Gestor B (M SP 01 - 000002) e Gestor C (M SP 01 - 000003)

Totvs custom tabs box items
defaultno
referenciaponto

Ponto Completo e Incompleto - api/rh/v1/DbHrAttendanceControl

API responsável por retornar o total de funcionários, funcionários com o ponto completo, incompleto e sem marcações, que não foram demitidos antes do período selecionado ou os funcionários demitidos dentro do período selecionado. Basicamente esta API irá verificar a quantidade de marcações realizadas no período pelo funcionário e irá validar com a quantidade em que o funcionário deveria realizar de acordo com o seu turno. Por exemplo um funcionário precisa realizar a marcação do ponto 4 vezes ao dia (entrada jornada, saída para o almoço, volta do almoço e saída da jornada). Na semana o funcionário trabalha de segunda à sexta, então teremos 5 dias trabalhados, onde cada dia o funcionário precisa bater o ponto 4 vezes, totalizando 20 marcações na semana. Se o funcionário possuir 20 ou mais marcações o sistema irá contabilizar como ponto completo, caso o funcionário tenha menos de 20 marcações na semana, será considerado como ponto incompleto.

Observação: O dia da demissão do funcionário contará como dia trabalhado, caso o funcionário seja demitido no dia 19/08/2022 e o filtro do período é de 01/08/2022 à 19/08/2022, a quantidade de marcações do dia 19/08/2022 será contabilizado normalmente.

Ativação/Desativação da API

Por padrão esta API estará no sistema, porém será necessário realizar a devida configuração do serviço REST.

Controle de Ambiente

Exige que os seguintes pontos sejam revisados:

  • Protheus com sua arquitetura devidamente estruturada.

Controle de Versão

O grupo TOTVS, representado por suas marcas, irá administrar as demandas de evolução dos layouts e demais ajustes, acordando junto aos solicitantes o prazo de liberação de release.

Todas as evoluções programadas deverão ser discutidas e aprovadas pelas marcas antes do início do desenvolvimento e somente serão desenvolvidas em caso de concordância da linha Protheus.

Suporte

O suporte aos recursos da API será de responsabilidade da linha Protheus onde será analisada pela equipe de suporte da Totvs.

Fluxo das Informações

Esta API traz a funcionalidade exclusivamente para trazer o total de funcionários, funcionários que estão com o ponto completo, incompleto e sem marcações

Cadastro

Esta API contempla as consultas do cadastro de funcionários, turnos, tabela de horário padrão e marcações realizadas pelo funcionários.

Processos

O Dashboard RH realizará o consumo da API para buscar e exibir a quantidade total de funcionários, funcionários que estão com o ponto completo, incompleto e sem marcações

Como realizar a chamada da API REST

  • Preenchimento do EndPoint da API PONAPIDSB;
  • Utilizar a chamada do método Post e do Serviço api/rh/v1/DbHrAttendanceControl;
  • Preenchimento dos parâmetros obrigatórios da API;

Internamente o Protheus identifica automaticamente o endereço do servidor REST, porém para que isso aconteça será necessário habilitar a porta multiprotocolo do Appserver. Para mais informações sobre a porta multiprotocolo acesse o link abaixo:
https://tdn.totvs.com/x/jIUoI

Formatos de Data

As Entradas de dados tipo data(Date) acompanham o formato padrão YYYY-MM-DD

Parâmetros de Entrada:

ParâmetroValor de ExemploObrigatórioTipoParâmetroDescrição
startDate 2022-11-01SimDateBodyData inicial do período.
endDate2022-11-11SimDateBodyData final do período.
branches["D MG 01"]
["D MG 01","M SP 01"]
["todas"]
SimArrayBodyFiltro da filial.

managers

["GESTOR FINANCEIRO D MG (D MG 01 - 000001)"]
["GESTOR FINANCEIRO D MG (D MG 01 - 000001)","GESTOR RH M SP (M SP 01 - 000001)"]
["todos"]





accept

application/json

SimStringHeader

content-type

application/json

SimStringHeader


Parâmetros e Chamada do Método:

Para a realização de testes foi utilizado a ferramenta Postman e após a configuração do server protheus a API Rest, a requisição deverá ser semelhante a imagem abaixo:

{protocolo}://{host}:{porta}/{endereço Rest}/api/rh/v1/DbHrAttendanceControl

Response da API:

Application/json

Bloco de código
titleResposta API
{
    "1": {
        "branch": "Todas as Filiais",
        "totalEmployees": 9,
        "totalDetails": [
            {
                "branch": "D MG 01 ",
                "registration": "000003",
                "name": "DASH PNT COMPLETO FINANCEIRO",
                "department": "FINANCEIRO                    ",
                "manager": "GESTOR FINANCEIRO D MG        ",
                "managerId": "D MG 01  - 000001"
            },
            {
                "branch": "D MG 01 ",
                "registration": "000004",
                "name": "DASH PNT INCOMPLET FINANCEIRO",
                "department": "FINANCEIRO                    ",
                "manager": "GESTOR FINANCEIRO D MG        ",
                "managerId": "D MG 01  - 000001"
            },
            {
                "branch": "D MG 01 ",
                "registration": "000005",
                "name": "DASH PNT SEM MARC FINANCEIRO",
                "department": "FINANCEIRO                    ",
                "manager": "GESTOR FINANCEIRO D MG        ",
                "managerId": "D MG 01  - 000001"
            },
            {
                "branch": "D MG 01 ",
                "registration": "000006",
                "name": "DASH PNT COMPLETO TI",
                "department": "TI                            ",
                "manager": "GESTOR TI D MG                ",
                "managerId": "D MG 01  - 000002"
            },
            {
                "branch": "D MG 01 ",
                "registration": "000007",
                "name": "DASH PNT INCOMPLETO TI",
                "department": "TI                            ",
                "manager": "GESTOR TI D MG                ",
                "managerId": "D MG 01  - 000002"
            },
            {
                "branch": "D MG 01 ",
                "registration": "000008",
                "name": "DASH PNT SEM MARC TI",
                "department": "TI                            ",
                "manager": "GESTOR TI D MG                ",
                "managerId": "D MG 01  - 000002"
            },
            {
                "branch": "M SP 01 ",
                "registration": "000002",
                "name": "DASH PNT COMPLETO RH",
                "department": "RH                            ",
                "manager": "GESTOR RH M SP                ",
                "managerId": "M SP 01  - 000001"
            },
            {
                "branch": "M SP 01 ",
                "registration": "000003",
                "name": "DASH PNT INCOMPLETO RH",
                "department": "RH                            ",
                "manager": "GESTOR RH M SP                ",
                "managerId": "M SP 01  - 000001"
            },
            {
                "branch": "M SP 01 ",
                "registration": "000004",
                "name": "DASH PNT SEM MARC RH",
                "department": "RH                            ",
                "manager": "GESTOR RH M SP                ",
                "managerId": "M SP 01  - 000001"
            }
        ],
        "clockMarkingsComplete": 3,
        "completeDetails": [
            {
                "branch": "D MG 01 ",
                "registration": "000003",
                "name": "DASH PNT COMPLETO FINANCEIRO  ",
                "department": "FINANCEIRO                    ",
                "manager": "GESTOR FINANCEIRO D MG        ",
                "managerId": "D MG 01  - 000001"
            },
            {
                "branch": "D MG 01 ",
                "registration": "000006",
                "name": "DASH PNT COMPLETO TI          ",
                "department": "TI                            ",
                "manager": "GESTOR TI D MG                ",
                "managerId": "D MG 01  - 000002"
            },
            {
                "branch": "M SP 01 ",
                "registration": "000002",
                "name": "DASH PNT COMPLETO RH          ",
                "department": "RH                            ",
                "manager": "GESTOR RH M SP                ",
                "managerId": "M SP 01  - 000001"
            }
        ],
        "clockMarkingsIncomplete": 3,
        "incompleteDetails": [
            {
                "branch": "D MG 01 ",
                "registration": "000004",
                "name": "DASH PNT INCOMPLET FINANCEIRO ",
                "department": "FINANCEIRO                    ",
                "manager": "GESTOR FINANCEIRO D MG        ",
                "dateTime": "05/01/2024",
                "reason": "Dia sem marcação",
                "estimated": "09:00 - 12:00 - 13:00 - 18:00",
                "performed": "",
                "managerId": "D MG 01  - 000001"
            },
            {
                "branch": "D MG 01 ",
                "registration": "000007",
                "name": "DASH PNT INCOMPLETO TI        ",
                "department": "TI                            ",
                "manager": "GESTOR TI D MG                ",
                "dateTime": "03/01/2024",
                "reason": "1 Marcação faltante",
                "estimated": "09:00 - 12:00 - 13:00 - 18:00",
                "performed": " 09:00  - 12:00  - 13:00                                                                            ",
                "managerId": "D MG 01  - 000002"
            },
            {
                "branch": "M SP 01 ",
                "registration": "000003",
                "name": "DASH PNT INCOMPLETO RH        ",
                "department": "RH                            ",
                "manager": "GESTOR RH M SP                ",
                "dateTime": "04/01/2024",
                "reason": "Dia sem marcação",
                "estimated": "08:00 - 13:00 - 14:00 - 17:00",
                "performed": "",
                "managerId": "M SP 01  - 000001"
            }
        ],
        "withoutClockMarkings": 3,
        "withoutDetails": [
            {
                "branch": "D MG 01 ",
                "registration": "000005",
                "name": "DASH PNT SEM MARC FINANCEIRO  ",
                "department": "FINANCEIRO                    ",
                "manager": "GESTOR FINANCEIRO D MG        ",
                "managerId": "D MG 01  - 000001"
            },
            {
                "branch": "D MG 01 ",
                "registration": "000008",
                "name": "DASH PNT SEM MARC TI          ",
                "department": "TI                            ",
                "manager": "GESTOR TI D MG                ",
                "managerId": "D MG 01  - 000002"
            },
            {
                "branch": "M SP 01 ",
                "registration": "000004",
                "name": "DASH PNT SEM MARC RH          ",
                "department": "RH                            ",
                "manager": "GESTOR RH M SP                ",
                "managerId": "M SP 01  - 000001"
            }
        ]
    },
    "2": {
        "branch": "D MG 01",
        "totalEmployees": 6,
        "totalDetails": [
            {
                "branch": "D MG 01 ",
                "registration": "000003",
                "name": "DASH PNT COMPLETO FINANCEIRO  ",
                "department": "FINANCEIRO                    ",
                "manager": "GESTOR FINANCEIRO D MG        ",
                "managerId": "D MG 01  - 000001"
            },
            {
                "branch": "D MG 01 ",
                "registration": "000006",
                "name": "DASH PNT COMPLETO TI          ",
                "department": "TI                            ",
                "manager": "GESTOR TI D MG                ",
                "managerId": "D MG 01  - 000002"
            },
            {
                "branch": "D MG 01 ",
                "registration": "000004",
                "name": "DASH PNT INCOMPLET FINANCEIRO ",
                "department": "FINANCEIRO                    ",
                "manager": "GESTOR FINANCEIRO D MG        ",
                "managerId": "D MG 01  - 000001"
            },
            {
                "branch": "D MG 01 ",
                "registration": "000007",
                "name": "DASH PNT INCOMPLETO TI        ",
                "department": "TI                            ",
                "manager": "GESTOR TI D MG                ",
                "managerId": "D MG 01  - 000002"
            },
            {
                "branch": "D MG 01 ",
                "registration": "000005",
                "name": "DASH PNT SEM MARC FINANCEIRO  ",
                "department": "FINANCEIRO                    ",
                "manager": "GESTOR FINANCEIRO D MG        ",
                "managerId": "D MG 01  - 000001"
            },
            {
                "branch": "D MG 01 ",
                "registration": "000008",
                "name": "DASH PNT SEM MARC TI          ",
                "department": "TI                            ",
                "manager": "GESTOR TI D MG                ",
                "managerId": "D MG 01  - 000002"
            }
        ],
        "clockMarkingsComplete": 2,
        "completeDetails": [
            {
                "branch": "D MG 01 ",
                "registration": "000003",
                "name": "DASH PNT COMPLETO FINANCEIRO  ",
                "department": "FINANCEIRO                    ",
                "manager": "GESTOR FINANCEIRO D MG        ",
                "managerId": "D MG 01  - 000001"
            },
            {
                "branch": "D MG 01 ",
                "registration": "000006",
                "name": "DASH PNT COMPLETO TI          ",
                "department": "TI                            ",
                "manager": "GESTOR TI D MG                ",
                "managerId": "D MG 01  - 000002"
            }
        ],
        "clockMarkingsIncomplete": 2,
        "incompleteDetails": [
            {
                "branch": "D MG 01 ",
                "registration": "000004",
                "name": "DASH PNT INCOMPLET FINANCEIRO ",
                "department": "FINANCEIRO                    ",
                "manager": "GESTOR FINANCEIRO D MG        ",
                "dateTime": "05/01/2024",
                "reason": "Dia sem marcação",
                "estimated": "09:00 - 12:00 - 13:00 - 18:00",
                "performed": "",
                "managerId": "D MG 01  - 000001"
            },
            {
                "branch": "D MG 01 ",
                "registration": "000007",
                "name": "DASH PNT INCOMPLETO TI        ",
                "department": "TI                            ",
                "manager": "GESTOR TI D MG                ",
                "dateTime": "03/01/2024",
                "reason": "1 Marcação faltante",
                "estimated": "09:00 - 12:00 - 13:00 - 18:00",
                "performed": " 09:00  - 12:00  - 13:00                                                                            ",
                "managerId": "D MG 01  - 000002"
            }
        ],
        "withoutClockMarkings": 2,
        "withoutDetails": [
            {
                "branch": "D MG 01 ",
                "registration": "000005",
                "name": "DASH PNT SEM MARC FINANCEIRO  ",
                "department": "FINANCEIRO                    ",
                "manager": "GESTOR FINANCEIRO D MG        ",
                "managerId": "D MG 01  - 000001"
            },
            {
                "branch": "D MG 01 ",
                "registration": "000008",
                "name": "DASH PNT SEM MARC TI          ",
                "department": "TI                            ",
                "manager": "GESTOR TI D MG                ",
                "managerId": "D MG 01  - 000002"
            }
        ]
    },
    "3": {
        "branch": "M SP 01",
        "totalEmployees": 3,
        "totalDetails": [
            {
                "branch": "M SP 01 ",
                "registration": "000002",
                "name": "DASH PNT COMPLETO RH          ",
                "department": "RH                            ",
                "manager": "GESTOR RH M SP                ",
                "managerId": "M SP 01  - 000001"
            },
            {
                "branch": "M SP 01 ",
                "registration": "000003",
                "name": "DASH PNT INCOMPLETO RH        ",
                "department": "RH                            ",
                "manager": "GESTOR RH M SP                ",
                "managerId": "M SP 01  - 000001"
            },
            {
                "branch": "M SP 01 ",
                "registration": "000004",
                "name": "DASH PNT SEM MARC RH          ",
                "department": "RH                            ",
                "manager": "GESTOR RH M SP                ",
                "managerId": "M SP 01  - 000001"
            }
        ],
        "clockMarkingsComplete": 1,
        "completeDetails": [
            {
                "branch": "M SP 01 ",
                "registration": "000002",
                "name": "DASH PNT COMPLETO RH          ",
                "department": "RH                            ",
                "manager": "GESTOR RH M SP                ",
                "managerId": "M SP 01  - 000001"
            }
        ],
        "clockMarkingsIncomplete": 1,
        "incompleteDetails": [
            {
                "branch": "M SP 01 ",
                "registration": "000003",
                "name": "DASH PNT INCOMPLETO RH        ",
                "department": "RH                            ",
                "manager": "GESTOR RH M SP                ",
                "dateTime": "04/01/2024",
                "reason": "Dia sem marcação",
                "estimated": "08:00 - 13:00 - 14:00 - 17:00",
                "performed": "",
                "managerId": "M SP 01  - 000001"
            }
        ],
        "withoutClockMarkings": 1,
        "withoutDetails": [
            {
                "branch": "M SP 01 ",
                "registration": "000004",
                "name": "DASH PNT SEM MARC RH          ",
                "department": "RH                            ",
                "manager": "GESTOR RH M SP                ",
                "managerId": "M SP 01  - 000001"
            }
        ]
    }
}

Observação

Caso os indicadores não possuam dados a serem exibido, será necessário enviar no retorno da API as propriedades da resposta com 0 e o detalhamento com um array vazio. Exemplo:

Bloco de código
{
    "1": {
        "branch": "Todas as Filiais",
        "totalEmployees": 0,
        "totalDetails": [],
        "clockMarkingsComplete": 0,
        "completeDetails": [],
        "clockMarkingsIncomplete": 0,
        "incompleteDetails": [],
        "withoutClockMarkings": 0,
        "withoutDetails": []
    },
    "2": {
        "branch": "Filial A",
        "totalEmployees": 0,
        "totalDetails": [],
        "clockMarkingsComplete": 0,
        "completeDetails": [],
        "clockMarkingsIncomplete": 0,
        "incompleteDetails": [],
        "withoutClockMarkings": 0,
        "withoutDetails": []
    },
    "3": {
        "branch": "Filial B",
        "totalEmployees": 0,
        "totalDetails": [],
        "clockMarkingsComplete": 0,
        "completeDetails": [],
        "clockMarkingsIncomplete": 0,
        "incompleteDetails": [],
        "withoutClockMarkings": 0,
        "withoutDetails": []
    }
}


Observação

Caso seja selecionada 2 ou mais filiais, a primeira posição da resposta obrigatoriamente será o totalizador, para a demais posições serão as filiais e suas informações.
Se for selecionado apenas 1 filial no filtro só haverá 1 posição na resposta da API.

Chamada API:

Possíveis situações no envio dos filtros de filiais

Bloco de código
titleTodas as filiais
{
    "startDate":"2024-01-01",
    "endDate":"2024-01-05",
    "branches":[
        "todas"
    ],
    "managers":[
        "todos"
    ]
}
Bloco de código
titleApenas 1 filial
{
    "startDate":"2024-01-01",
    "endDate":"2024-01-05",
    "branches":[
        "D MG 01"
    ],
    "managers":[
        "todos"
    ]
}
Bloco de código
title2 ou mais filiais
{
    "startDate":"2024-01-01",
    "endDate":"2024-01-05",
    "branches":[
        "D MG 01",
		"M SP 01"
    ],
    "managers":[
        "todos"
    ]
}

Observação

1 - Para o filtro de gestor, caso selecionado todos os gestores deverá ser retornado todos os funcionários, independemente se o funcionário possui ou não um gestor direto.
2 - Quando selecionado 1 ou mais gestores apenas os funcionários que respondem diretamente aos gestores selecionados deverão ser listados.
3 - Não há quebra dos indicadores separados por gestor, como existe a quebra por filial.

Possíveis situações no envio dos filtros de filiais

Bloco de código
titleTodos os Gestores
{
    "startDate":"2024-01-01",
    "endDate":"2024-01-05",
    "branches":[
        "todas"
    ],
    "managers":[
        "todos"
    ]
}




Bloco de código
titleApenas 1 gestor
{
    "startDate":"2024-01-01",
    "endDate":"2024-01-05",
    "branches":[
        "todas"
    ],
    "managers":[
		"GESTOR FINANCEIRO D MG (D MG 01 - 000001)"
	]
}




Bloco de código
title2 ou mais Gestores
{
    "startDate":"2024-01-01",
    "endDate":"2024-01-05",
    "branches":[
       "todas"
    ],
    "managers":[
		"GESTOR FINANCEIRO D MG (D MG 01 - 000001)",
		"GESTOR RH M SP (M SP 01 - 000001)"
    ]
}



Situações de Erros Tratados

O envio de dados inesperados nos parâmetros de entrada da API REST pode ocasionar alguns erros. Desta forma, foram criados alguns tratamentos de erros listados abaixo, cada um com sua respectiva mensagem e solução.

Mensagens de Pré-Validação

CódigoErroDetalhe

400

"Parâmetros inválidos: Verifique se os parâmetros startDate, endDate e filial foram enviados."


Totvs custom tabs box items
defaultno
referenciaclockin

Integrações Clock In - api/rh/v1/DbHrClockin

API responsável por retornar o total de marcações no Clock In, total de marcações integradas, total de marcações a serem integradas e o total de marcações sem NSR gerada.

Ativação/Desativação da API

Por padrão esta API estará no sistema, porém será necessário realizar a devida configuração do serviço REST.

Controle de Ambiente

Exige que os seguintes pontos sejam revisados:

  • Protheus com sua arquitetura devidamente estruturada.

Controle de Versão

O grupo TOTVS, representado por suas marcas, irá administrar as demandas de evolução dos layouts e demais ajustes, acordando junto aos solicitantes o prazo de liberação de release.

Todas as evoluções programadas deverão ser discutidas e aprovadas pelas marcas antes do início do desenvolvimento e somente serão desenvolvidas em caso de concordância da linha Protheus.

Suporte

O suporte aos recursos da API será de responsabilidade da linha Protheus onde será analisada pela equipe de suporte da Totvs.

Fluxo das Informações

Esta API traz a funcionalidade exclusivamente para trazer o total de funcionários que estão com o ponto completo e o total de funcionários com o ponto incompleto.

Cadastro

Esta API contempla as consultas de marcações do Clock In e marcações integradas com o ERP.

Processos

O Dashboard RH realizará o consumo da API para buscar e exibir a quantidade total de marcações no Clock In, total de marcações integradas, total de marcações a serem integradas e o total de marcações sem NSR gerada.

Como realizar a chamada da API REST

  • Preenchimento do EndPoint da API PONAPIDSB;
  • Utilizar a chamada do método Post e do Serviço api/rh/v1/DbHrClockin;
  • Preenchimento dos parâmetros obrigatórios da API;

Internamente o Protheus identifica automaticamente o endereço do servidor REST, porém para que isso aconteça será necessário habilitar a porta multiprotocolo do Appserver. Para mais informações sobre a porta multiprotocolo acesse o link abaixo:
https://tdn.totvs.com/x/jIUoI

Formatos de Data

As Entradas de dados tipo data(Date) acompanham o formato padrão YYYY-MM-DD

Parâmetros de Entrada:

ParâmetroValor de ExemploObrigatórioTipoParâmetroDescrição
startDate 2022-05-01SimDateBodyData inicial do período.
endDate2022-05-31SimDateBodyData final do período.
branches

["D MG 01"]
["D MG 01","M SP 01"]
["todas"]

SimArrayBodyFiltro da filial.

accept

application/json

SimStringHeader

content-type

application/json

SimStringHeader


Parâmetros e Chamada do Método:

Para a realização de testes foi utilizado a ferramenta Postman e após a configuração do server protheus a API Rest, a requisição deverá ser semelhante a imagem abaixo:

{protocolo}://{host}:{porta}/{endereço Rest}/api/rh/v1/DbHrClockin

Response da API:

Application/json

Bloco de código
titleResposta API
{
    "1": {
        "branch": "Todas",
        "totalClockMarkings": 7,
        "totalDetails": [
            {
                "cnpj": "99999999999999",
                "cpf": "44379500039",
                "pis": "61743152540",
                "branch": "Filial A",
                "name": "Func A",
                "device": "dispositivo A",
                "nsr": 1,
                "dateTime": "01/03/2023 09:00"
            },
            {
                "cnpj": "99999999999999",
                "cpf": "44379500039",
                "pis": "61743152540",
                "branch": "Filial A",
                "name": "Func A",
                "device": "dispositivo A",
                "nsr": 2,
                "dateTime": "01/03/2023 12:00"
            },
            {
                "cnpj": "99999999999999",
                "cpf": "44379500039",
                "pis": "61743152540",
                "branch": "Filial A",
                "name": "Func A",
                "device": "dispositivo A",
                "nsr": 3,
                "dateTime": "01/03/2023 13:00"
            },
            {
                "cnpj": "99999999999999",
                "cpf": "44379500039",
                "pis": "61743152540",
                "branch": "Filial A",
                "name": "Func A",
                "device": "dispositivo A",
                "nsr": 0,
                "dateTime": "01/03/2023 18:00"
            },
            {
                "cnpj": "99999999999999",
                "cpf": "88888888888",
                "pis": "77777777777",
                "branch": "Filial B",
                "name": "Func B",
                "device": "dispositivo B",
                "nsr": 1,
                "dateTime": "01/03/2023 09:00"
            },
            {
                "cnpj": "99999999999999",
                "cpf": "88888888888",
                "pis": "77777777777",
                "branch": "Filial B",
                "name": "Func B",
                "device": "dispositivo B",
                "nsr": 2,
                "dateTime": "01/03/2023 12:00"
            },
            {
                "cnpj": "99999999999999",
                "cpf": "88888888888",
                "pis": "77777777777",
                "branch": "Filial B",
                "name": "Func B",
                "device": "dispositivo B",
                "nsr": 0,
                "dateTime": "01/03/2023 13:00"
            }
        ],
        "totalIntegrated": 3,
        "integratedDetails": [
            {
                "cnpj": "99999999999999",
                "cpf": "44379500039",
                "pis": "61743152540",
                "branch": "Filial A",
                "name": "Func A",
                "device": "dispositivo A",
                "nsr": 1,
                "dateTime": "01/03/2023 09:00"
            },
            {
                "cnpj": "99999999999999",
                "cpf": "44379500039",
                "pis": "61743152540",
                "branch": "Filial A",
                "name": "Func A",
                "device": "dispositivo A",
                "nsr": 2,
                "dateTime": "01/03/2023 12:00"
            },
            {
                "cnpj": "99999999999999",
                "cpf": "88888888888",
                "pis": "77777777777",
                "branch": "Filial B",
                "name": "Func B",
                "device": "dispositivo B",
                "nsr": 1,
                "dateTime": "01/03/2023 09:00"
            }
        ],
        "totalToBeIntegrated": 2,
        "toBeIntegratedDetails": [
            {
                "cnpj": "99999999999999",
                "cpf": "44379500039",
                "pis": "61743152540",
                "branch": "Filial A",
                "name": "Func A",
                "device": "dispositivo A",
                "nsr": 3,
                "dateTime": "01/03/2023 13:00"
            },
            {
                "cnpj": "99999999999999",
                "cpf": "88888888888",
                "pis": "77777777777",
                "branch": "Filial B",
                "name": "Func B",
                "device": "dispositivo B",
                "nsr": 2,
                "dateTime": "01/03/2023 12:00"
            }
        ],
        "totalWhitoutNSR": 2,
        "whitoutNsrDetails": [
            {
                "cnpj": "99999999999999",
                "cpf": "44379500039",
                "pis": "61743152540",
                "branch": "Filial A",
                "name": "Func A",
                "device": "dispositivo A",
                "nsr": 0,
                "dateTime": "01/03/2023 18:00"
            },
            {
                "cnpj": "99999999999999",
                "cpf": "88888888888",
                "pis": "77777777777",
                "branch": "Filial B",
                "name": "Func B",
                "device": "dispositivo B",
                "nsr": 0,
                "dateTime": "01/03/2023 18:00"
            }
        ]
    },
    "2": {
        "branch": "Filial A",
        "totalClockMarkings": 4,
        "totalDetails": [
            {
                "cnpj": "99999999999999",
                "cpf": "44379500039",
                "pis": "61743152540",
                "branch": "Filial A",
                "name": "Func A",
                "device": "dispositivo A",
                "nsr": 1,
                "dateTime": "01/03/2023 09:00"
            },
            {
                "cnpj": "99999999999999",
                "cpf": "44379500039",
                "pis": "61743152540",
                "branch": "Filial A",
                "name": "Func A",
                "device": "dispositivo A",
                "nsr": 2,
                "dateTime": "01/03/2023 12:00"
            },
            {
                "cnpj": "99999999999999",
                "cpf": "44379500039",
                "pis": "61743152540",
                "branch": "Filial A",
                "name": "Func A",
                "device": "dispositivo A",
                "nsr": 3,
                "dateTime": "01/03/2023 13:00"
            },
            {
                "cnpj": "99999999999999",
                "cpf": "44379500039",
                "pis": "61743152540",
                "branch": "Filial A",
                "name": "Func A",
                "device": "dispositivo A",
                "nsr": 0,
                "dateTime": "01/03/2023 18:00"
            }
        ],
        "totalIntegrated": 2,
        "integratedDetails": [
            {
                "cnpj": "99999999999999",
                "cpf": "44379500039",
                "pis": "61743152540",
                "branch": "Filial A",
                "name": "Func A",
                "device": "dispositivo A",
                "nsr": 1,
                "dateTime": "01/03/2023 09:00"
            },
            {
                "cnpj": "99999999999999",
                "cpf": "44379500039",
                "pis": "61743152540",
                "branch": "Filial A",
                "name": "Func A",
                "device": "dispositivo A",
                "nsr": 2,
                "dateTime": "01/03/2023 12:00"
            }
        ],
        "totalToBeIntegrated": 1,
        "clockMarkings": [
            {
                "cnpj": "99999999999999",
                "cpf": "44379500039",
                "pis": "61743152540",
                "branch": "Filial A",
                "name": "Func A",
                "device": "dispositivo A",
                "nsr": 3,
                "dateTime": "01/03/2023 13:00"
            }
        ],
        "totalWhitoutNSR": 1,
        "whitoutNsrDetails": [
            {
                "cnpj": "99999999999999",
                "cpf": "44379500039",
                "pis": "61743152540",
                "branch": "Filial A",
                "name": "Func A",
                "device": "dispositivo A",
                "nsr": 0,
                "dateTime": "01/03/2023 18:00"
            }
        ]
    },
    "3": {
        "branch": "Filial B",
        "totalClockMarkings": 3,
        "totalDetails": [
            {
                "cnpj": "99999999999999",
                "cpf": "88888888888",
                "pis": "77777777777",
                "branch": "Filial B",
                "name": "Func B",
                "device": "dispositivo B",
                "nsr": 1,
                "dateTime": "01/03/2023 09:00"
            },
            {
                "cnpj": "99999999999999",
                "cpf": "88888888888",
                "pis": "77777777777",
                "branch": "Filial B",
                "name": "Func B",
                "device": "dispositivo B",
                "nsr": 2,
                "dateTime": "01/03/2023 12:00"
            },
            {
                "cnpj": "99999999999999",
                "cpf": "88888888888",
                "pis": "77777777777",
                "branch": "Filial B",
                "name": "Func B",
                "device": "dispositivo B",
                "nsr": 0,
                "dateTime": "01/03/2023 13:00"
            }
        ],
        "totalIntegrated": 1,
        "integratedDetails": [
            {
                "cnpj": "99999999999999",
                "cpf": "88888888888",
                "pis": "77777777777",
                "branch": "Filial B",
                "name": "Func B",
                "device": "dispositivo B",
                "nsr": 1,
                "dateTime": "01/03/2023 09:00"
            }
        ],
        "totalToBeIntegrated": 1,
        "toBeIntegratedDetails": [
            {
                "cnpj": "99999999999999",
                "cpf": "88888888888",
                "pis": "77777777777",
                "branch": "Filial B",
                "name": "Func B",
                "device": "dispositivo B",
                "nsr": 2,
                "dateTime": "01/03/2023 12:00"
            }
        ],
        "totalWhitoutNSR": 1,
        "whitoutNsrDetails": [
            {
                "cnpj": "99999999999999",
                "cpf": "88888888888",
                "pis": "77777777777",
                "branch": "Filial B",
                "name": "Func B",
                "device": "dispositivo B",
                "nsr": 0,
                "dateTime": "01/03/2023 13:00"
            }
        ]
    }
}

Observação

Caso os indicadores não possuam dados a serem exibido, será necessário enviar no retorno da API as propriedades da resposta com 0 e o detalhamento com um array vazio. Exemplo:

Bloco de código
{
    "1": {
        "branch": "Todas as Filiais",
        "totalClockMarkings": 0,
        "totalDetails": [],
        "totalIntegrated": 0,
        "integratedDetails": [],
        "totalToBeIntegrated": 0,
        "toBeIntegratedDetails": [],
        "totalWhitoutNSR": 0,
        "whitoutNsrDetails": []
    },
	"2": {
        "branch": "Filial A",
        "totalClockMarkings": 0,
        "totalDetails": [],
        "totalIntegrated": 0,
        "integratedDetails": [],
        "totalToBeIntegrated": 0,
        "toBeIntegratedDetails": [],
        "totalWhitoutNSR": 0,
        "whitoutNsrDetails": []
    },
	"3": {
        "branch": "Filial B",
        "totalClockMarkings": 0,
        "totalDetails": [],
        "totalIntegrated": 0,
        "integratedDetails": [],
        "totalToBeIntegrated": 0,
        "toBeIntegratedDetails": [],
        "totalWhitoutNSR": 0,
        "whitoutNsrDetails": []
    }
}


Observação

Caso seja selecionada 2 ou mais filiais, a primeira posição da resposta obrigatoriamente será o totalizador, para a demais posições serão as filiais e suas informações.
Se for selecionado apenas 1 filial no filtro só haverá 1 posição na resposta da API.

Chamada API:

Possíveis situações no envio dos filtros

Bloco de código
titleTodas as filiais
{
    "startDate":"2023-03-01",
    "endDate":"2023-03-31",
    "branches":[
        "todas"
    ]
}
Bloco de código
titleApenas 1 filial
{
    "startDate":"2023-03-01",
    "endDate":"2023-03-31",
    "branches":[
        "D MG 01"
    ]
}
Bloco de código
titleDuas ou mais filiais
{
    "startDate":"2023-03-01",
    "endDate":"2023-03-31",
    "branches":[
        "D MG 01",
        "M SP 01"
    ]
}

Situações de Erros Tratados

O envio de dados inesperados nos parâmetros de entrada da API REST pode ocasionar alguns erros. Desta forma, foram criados alguns tratamentos de erros listados abaixo, cada um com sua respectiva mensagem e solução.

Mensagens de Pré-Validação

CódigoErroDetalhe

400

"Parâmetros inválidos: Verifique se os parâmetros startDate, endDate e filial foram enviados."


Totvs custom tabs box items
defaultno
referenciaemail

Integrações Clock In - api/rh/v1/DbHrEmail

API responsável por enviar um e-mail com as informações do dashboard.

Ativação/Desativação da API

Por padrão esta API estará no sistema, porém será necessário realizar a devida configuração do serviço REST.

Controle de Ambiente

Exige que os seguintes pontos sejam revisados:

  • Protheus com sua arquitetura devidamente estruturada.

Controle de Versão

O grupo TOTVS, representado por suas marcas, irá administrar as demandas de evolução dos layouts e demais ajustes, acordando junto aos solicitantes o prazo de liberação de release.

Todas as evoluções programadas deverão ser discutidas e aprovadas pelas marcas antes do início do desenvolvimento e somente serão desenvolvidas em caso de concordância da linha Protheus.

Suporte

O suporte aos recursos da API será de responsabilidade da linha Protheus onde será analisada pela equipe de suporte da Totvs.

Fluxo das Informações

Esta API traz a funcionalidade exclusivamente para enviar as informações exibidas no Dashboard por e-mail.

Cadastro

Esta API contempla os resultados das informações exibidas no Dashboard, no caso o resultado das APIs anteriores. 

Processos

O Dashboard RH realizará o consumo da API para enviar um e-mail, contendo um HTML do Dashboard anexa.

Como realizar a chamada da API REST

  • Preenchimento do EndPoint da API PONAPIDSB;
  • Utilizar a chamada do método Post e do Serviço api/rh/v1/DbHrEmail;
  • Preenchimento dos parâmetros obrigatórios da API;

Internamente o Protheus identifica automaticamente o endereço do servidor REST, porém para que isso aconteça será necessário habilitar a porta multiprotocolo do Appserver. Para mais informações sobre a porta multiprotocolo acesse o link abaixo:
https://tdn.totvs.com/x/jIUoI

Formatos de Data

As Entradas de dados tipo data(Date) acompanham o formato padrão YYYY-MM-DD

Parâmetros de Entrada:

ParâmetroValor de ExemploObrigatórioTipoParâmetroDescrição

lastUpdate

09:31 (02/05/2023)SimStringBodyData da última atualizado do Dashboard.

startDate

2023-04-30SimDateBodyData Inicial do filtro.

endDate

2023-05-01SimDateBodyData final do filtro.
detailsdetails:
    details[1]:
        branch (String): "Indicadores de funcionários - Todas as Filiais"
        informations (Array):
            informations[1] (totalEmployees): 6
            informations[2] (clockMarkingsComplete): 2
            informations[3] (clockMarkingsIncomplete): 2
            informations[4] (withoutClockMarkings): 2
    details[2]:    
        branch (String): "Indicadores de marcações do Clock In - Todas as Filiais"
        informations (Array):
            informations[1] (totalClockMarkings): 10
            informations[2] (totalIntegrated): 6
            informations[3] (totalToBeIntegrated): 2
            informations[4] (totalWhitoutNSR): 2
    details[3]:
        branch (String): "Indicadores de funcionários - D MG 01"
        informations (Array):
            informations[1] (totalEmployees): 3
            informations[2] (clockMarkingsComplete): 1
            informations[3] (clockMarkingsIncomplete): 1
            informations[4] (withoutClockMarkings): 1
    details[4]:    
        branch (String): "Indicadores de marcações do Clock In - D MG 01"
        informations (Array):
            informations[1] (totalClockMarkings): 5
            informations[2] (totalIntegrated): 3
            informations[3] (totalToBeIntegrated): 1
            informations[4] (totalWhitoutNSR): 1
    details[5]:
        branch (String): "Indicadores de funcionários - M SP 01"
        informations (Array):
            informations[1] (totalEmployees): 3
            informations[2] (clockMarkingsComplete): 1
            informations[3] (clockMarkingsIncomplete): 1
            informations[4] (withoutClockMarkings): 1
    details[6]:    
        branch (String): "Indicadores de marcações do Clock In - M SP 01"
        informations (Array):
            informations[1] (totalClockMarkings): 5
            informations[2] (totalIntegrated): 3
            informations[3] (totalToBeIntegrated): 1
            informations[4] (totalWhitoutNSR): 1
SimArrayBodyArray com os números dos indicadores.

accept

application/json

SimStringHeader

content-type

application/json

SimStringHeader


Parâmetros e Chamada do Método:

Para a realização de testes foi utilizado a ferramenta Postman e após a configuração do server protheus a API Rest, a requisição deverá ser semelhante a imagem abaixo:

{protocolo}://{host}:{porta}/{endereço Rest}/api/rh/v1/DbHrEmail

Response da API:

Application/json
{
   "Response": "E-mail enviado com sucesso."
}

Situações de Erros Tratados

O envio de dado inesperado no parâmetro de entrada da API REST pode ocasionar alguns erros. Desta forma, foram criados alguns tratamentos de erros listados abaixo, cada um com sua respectiva mensagem e solução.

Mensagens de Pré-Validação

CódigoErroDetalhe

400

"Falha no envio do e-mail, verifique as configurações do sistema para o envio de e-mails."


401

"Parâmetros inválidos: Verifique se todos os parâmetros foram enviados corretamente."