Árvore de páginas

DADOS GERAIS SOBRE O RECURSO

O sistema disponibiliza o plugin de nome "Simulação de impostos", onde o usuário terá a possibilidade de visualizar os impostos que serão gerados no pedido, tendo uma visão mais precisa dos valores.

A configuração é realizada nas configurações > Integração > Plugins de integração.

  • Antes de realizar as configurações de impostos é preciso validar as configurações gerais, afim de garantir que a aplicação possui os acessos ao "Carte", veja o material: 

Configuração do serviço de integração Pentaho Carte



    Configuração do Plugin

    Nas configurações do Plugin, o usuário realiza o cadastro dos dados confirme a sua necessidade:


    Campo Dados informados
    Campo que definirá se o plugin utilizado será Protheus, Datasul ou Outro Plugin dentro das diretrizes informada na documentação
    URL de conexão Url fornecida pelo plugin para gerar a integração com o cálculo de imposto
    Usuário Usuário do plugin
    Senha Senha do plugin
    Timeout ao requisitar impostos (seg) Tempo de espera para o retorno da consulta no Plugin
    Obrigar simulação de impostos para Campo que permite selecionar se haverá validação de imposto calculado tanto na gravação do pedido quanto na finalização.

    Exemplo de configuração do Plugin Simulação de impostos:

    Simulação de imposto no pedido

    No pedido de venda, caso o Plugin de integração de código "imposto" estiver ativo,

    O sistema disponibiliza o botão de "Calcular impostos" Web e ícone no Android.

    Este botão é dinâmico, ou seja, o sistema muda a cor de ícone baseado na situação dos impostos:

          • Impostos não calculados: cor amarela
          • Impostos calculados: cor verde

    Se alterado dados dos produtos, o ícone retorna para o status de "não calculado"


    Ao clicar no botão de "Calcular impostos" o sistema dispara uma requisição POST para carte do Pentaho:

    Imagem de exemplo:

     

    A representação dos impostos em tela exibe os valores persistidos na linha do item e nos resumos, agrupando os valores dos itens.

    Sobre a validação ao Cincuir o Pedido, varia confirme for selecionado na Configuração do Plugin de Integração:

      • Selecionado opção para validar ao gravar o pedido,
        • Caso a checkbox "Gravar pedido" estiver marcada, o sistema restringi a gravação caso os impostos não estiverem calculados (cor verde), com mensagem: "É obrigatória a simulação de impostos para executar esta ação"
      • Selecionado opção para validar ao finalizar o pedido
        • Caso a checkbox "Finalizar pedido" estiver marcada, o sistema restringi a finalização caso os impostos não estiverem calculados (cor verde), com mensagem: "É obrigatória a simulação de impostos para executar esta ação"

      Modelo de requisição para simulação de impostos Protheus APIs Nativas

      O Pentaho Carte, recebe a requisição da aplicação na rota COMMONS_Bloco_TAXSIMULATION, e trata os dados recebidos segundo o modelo da entrada da API de simulação de impostos do Protheus, segundo documentação  https://api.totvs.com.br/apidetails/SalesTaxes_v1_000.json

      Com o retorno, o serviço de integração implementa os campos definidos pela tabela de-para do Modelo Protheus (veja em "Escopo Técnico).

      Modelo de requisição para Simulação de impostos Datasul APIs Nativas

      O Pentaho Carte, recebe a requisição da aplicação na rota COMMONS_Bloco_TAXSIMULATION, e trata os dados recebidos segundo o modelo da entrada da API de simulação de impostos do Datasul, que segue o modelo: API-REST Imposto/Classificação Imposto

      A URL da rota é definida pelo padrão; ${base_url}/api/ftp/v2/ItemTaxSimulationPublic

      Com o retorno, o serviço de integração implementa os campos definidos pela tabela de-para do Modelo Datasul (veja em "Escopo Técnico).

      Modelo de requisição para simulação de impostos Genérica

      Foi também implementado um modelo genérico padrão, onde o Pentaho envia requisição com autenticação básica definida segundo modelo padrão e esperando receber retorno segundo modelo padrão definido pela documentação Plugin de Integração "Simulação de Impostos".

      Caso os sistemas terceiros se adaptem ao modelo padrão definido acima, o requisito de simulação de impostos poderá ser implementados sem necessidade de customização.

      Entretanto, caso os sistemas não possam se adaptar para receber e retornar a requisição segundo o definido pela documentação acima, esse modelo de simulação de impostos será configurado na aplicação para que dispare serviço de integração customizado, que respeita apenas o contrato requisição/retorno definido entre aplicação/pentaho.






      Escopo Técnico

      Pelo tools, opção 5, o sistema cria o registro na tabela pluginintegracao.codigo com valor = IMPOSTO

      Para funcionar corretamente, o cadastro das configurações do plugin de Imposto insere na tabela pluginintconfig as seguintes informações:

            • Campo de label "Modelo de simulação de impostos":
              • Opções fixas (pluginintconfig.valor):
                • "Protheus APIs Nativas": valor "protheus"
                • "Datasul APIs Nativas": valor "datasul"
                • "Genérico": valor "generico"
              • Registro na tabela pluginintconfig:
                • idpluginintegracao = ID da tabela pluginintegracao com codigo = IMPOSTO
                • codigoelemento = IMPOSTO
                • agrupador = 0
                • sglcampo = IMPOSTO_MODELO
                • idnativo = 0
                • valor = Dependendo da seleção (PROTHEUS, DATASUL ou GENERICO)
            • Campo de label "URL de conexão": textual obrigatório
              • Registro na tabela pluginintconfig:
                • idpluginintegracao = ID da tabela pluginintegracao com codigo = IMPOSTO
                • codigoelemento = IMPOSTO
                • agrupador = 0
                • sglcampo = IMPOSTO_URL
                • idnativo = 0
                • valor = Valor inserido pelo usuário
            • Grupo de elementos de label "Autenticação"
              • Campo de label "Usuário": textual obrigatório
                • Registro na tabela pluginintconfig:
                  • idpluginintegracao = ID da tabela pluginintegracao com codigo = IMPOSTO
                  • codigoelemento = IMPOSTO
                  • agrupador = 0
                  • sglcampo = IMPOSTO_USUARIO
                  • idnativo = 0
                  • valor = Valor inserido pelo usuário
              • Campo de label "Senha": textual, obrigatório, tipado como "password" para não pemitir visualização direta da senha na tela.
                • Registro na tabela pluginintconfig:
                  • idpluginintegracao = ID da tabela pluginintegracao com codigo = IMPOSTO
                  • codigoelemento = IMPOSTO
                  • agrupador = 0
                  • sglcampo = IMPOSTO_SENHA
                  • idnativo = 0
                  • valor = Valor inserido pelo usuário
            • Campo de label "Timeout ao requisitar impostos (seg)": campo numérico, se não informado, adotar o padrão 30 segundos
              • Registro na tabela pluginintconfig:
                • idpluginintegracao = ID da tabela pluginintegracao com codigo = IMPOSTO
                • codigoelemento = IMPOSTO
                • agrupador = 0
                • sglcampo = IMPOSTO_TIMEOUT
                • idnativo = 0
                • valor = Valor inserido pelo usuário
            • Campo de label "Obrigar simulação de impostos para:": Checkbox, seleção opcional
              • Checkbox de label "Gravar pedido"
                • Registro na tabela pluginintconfig:
                  • idpluginintegracao = ID da tabela pluginintegracao com codigo = IMPOSTO
                  • codigoelemento = IMPOSTO
                  • agrupador = 0
                  • sglcampo = IMPOSTO_OBRIGATORIO_AO_GRAVAR
                  • idnativo = 0
                  • valor = Valor 0 ou1
              • Checkbox de label "Finalizar pedido"
                • Registro na tabela pluginintconfig:
                  • idpluginintegracao = ID da tabela pluginintegracao com codigo = IMPOSTO
                  • codigoelemento = IMPOSTO
                  • agrupador = 0
                  • sglcampo = IMPOSTO_OBRIGATORIO_AO_FINALIZAR
                  • idnativo = 0
                  • valor = Valor 0 ou1



        Modelo de requisição enviada:


        {
            "idusuario": 1, //pedido.idusuarioprofissional
            "idparceiro": 1, //pedido.idparceiro
            "idlocal": 2, //pedido.idlocal
            "idlocalcobranca": 3, //pedido.idlocalcobranca
            "idfilialvenda": 3, //pedido.idlocalfilialvenda
            "idfilialretira": 4, //pedido.idlocalfilialretirada
            "idfilialfaturamento": 5, //pedido.idlocalfilialfaturamento
            "idtipopedido": 4, //pedido.idtipopedido
            "idtipocobranca": 5, //pedido.idtipocobranca
            "idtabelapreco": 6, //pedido.idtabelapreco
            "idcondicaopagamento": 5, //pedido.idcondicaopagamento
            "idsegmento": 8, //pedido.idsegmento
            "idtipologia": 8, //pedido.idtipologia
            "idoperacao": 8, //pedido.idoperacao
            "idmoeda": 8, //pedido.idindexador
            "idtipoestoque": 8, //pedido.idtipoestoque
            "valortotalbruto": 8.00, //Campo "Valor total bruto do resumo"
            "valortotalliquido": 9.00,//Campo "Valor total liquido do resumo"
            "descontopedido": [
                {
                    "codigo": "8", //pedidotipodesconto.idtipodesconto > tipodesconto.codigo
                    "percentual": 9.00, //pedidotipodesconto.percentual
                    "valor": 10.00 //pedidotipodesconto.valor
                },
                {
                    "codigo": "8", //pedidotipodesconto.idtipodesconto > tipodesconto.codigo
                    "percentual": 9.00, //pedidotipodesconto.percentual
                    "valor": 10.00 //pedidotipodesconto.valor
                }
            ],
            "pedidoproduto": [
                {
                    "ordem": 1, //pedidoproduto.ordem
                    "idproduto": 8, //pedidoproduto.idproduto
        			"idembalagem": 10, //pedidoproduto.idembalagem,
                    "quantidade": 9.00, //pedidoproduto.quantidade
                    "precovenda": 10.00, //pedidoproduto.precovenda PS:Valor unitário
                    "precotabela": 11.00, //pedidoproduto.precotabela PS:Valor unitário
                    "precooriginal": 12.00, //pedidoproduto.precooriginal PS:Valor unitário
                    "percentualdesconto": 13.00, //pedidoproduto.percentualdesconto
                    "valordesconto": 13.00, //pedidoproduto.valordesconto PS:Valor unitário
                    "percentualacrescimo": 13.00, //pedidoproduto.percentualacrescimo
                    "valoracrescimo": 13.00, //pedidoproduto.valoracrescimo PS:Valor unitário
                    "idtipopedido": 13.00, //pedidoproduto.idtipopedido
                    "idtipoestoque": 14, //pedidoproduto.idtipoestoque
                    "idtabelapreco": 15, //pedidoproduto.idtabelapreco
                },
                {
                    "ordem": 1, //pedidoproduto.ordem
                    "idproduto": 8, //pedidoproduto.idproduto
         			"idembalagem": 10, //pedidoproduto.idembalagem,
                    "quantidade": 9.00, //pedidoproduto.quantidade
                    "precovenda": 10.00, //pedidoproduto.precovenda PS:Valor unitário
                    "precotabela": 11.00, //pedidoproduto.precotabela PS:Valor unitário
                    "precooriginal": 12.00, //pedidoproduto.precooriginal PS:Valor unitário
                    "percentualdesconto": 13.00, //pedidoproduto.percentualdesconto
                    "valordesconto": 13.00, //pedidoproduto.valordesconto PS:Valor unitário
                    "percentualacrescimo": 13.00, //pedidoproduto.percentualacrescimo
                    "valoracrescimo": 13.00, //pedidoproduto.valoracrescimo PS:Valor unitário
                    "idtipopedido": 13.00, //pedidoproduto.idtipopedido
                    "idtipoestoque": 14, //pedidoproduto.idtipoestoque
                    "idtabelapreco": 15, //pedidoproduto.idtabelapreco
                }
            ],
            "pedidoentrega": [
                {
                    "idtipofrete": 4, //pedidoentrega.idtipofrete
                    "idtransportadora": 7,//pedidoentrega.idparceirotransportador
        			"idparceiroentrega": 8, //pedidoentrega.idparceiroentrega
                    "valorfrete": 5.00, //pedidoentrega.valorfrete
                    "valordespesa": 6.00, //pedidoentrega.valordespesa
                    "valorseguro": 7.00 //pedidoentrega.valorseguro        
                },
                {
                    "idtipofrete": 4, //pedidoentrega.idtipofrete
                    "idtransportadora": 7,//pedidoentrega.idparceirotransportador
        			"idparceiroentrega": 8, //pedidoentrega.idparceiroentrega
                    "valorfrete": 5.00, //pedidoentrega.valorfrete
                    "valordespesa": 6.00, //pedidoentrega.valordespesa
                    "valorseguro": 7.00 //pedidoentrega.valorseguro        
                }
            ]
        }

        O retorno esperado virá com o modelo a seguir:

        {
          "valortotalcomimpostos": 178.56,
          "valortotalimpostos": 21.96,
          "valortotaldespesa": 0, //pedidoentrega.valordespesa
          "valortotalseguro": 7, //pedidoentrega.valorseguro  
          "pedidoimposto": [
            {
              "sglimposto": "ICMS",
              "aliquota": 7,
              "valortotalimposto": 12.14
            },
            {
              "sglimposto": "IPI",
              "aliquota": 6,
              "valortotalimposto": 9.82
            }
          ],
          "itemimposto": [
            {
              "ordem": 1, //pedidoproduto.ordem
              "idproduto": 8, //pedidoproduto.idproduto //
              "valortotalcomimpostos": 89.21, //NÃO UNITÁRIO, precisa ser múltiplicado pela requisição.quantidade
              "valortotalfrete": 2.5, //NÃO UNITÁRIO, precisa ser múltiplicado pela requisição.quantidade
              "impostos": [
                {
                  "sglimposto": "ICMS",
                  "valorbase": 78.3,
                  "aliquota": 6.24,
                  "valortotalimposto": 6.24 //NÃO UNITÁRIO, precisa ser múltiplicado pela requisição.quantidade
                },
                {
                  "sglimposto": "IPI",
                  "valorbase": 78.3,
                  "aliquota": 6,
                  "valortotalimposto": 4.91 //NÃO UNITÁRIO, precisa ser múltiplicado pela requisição.quantidade
                },
                {
                  "sglimposto": "ST",
                  "valorbase": 78.3,
                  "aliquota": 0,
                  "valortotalimposto": 0 //NÃO UNITÁRIO, precisa ser múltiplicado pela requisição.quantidade
                },
                {
                  "sglimposto": "COFINS",
                  "valorbase": 78.3,
                  "aliquota": 0,
                  "valortotalimposto": 0 //NÃO UNITÁRIO, precisa ser múltiplicado pela requisição.quantidade
                },
                {
                  "sglimposto": "CSLL",
                  "valorbase": 78.3,
                  "aliquota": 0,
                  "valortotalimposto": 0 //NÃO UNITÁRIO, precisa ser múltiplicado pela requisição.quantidade
                }
              ]
            },
            {
              "ordem": 2, //pedidoproduto.ordem
              "idproduto": 9, //pedidoproduto.idproduto //
              "valortotalcomimpostos": 84.3, //NÃO UNITÁRIO, precisa ser múltiplicado pela requisição.quantidade
              "valortotalfrete": 2.5, //NÃO UNITÁRIO, precisa ser múltiplicado pela requisição.quantidade
              "impostos": [
                {
                  "sglimposto": "ICMS",
                  "valorbase": 78.3,
                  "aliquota": 5.9,
                  "valortotalimposto": 5.9 //NÃO UNITÁRIO, precisa ser múltiplicado pela requisição.quantidade
                },
                {
                  "sglimposto": "IPI",
                  "valorbase": 78.3,
                  "aliquota": 6,
                  "valortotalimposto": 4.91 //NÃO UNITÁRIO, precisa ser múltiplicado pela requisição.quantidade
                },
                {
                  "sglimposto": "ST",
                  "valorbase": 78.3,
                  "aliquota": 0,
                  "valortotalimposto": 0 //NÃO UNITÁRIO, precisa ser múltiplicado pela requisição.quantidade
                },
                {
                  "sglimposto": "COFINS",
                  "valorbase": 78.3,
                  "aliquota": 0,
                  "valortotalimposto": 0 //NÃO UNITÁRIO, precisa ser múltiplicado pela requisição.quantidade
                },
                {
                  "sglimposto": "CSLL",
                  "valorbase": 78.3,
                  "aliquota": 0,
                  "valortotalimposto": 0 //NÃO UNITÁRIO, precisa ser múltiplicado pela requisição.quantidade
                }
              ]
            }
          ]
        }


        Com o retorno acima, o sistema persiste as informações em tela, segundo o seguinte de-para:


        Retorno da Simulação Campo do SFA
        itemimposto.impostos.sglimposto

        pedidoimposto.idimposto

        itemimposto.impostos.valorbase

        pedidoimposto.valorbasecalculoreducao

        itemimposto.impostos.aliquota pedidoimposto.valorbasecalculo
        itemimposto.impostos.valortotalimposto

        pedidoimposto.valorimposto

        itemimposto.ordem / itemimposto.idproduto pedidoimposto.idpedidoproduto (procurar por pedidoproduto.ordem e pedidoproduto.idproduto respectivamente)
        itemimposto.valortotalfrete pedidoproduto.valorfrete
        itemimposto.valortotalcomimpostos pedidoproduto.valortotalcomimposto

        Modelo Protheus

        Abaixo está o escopo do cálculo de imposto do Protheus.

        A integração recebe a solicitação da aplicação via Carte, busca, processa e retorna para a mesma.

        Abaixo estão exemplos via POSTMAN:

        URL

        Na URL para o Protheus, o formato será o seguinte:

        POST {{URL}/AMBIENTE/api/fat/v1/SalesTaxes

        Substitua a variável URL pelo caminho da API, informado pelo cliente.

        Exemplo:

        Autorização

        Na aba de autorização, selecione o tipo Basic e informe os dados de usuário e senha:

        Header

        No header da requisição, informado o tipo do conteúdo:

        Content-Type: application/json

        Body

        No corpo da mensagem, substituido os dados da ordem de venda nas tags correspondentes.

        Exemplo:

        Corpo de uma mensagem de exemplo:

        {
          "SalesType""N",
          "CustomerId""0D69DO",
          "CustomerUnit""01",
          "CustomerIdDelivery""0D69DO",
          "CustomerUnitDelivery""01",
          "CustomerType""S",
          "Payment""002",
          "DiscountPercentage1"9,
          "DiscountPercentage2"0,
          "DiscountPercentage3"0,
          "DiscountPercentage4"0,
          "Currency"1,
          "Freight"0,
          "Insurance"0,
          "Expense"0,
          "ListofProducts": [
            {
              "ItemId""1",
              "ProductId""181647",
              "Quantity"90,
              "UnitaryValue"10,
              "TotalValue"900,
              "ItemDiscountPercentage"13,
              "operationType""03",
              "TES""501",
              "ItemDiscountValue"0
            }
          ]
        }

        Explicando cada um dos campos do corpo da simulação de impostos

        "SalesType": "N"

        Tipo da venda, usa o valor “N" fixo

        "CustomerId": "0D69DO"

        Código do cliente, extraído do campo PARCEIRO.NUMEROMATRICULA selecionado no cabeçalho da ordem de venda

        "CustomerUnit": "01"

        Código da loja selecionado no cabeçalho da ordem de venda, extraído do campo LOCAL.SPLIT_PART(CODIGOERP,'#',4), ou se for nulo, FILIALVENDA.SPLIT_PART(CODIGOERP,'#',3) 

        "CustomerIdDelivery": "0D69DO"

        Código do cliente, extraído do campo PARCEIRO.NUMEROMATRICULA selecionado na entrega da ordem de venda

        "CustomerUnitDelivery": "01"

        Código da loja do cliente, extraído do campo LOCAL.SPLIT_PART(CODIGOERP,'#',4) selecionado na entrega da ordem de venda

        "CustomerType": "S"

        Tipo do cliente, usa o valor extraído do campo CLASSIFICACAOPARCEIRO.CODIGOERP

         "Payment": "002"

        Código da condição de pagamento, campo CONDICAOPAGAMENTO.SPLIT_PART(CODIGOERP,'#',2) selecionado no cabeçalho da ordem de venda

        "DiscountPercentage1": 9,  "DiscountPercentage2": 0, "DiscountPercentage3": 0, "DiscountPercentage4": 0

        Campo Calculado: total bruto dos itens - total liquido dos itens ((1 - (totalliquido/ totalbruto)) * 100) na primeira tag, nas demais não é enviado nenhum valor.

        "Currency": 1

        Fixo 1

        "Freight": 0

        Valor do frete inserido na ordem de venda, campo PEDIDOENTREGA.VALORFRETE

        "Insurance": 0

        Valor do seguro do pedido, campo PEDIDOENTREGA.VALORSEGURO

        "Expense": 0

        Valor de despesas acessórias, campo PEDIDOENTREGA.VALORDESPESA

        "ListofProducts"."ItemId": “1”

        Número sequencial de cada item dentro da ordem de venda, campo PEDIDOPRODUTO.ORDEM

        "ListofProducts"."ProductId": "181647"

        Código do produto inserido nos itens da ordem de venda, campo PRODUTO.SPLIT_PART(CODIGOERP,'#',2)

        "ListofProducts"."Quantity": 90

        Quantidade do item em questão inserido nas ordens de venda, campo PEDIDOPRODUTO.QUANTIDADE

        "ListofProducts"."UnitaryValue": 10

        Valor unitário do item inserido nas ordens de venda (valor cheio, não considera desconto), campo PEDIDOPRODUTO.PRECOVENDA

        "ListofProducts"."TotalValue": 900

        Valor total do item inserido nas ordens de venda, PEDIDOPRODUTO.QUANTIDADE * PEDIDOPRODUTO.PRECOVENDA

        "ListofProducts"."ItemDiscountPercentage": 13

        Percentual de desconto inserido no item da ordem de venda, campo PEDIDOPRODUTO.PERCENTUALDESCONTO

        "ListofProducts"."ItemDiscountValue": 0

        Fixo 0

        "ListofProducts"."OperationType": "03"

        TES INTELIGENTE, campo TIPOPEDIDO.CODIGOERP

        OBS: Caso o tipo de pedido do item for nulo, é enviado o do cabeçalho

        "ListofProducts"."TES": "501"

        TES PADRÃO, campo TIPOPEDIDO.SPLIT_PART(CODIGOERP,'#',2)

        OBS: Caso o tipo de pedido do item for nulo, é enviado o do cabeçalho

        Modelo Datasul

        Abaixo está o escopo do cálculo de imposto do Datasul.

        A integração recebe a solicitação da aplicação via Carte, busca, processa e retorna para a mesma.

        Abaixo estão exemplos via POSTMAN:

        URL

        Na URL para o Datasul, o formato será o seguinte:

        POST {{URL}/api/ftp/v2/ItemTaxSimulationPublic

        Substitua a variável URL pelo caminho da API, informado pelo cliente.

        Exemplo:

        Autorização

        Na aba de autorização, é selecionado o tipo Basic e informado os dados de usuário e senha:

        Header

        No header da requisição, informaado o tipo do conteúdo:

        Content-Type: application/json

        Body

        No corpo da mensagem, substituido os dados da ordem de venda nas tags correspondentes.

        Exemplo:

        Corpo de uma mensagem de exemplo:

        {
            "SalesType""N",
            "CustomerId""000001",
            "CustomerUnit""01",
            "CustomerIdDelivery""000001",
            "CustomerUnitDelivery""01",
            "CustomerType""F",
            "Payment""001",
            "DiscountPercentage1"10,
            "DiscountPercentage2": 0,
            "DiscountPercentage3": 0,
            "DiscountPercentage4": 0,
            "Currency"1,
            "Freight"10,
            "Insurance"0,
            "Expense"0,
            "ListofProducts": [
                {
                    "ItemId""01",
                    "ProductId""3395979",
                    "Quantity"10,
                    "UnitaryValue"100,
                    "TotalValue"1000,
                    "ItemDiscountPercentage"10,
                    "ItemDiscountValue"100,
                    "OperationType""02"
                }
            ]
        }

        Explicando cada um dos campos do corpo da simulação de impostos

        "SalesType": "N"

        Tipo da venda, usa o valor “N" fixo

        "CustomerId": "000001"

        Código do cliente, extraído do campo PARCEIRO.SPLIT_PART(CODIGOERP,'#',3) selecionado no cabeçalho da ordem de venda

        "CustomerUnit": "01"

        Código da loja, extraído do campo PARCEIRO.SPLIT_PART(CODIGOERP,'#',3) selecionado no cabeçalho da ordem de venda

        "CustomerIdDelivery": "000001"

        Código do cliente de entrega, extraído do campo PARCEIRO.SPLIT_PART(CODIGOERP,'#',3) selecionado na entrega da ordem de venda

        "CustomerUnitDelivery": "01"

        Código da loja do cliente de entrega, extraído do campo PARCEIRO.SPLIT_PART(CODIGOERP,'#',3) selecionado na entrega da ordem de venda

        "CustomerType": "F"

        Tipo do cliente, usa o valor extraído do campo CLASSIFICACAOPARCEIRO.SUBSTR(C.CODIGOERP,LENGTH(C.CODIGOERP),LENGTH(C.CODIGOERP))

         "Payment": "001"

        Código da condição de pagamento, campo CONDICAOPAGAMENTO.SPLIT_PART(CODIGOERP,'#',2) selecionado no cabeçalho da ordem de venda

        "DiscountPercentage1": 10,  "DiscountPercentage2": 0, "DiscountPercentage3": 0, "DiscountPercentage4": 0

        Campo Calculado: total bruto dos itens - total liquido dos itens ((1 - (totalliquido/ totalbruto)) * 100) na primeira tag, nas demais não é enviado nenhum valor.

        "Currency": 1

        Moeda selecionada na ordem de venda, campo INDEXADOR.CAST(SPLIT_PART(CODIGOERP,'#',2) AS INT)

        "Freight": 10

        Valor do frete inserido na ordem de venda, campo PEDIDOENTREGA.VALORFRETE

        "Insurance": 0

        Valor do seguro do pedido, campo PEDIDOENTREGA.VALORSEGURO

        "Expense": 0

        Valor de despesas acessórias, campo PEDIDOENTREGA.VALORDESPESA

        "ListofProducts"."ItemId": “01”

        Número sequencial de cada item dentro da ordem de venda, campo PEDIDOPRODUTO.ORDEM * 10

        "ListofProducts"."ProductId": "3395979"

        Código do produto inserido nos itens da ordem de venda, campo PRODUTO.SPLIT_PART(CODIGOERP,'#',2)

        "ListofProducts"."Quantity": 10

        Quantidade do item em questão inserido nas ordens de venda, campo PEDIDOPRODUTO.QUANTIDADE

        "ListofProducts"."UnitaryValue": 100

        Valor unitário do item inserido nas ordens de venda (valor cheio, não considera desconto), campo PEDIDOPRODUTO.PRECOVENDA

        "ListofProducts"."TotalValue": 1000

        Valor total do item inserido nas ordens de venda, PEDIDOPRODUTO.QUANTIDADE * PEDIDOPRODUTO.PRECOVENDA

        "ListofProducts"."ItemDiscountPercentage": 10

        Percentual de desconto inserido no item da ordem de venda, campo PEDIDOPRODUTO.PERCENTUALDESCONTO

        "ListofProducts"."ItemDiscountValue": 100

        Fixo 0

        "ListofProducts"."OperationType": "02"

        Tipo de operação, campo TIPOPEDIDO.CODIGOERP

        OBS: Caso o tipo de pedido do item for nulo, é enviado o do cabeçalho.

        Modelo Genérico

        Protocolo HTTP REST

        Modelo de autenticação: Básica Usuário/Senha

        // Requisicao
         
        {
            "idusuario": 1, //pedido.idusuarioprofissional
            "idusuario_externalid": "cod", //pedido.idusuarioprofissional > codigoerp
            "idparceiro": 1, //pedido.idparceiro
            "idparceiro_externalid": "cod", //pedido.idparceiro > codigoerp
            "idparceiro_subentities": {
                "parceirogrupoparceiro": [
                    {
                        "idnpadrao": 1,
                        "idgrupoparceiro": 1,
                        "idgrupoparceiro_idnativo": 1,
                        "idgrupoparceiro_externalid": "1"
                    }
                ]
            },
            "idlocal": 2, //pedido.idlocal
            "idlocal_externalid": "cod", //pedido.idlocal > codigoerp
            "idlocal_subentities": {
                  "localsegmento": [
                    {
                      "idnpadrao": 0,
                      "idsegmento": 1,
                      "idsegmento_idnativo": 1,
                      "idsegmento_sigla": "ABC",
                      "idsegmento_codigo": "CDE",
                      "idsegmento_externalid": "000001"
                    }
                  ],
                  "localregiao": [
                    {
                      "idregiao": 1,
                      "idregiao_idnativo": 1,
                      "idregiao_externalid": "001"
                    }
                  ],
                  "localtipologia": [
                    {
                        "idtipologia_codigo": "1",
                        "idtipologia_externalid": "1",
                        "idtipologia_idnativo": 1,
                        "idtipologia": 1,
                        "idtipologia_sgltipologia": "TIPOS"
                    }
                  ]
                },
            "idlocalcobranca": 3, //pedido.idlocalcobranca
            "idlocalcobranca_externalid": "cod", //pedido.idlocalcobranca > codigoerp
            "idfilialvenda": 3, //pedido.idlocalfilialvenda
            "idfilialvenda_externalid": "cod", //pedido.idlocalfilialvenda > codigoerp
            "idfilialretira": 4, //pedido.idlocalfilialretirada
            "idfilialretira_externalid": "cod", //pedido.idlocalfilialretirada > codigoerp
            "idfilialfaturamento": 5, //pedido.idlocalfilialfaturamento
            "idfilialfaturamento_externalid": "cod", //pedido.idlocalfilialfaturamento > codigoerp
            "idtipopedido": 4, //pedido.idtipopedido
            "idtipopedido_externalid": "cod", //pedido.idtipopedido > codigoerp
            "idtipocobranca": 5, //pedido.idtipocobranca
            "idtipocobranca_externalid": "cod", //pedido.idtipocobranca > codigoerp
            "idtabelapreco": 6, //pedido.idtabelapreco
            "idtabelapreco_externalid": "cod", //pedido.idtabelapreco > codigoerp
            "idcondicaopagamento": 5, //pedido.idcondicaopagamento
            "idcondicaopagamento_externalid": "cod", //pedido.idcondicaopagamento > codigoerp
            "idsegmento": 8, //pedido.idsegmento
            "idsegmento_externalid": "cod", //pedido.idsegmento > codigoerp
            "idtipologia": 8, //pedido.idtipologia
            "idtipologia_externalid": "cod", //pedido.idtipologia > codigoerp
            "idoperacao": 8, //pedido.idoperacao
            "idoperacao_externalid": "cod", //pedido.idoperacao > codigoerp
            "idmoeda": 8, //pedido.idindexador
            "idmoeda_externalid": "cod", //pedido.idindexador > codigoerp
            "idtipoestoque": 8, //pedido.idtipoestoque
            "idtipoestoque_externalid": "cod", //pedido.idtipoestoque > codigoerp
            "valortotalbruto": 8.00, //Campo "Valor total bruto do resumo"
            "valortotalliquido": 9.00,//Campo "Valor total liquido do resumo"
            "descontopedido": [
                {
                    "codigo": "8", //pedidotipodesconto.idtipodesconto > tipodesconto.codigo
                    "percentual": 9.00, //pedidotipodesconto.percentual
                    "valor": 10.00 //pedidotipodesconto.valor
                },
                {
                    "codigo": "8", //pedidotipodesconto.idtipodesconto > tipodesconto.codigo
                    "percentual": 9.00, //pedidotipodesconto.percentual
                    "valor": 10.00 //pedidotipodesconto.valor
                }
            ],
            "pedidoproduto": [
                {
                    "ordem": 1, //pedidoproduto.ordem
                    "idproduto": 8, //pedidoproduto.idproduto
                    "idproduto_externalid": "cod", //pedidoproduto.idproduto > codigoerp
                    "idembalagem": 10, //pedidoproduto.idembalagem
                    "idembalagem_externalid": "cod", //pedidoproduto.idembalagem > codigoerp
                    "quantidade": 9.00, //pedidoproduto.quantidade
                    "quantidadeembalagem": 2.00, //pedidoproduto.quantidadeembalagem
                    "precovenda": 10.00, //pedidoproduto.precovenda PS:Valor unitario
                    "precotabela": 11.00, //pedidoproduto.precotabela PS:Valor unitario
                    "precooriginal": 12.00, //pedidoproduto.precooriginal PS:Valor unitario
                    "percentualdesconto": 13.00, //pedidoproduto.percentualdesconto
                    "valordesconto": 13.00, //pedidoproduto.valordesconto PS:Valor unitario
                    "percentualacrescimo": 13.00, //pedidoproduto.percentualacrescimo
                    "valoracrescimo": 13.00, //pedidoproduto.valoracrescimo PS:Valor unitario
                    "idtipopedido": 13.00, //pedidoproduto.idtipopedido
                    "idtipopedido_externalid": "cod", //pedidoproduto.idtipopedido > codigoerp
                    "idtipoestoque": 14, //pedidoproduto.idtipoestoque
                    "idtipoestoque_externalid": "cod", //pedidoproduto.idtipoestoque > codigoerp
                    "idtabelapreco": 15, //pedidoproduto.idtabelapreco
                    "idtabelapreco_externalid": "cod" //pedidoproduto.idtabelapreco > codigoerp
                },
                {
                    "ordem": 1, //pedidoproduto.ordem
                    "idproduto": 8, //pedidoproduto.idproduto
                    "idproduto_externalid": "cod", //pedidoproduto.idproduto > codigoerp
                    "idembalagem": 10, //pedidoproduto.idembalagem
                    "idembalagem_externalid": "cod", //pedidoproduto.idembalagem > codigoerp 
                    "quantidade": 9.00, //pedidoproduto.quantidade
                    "quantidadeembalagem": 2.00, //pedidoproduto.quantidadeembalagem
                    "precovenda": 10.00, //pedidoproduto.precovenda PS:Valor unitario
                    "precotabela": 11.00, //pedidoproduto.precotabela PS:Valor unitario
                    "precooriginal": 12.00, //pedidoproduto.precooriginal PS:Valor unitario
                    "percentualdesconto": 13.00, //pedidoproduto.percentualdesconto
                    "valordesconto": 13.00, //pedidoproduto.valordesconto PS:Valor unitario
                    "percentualacrescimo": 13.00, //pedidoproduto.percentualacrescimo
                    "valoracrescimo": 13.00, //pedidoproduto.valoracrescimo PS:Valor unitario
                    "idtipopedido": 13.00, //pedidoproduto.idtipopedido
                    "idtipopedido_externalid": "cod", //pedidoproduto.idtipopedido > codigoerp
                    "idtipoestoque": 14, //pedidoproduto.idtipoestoque
                    "idtipoestoque_externalid": "cod", //pedidoproduto.idtipoestoque > codigoerp
                    "idtabelapreco": 15, //pedidoproduto.idtabelapreco
                    "idtabelapreco_externalid": "cod" //pedidoproduto.idtabelapreco > codigoerp
                }
            ],
            "pedidoentrega": [
                {
                    "idtipofrete": 4, //pedidoentrega.idtipofrete
                    "idtipofrete_externalid": "cod", //pedidoentrega.idtipofrete > codigoerp
                    "idparceiroentrega": 4, //pedidoentrega.idparceiroentrega
                    "idparceiroentrega_externalid": "cod", //pedidoentrega.idparceiroentrega > codigoerp
                    "idtransportadora": 7,//pedidoentrega.idparceirotransportador
                    "idtransportadora_externalid": "cod",//pedidoentrega.idparceirotransportador > codigoerp
                    "valorfrete": 5.00, //pedidoentrega.valorfrete
                    "valordespesa": 6.00, //pedidoentrega.valordespesa
                    "valorseguro": 7.00 //pedidoentrega.valorseguro       
                },
                {
                    "idtipofrete": 4, //pedidoentrega.idtipofrete
                    "idtipofrete_externalid": "cod", //pedidoentrega.idtipofrete > codigoerp
                    "idparceiroentrega": 4, //pedidoentrega.idparceiroentrega
                    "idparceiroentrega_externalid": "cod", //pedidoentrega.idparceiroentrega > codigoerp 
                    "idtransportadora": 7,//pedidoentrega.idparceirotransportador
                    "idtransportadora_externalid": "cod",//pedidoentrega.idparceirotransportador > codigoerp
                    "valorfrete": 5.00, //pedidoentrega.valorfrete
                    "valordespesa": 6.00, //pedidoentrega.valordespesa
                    "valorseguro": 7.00 //pedidoentrega.valorseguro       
                }
            ]
        }
         
        // Retorno
         
        {
            "valortotalcomimpostos": 15.00,
            "valortotalimpostos": 16.00,
            "valortotaldespesa": 6.00, //pedidoentrega.valordespesa
            "valortotalseguro": 7.00, //pedidoentrega.valorseguro       
            "pedidoimposto": [
                {
                    "sglimposto": "ICMS", //20 caracteres max
                    "aliquota": 11.00,
                    "valortotalimposto": 0.5,
                },
                {
                    "sglimposto": "ST", //20 caracteres max
                    "aliquota": 11.00,
                    "valortotalimposto": 0.5
                },
                {
                    "sglimposto": "IPI", //20 caracteres max
                    "aliquota": 11.00,
                    "valortotalimposto": 0.5
                }
            ],
            "itemimposto": [
                {
                    "ordem": 1, //pedidoproduto.ordem
                    "idproduto": 8, //pedidoproduto.idproduto //
                    "idproduto_externalid": "cod", //pedidoproduto.idproduto > codigoerp //80 caracteres max
                    "valortotalcomimpostos": 12.00, //NAO UNITARIO, precisa ser multiplicado pela requisicao.quantidade
                    "valortotalfrete": 15.00, //NAO UNITARIO, precisa ser multiplicado pela requisicao.quantidade
                    "impostos": [
                        {
                            "sglimposto": "ICMS", //20 caracteres max
                            "valorbase": 10.00,
                            "aliquota": 11.00,
                            "valortotalimposto": 12.00 //NAO UNITARIO, precisa ser multiplicado pela requisicao.quantidade
                        },
                        {
                            "sglimposto": "IPI", //20 caracteres max
                            "valorbase": 10.00,
                            "aliquota": 11.00,
                            "valortotalimposto": 12.00 //NAO UNITARIO, precisa ser multiplicado pela requisicao.quantidade
                        },
                        {
                            "sglimposto": "ST", //20 caracteres max
                            "valorbase": 10.00,
                            "aliquota": 11.00,
                            "valortotalimposto": 12.00 //NAO UNITARIO, precisa ser multiplicado pela requisicao.quantidade
                        }
                    ]
                },
                {
                    "ordem": 1, //pedidoproduto.ordem
                    "idproduto": 8, //pedidoproduto.idproduto
                    "idproduto_externalid": "cod", //pedidoproduto.idproduto > codigoerp //80 caracteres max
                    "valortotalcomimpostos": 12.00, //NAO UNITARIO, precisa ser multiplicado pela requisicao.quantidade
                    "valortotalfrete": 15.00, //NAO UNITARIO, precisa ser multiplicado pela requisicao.quantidade
                    "impostos": [
                        {
                            "sglimposto": "ICMS", //20 caracteres max
                            "valorbase": 10.00,
                            "aliquota": 11.00,
                            "valortotalimposto": 12.00 //NAO UNITARIO, precisa ser multiplicado pela requisicao.quantidade
                        },
                        {
                            "sglimposto": "IPI", //20 caracteres max
                            "valorbase": 10.00,
                            "aliquota": 11.00,
                            "valortotalimposto": 12.00 //NAO UNITARIO, precisa ser multiplicado pela requisicao.quantidade
                        },
                        {
                            "sglimposto": "ST", //20 caracteres max
                            "valorbase": 10.00,
                            "aliquota": 11.00,
                            "valortotalimposto": 12.00 //NAO UNITARIO, precisa ser multiplicado pela requisicao.quantidade
                        }
                    ]
                }
            ] //Impostos para o item do pedido
        }



        Liberação de acesso API nativa

        Inicialmente quando utilziado a API nativa, o usuario da integração deve possuir acesso a estrutura da API dentro do DATASUL, para isso o cliente precisa realziar a seguinte configuração:

        Acessar a tela do cadastro de permissão de usuário, CD0821 e realizar o cadastro do usuario que faz a chamada da API. 


        Outro erro que pode ser apresentado é de "data do faturamento maior que a data do próximo faturamento" é em relação a tua série, la no FT0114, usado para visualizar a data do próximo faturamento, para funcionamento, pode ser removido o parâmetro "controle próximo faturamento" e deixar o campo em branco pra série e estab que esta sendo usado.



        Erro

        O seguinte erro é apresentado caso as telas acima não estejam de acordo com as liberações. 


        {
            "detailedMessage": "Usuário integrador não tem permissão para executar esse programa.\n",
            "code": "852",
            "details": [
                {
                    "detailedMessage": "A data de emissão da nota fiscal informada é maior que a data do próximo faturamento da série/estabelecimento.\n",
                    "code": "5173",
                    "message": "Data do faturamento maior que data do próximo faturamento",
                    "type": "error"
                },
                {
                    "detailedMessage": "",
                    "code": "17006",
                    "message": "Ocorreu algum erro técnico durante a simulação dos impostos. Favor avaliar o log do Appserver Progress.",
                    "type": "error"
                }
            ],
            "message": "Usuário integrador não Cadastrado no Banco Comercial",
            "type": "error"
        }


        Quando as liberações estão corretas o calculo de imposto é possivel, conforme imagem abaixo:



        Retorno da Simulação Campo do SFA
        itemimposto.impostos.sglimposto

        pedidoimposto.idimposto

        itemimposto.impostos.valorbase

        pedidoimposto.valorbasecalculoreducao

        itemimposto.impostos.aliquota pedidoimposto.valorbasecalculo
        itemimposto.impostos.valortotalimposto

        pedidoimposto.valorimposto

        itemimposto.ordem / itemimposto.idproduto pedidoimposto.idpedidoproduto (procurar por pedidoproduto.ordem e pedidoproduto.idproduto respectivamente)
        itemimposto.valortotalfrete pedidoproduto.valorfrete
        itemimposto.valortotalcomimpostos pedidoproduto.valortotalcomimposto


        Abaixo está o escopo do cálculo de imposto do Datasul.

        A integração recebe a solicitação da aplicação via Carte, busca, processa e retorna para a mesma.

        Abaixo estão exemplos via POSTMAN:

        URL

        Na URL para o Datasul, o formato será o seguinte:

        POST {{URL}/api/ftp/v2/ItemTaxSimulationPublic

        Substitua a variável URL pelo caminho da API, informado pelo cliente.

        Exemplo:

        Autorização

        Na aba de autorização, é selecionado o tipo Basic e informado os dados de usuário e senha:

        Header

        No header da requisição, informaado o tipo do conteúdo:

        Content-Type: application/json

        Body

        No corpo da mensagem, substituido os dados da ordem de venda nas tags correspondentes.

        Exemplo:

        Corpo de uma mensagem de exemplo:

        {
            "SalesType""N",
            "CustomerId""000001",
            "CustomerUnit""01",
            "CustomerIdDelivery""000001",
            "CustomerUnitDelivery""01",
            "CustomerType""F",
            "Payment""001",
            "DiscountPercentage1"10,
            "DiscountPercentage2": 0,
            "DiscountPercentage3": 0,
            "DiscountPercentage4": 0,
            "Currency"1,
            "Freight"10,
            "Insurance"0,
            "Expense"0,
            "ListofProducts": [
                {
                    "ItemId""01",
                    "ProductId""3395979",
                    "Quantity"10,
                    "UnitaryValue"100,
                    "TotalValue"1000,
                    "ItemDiscountPercentage"10,
                    "ItemDiscountValue"100,
                    "OperationType""02"
                }
            ]
        }










        • Sem rótulos