@felipe-dietrich

Integração de Publicação da Escala Mensal Completa

A partir da versão 7.3.1.0 do Ponto Soft (solicitação 25475), foi previsto a integração da escala mensal completa, após a publicação no sistema Escala Jornadas.
Desta forma, o sistema Ponto Soft passa a receber, através de um Webhook da API do sistema externo a programação mensal de horários previstos, plantões e folgas de todos os colaboradores que trabalham em regime de escala e estão integrados entre si.

A documentação deste método externo pode ser consultada aqui.

Requisitos Ponto Soft: versão 7.3.1.0 ou superior. API insoft-escala-jornadas-api: versão 1.4.0 ou superior. Novas Configurações

A integração da escala mensal completa prevê o recebimento dirário de diverssos eventos, como um horário previsto, um descanso semanal remunerado, folgas programadas e até mesmo ausências planejadas, que atualmente já são integradas como eventos, em casos individuais e isolados.
Esta nova integração da escala mensal completa utiliza em partes a mesma configuração de eventos definida na tela PSW1430 - Integração Eventos com Escala Jornadas, conforme já demonstrado neste post anteior.

A parte adicional de configuração necessária é para a associação de determinados horários no Ponto Soft na aba de Permutas com os horários petencentes a mesma equipe de revezamento.
Isto é necessário para permitir receber a programação de horários previstos destas equipes que trabalham em regime de revezamento ou em turmas, como por exemplo, nos casos de escalas 12 x 36 horas, ou onde o plantão é alternado entre sábados e domingos, sendo necessário criar escalas alternadas no Ponto Soft e ao longo das semanas o colaborador é trocado de horário conforme o dia da escala que ele vai trabalhar.

Já o funcionamento do sistema Escala Jornadas é diferente do sistema Ponto Soft, pois no sistema externo eles cadastram apenas a escala base com os horários previstos e a sequência de dias trabalhados. Somente na hora de associar esta jornada ao colaborador é que se define do dia inicial do ciclo de repetição para este colaborador.

Diante desta situação, é necessário:

para cada equipe de revezamento deve ser eleito um dos horários do Ponto Soft como o horário base que será associado no sistema Escala Jornadas. para o código elegído acima, associar na tela PSW0270 - Cadastro de Horários de Trabalho, na aba "Permuta" todos os códigos de horários do Ponto que esta jornada poderá ser alternada. Exemplo Configuração de Permuta

Vamos supor que no Ponto Soft temos duas escalas para a mesma equipe de revezamento, o código 7315 para a turma 1 e o código 7316 para a turma 2.
db2e6802-0a1b-448e-98d3-72f4dd8c26f7-image.png

A diferença das duas jorandas é o ciclo da escala: No horário 7315 o descanso semanal e o plantão de 11 horas acontecem no sexto e sétimo dia, respectivamente e na semana seguinte isso é invertido.

Horário 7315

a4b512b4-fc9b-4853-bab2-e313a07888c7-image.png

Horário 7316

1e7c4a44-b448-4dad-881e-746a54e68c7d-image.png

Além destas duas jornadas acima, também podem existir situações onde o colaborador da equipe de revezamento precisa tirar o seu descanso semanal ou fazer o seu plantão de 11 horas no meio da semana, para cobrir uma folga de outro colaborador, por exemplo.
Para estas situações, são cadastradas "escalas avulsas" e associadas de forma isolda nos dias que isso acontece.

Horário 7099 - Plantão Avulso

44e92100-2e83-4591-8939-6c7fdad5b117-image.png

Horário 5099 - Folga Avulsa

232c2633-f509-4a0c-abb0-03e28e2d082d-image.png

Para permitir a integração com o Escala Jornadas destas situações, é necessário então eleger uma das duas jornadas que possuem o ciclo de repetição completo para ser associado os demais horários na aba de Permutas.
d65ca5fe-3912-486f-8847-fdcedc782510-image.png

No nosso exemplo, foi eleito o código de horário "7315" como jornada a ser cadastrada no sistema externo. Desta forma, sempre que um colaborador associado a esta jornada no sistema externo ocorrer o envio da escala mensal publicada ao Ponto Soft, o código da jornada enviado pela API será este código "7315", independente do horário previsto definido em cada dia. Com isto, será possível que a integração "encontre" a jornada prevista que se encaixe no horário inicial e final previsto recebido.

Escopo Técnico

Esta é a terceira entrega do projeto de integração entre Ponto Soft x Escalas Jornadas, com foco na recepção, processamento e aplicação da escala mensal publicada enviada via API, realizando a atualização automática das jornadas previstas e ocorrências no sistema de ponto.

