Árvore de páginas

Versões comparadas

Chave

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

01. DADOS GERAIS

Produto:

Solucoes_totvs
Solucao TOTVS Manufatura

Linha de Produto:

TOTVS Protheus

Segmento:

Segmentos_totvs
SegmentoManufatura

Módulo:SIGAQIP - Inspeção de Processos
Função:

QIPA215

País:Todos
Ticket:Interno.
Issue:DMANQUALI-4018 - DMANQUALI-4686 - DMANQUALI-4478

02. SITUAÇÃO/REQUISITO

Criar uma nova interface para Inspeção de Processo, simplificada para facilitar a entrada de Medições.

03. SOLUÇÃO

Projeto em desenvolvimento, abaixo informações sobre requisitos e disponibilização das API's.

04. DEMAIS INFORMAÇÕES

Deck of Cards
historyfalse
idProced_Implanta
Card
idRequisitos
labelRequisitos
titleRequisitos
  1. Módulo Inspeção de Processos (SIGAQIP) Implantado;
  2. Build, RPO e LIB atualizados para versão mais recente no release 12.1.33;
  3. Servidor REST habilitado no AppServer do ambiente;Contrato TOTVS I ou Mobile*** (revisar);
  4. Host configurado no Mingle;
  5. Versão mais recente do APP Minha Produção instalada no dispositivo;
Card
idImplantação Serviço ou Disponibilização de API's
labelImplantação Serviço ou Disponibilização de API's
titleImplantação Serviço ou Disponibilização de API's

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
titlePré-Requisitos Uso de API's
  1. Configuração do servidor REST no ambiente, seguir instruções da documentação oficial: 1. Configuração do REST do Protheus;
  2. 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
  3. Utilização dos métodos GET e POST conforme especificação padrão "TOTVS - RESTFul API" e exemplos a seguir;

Deck of Cards
historyfalse
idDetalhamento_APIs
effectTypefade
Card
idLista_APIs
labelLista de API's e Endpoints Disponíveis
titleLista 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
historyfalse
idPrincipais_Campos
effectTypefade
Card
idAPI_1
labelInspeções de Processos por Operação
titleInspeçõ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çãoCódigo APIReferência ProtheusTipoOpções
Código do ProdutoproductIDQPK_PRODUTC
Descrição do ProdutoproductB1_DESCC
Ordem de
DescriçãoCódigo APIReferência ProtheusTipo
Código do ProdutoproductIDQPK_PRODUTC
Descrição do ProdutoproductB1_DESCC
Ordem de ProduçãoproductionOrderIDQPK_OPC
Código do RoteirooperationRoutinesQQK_CODIGOC
Código da OperaçãooperationIDQQK_OPERACC
Descrição da OperaçãooperationQQK_DESCRIC
RecursoresourceH1_DESCRIC
QuantidadelotSizeQPK_TAMLOTN
Código Unidade MedidalotUnitIDQPK_UMC
Unidade de MedidalotUnitAH_DESCPOC
LotelotQPK_LOTEC
Número de SérieserialNumberQPK_NUMSERC
Data de EmissãodateQPK_EMISSAD
Cliente e LojacustomerA1_COD + A1_LOJA + A1_NOMEC
Versão da EspecificaçãospecificationVersionQPK_REVIC
Data da ProduçãoproductionDateQPK_DTPRODD
Usuário PermitidoallowedUserReferência existente de cLogin = QAA_LOGIN → true== cLoginLtrue = Usuário Permitido
false = Usuário Não Permitido
Laudo de OperaçãooperationReportQPM_LAUDOCStatus:
N = Não Iniciado
I = Iniciado
A = Aprovado
R = Rejeitado

A = Aprovado
R = Reprovado


U = Liberação Urgente
C = Liberação Condicional
Vazio ou NULL = Pendente

Statusstatus

Regra de Negócio Interna

CRecno InspeçãorecnoQQK.R_E_C_N_O_NN = Não Iniciado
I = Iniciado
A = Aprovado
R = Rejeitado
U = Liberação Urgente
C = Liberação Condicional
Laudo IncompletoincompleteReport
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çãorecnoQQK.R_E_C_N_O_N

    • 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 -
        • QPK.R_E_C_N_O_
        • ;
        • 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:

