Este documento tem como objetivo detalhar as possibilidades de personalização na tela HTML do programa (html.cq022).
O método de customização para o html.cq0222 está baseado em código Progress, portanto não requer conhecimento específico de Angular, apenas conhecimento básico de JSON. |
Cadastrar no menu do Datasul a API REST - cqp/api/v1/fichaCQInspecao. Para mais detalhes, consulte o tópico 5 da documentação Customização PO-UI.
O programa customizado (UPC) deverá tratar os seguintes parâmetros:
• Endpoint: identifica o método que está sendo executado
• Evento: identifica o evento/ponto UPC dentro do método
• Programa: nome do programa que está sendo executado (API REST)
• Objeto JSON: handle do objeto que contém o JSON que está sendo recebido ou retornado pelo método
Parâmetros padrão de UPC:
USING PROGRESS.json.*.
USING PROGRESS.json.ObjectModel.*.
USING Progress.Lang.Error.
USING com.totvs.framework.api.*.
USING com.totvs.framework.api.JsonApiResponseBuilder.
DEF INPUT PARAM pEndpoint AS CHAR NO-UNDO.
DEF INPUT PARAM pEvent AS CHAR NO-UNDO.
DEF INPUT PARAM pProgram AS CHAR NO-UNDO.
DEF INPUT-OUTPUT PARAM pJsonObject AS JsonObject NO-UNDO.
| Manipulação de Dados | ||
|---|---|---|
| Endpoint | Evento | Objetivo |
| findById | findById | Na pesquisa pelo número, retorna os dados de um único roteiro (Get). Permite complementar os dados retornados para apresentar em tela. |
| FindAll | FindAll | Query: retorna os dados de vários roteiros, conforme filtro. Permite complementar os dados retornados para apresentar em tela. |
getResults | FindResults | Permite complementar ou ocultar dados dos exames e resultados (tanto os pendentes quanto os já digitados) antes de apresentá-los na tela. |
| saveResults | beforeSaveResults | Permite validar ou complementar dados e resultados dos exames antes de salvar. |
| saveResults | afterSaveResults | Recebe os dados que foram salvos no banco de dados, permitindo que outras ações customizadas sejam executadas. |
| findSampling | getSamplingPlan | Recebe os dados de Amostragem antes de apresentá-los na tela Unidades Não Conforme - Plano de Amostragem. |
| saveQtyNonConform | beforeSaveQtyNonConform | Na tela Unidades Não Conforme - Plano de Amostragem, permite validar a Quantidade de Não Conformes, antes de salvar no banco de dados. |
| saveQtyNonConform | afterSaveQtyNonConform | Na tela Unidades Não Conforme - Plano de Amostragem, permite customização após salvar no banco de dados a Quantidade de Não Conformes. |
| confirmInspection | beforeConfirmInspection | Executa antes de Encerrar a inspeção e recebe os dados que estão na tela inicial, inclusive campos customizados. |
| confirmInspection | afterConfirmInspection | Executado após de encerrar a inspeção. |
| findStockMovement | getDefaultsStock | Executa antes de apresentar os valores iniciais na tela de movimentação de estoque (depósito, local, etc). |
| saveStockMovement | beforeSaveStockMovement | Executado antes de salvar a movimentação do Estoque. |
| saveStockMovement | afterSaveStockMovement | Executado após salvar a movimentação do Estoque. |
Nesta tela foi adicionado áreas que permitirão receber campos customizados através da edição dos metadados retornados pela API REST do Datasul. Assim é possível criar campos customizados nas seguintes telas:
• Tela principal
• Tela de Resultados
• Tela de Estoque
| Endpoint | Evento | Objetivo |
|---|---|---|
| getMetaData | list | Permite criar campos ou ocultar conteúdo na tela inicial (método query). |
| detail | Permite criar campos ou ocultar conteúdo na tela inicial (método get) | |
| detailResults | Permite criar campos ou ocultar conteúdo na interface na tela de Resultados. | |
| detailStockMovement | Permite criar campos ou ocultar conteúdo na tela de movimentação de estoque. |
Os metadados específicos devem ser retornados como JSON no padrão do PO-UI e pode ser usada a ferramenta abaixo para montar exemplos:
https://po-ui.io/tools/dynamic-view
Os metadados dos campos customizados devem ser retornados para a interface através do objeto “formConfigs”, que deverá conter os objetos “dynamicViewConfigs” e “dynamicFormConfigs”.
Abaixo exemplo de JSON de metadados com objeto customizado:
"formConfigs": {
"dynamicViewConfigs": [
{
"gridLgColumns": 3,
"visible": true,
"gridColumns": 3,
"property": "descOrigem",
"gridSmColumns": 6,
"gridXlColumns": 3,
"label": "Origem",
"tag": true,
"type": "string",
"gridMdColumns": 4,
"order": 6
}
],
"dynamicFormConfigs": [
{
"columns": 10,
"property": "detalhesFicha",
"label": "Detalhes Ficha",
"type": "String",
"rows": 10
}
]
}
Neste exemplo foi adicionado o campo Origem (Estoque) para visualização e Detalhes Ficha para digitação:

Obs: neste exemplo, o valor digitado na tela inicial é enviado ao back end apenas pelo botão Encerrar, que executa o endpoint "confirmInspection", possibilitando interceptar o JSON object no Evento "beforeConfirmInspection" para pegar o valor e gravar numa tabela customizada.
Para customizar a busca pela imagem do item deve-se cadastrar a UPC para a "apiProduct" e tratar o evento "before-product-image" que permite passar o arquivo imagem e diretório onde está a imagem, ou o evento “after-product-image”, que permite manipular diretamente a temp-table de retorno da API.
Esta customização segue o formato tradicional de customização de API/DBO, recebendo o evento e a tt-epc, pois a chamada é feita dentro da API de regras e não na API REST.
Parâmetros padrão de UPC:
{cdp/apiProductV1.i} /* Definição temp-table ProductImage */
{include/i-epc200.i} /* Definição tt-epc */
DEF INPUT PARAM p-ind-event AS CHAR NO-UNDO.
DEF INPUT-OUTPUT PARAM TABLE FOR tt-epc.
Endpoint | Evento | Parâmetro | Tipo | Descrição |
image | before-product-image | tableKey | Envio | Código do item |
arqImage | Envio/Retorno | Arquivo da imagem | ||
dirImage | Envio/Retorno | Diretório da Imagem | ||
RowErrors | Handle | Temp-table de erros | ||
image | after-product-image | tableKey | Envio | Código do item |
ProductImage | Handle | Temp-table de retorno da imagem | ||
RowErrors | Handle | Temp-table de erros |
Objetos não mencionados neste documento não podem ser customizados por padrão.
Caso seja necessário customizar outros componentes, deve-se abrir um ticket de solicitação, justificando a necessidade.