1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

Duvida Chamada API ItemTaxSimulationPublic

Discussão em 'Progress 4GL' iniciado por Arthur G, Junho 2, 2025.

  1. Arthur G

    Arthur G Sem Pontuação

    Bom dia,

    Estou com dúvidas de como eu faço a chamada da API ItemTaxSimulationPublic, alguém aqui já utilizou? Pelo que entendi, ela é igual o cálculo do pedido/nf da PD4000 pois preciso simular um calculo de nota em um programa específico que estou estudando. Tenho uma breve documentação desta API porém não informa as chamadas:

    Função:ItemTaxSimulationPublic - API Pública p/ Retorno da Simulação dos impostos de um Estabelecimento x Cliente x Item

    DT Criação da API pública ItemTaxSimulationPublic - Linha Datasul - TDN

    USING PROGRESS.Json.ObjectModel.JSONObject.
    USING PROGRESS.Json.ObjectModel.JSONArray.
    USING PROGRESS.Json.ObjectModel.ObjectModelParser.
    USING OpenEdge.Net.HTTP.lib.ClientLibraryBuilder.
    USING OpenEdge.Net.HTTP.IHttpClientLibrary.
    USING OpenEdge.Net.HTTP.ClientBuilder.
    USING OpenEdge.Net.HTTP.RequestBuilder.
    USING OpenEdge.Net.HTTP.IHttpClient.
    USING OpenEdge.Net.HTTP.IHttpResponse.
    USING OpenEdge.Net.HTTP.IHttpRequest.
    USING OpenEdge.Net.URI.
    DEF VAR oLib AS IHttpClientLibrary NO-UNDO.
    DEF VAR oLib AS IHttpClientLibrary NO-UNDO.
    DEF VAR oHttpClient AS IHttpClient NO-UNDO.
    DEF VAR oURI AS URI NO-UNDO.
    DEF VAR oResponse AS IHttpResponse NO-UNDO.
    /* Variaveis de conexao com o servico */
    /* Variaveis de conexao com o servico */
    DEF VAR c-url AS CHAR NO-UNDO. /* Ex: http://embau ou um IP: http://10.80.72.113 */
    DEF VAR c-porta AS CHAR NO-UNDO. /* Ex: 8480 */
    DEF VAR c-usuario AS CHAR NO-UNDO. /* Ex: super */
    DEF VAR c-senhaBase64 AS CHAR NO-UNDO. /* Senha codificada base64. Ex: sszk@123 -> c3N6a0AxMjM= */
    DEF VAR c-protocolo AS CHAR NO-UNDO. /* Ex: http */
    DEF VAR c-protocolo AS CHAR NO-UNDO. /* Ex: http */
    DEF VAR c-token AS CHAR NO-UNDO. /* Eh gerado a partir do usuario e senha */

    DEF VAR oJsonRemessa AS JSONObject NO-UNDO. /* JSON que sera enviado no POST (body) */
    DEF VAR oRequest AS IHttpRequest NO-UNDO.
    DEF VAR c-rota AS CHAR NO-UNDO. /* Rota, exemplo: dts/datasul-rest/resources/prg/ftp/v1/itemTaxSimulationPublic */
    DEF VAR oJsonObject AS JsonObject NO-UNDO.
    DEF VAR oJsonObject AS JsonObject NO-UNDO.
    DEF VAR JsonString AS LONGCHAR NO-UNDO.
    ASSIGN c-url = "http://embau"
    ASSIGN c-url = "http://embau"
    c-porta = "8480"
    c-usuario = "SUPER"
    c-senhaBase64 = "c3N6a0AxMjM="
    c-rota = "dts/datasul-rest/resources/prg/ftp/v1/itemTaxSimulationPublic?itemCode=.compras&siteCode=1&customerCode=136".
    oJsonRemessa = NEW JsonObject(). /* body da requisocao post (no caso da itemTaxSimulationPublic os parametros sao no query) */
    oJsonRemessa = NEW JsonObject(). /* body da requisocao post (no caso da itemTaxSimulationPublic os parametros sao no query) */
    //oJsonRemessa:AddNumber('OrderNum','3213').
    RUN getRequest (INPUT c-rota, INPUT oJsonRemessa, OUTPUT oRequest). /* monta a requisicao */
    RUN getRequest (INPUT c-rota, INPUT oJsonRemessa, OUTPUT oRequest). /* monta a requisicao */
    ASSIGN oResponse = oHttpClient:EXECUTE(oRequest). /* executa a requisicao */
    IF oResponse:StatusCode = 200 THEN DO: /* respondeu 200 OK imprime resposta */
    IF oResponse:StatusCode = 200 THEN DO: /* respondeu 200 OK imprime resposta */
    oJsonObject = CAST(oResponse:Entity, JsonObject).
    oJsonObject:WRITE(JsonString, TRUE).
    MESSAGE STRING(JsonString)
    MESSAGE STRING(JsonString)
    VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
    END.
    /* ------------------------------------------------------------------------- */
    /* ------------------------------------------------------------------------- */
    PROCEDURE getRequest PRIVATE:
    PROCEDURE getRequest PRIVATE:
    DEF INPUT PARAM c-rota AS CHARACTER NO-UNDO. /* Rota, exemplo: dts/datasul-rest/resources/prg/ftp/v1/itemTaxSimulationPublic */
    DEF INPUT PARAM p-oJsonRemessa AS JSONObject NO-UNDO. /* JSON que sera enviado no POST */
    DEF OUTPUT PARAM p-oRequest AS IHttpRequest NO-UNDO.
    IF c-protocolo = "" THEN DO:
    IF c-protocolo = "" THEN DO:
    ASSIGN c-protocolo = IF INDEX(c-url,"://") = 0 THEN "http"
    ELSE SUBSTRING(c-url,1,INDEX(c-url,"://") - 1)
    c-url = IF INDEX(c-url,"://") = 0 THEN c-url
    ELSE SUBSTRING(c-url,INDEX(c-url,"://") + 3,LENGTH(c-url)).
    END.
    DO ON ERROR UNDO, THROW:
    DO ON ERROR UNDO, THROW:
    DELETE OBJECT oURI NO-ERROR.

    ASSIGN oURI = NEW URI(c-protocolo, c-url)
    oURI:port = INT(c-porta)
    oLib = ClientLibraryBuilder:Build():sslVerifyHost(NO):LIBRARY
    oHttpClient = ClientBuilder:Build():UsingLibrary(oLib):Client.

    END.
    RUN geraToken. /* gera token para autenticacao */
    RUN geraToken. /* gera token para autenticacao */
    ASSIGN oURI:path = c-rota
    ASSIGN oURI:path = c-rota
    p-oRequest = RequestBuilder:post(oURI, p-oJsonRemessa,"application/json":U)
    :AddHeader("Authorization":U, c-token)
    :AddHeader("Accept-Charset":U, "utf-8":U)
    :REQUEST.

    END PROCEDURE.
    END PROCEDURE.
    PROCEDURE geraToken PRIVATE:
    PROCEDURE geraToken PRIVATE:
    def var lc-token-long as longchar no-undo.
    def var lc-senha-long as longchar no-undo.
    def var mptr-token as memptr no-undo.
    def var mptr-senha as memptr no-undo.
    if c-senhaBase64 = '' then
    if c-senhaBase64 = '' then
    assign c-senhaBase64 = 'IA=='. /*'IA== ‚ espa‡o em branco codificado em BASE64'*/
    ASSIGN lc-senha-long = c-senhaBase64.
    ASSIGN lc-senha-long = c-senhaBase64.
    ASSIGN mptr-senha = BASE64-DECODE(lc-senha-long).
    copy-lob mptr-senha to lc-senha-long.
    assign lc-token-long = if c-usuario = "" then "" else c-usuario + ':'
    assign lc-token-long = if c-usuario = "" then "" else c-usuario + ':'
    lc-token-long = lc-token-long + lc-senha-long.
    copy-lob lc-token-long to mptr-token.
    copy-lob lc-token-long to mptr-token.
    assign lc-token-long = base64-encode(mptr-token).
    assign c-token = "Basic ":U + lc-token-long.
    RETURN "OK":U.
    RETURN "OK":U.
    END PROCEDURE.

Compartilhe esta Página