O processo de integração do módulo Inspeção de Processos (SIGAQIP) do ERP TOTVS Protheus com o App Mobile Minha Produção se dá através do uso de API's REST. A TOTVS disponibiliza o uso destas API's para clientes que desejaram realizar diretamente desejam customizar a integração com o processo de inspeção. A seguir, apresentamos um resumo detalhando as APIs e os EndPoint EndPoints disponibilizados, demonstração de configuração do servidor REST Full RESTFul no AppServer.INI do servidor de aplicação do Protheus, utilização de Postman com GET e POST para conhecimento dos EndPoints e implementação de exemplo de código ADVPL para Cliente Client REST.
Informações |
---|
title | Pré-Requisitos Uso de API's |
---|
| - Configuração do servidor REST no ambiente, seguir instruções da documentação oficial: 1. Configuração do REST do Protheus;
- Atualização do RPO com versão da expedição contínua igual ou superior a: DMANQUALI-4478;última versão publicada disponível em: Pacotes - APP Inspeção de Processos - P12
- Utilização dos métodos GET e POST conforme especificação padrão "TOTVS - RESTFul API" e exemplos a seguir;
|
Deck of Cards |
---|
history | false |
---|
id | Detalhamento_APIs |
---|
effectType | fade |
---|
| Card |
---|
id | Lista_APIs |
---|
label | Lista de API's e Endpoints Disponíveis |
---|
title | Lista de API's e Endpoints Disponíveis |
---|
| A seguir são listadas as API's disponibilizadas, detalhamentos de seus endpoints e mapa de campos relacionados. Deck of Cards |
---|
history | false |
---|
id | Principais_Campos |
---|
effectType | fade |
---|
| Card |
---|
id | API_1 |
---|
label | Inspeções de Processos por Operação |
---|
title | Inspeções de Processos por Operação |
---|
| - TOTVS - RESTFul API:
- Métodos:
- GET: Retorna Lista Inspeções de Processos Pendentes:
- Endpoint: processinspections/api/qip/v1/pendinglist/{Login}/{Laboratory}/{Order}/{OrderType}/{Page}/{PageSize}/{NotStarted}/{WithoutReport}/{IncompleteReport}
- Objetivo: permitir a consulta das inspeções de processos pendentes a nível de ordem de produção + operação;
- PathParam:
- Login: referência de login do usuário do configurador Protheus em QAA_LOGIN (obrigatório). Ex: ADMINISTRADOR;
- Laboratory: laboratório para filtro da inspeção de processos. Ex: "LABFIS", "" para todos;
- Order: referência de campos para ordenação dos resultados. Ex: "productionOrderID,operationID,lot";
- OrderType: referência de ordenação dos resultados, Ex 1: vazio ou "ASC" para crescente. Ex 2: "DESC" para decrescente.
- Page: número de página atual da paginação de resultados; Ex: 1.
- PageSize: tamanho da página considerado na paginação de resultados; Ex: 5;
QueryParam:Fields: referência de "Código API" para os campos que devem ser retornados. Default: vazio = todos;
- NotStarted: indicador se deve filtrar somente as inspeções não iniciadas; Ex: false (boolean);
- WithoutReport: indicador se deve filtrar somente as inspeções sem laudo; Ex: false (boolean);
- IncompleteReport: indicador se deve filtrar somente as inspeções incompletas; Ex: false (boolean);
- QueryParam:
- Fields: referência de "Código API" para os campos que devem ser retornados. Default: vazio = todos;
- GET: Pesquisa GET: Pesquisa Inspeção:
- Endpoint: processinspectionsapi/qip/v1/search/{Login}/{Laboratory}/{Text}/{Order}/{OrderType}/{Page}/{PageSize}
- Objetivo: permitir a pesquisa por Produto ou OP das inspeções de processos a nível de ordem de produção + operação;
- PathParam:
- Text: texto para pesquisa por OP ou produto;
- Demais conforme anterior;
- QueryParam:
- Fields: referência de "Código API" para os campos que devem ser retornados. Default: todos;
- GET: Existe UsuárioRetorna Uma Inspeção de Processos:
- Endpoint: processinspectionsapiapiprocessinspectionsapi/qip/v1/userExistinspection/{Login}/{Laboratory}/{Recno}/{OperationID}
- Objetivo: permitir a consulta de uma inspeção de processo a nível de ordem de produção + operaçãoObjetivo: permitir identificar se o usuário possui cadastro no módulo inspeção de processos;
- PathParam:
- Login: referência de login do usuário do configurador Protheus em QAA_LOGIN (obrigatório). Ex: ADMINISTRADOR;
Mapa de Campos Padrões: - Recno: RECNO do registro na tabela de inspelção QPK;
- OperationID: operação relacionada a inspeção. Ex: "01", "" para todas;
- QueryParam:
- Fields: referência de "Código API" para os campos que devem ser retornados. Default: todos;
- GET: Existe Usuário:
- Endpoint: processinspections/api/qip/v1/userExist/{Login}
- Objetivo: permitir identificar se o usuário possui cadastro no módulo inspeção de processos;
- PathParam:
- Login: referência de login do usuário do configurador Protheus em QAA_LOGIN (obrigatório). Ex: ADMINISTRADOR;
Mapa de Campos Padrões: Descrição | Código API | Referência Protheus | Tipo | Opções |
---|
Código do Produto | productID | QPK_PRODUT | C |
| Descrição do Produto | product | B1_DESC | C |
| Ordem de | Descrição | Código API | Referência Protheus | Tipo |
---|
Código do Produto | productID | QPK_PRODUT | C | Descrição do Produto | product | B1_DESC | C | Ordem de Produção | productionOrderID | QPK_OP | C |
| Código do Roteiro | operationRoutines | QQK_CODIGO | C |
| Código da Operação | operationID | QQK_OPERAC | C |
| Descrição da Operação | operation | QQK_DESCRI | C |
| Recurso | resource | H1_DESCRI | C |
| Quantidade | lotSize | QPK_TAMLOT | N |
| Código Unidade Medida | lotUnitID | QPK_UM | C |
| Unidade de Medida | lotUnit | AH_DESCPO | C |
| Lote | lot | QPK_LOTE | C |
| Número de Série | serialNumber | QPK_NUMSER | C |
| Data de Emissão | date | QPK_EMISSA | D |
| Cliente e Loja | customer | A1_COD + A1_LOJA + A1_NOME | C |
| Versão da Especificação | specificationVersion | QPK_REVI | C |
| Data da Produção | productionDate | QPK_DTPROD | D |
| Usuário Permitido | allowedUser | Referência existente de cLogin = QAA_LOGIN → true== cLogin | L | true = Usuário Permitido false = Usuário Não Permitido | Laudo de Operação | operationReport | QPM_LAUDO | C | Status: N = Não Iniciado I = Iniciado A = Aprovado R = RejeitadoA = Aprovado R = Reprovado U = Liberação Urgente C = Liberação Condicional Vazio ou NULL = Pendente
| Status | status | Regra de Negócio Interna | C | Recno Inspeção | recno | QQK.R_E_C_N_O_ | N | N = Não Iniciado I = Iniciado A = Aprovado R = Rejeitado U = Liberação Urgente C = Liberação Condicional | Laudo Incompleto | incompleteReport |
| C | "true" = possui laudo incompleto "false"= não possui laudo incompleto *ocorrência de laudo geral sem laudo de operação ou laboratório; * ou, a ocorrência de laudo de operação sem laudo de laboratório | Recno Inspeção | recno | QQK.R_E_C_N_O_ | N |
|
|
Card |
---|
id | API_2 |
---|
label | Ensaios |
---|
title | Ensaios |
---|
| | Card |
---|
id | API_2 |
---|
label | Ensaios |
---|
title | Ensaios |
---|
| - TOTVS - RESTFul API:
- Métodos:
- GET: Retorna Lista de Ensaios das Inspeções de Processos:
- Endpoint: processinspectiontestapi/qip/v1/list/{Recno}/{OperationID}/{Order}/{OrderType}/{Page}/{PageSize}
- Objetivo: permitir a consulta dos ensaios das inspeções de processos;
- PathParam:
- Recno: recno da inspeção - QPK.R_E_C_N_O_;
- OperationID: operação relacionada a inspeção. Ex: "01";
- Laboratory: laboratório relacionado a inspeção. Ex: "LABFIS", "" para todos;
- Order: referência Order: referência de campos para ordenação dos resultados. Ex: "title,laboratory";
- OrderType: referência de ordenação dos resultados, Ex 1: vazio ou "ASC" para crescente. Ex 2: "DESC" para decrescente.
- Page: número de página atual da paginação de resultados; Ex: 1.
- PageSize: tamanho da página considerado na paginação de resultados; Ex: 5;
- QueryParam:
- Fields: referência de "Código API" para os campos que devem ser retornados. Default: vazio = todos;
Mapa de Campos Padrões: | Descrição | Código API | Referência Protheus | Tipo |
---|
- GET: Retorna Um Ensaios das Inspeções de Processos:
- Endpoint: processinspectiontestapi/qip/v1/test/{Recno}/{OperationID}/{IDEnsaio}
- Objetivo: permitir a consulta de um único Ensaio da inspeção de processos.
- PathParam:
- Recno: recno da inspeção -
RECNO Inspeção | recnoInspection | N | RECNO Ensaio | recnoTest | QP7.R_E_C_N_O_ ou QP8.R_E_C_N_O_ | N | Código do Ensaio | testID | QP7_ENSAIO ou QP8_ENSAIO | C | Sequência do Laboratório | sequence | QP7_SEQLAB ou QP8_SEQLAB | N | Título do Ensaio | title | QP1_DESCPO | C | Quantidade de Medições | numberOfMensurements | QP1_QTDE* | N | Laboratório | laboratory | X5_DESCRI para X5_TABELA = 'Q2' | C | Especificação Resumida | summarySpecification | QP7_NOMINA QP7_LIE / QP7_LSE Ou QP8_TEXTO | C | Código Unidade de Medida | lotUnitID | QP7_UNIMED | C | Tipo de Controle | controlType | QP7_MINMAX | C | Limite Inferior Engenharia | lowerDeviation | QP7_LIE | C | Limite Superior Engenharia | upperDeviation | QP7_LSE | C | Tipo do Ensaio | testType | QP7 → N → Numérico QP8 → T → Texto | C | Status: A = Aprovado R = Reprovado P = Pendente N = Não Obrigatório | status | Regra de Negócio Interna | C | - ;
- OperationID: código da operação relacionada a inspeção. Ex: "01", "" para todas;
- IDRecno: código do ensaio para pesquisa, por exemplo, valor de conteúdo em QP7_ENSAIO, QP8_ENSAIO;
- QueryParam:
- Fields: referência de "Código API" para os campos que devem ser retornados. Default: vazio = todos;
Mapa de Campos Padrões:
Descrição | Código API | Referência Protheus | Tipo | Opções |
---|
RECNO Inspeção | recnoInspection | QPK.R_E_C_N_O_ | N |
| RECNO Ensaio | recnoTest | QP7.R_E_C_N_O_ ou QP8.R_E_C_N_O_ | N |
| Código do Ensaio | testID | QP7_ENSAIO ou QP8_ENSAIO | C |
| Sequência do Laboratório | sequence | QP7_SEQLAB ou QP8_SEQLAB | N |
| Ensaio Obrigatório | obrigatory |
| L |
| Título do Ensaio | title | QP1_DESCPO | C |
| Quantidade de Medições | numberOfMensurements | QP1_QTDE* | N | QP1_QTDE quando QP1_CARTA $ "|XBR|XBS|XMR|HIS|NP |" 3 quando QP1_CARTA == 'P ' 2 quando QP1_CARTA == 'U ' 1 caso contrário | Tipo | type | QP1_TIPO | C |
| Laboratório | laboratory | X5_DESCRI para X5_TABELA = 'Q2' | C |
| ID do Laboratório | laboratoryID | X5_CHAVE para X5_TABELA = 'Q2' | C |
| Especificação Resumida | summarySpecification | QP7_NOMINA QP7_LIE / QP7_LSE Ou QP8_TEXTO | C |
| Código Unidade de Medida | lotUnitID | QP7_UNIMED | C |
| Tipo de Controle | controlType | QP7_MINMAX | C |
| Valor Nominal | nominalValue | QP7_NOMINA | C |
| Limite Inferior Engenharia | lowerDeviation | QP7_LIE | C |
| Limite Superior Engenharia | upperDeviation | QP7_LSE | C |
| Operação da Inspeção | operationID | QP7_OPERAC / QP8_OPERAC | C |
| Tipo do Ensaio | testType | Tabelas do Protheus: QP7 = Ensaios Mensuráveis Produtos QP8 = Ensaios Textos dos Produtos | C | N = Numérico T = Texto | Laudo do Laboratório | laboratoryReport | QPL_LAUDO | C | A = Aceito sem restrição B = Aceito com desvio simples C = Aceito com desvio grave E = Rejeitado totalmente U = Liberação urgente | Status | status | Regra de Negócio Interna | C | A = Aprovado R = Reprovado P = Pendente N = Não Obrigatório |
|
|
Card |
---|
id | AppServer.INI |
---|
label | AppServer.INI |
---|
title | AppServer.INI |
---|
| Segue abaixo demonstração de código para configuração de servidor REST Full no AppServer.ini do servidor de aplicação do ERP TOTVS Protheus: Bloco de código |
---|
language | text |
---|
title | Amostra de Configuração REST no AppServer.INI |
---|
| ;CONFIGURACAO REST
[ONSTART]
JOBS=HTTPJOB1
REFRESHRATE=120
[HTTPJOB1]
MAIN=HTTP_START
ENVIRONMENT=V12_1_33_compila
[HTTPV11]
Enable=1
Sockets=HTTPREST1
[HTTPREST1]
Port=5050
IPsBind=
URIs=HTTPURI1
Security=1
[HTTPURI1]
URL=/rest
PrepareIn=ALL
Instances=1,1,1,1
CORSEnable=1
AllowOrigin=*
; FIM CONFIGURACAO REST |
|
- (facultativo)
- 0 → incluirá nova amostra;
- informado → editará uma amostra existente;
- DELETE: Deleta Informações de Uma Amostra (Novo: em expedição):
- Endpoint: processinspectiontestresultsapi/api/qip/v1/result
- Objetivo: permitir deletar uma amostra da inspeção de resultados;
- QueryParam:
- RecnoQPR: RECNO da amostra correspondente para exclusão na tabela QPR;
Mapa de Campos Padrões: Descrição | Código API | Referência Protheus | Tipo | Opções |
---|
RECNO Inspeção | recnoInspection | QPK.R_E_C_N_O_ | N |
| RECNO Ensaio | recnoTest | QP7.R_E_C_N_O_ ou QP8.R_E_C_N_O_ | N |
| Data da Amostra | measurementDate | QPR_DTMEDI | D |
| Hora da Amostra | measurementTime | QPR_HRMEDI | H |
| Código do Ensaiador | rehearserID | QPR_ENSR | C |
| Ensaiador | rehearser | QAA_NOME | C |
| Tipo do Ensaio | testType | QP7 = Tabela de Ensaios Mensuráveis Produtos QP8 = Tabela de Ensaios Textos dos Produtos | C | N = Numérico T = Texto | Array de Medições | measurements | String com array de medições: QPS_MEDICA | C |
| Status da Amostra | textStatus | QPR_RESULT | C | A = Aprovado R = Reprovado | Justificativa Reprovação | textDetail | QPQ_MEDICA | C |
| Usuário Protheus | protheusLogin | QAA_LOGIN | C |
| RECNO Amostra | recno | QPR.R_E_C_N_O_ | N |
|
|
|
|
Card |
---|
id | AppServer.INI |
---|
label | AppServer.INI |
---|
title | AppServer.INI |
---|
| Segue abaixo demonstração de código para configuração de servidor RESTFul no AppServer.ini do servidor de aplicação do ERP TOTVS Protheus: Nota: ajustar "ENVIRONMENT" para o nome de seu ambiente. Bloco de código |
---|
language | text |
---|
title | Amostra de Configuração REST no AppServer.INI |
---|
| ;CONFIGURACAO REST
[ONSTART]
JOBS=HTTPJOB1
REFRESHRATE=120
[HTTPJOB1]
MAIN=HTTP_START
ENVIRONMENT=V12_1_33_compila
[HTTPV11]
Enable=1
Sockets=HTTPREST1
[HTTPREST1]
Port=5050
IPsBind=
URIs=HTTPURI1
Security=1
[HTTPURI1]
URL=/rest
PrepareIn=ALL
Instances=1,1,1,1
CORSEnable=1
AllowOrigin=*
; FIM CONFIGURACAO REST |
|
Card |
---|
id | GET Postman |
---|
label | GET Postman |
---|
title | GET Postman |
---|
| Conheça melhor os EndPoints testando-os via Postman. Segue abaixo demonstração da execução de um método GET: 1. Crie uma nova aba, selecione a operação GET e o endpoint desejado, por exemplo: http://localhost:5050/rest/processinspectiontestresults/api/qip/v1/history; 2. Configure o modo de autorização na aba "Authorization" com o usuário e senha de acesso ao ERP TOTVS Protheus; 3. Informe os parâmetros desejados na aba "Params"; 4. Envie a requisição clicando em "SEND"; Image Added Bloco de código |
---|
language | text |
---|
title | Exemplo de resposta |
---|
collapse | true |
---|
| {
"items": [
{
"recnoInspection": 134,
"recnoTest": 166,
"measurementDate": "2022-08-09",
"measurementTime": "11:31",
"rehearserID": "001",
"rehearser": "NOME DO ENSAIADOR",
"testType": "N",
"measurements": [
" 10"
],
"textStatus": "A",
"textDetail": null,
"protheusLogin": "ADMINISTRADOR",
"recno": 334
},
{
"recnoInspection": 134,
"recnoTest": 165,
"measurementDate": "2022-08-09",
"measurementTime": "11:31",
"rehearserID": "001",
"rehearser": "NOME DO ENSAIADOR",
"testType": "N",
"measurements": [
" 19.00"
],
"textStatus": "A",
"textDetail": null,
"protheusLogin": "ADMINISTRADOR",
"recno": 335
},
{ |
| Card |
---|
id | GET Postman |
---|
label | GET Postman |
---|
title | GET Postman |
---|
| Segue abaixo demonstração da execução de um método GET via Postman: 1. Crie uma nova aba, selecione a operação GET e o endpoint desejado, por exemplo: http://localhost:5050/rest/processinspectiontestresults/api/qip/v1/history; 2. Configure o modo de autorização na aba "Authorization" com o usuário e senha de acesso ao ERP TOTVS Protheus; 3. Informe os parâmetros desejados na aba "Params"; 4. Envie a requisição clicando em "SEND"; Image Removed Bloco de código |
---|
language | text |
---|
title | Exemplo de resposta |
---|
collapse | true |
---|
| {
"items": [
{
"recnoInspection": 134,
"recnoTest": 16614,
"measurementDate": "2022-08-09",
"measurementTime": "11:31",
"rehearserID": "001",
"rehearser": "NOME DO ENSAIADOR",
"testType": "NT",
"measurements": [
" 10"
],
"textStatus": "A",
"textDetail": null"BOA",
"protheusLogin": "ADMINISTRADOR",
"recno": 334336
},
{
],
"recnoInspection"hasNext": 134false,
"recnoTestcode": 165,
"measurementDate": "2022-08-09",
200
} |
|
Card |
---|
id | POST Postman |
---|
label | POST Postman |
---|
title | POST Postman |
---|
| Conheça melhor os EndPoints testando-os via Postman. Segue abaixo demonstração da execução de um método POST: 1. Crie uma nova aba, selecione a operação POST e o endpoint desejado, por exemplo: http://localhost:5050/rest/processinspectiontestresults/api/qip/v1/save; 2. Configure o modo de autorização na aba "Authorization" com o usuário e senha de acesso ao ERP TOTVS Protheus; Image Added 3. Informe os itens para inclusão na aba "Body" conforme os dados de recno, rehearser e testType de sua base: (Em caso de dúvidas, consulte acima "Lista de API's e Endpoints Disponíveis + Resultados das Inspeções")
Image Added
Bloco de código |
---|
language | text |
---|
title | Exemplo de conteúdo para Body |
---|
collapse | true |
---|
| {
"items": [ "measurementTime": "11:31",
"rehearserID": "001",
"rehearser": "NOME DO ENSAIADOR", {
"testTyperecnoInspection": "N"134,
"measurementsrecnoTest": [165,
" 19.00""measurementDate": "2022-08-09",
]"measurementTime": "11:31",
"textStatusrehearserID": "A001",
"textDetailrehearser": null"NOME DO ENSAIADOR",
"protheusLogintestType": "ADMINISTRADORN",
"recnomeasurements": 335[
" 19.00"
},
{],
"recnoInspectiontextStatus": 134"A",
"recnoTesttextDetail": 14null,
"measurementDateprotheusLogin": "2022-08-09ADMINISTRADOR",
"measurementTimerecno": "11:31",
335
},
"rehearserID": "001", {
"rehearserrecnoInspection": "NOME DO ENSAIADOR"134,
"testTyperecnoTest": "T"14,
"measurementsmeasurementDate": []"2022-08-09",
"textStatusmeasurementTime": "A11:31",
"textDetailrehearserID": "BOA001",
"protheusLoginrehearser": "ADMINISTRADORNOME DO ENSAIADOR",
"recnotestType": 336"T",
}
"measurements": [],
"hasNext": false,
"code": 200
} |
| Card |
---|
id | POST Postman |
---|
label | POST Postman |
---|
title | POST Postman |
---|
| "textStatus": "A",
"textDetail": "BOA",
"protheusLogin": "ADMINISTRADOR",
"recno": 336
}]
} |
Segue abaixo demonstração da execução de um método POST via Postman: 1. Crie uma nova aba, selecione a operação POST e o endpoint desejado, por exemplo: http://localhost:5050/rest/processinspectiontestresults/api/qip/v1/save; 2. Configure o modo de autorização na aba "Authorization" com o usuário e senha de acesso ao ERP TOTVS Protheus; Image Removed 3. Informe os itens para inclusão na aba "Body" conforme os dados de recno, rehearser e testType de sua base: (Em caso de dúvidas, consulte acima "Lista de API's e Endpoints Disponíveis + Resultados das Inspeções")
Image Removed Bloco de código |
---|
language | text |
---|
title | Exemplo de conteúdo para Bodyresposta |
---|
collapse | true |
---|
| {
"items": [
{
"recnoInspection": 134,
"recnoTest": 16514,
"measurementDate": "2022-08-0908-09",
"measurementTime": "11:31",
"rehearserID": "001",
"rehearser": "NOME DO ENSAIADOR",
"measurementTimetestType": "11:31T",
"rehearserIDmeasurements": "001"[],
"rehearsertextStatus": "NOME DO ENSAIADORA",
"testTypetextDetail": "NBOA",
"measurementsprotheusLogin": ["ADMINISTRADOR",
"recno": 336
" 19.00"
},
],{
"textStatusrecnoInspection": "A"134,
"textDetailrecnoTest": null165,
"protheusLoginmeasurementDate": "ADMINISTRADOR2022-08-09",
"recnomeasurementTime": 335"11:31",
},
{"rehearserID": "001",
"recnoInspectionrehearser": 134 "NOME DO ENSAIADOR",
"recnoTesttestType": 14"N",
"measurementDatemeasurements": "2022-08-09",
[
"measurementTime": "11:31", 19.00"
"rehearserID": "001"],
"rehearsertextStatus": "NOME DO ENSAIADORA",
"testType": "T"textDetail": null,
"measurementsprotheusLogin": []"ADMINISTRADOR",
"textStatusrecno": "A",335
}
"textDetail": "BOA"],
"hasNext": false,
"protheusLogin": "ADMINISTRADOR",
"recno": 336
}]
}"code": 200
} |
|
Card |
---|
id | Código: GET REST Client em ADVPL |
---|
label | Código: GET REST Client em ADVPL |
---|
title | Código: GET REST Client em ADVPL |
---|
| Você pode desenvolver uma customização usando a classe FWRest, documentada em: https://tdn.totvs.com/display/public/framework/FWRest Segue abaixo exemplo de código ADVPL com GET Rest Client para API de Inspeções de Processos: Bloco de código |
---|
language | text |
---|
title | Exemplo de resposta |
---|
collapse | true |
---|
| title | Código Exemplo - ADVPL FWRest GET |
---|
| #INCLUDE "TOTVS.CH"
User Function tstMAIN()
RPCSetType(3){
"items": [
lRet := {
RpcSetEnv("99", "01")
U_tstAPIGET()
RpcClearEnv()
Return
User Function tstAPIGET()
Local aHeaderWS as array
Local cLogin "recnoInspection": 134,
as string
Local cPassword as string
Local cPathParams as string
Local oRestClient "recnoTest": 14,
as object
//Local oResult as object
cLogin := "measurementDateADMIN"
cPassword := "2022-08-09",
1234"
aHeaderWS := {}
AAdd(aHeaderWS, {"Content-Type: application/json"})
AAdd(aHeaderWS, "Authorization: Basic " + Encode64(cLogin+":"+cPassword))
oRestClient := FWRest():New("http://localhost:5050/rest")
cPathParams := ""
cPathParams += "RecnoQPK=134"
cPathParams += "&Order=recno"
cPathParams += "&Page=1"
cPathParams += "&PageSize=9"
oRestClient:SetPath("/processinspectiontestresults/api/qip/v1/history/")
oRestClient:SetGetParams(cPathParams)
If oRestClient:Get(aHeaderWS)
ConOut(oRestClient:GetResult())
//oResult := JsonObject():New()
//oResult:fromJson(oRestClient:GetResult())
//oResult['items'] //Relação de Resultados
Else
ConOut(oRestClient:GetLastError())
EndIf
Return
|
|
Card |
---|
id | Código: POST REST Client em ADVPL |
---|
label | Código: POST REST Client em ADVPL |
---|
title | Código: POST REST Client em ADVPL |
---|
| Você pode desenvolver uma customização usando a classe FWRest, documentada em: https://tdn.totvs.com/display/public/framework/FWRest Segue abaixo exemplo de código ADVPL com POST Rest Client para API de Resultados Inspeções de Processos: Bloco de código |
---|
language | text |
---|
title | Código Exemplo - ADVPL FWRest POST |
---|
| #INCLUDE "TOTVS.CH"
User Function tstMAIN()
RPCSetType(3)
lRet := RpcSetEnv("99", "01")
U_tstAPIPOST()
RpcClearEnv()
Return
User Function tstAPIPOST()
Local aHeaderWS as array
Local cBody "measurementTime": "11:31",
"rehearserID": "001",
"rehearser": "NOME DO ENSAIADOR",
"testType": "T",
"measurements": [],
"textStatus": "A",
"textDetail": "BOA",
"protheusLogin": "ADMINISTRADOR",
"recno": 336
},
as {string
Local cLogin as "recnoInspection": 134,
string
Local cPassword as string
Local oBody "recnoTest": 165,
as object
Local oNumeric as object
Local oRestClient as object
Local oText "measurementDate": "2022-08-09",
as object
cLogin := "ADMIN"
cPassword := "measurementTime1234"
aHeaderWS := "11:31",{}
AAdd(aHeaderWS, {"Content-Type: application/json"})
AAdd(aHeaderWS, "Authorization: Basic " "rehearserID+ Encode64(cLogin+": "001",
"rehearser": "NOME DO ENSAIADOR",
"+cPassword))
oBody := JsonObject():New()
oBody['items'] := {}
oNumeric := JsonObject():New()
oNumeric["recnoInspection"] := 134
oNumeric["recnoTest"] := 165
oNumeric["testTypemeasurementDate"] := "N2022-08-09",
oNumeric["measurementTime"] := "11:31"
oNumeric["rehearserID"] := "measurements": [
001"
oNumeric["rehearser"] := "NOME DO 19.00ENSAIADOR"
oNumeric["testType"] := ],
"N"
oNumeric["measurements"] "textStatus":= "A",
{}
aAdd(oNumeric["measurements"], " 19.00")
oNumeric["textStatus"] := "textDetailA": null,
oNumeric["textDetail"] := nil
oNumeric["protheusLogin"] := "protheusLogin": "ADMINISTRADOR",
oNumeric["recno"] := 335 //Para editar um resultado
//oNumeric["recno": 335
] := 0 }
//Para incluir um novo resultado
aAdd(oBody['items'], oNumeric)
oText "hasNext": false,
"code": 200
} |
| Card |
---|
id | Código: GET REST Client em ADVPL |
---|
label | Código: GET REST Client em ADVPL |
---|
title | Código: GET REST Client em ADVPL |
---|
| Você pode desenvolver uma customização usando a classe FWRest, documentada em: https://tdn.totvs.com/display/public/framework/FWRest Segue abaixo exemplo de código ADVPL com GET Rest Client para API de Inspeções de Processos: Bloco de código |
---|
language | text |
---|
title | Código Exemplo - ADVPL FWRest GET |
---|
| #INCLUDE "TOTVS.CH"
User Function tstMAIN()
RPCSetType(3)
lRet := RpcSetEnv("99", "01")
U_tstAPIGET()
RpcClearEnv()
Return
User Function tstAPIGET()
Local aHeaderWS as array
Local cLogin as string
Local cPassword as string
Local cPathParams as string
Local oRestClient as object
//Local oResult as object
cLogin := "ADMIN"
cPassword := "1234"
aHeaderWS := {}
AAdd(aHeaderWS, {"Content-Type: application/json"})
AAdd(aHeaderWS, "Authorization: Basic " + Encode64(cLogin+":"+cPassword):= JsonObject():New()
oText["recnoInspection"] := 134
oText["recnoTest"] := 14
oText["measurementDate"] := "2022-08-09"
oText["measurementTime"] := "11:31"
oText["rehearserID"] := "001"
oText["rehearser"] := "NOME DO ENSAIADOR"
oText["testType"] := "T"
oText["measurements"] := nil
oText["textStatus"] := "A"
oText["textDetail"] := "BOA"
oText["protheusLogin"] := "ADMINISTRADOR"
oText["recno"] := 336
//oText["recno"] := 0 //Para incluir um novo resultado
aAdd(oBody['items'], oText)
cBody := oBody:toJson()
oRestClient := FWRest():New("http://localhost:5050/rest")
cPathParams := ""
cPathParams += "RecnoQPK=134"
cPathParams += "&Order=recno"
cPathParams += "&Page=1"
cPathParams += "&PageSize=9"
oRestClient:SetPath("/processinspectiontestresults/api/qip/v1/history/save")
oRestClient:SetGetParamsSetPostParams(cPathParamscBody)
If oRestClient:GetPost(aHeaderWS)
ConOut(oRestClient:GetResult())
//oResult := JsonObject():New()
//oResult:fromJson( Conout(oRestClient:GetResult())
//oResult['items'] //Relação de Resultados
Else
ConOut Else
Conout(oRestClient:GetLastError())
EndIf
Return
|
| Card |
---|
id | Código: POST REST Client em ADVPL |
---|
label | Código: POST REST Client em ADVPL |
---|
title | Código: POST REST Client em ADVPL |
---|
| Build, RPO e LIB atualizados para versão mais recente no release 12.1.33;Servidor REST habilitado no AppServer do ambiente;Contrato TOTVS I ou Mobile*** (revisar);Host configurado no Mingle;Versão mais recente do APP Minha Produção instalada no dispositivo; |
|
|