Card
idAPI_2
labelEnsaios
titleEnsaios
  • TOTVS - RESTFul API:
    Card
    idAPI_2
    labelEnsaios
    titleEnsaios
    • 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çãoCódigo APIReferência ProtheusTipo
    RECNO InspeçãorecnoInspectionN
    RECNO EnsaiorecnoTestQP7.R_E_C_N_O_ ou QP8.R_E_C_N_O_N
    Código do EnsaiotestIDQP7_ENSAIO ou QP8_ENSAIOC
    Sequência do LaboratóriosequenceQP7_SEQLAB ou QP8_SEQLABN
    Título do EnsaiotitleQP1_DESCPOC
    Quantidade de MediçõesnumberOfMensurementsQP1_QTDE*N
    LaboratóriolaboratoryX5_DESCRI para X5_TABELA = 'Q2'C
    Especificação ResumidasummarySpecification

    QP7_NOMINA QP7_LIE / QP7_LSE

    Ou QP8_TEXTO

    C
    Código Unidade de MedidalotUnitIDQP7_UNIMEDC
    Tipo de ControlecontrolTypeQP7_MINMAXC
    Limite Inferior EngenharialowerDeviationQP7_LIEC
    Limite Superior EngenhariaupperDeviationQP7_LSEC
    Tipo do EnsaiotestTypeQP7 → N → Numérico
    QP8 → T → Texto
    C
    Status:
    A = Aprovado
    R = Reprovado
    P = Pendente
    N = Não Obrigatório
    statusRegra de Negócio InternaC
    DescriçãoCódigo APIReferência ProtheusTipoOpções
    RECNO InspeçãorecnoInspectionQPK.R_E_C_N_O_N
    RECNO EnsaiorecnoTestQP7.R_E_C_N_O_ ou QP8.R_E_C_N_O_N
    Código do EnsaiotestIDQP7_ENSAIO ou QP8_ENSAIOC
    Sequência do LaboratóriosequenceQP7_SEQLAB ou QP8_SEQLABN
    Ensaio Obrigatórioobrigatory
    L
    Título do EnsaiotitleQP1_DESCPOC
    Quantidade de MediçõesnumberOfMensurementsQP1_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

    TipotypeQP1_TIPOC
    LaboratóriolaboratoryX5_DESCRI para X5_TABELA = 'Q2'C
    ID do LaboratóriolaboratoryIDX5_CHAVE para X5_TABELA = 'Q2'C
    Especificação ResumidasummarySpecification

    QP7_NOMINA QP7_LIE / QP7_LSE

    Ou QP8_TEXTO

    C
    Código Unidade de MedidalotUnitIDQP7_UNIMEDC
    Tipo de ControlecontrolTypeQP7_MINMAXC
    Valor NominalnominalValueQP7_NOMINAC
    Limite Inferior EngenharialowerDeviationQP7_LIEC
    Limite Superior EngenhariaupperDeviationQP7_LSEC
    Operação da InspeçãooperationIDQP7_OPERAC / QP8_OPERACC
    Tipo do EnsaiotestTypeTabelas do Protheus:
    QP7 = Ensaios Mensuráveis Produtos
    QP8 = Ensaios Textos dos Produtos
    CN = Numérico
    T = Texto
    Laudo do LaboratóriolaboratoryReportQPL_LAUDOC

    A = Aceito sem restrição
    B = Aceito com desvio simples
    C = Aceito com desvio grave
    E = Rejeitado totalmente
    U = Liberação urgente

    StatusstatusRegra de Negócio InternaCA = Aprovado
    R = Reprovado
    P = Pendente
    N = Não Obrigatório
          • _ENSAIO (obrigatório);
          • Demais conforme anterior; 
        • QueryParam:
          • Fields: referência de "Código API" para os campos que devem ser retornados. Default: vazio = todos;

      • GET: Retorna Histórico de Resultados da Inspeção de Processos:
        • Endpoint: processinspectiontestresultsapi/api/qip/v1/history/{RecnoQPK}/{Order}/{Page}/{PageSize}
        • Objetivo: permitir a consulta do histórico de resultados completo da inspeção de processos com base no RECNO de uma inspeção (RecnoQPK);
        • PathParam:
          • RecnoQPK: recno da inspeção - QPK.R_E_C_N_O_ (obrigatório);
          • Demais conforme anterior; 
        • QueryParam:
          • Fields: referência de "Código API" para os campos que devem ser retornados. Default: vazio = todos;

      • POST: Salva Resultado(s):
        • Endpoint: processinspectiontestresultsapi/api/qip/v1/save
        • Objetivo: permitir salvar resultados de inspeção;
        • QueryParam:
          • items: array com relação de objetos json com os campos padrões a seguir:
            • recnoInspection: RECNO da inspeção QPK.R_E_C_N_O_
            • (Obrigatório);
            • recnoTest: RECNO do ensaio relacionado - QP7.R_E_C_N_O_ ou QP8.R_E_C_N_O_
            • (Obrigatório);
            • measurementDate: data da amostra (facultativo);
              • Ao não enviar o sistema considerará a data do recebimento da mensagem;
            • measurementTime: hora da amostra (facultativo);
              • Ao não enviar o sistema considerará a data do recebimento da mensagem;
            • testType: tipo do resultado de ensaio (Obrigatório):
              • QP7 → N → Numérico;
              • QP8 → T → Texto;
            • measurements: array com string de medições da amostra (Obrigatório quando testType = N);
            • textStatus: status da amostra (Obrigatório):
              • A = Aprovado;
              • R = Reprovado;
            • textDetail: justificativa de medições do tipo texto reprovadas(Obrigatório quando testType = N e textStatus = R);
            • protheusLogin: login do usuário do Protheus (Obrigatório);
            • recno: RECNO da amostra -
            • QPR.R_E_C_N_O_
    Card
    idAPI_3
    labelResultados das Inspeções
    titleResultados das Inspeções
    Card
    idAPI_3
    labelResultados das Inspeções
    titleResultados das Inspeções
    • TOTVS - RESTFul API:
    • Métodos:
      • GET: Retorna Resultado(s) da Inspeção de Processos:
      • Endpoint: processinspectiontestresultsapi/api/qip/v1/result/{RecnoQPK}/{RecnosQPR}/{Order}/{Page}/{PageSize}
      • Objetivo: permitir a consulta de uma relação específica de resultados de inspeção com base no RECNO da inspeção (RecnoQPK) e em lista de RECNOS das amostras (RecnosQPR);
      • PathParam:
        • RecnoQPK: recno da inspeção - QPK.R_E_C_N_O_ (obrigatório);
        • RecnosQPR: recnos das amostras separados por ponto e virgula - QPR.R_E_C_N_O_;
        • Order: referência de campos para ordenação dos resultados. Ex: "productionOrderID,operationID";
        • 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;
        GET: Retorna Histórico de Resultados por Ensaio:
      • Endpoint: processinspectiontestresultsapi/api/qip/v1/testhistory/{RecnoQPK}/{IDTest}/{Order}/{Page}/{PageSize}
      • Objetivo: permitir a consulta do histórico de resultados de um ensaio específico com base no RECNO de uma inspeção (RecnoQPK) e no ID de um ensaio (IDTest, QP7_ENSAIO ou QP8_ENSAIO);
      • PathParam:
        • RecnoQPK: recno da inspeção - QPK.R_E_C_N_O_ (obrigatório);
        • IDTest: código do ensaio relacionado QP7_ENSAIO ou QP8_ENSAIO (obrigatório);
        • Demais conforme anterior; 
      • QueryParam:Fields: referência de "Código API" para os campos que devem ser retornados. Default: vazio = todos;
        GET: Retorna Histórico de Resultados da Inspeção de Processos:
        • Endpoint: processinspectiontestresultsapi/api/qip/v1/historyresult/{RecnoQPK}/{RecnosQPR}/{Order}/{Page}/{PageSize}
        • Objetivo: permitir a consulta do histórico de uma relação específica de resultados completo da de inspeção de processos com base no RECNO de uma da inspeção (RecnoQPK) e em lista de RECNOS das amostras (RecnosQPR);
        • PathParam:
          • RecnoQPK: recno da inspeção - QPK.R_E_C_N_O_ (obrigatório);
          • Demais conforme anterior; 
          • RecnosQPR: recnos das amostras separados por ponto e virgula - QPR.R_E_C_N_O_;
          • Order: referência de campos para ordenação dos resultados. Ex: "productionOrderID,operationID";
          • 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;

      • POST: Salva Resultado(s)GET: Retorna Histórico de Resultados por Ensaio:
        • Endpoint: processinspectiontestresultsapi/api/qip/v1/save/testhistory/{RecnoQPK}/{OperationID}/{IDTest}/{Order}/{Page}/{PageSize}
        • Objetivo: permitir salvar resultados de inspeção;a consulta do histórico de resultados de um ensaio específico com base no RECNO de uma inspeção (RecnoQPK) e no ID de um ensaio (IDTest, QP7_ENSAIO ou QP8_ENSAIO);
        • PathParam:
          • RecnoQPK: recno da inspeção - QPK
          QueryParam:
          • items: array com relação de objetos json com os campos padrões a seguir:recnoInspection: RECNO da inspeção QPK.R_E_C_N_O_ (obrigatório);
          • OperationID: operação da inspeção (obrigatório(Obrigatório);
          • recnoTestIDTest: RECNO código do ensaio relacionado - QP7.R_E_C_N_O_ _ENSAIO ou QP8.R_E_C_N_O_ (Obrigatório);
          • measurementDate: data da amostra (facultativo);
            • Ao não enviar o sistema considerará a data do recebimento da mensagem;
          • measurementTime: hora da amostra (facultativo);
            • Ao não enviar o sistema considerará a data do recebimento da mensagem;
          • testType: tipo do resultado de ensaio (Obrigatório):
            • QP7 → N → Numérico;
            • QP8 → T → Texto;
          • measurements: array com string de medições da amostra (Obrigatório quando testType = N);
          • textStatus: status da amostra (Obrigatório):
            • A = Aprovado;
            • R = Reprovado;
          • textDetail: justificativa de medições do tipo texto reprovadas(Obrigatório quando testType = N e textStatus = R);
          • protheusLogin: login do usuário do Protheus (Obrigatório);
          • recno: RECNO da amostra - QPR.R_E_C_N_O_ (facultativo)
            • 0 → incluirá nova amostra;
            • informado → editará uma amostra existente;

    Mapa de Campos Padrões:

    DescriçãoCódigo APIReferência ProtheusTipo
    RECNO InspeçãorecnoInspectionNRECNO EnsaiorecnoTestN
    Data da AmostrameasurementDateQPR_DTMEDID
    Hora da AmostrameasurementTimeQPR_HRMEDIH
    Código do EnsaiadorrehearserIDQPR_ENSRC
    EnsaiadorrehearserQAA_NOMEC
    Tipo do EnsaiotestTypeQP7 → N → Numérico
    QP8 → T → Texto
    C
    Array de MediçõesmeasurementsString com array de medições: QPS_MEDICAC
    Status da Amostra:
    A = Aprovado
    R = Reprovado
    textStatus

    QPR_RESULT

    C
    Justificativa ReprovaçãotextDetailQPQ_MEDICAC
    Usuário ProtheusprotheusLoginQAA_LOGINC
    RECNO AmostrarecnoN
    Card
    idAppServer.INI
    labelAppServer.INI
    titleAppServer.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
    languagetext
    titleAmostra 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çãoCódigo APIReferência ProtheusTipoOpções
    RECNO InspeçãorecnoInspectionQPK.R_E_C_N_O_N
    RECNO EnsaiorecnoTestQP7.R_E_C_N_O_ ou QP8.R_E_C_N_O_N
    Data da AmostrameasurementDateQPR_DTMEDID
    Hora da AmostrameasurementTimeQPR_HRMEDIH
    Código do EnsaiadorrehearserIDQPR_ENSRC
    EnsaiadorrehearserQAA_NOMEC
    Tipo do EnsaiotestTypeQP7 = Tabela de Ensaios Mensuráveis Produtos
    QP8 = Tabela de Ensaios Textos dos Produtos
    CN = Numérico
    T = Texto
    Array de MediçõesmeasurementsString com array de medições: QPS_MEDICAC
    Status da AmostratextStatus

    QPR_RESULT

    CA = Aprovado
    R = Reprovado
    Justificativa ReprovaçãotextDetailQPQ_MEDICAC
    Usuário ProtheusprotheusLoginQAA_LOGINC
    RECNO AmostrarecnoQPR.R_E_C_N_O_N
    Card
    idAppServer.INI
    labelAppServer.INI
    titleAppServer.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
    languagetext
    titleAmostra 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
    idGET Postman
    labelGET Postman
    titleGET 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
    languagetext
    titleExemplo de resposta
    collapsetrue
    {
        "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
    idGET Postman
    labelGET Postman
    titleGET 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
    languagetext
    titleExemplo de resposta
    collapsetrue
    {
        "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
    idPOST Postman
    labelPOST Postman
    titlePOST 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
    languagetext
    titleExemplo de conteúdo para Body
    collapsetrue
    {
        "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
    idPOST Postman
    labelPOST Postman
    titlePOST 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
    languagetext
    titleExemplo de conteúdo para Bodyresposta
    collapsetrue
    {
        "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
    idCódigo: GET REST Client em ADVPL
    labelCódigo: GET REST Client em ADVPL
    titleCó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
    languagetext
    titleExemplo de resposta
    collapsetrue
    titleCó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
    idCódigo: POST REST Client em ADVPL
    labelCódigo: POST REST Client em ADVPL
    titleCó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
    languagetext
    titleCó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
    idCódigo: GET REST Client em ADVPL
    labelCódigo: GET REST Client em ADVPL
    titleCó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
    languagetext
    titleCó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
    idCódigo: POST REST Client em ADVPL
    labelCódigo: POST REST Client em ADVPL
    titleCó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;
    )
        EndIf
    	
    Return
    
    

    05. ASSUNTOS RELACIONADOS