Envio da Escala Mensal Publicada Endpoint:
sendMonthSchedulePublished Documentação API:
https://api-doc.jornadas.escala.app/#tag/Escalas/operation/sendMonthSchedulePublished Implementação na API "insoft-escala-jornadas-api" Novo método para: Receber os dados da Escala Mensal Publicada. Realizar o parse do payload recebido. Armazenar os dados recebidos em tabela temporária, no formato JSON. Retornar HTTP 200 após o processamento inicial. Após o recebimento: Os registros devem ser lidos da tabela temporária. Inseridos na tabela PONTEIROS_ESCALAS_PUBLICADAS. Os registros devem ser gravados com: SITUACAO = '1' DATA_REGISTRO = SYSDATE USUARIO = Usuário da aplicação Alterar método de callback de Evento para: Receber o novo atributo " working_day_type_external_id". Realizar o parse do payload recebido. Armazenar o novo atributo no campo cod_horario_ponto da tabela ponteiros_eventos_escalas. Endpoint:
sendEventCreated Documentação API:
https://api-doc.jornadas.escala.app/#tag/Eventos/operation/sendEventCreated Implementação no Banco de Dados Nova Tabela PONTEIROS_ESCALAS_PUBLICADAS | Coluna | Tipo | Opcional | Observação | |----------------------------|------------------|----------|-----------------------------------------------------------------------------| | ID | NUMBER(19) | Não | PK | | DATA_REGISTRO | DATE | Não | Data e hora de inclusão na tabela. | | ANO_ESCALA | NUMBER(4) | Não | Ano da escala. | | MES_ESCALA | NUMBER(2) | Não | Mês da escala. | | ID_ESCALA | NUMBER(10) | Não | Identificador da escala gerada. | | NOME_ESCALA | VARCHAR2(100) | Sim | Nome da escala gerada. | | DATA_EVENTO | DATE | Não | Data do evento na escala. | | ID_FUNCIONARIO_ESCALA | NUMBER(20) | Não | Identificador do funcionário no sistema de escala. | | COD_FUNCIONARIO | NUMBER(6) | Não | Código do funcionário no ponto. | | MATRICULA | NUMBER(10) | Não | Matrícula do funcionário. | | ID_EVENTO_ESCALA | NUMBER(20) | Não | Identificador do evento no sistema de escala. | | HORA_INICIAL | DATE | Sim | Hora inicial do evento. | | HORA_FINAL | DATE | Sim | Hora final do evento. | | COD_EVENTO_ESCALA | NUMBER(5) | Sim | Código do evento no sistema de escala. | | INDICA_AUSENCIA | VARCHAR2(1) | Sim | Indica se é uma ausência. | | COD_HORARIO_ESCALA | NUMBER(5) | Sim | Código do horário de trabalho no sistema de escala. | | COD_HORARIO_PONTO | NUMBER(5) | Sim | Código do horário de trabalho no sistema de ponto. | | COD_JORNADA_ESCALA | NUMBER(5) | Sim | Código da jornada que gerou o evento. | | DATA_HORA_CRIACAO_ESCALA | DATE | Não | Data e hora da criação no sistema de escala. | | DATA_HORA_ALTERACAO_ESCALA | DATE | Sim | Data e hora da alteração no sistema de escala. | | SITUACAO | VARCHAR2(1) | Não | Status do registro: 1 - Liberado, 2 - Integrado, 3 - Erro. | | USUARIO | VARCHAR2(30) | Não | Usuário que inseriu o registro. | | DATA_PROCESSAMENTO | DATE | Sim | Data e hora de processamento no ponto. | | OBSERVACAO | VARCHAR2(500) | Sim | Observação da atualização do registro. | Implementações PLSQL

Nova procedure PACK_INTEGRACAO_ESCALA.INSERE_EVENTO_PONTO

Rotina para centralizar a atualização de ocorrências e trocas de horários recebidos como eventos e publicação da escala completa pelo Escala Jornadas. Implementado algoritmo para receber trocas de horários a partir do novo atributo "COD_HORARIO_PONTO", responsável por indicar qual é o código de horário de trabalho base correspondente no Ponto. A partir deste código de horário recebido é percorrido os horários associados entre sí na tabela PERMUTAS_HORARIOS_TRABALHOS. Verificado se os campos HORA_INICIAL e HORA_FINAL, recebidos na integração, coincidem com algum horário previsto entre as jornadas associadas na tabela de permutas. Caso encontre horário previsto iguais aos campos recebidos de hora inicial e final da integração é estabelecido este COD_HORARARIO_TRABALHO como o código a ser associado ao funcionário naquela data de movimentação. Verificado se este código de horário já está associado ao funcionário nesta mesma data de movimentação no Ponto Soft. Caso ainda não estiver definido, é lançado a troca de horário naquela data de marcação. Caso seja recebido uma integração de evento de Ocorrência ou de Troca de Horário via de/para na tabela de parâmetros, continua realizando o mesmo processo já implementado anteriormente.

Alteração na PACK_INTEGRACAO_ESCALA.ATUALIZA_EVENTO_PONTO

Ajustado rotina para receber o novo atributo COD_HORARIO_PONTO na tabela PONTEIROS_EVENTOS_ESCALAS. Passado a lógica de atualização de ocorrências e trocas de horários no ponto para a procedure interna INSERE_EVENTO_PONTO, para centralizar a regra num único método.

Nova procedure PACK_INTEGRACAO_ESCALA.ATUALIZA_ESCALA_PUBLICADA

Nova rotina deve buscar os registros na tabela PONTEIROS_ESCALAS_PUBLICADAS pendentes (SITUACAO = '1'). Para cada registro recebido acionar a rotina INSERE_EVENTO_PONTO.

Novo job de banco PJOB_ATZ_ESCALA_PUBLICADA

Job deve chamar a rotina PACK_INTEGRACAO_ESCALA.ATUALIZA_ESCALA_PUBLICADA. Periodicidade: a cada 60 minutos por padrão. Implementação Web Nova aba "Escala Publicada" na tela PSW1410 - Registros Integrados Escala Jornadas Nova aba na PSW1410: "Escala Publicada" Tabela Base: PONTEIROS_ESCALAS_PUBLICADAS Alterar aba "Eventos" na tela PSW1410 - Registros Integrados Escala Jornadas Novo campo: "Cód. Horário Ponto" Campo na base: PONTEIROS_ESCALAS_PUBLICADAS.COD_HORARIO_PONTO