Desenvolvimento da rotina 'Agendamento Ahgora' conforme documentação do PO UI para uso do Datasul: https://po-ui.io/documentation/po-page-job-scheduler
O aplicativo com essa atualização está disponível no link abaixo: https://code.engpro.totvs.com.br/totvs-recursos-humanos/calc-ahgora/releases/tag/vGPEM929-17.1.4
Ao acessar a tela de integração com a Ahgora, será mostrado um novo menu chamado 'Agendamento Ahgora' 
Ao clicar no menu, a interface do po-page-job-sheduler dispara uma requisição. Nessa requisição apenas retorne vazio, para que seja renderizado a tela dos processos. O endpoint criado: /api/rh/ahgora/v1/agendamento
Requisição Exemplo no protheus. A primeira requisição será essa: GET: /api/rh/ahgora/v1/agendamento/processes Veja que a interface adicionou o processes após o 'agendamento'. O retorno pode ser vazio. Exemplo de teste no protheus: 

Tela aberta 
Ao clicar no lookup do processo é disparado novamente o GET, agora com filtro processes, page, pageSize e o search: Exemplo protheus: 
Exemplo do response: 
A chamada no datasul seguirá dessa forma. GET: api/rh/ahgora/v1/agendamento/processes?page=1&pageSize=10&search=
No retorno você deverá passar o ID e a descrição: Obs: Se atentar para a paginação com tamanho 10. { "items": [ { "processID": "proc1", "description": "Processo 1" }, { "processID": "proc2", "description": "Processo 2" }, { "processID": "proc3", "description": "Processo 3" }, { "processID": "proc4", "description": "Processo 4" }, { "processID": "proc5", "description": "Processo 5" }, { "processID": "proc6", "description": "Processo 6" }, { "processID": "proc7", "description": "Processo 7" }, { "processID": "proc8", "description": "Processo 8" }, { "processID": "proc9", "description": "Processo 9" }, { "processID": "proc10", "description": "Processo 10" } ], "hasNext": true } |
Tela com os processos carregados. Caso pesquise o processo, será disparado outro GET passando a pesquisa no &search= 
Ao selecionar um processo será disparado um novo GET passando o ID para que seja possível retornar as configurações. Exemplo: Selecionei o primeiro 
GET: api/rh/v1/ahgora/agendamento/processes/proc1/parameters 
Veja que o programa passa o id 'proc1' e na sequencia o 'parameters'. Esse endpoint é criado automaticamente pelo po-page-job. Nessa requisição você deverá retornar os parâmetros desse processo, ou seja, você que definirá os campos que aparecerão na segunda tela, caso não envie nada, não será criado nenhum campo como parâmetro.
Exemplo no protheus: GET: api/rh/v1/ahgora/agendamento/processes/proc1/parameters Resposta 
Tela criada conforme o meu json de retorno 
Eu criei os 4 campos conforme exmplo da documentação, porém vocês deverão decidir o que enviar, quais campos vão criar para cada processo selecionado ou não enviar nenhum. { "items": [ { "property": "version", "label": "Versão", "required": true, "gridLgColumns": "6", "gridXlColumns": "6", "divider": "Informações" }, { "property": "packages", "label": "Pacotes para atualizar", "optionsMulti": true, "gridLgColumns": "6", "gridXlColumns": "6", "options": [ { "value": "ui" }, { "value": "templates" }, { "value": "sync" }, { "value": "storage" }, { "value": "code-editor" } ] }, { "property": "user", "label": "Usuário", "divider": "Credenciais", "gridXlColumns": "6", "gridLgColumns": "6" }, { "property": "password", "label": "Senha", "secret": true, "gridXlColumns": "6", "gridLgColumns": "6" } ] } |
Preencher e avançar 
Será mostrado a tela de conclusão 
Ao clicar em concluir será feito o POST. Exemplo no protheus com retorno status 200 POST: api/rh/v1/ahgora/agendamento Payload: {"firstExecution":"2025-01-01T09:47:00-03:00","recurrent":false,"executionParameter":{"version":"1","packages":["ui"],"user":"adimin","password":"1"},"processID":"proc1"} 

Exemplo POST com retorno status 400 Resposta: {"code":400,"message":"Mensagem de erro"} 
Na primeira tela, os campos periodicidade serão alterados conforme escolha. Exemplo, ao clicar na diária, mais campos abaixo serão mostrados para escolha: 
Semanal 
Mensal 
Os campos escolhidos mais os campos que você enviou na requisição dos parâmetros, serão retornados no POST. Para verificar os nomes das propriedades, consulte a documentação: https://po-ui.io/documentation/po-page-job-scheduler 
Payload com a opção 'Única' {"firstExecution":"2025-01-01T10:00:00-03:00","recurrent":false,"executionParameter":{"version":"1","packages":[],"user":"admin","password":"1"},"processID":"proc1"}
Payload com a opção 'Diária' {"firstExecution":"2025-01-01T10:14:00-03:00","recurrent":true,"executionParameter":{"version":"1","user":"a","password":"1"},"processID":"proc1","daily":{"hour":17,"minute":30},"rangeExecutions":{"frequency":{"type":"hour","value":2},"rangeLimit":{"hour":18,"minute":0}}}
Payload com a opção 'Semanal' {"firstExecution":"2025-01-01T10:15:00-03:00","recurrent":true,"executionParameter":{"version":"1","user":"a","password":"1"},"processID":"proc1","weekly":{"daysOfWeek":["Monday","Tuesday","Friday"],"hour":18,"minute":0}}
Payload com a opção 'Mensal' {"firstExecution":"2025-01-01T10:16:00-03:00","recurrent":true,"executionParameter":{"version":"1","user":"a","password":"1"},"processID":"proc1","monthly":{"day":1,"hour":18,"minute":0},"rangeExecutions":{"frequency":{"type":"day","value":1},"rangeLimit":{"day":30}}}
|