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 Simulação calculo de impostos sem pedido de venda

Discussão em 'EMS , HCM e Totvs 11' iniciado por magidigor, Fevereiro 19, 2025.

  1. magidigor

    magidigor Membro Participativo

    Ola,
    Alguem sabe dizer se existe alguma API no datasul que calcule os imposto de um item sem que tenha um pedido de venda criado?

    A ideia é passar o item, natureza de operação, estabelecimento e cliente. A API calcularia os imposto (ICMS, PIS, CONFINS).

    Obrigado.
  2. Marcos Flizikowski

    Marcos Flizikowski Membro Participativo

    Você irá precisar simular a criação de uma Nota Fiscal na wt-docto e wt-it-docto. Eu tenho uma include que fiz de desenvolvimento aqui na empresa que faz a criação baseado em uma tabela nossa com os dados de cliente, natureza de operação, serie, item.

    Arquivos Anexados:

  3. magidigor

    magidigor Membro Participativo

    Obrigado Marcos.

    A totvs me enviou uma API que faz o calculo dos impostos sem a necessiade de pedido.

    API chama "itemTaxSimulationPublic".

    Segue exemplo de uso.

    Código:
    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 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 */
    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-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 JsonString    AS LONGCHAR           NO-UNDO.
    
    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:AddNumber('OrderNum','3213').
    
    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 */
            oJsonObject = CAST(oResponse:Entity, JsonObject).
            oJsonObject:WRITE(JsonString, TRUE).
    
           MESSAGE STRING(JsonString)
               VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
    END.
    
    /* ------------------------------------------------------------------------- */
    
    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:
            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:
            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 */
    
        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.

Compartilhe esta Página