Árvore de páginas

Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

« Anterior Versão 19 Atual »

PLUGIN DE INTEGRAÇÃO PARA SIMULAÇÃO DE IMPOSTOS

Produto: Automação da Força de Vendas
Linha de Produto: TOTVS CRM
Segmento: Cross Segmentos
Módulo: Vendas - Impostos
Aplicação: App móvel
Identificador: DTSFAPD-2267

    VISÃO GERAL

Esta atualização introduz um plugin de integração para simulação de impostos, compatível com as APIs nativas do Datasul, Protheus e sistemas genéricos. Este plugin permite a simulação precisa dos impostos antes da exportação do pedido para o ERP, melhorando a precisão dos valores totais no pedido.


    OBJETIVO

Proporcionar aos usuários uma visão mais clara dos custos totais, incluindo impostos, no momento da realização do pedido. Isso facilita decisões mais informadas e aumenta a eficiência do processo de venda.


  ANTES DE COMEÇAR

Requisitos

O plugin requer configurações específicas, incluindo a seleção do modelo de simulação (Protheus, Datasul ou Genérico) e detalhes de conexão e autenticação.

  DETALHES FUNCIONAIS

Funções

  1. Configuração de Plugin: Os usuários podem configurar o plugin para conectar-se com a API correspondente (Protheus, Datasul ou Genérico) e realizar simulações de impostos em pedidos de venda.
  2. Botão "Calcular Imposto": Disponível em pedidos de venda, realiza a comunicação com o ERP e exibe os valores dos impostos.
  3. Opções de Configuração Avançadas: Incluem URL de conexão, dados de autenticação, timeout para requisição de impostos e opções para obrigar simulação ao gravar ou finalizar o pedido.

  COMO USAR?

Passo a Passo

  1. Acesse a seção de Configuração > Integração > Plugins de Integração no TOTVS CRM SFA.
  2. Selecione o plugin "Simulação de Impostos".
  3. Configure as informações de conexão e autenticação conforme o ERP utilizado (Protheus, Datasul ou Genérico).
  4. No pedido de venda, utilize o botão "Calcular Imposto" para simular e visualizar os impostos aplicáveis.


 EXEMPLO PRÁTICO

Desafio Antigo:

Antes dessa atualização, os usuários não podiam visualizar os impostos aplicáveis antes da exportação do pedido para o ERP.


Solução Atualizada:

Com o novo plugin, é possível calcular e visualizar os impostos diretamente no pedido de venda, proporcionando uma visão completa dos custos antes da finalização do pedido.


  DETALHES TÉCNICOS

  1. Cadastro de dados de acesso do Pentaho Carte
    • Na tela de Configuração > Integração > Plugins de Integração, ao invés de todos os plugins conterem campos para "Dados de acesso ao Pentaho Carte":
      • O sistema disponibilizará um botão "Configurações gerais" no rodapé da tela, abrindo uma nova tela com campos específicos.
      • O campo senha deverá ser tipado como "password" para não permitir a visualização direta da senha na tela.
    • Pelo tools, opção 5, o sistema deverá inserir um novo registro na tabela pluginintegracao com o código "configgeral".
    • A persistência dos valores da tela de "Configurações gerais" deverá acontecer na tabela pluginintconfig para esses campos, vinculada ao registro da tabela pluginintegracao de código "configgeral".
    • Os plugins existentes (ReceitaWS e TOTVS Pagamento instantâneo) deverão ter os campos de "Configurações do Pentaho" removidos e precisarão de refatoração para buscar das "Configurações Gerais".

  2. Cadastro de dados de acesso do Pentaho Carte
    • O sistema deverá disponibilizar novo plugin de nome "Simulação de impostos", com descrição "Simule impostos diretamente no pedido de venda para negociações mais precisas com seu cliente."
    • O link para o manual do plugin será "Manual - Plugin de Integração 'Simulação de Impostos'".
    • Pelo tools, opção 18, o sistema deverá persistir novo registro na tabela pluginintegracao.codigo com valor = IMPOSTO.
    • Para funcionamento correto, o cadastro das configurações do plugin de Imposto deve inserir na tabela pluginintconfig as seguintes informações:
      • Campo de label "Modelo de simulação de impostos" com opções fixas e respectivos valores.
      • Campo de label "URL de conexão": textual obrigatório.
      • Grupo de elementos de label "Autenticação" com campos para usuário e senha.
      • Campo de label "Timeout ao requisitar impostos (seg)": campo numérico com padrão de 30 segundos, se não informado.
      • Campo de label "Obrigar simulação de impostos para:" com opções de Checkbox para "Gravar pedido" e "Finalizar pedido".
  3. Implementação no pedido
    • No pedido de venda, se o plugin de integração de código "imposto" estiver ativo:
      • O sistema deverá disponibilizar o botão de "Calcular impostos" na Web e ícone no Android.
      • Gerenciamento da exibição de ícone colorido baseado na situação dos impostos:
        • Impostos não calculados: cor amarela.
        • Impostos calculados: cor verde.
      • Ao alterar dados dos produtos, o ícone deve retornar para o status de "não calculado".
      • Aproveitamento dos impostos calculados para pedidos gravados através do campo pedidoproduto.idnimpostocalculado, semelhante ao modelo "PLUGIN_WINTHOR".
      • As cores citadas também serão consequência do valor deste campo, onde valor 1 indica impostos calculados e valor 0 indica impostos não calculados.
      • Ao alterar qualquer campo editável do item, o sistema deverá zerar o campo pedidoproduto.idnimpostocalculado.
      • Ao clicar no botão de "Calcular impostos", o sistema deverá disparar uma requisição POST para o Carte do Pentaho com configurações e parâmetros específicos.
      • 
                    {
                      "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
                          "idproduto_externalid": "ABC" //pedpedidoproduto.idproduto > produto.codigoerp
                          "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 deverá persistir 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.valorbasecalculo
        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.valortotalcomimpostos

      • Para a devida identificação do produto no retorno, o sistema deverá considerar a seguinte lógica:
      • Caso seja enviada a propriedade "idproduto" diferente de nulo/vazio, o sistema deve considerá-la para a identificação do produto referenciado na tela.
      • Caso contrário, o sistema deve considerar a propriedade "idproduto_externalid", de forma que a identificação do idproduto deve acontecer pela seguinte consulta:

      •  
        /* select idproduto from produto where codigoerp = :idproduto_externalid
        

      • A representação dos impostos em tela seguirá o modelo atual, exibindo os valores persistidos na linha do item e nos resumos, agrupando os valores dos itens.
      • Ao gravar o pedido,caso a checkbox "Gravar pedido" estiver marcada, o sistema deverá restringir 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"
      • Ao finalizar o pedido, caso a checkbox "Finalizar pedido" estiver marcada, o sistema deverá restringir 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"
      • PS: É importante que tanto a requisição, quanto o retorno sejam logadas no console (f12) e log (server.log) da Web/Wildfly, para facilitar triagem de chamados envolvendo simulação de impostos.
  4. Modelo de requisição para simulação de impostos Protheus APIs Nativas
    • O Pentaho Carte, ao receber a requisição da aplicação na rota COMMONS_Bloco_TAXSIMULATION, deverá tratar os dados recebidos conforme o modelo da entrada da API de simulação de impostos do Protheus, conforme documentação disponível em https://api.totvs.com.br/apidetails/SalesTaxes_v1_000.json.
    • Com o retorno, o serviço de integração deverá implementar ao menos os campos definidos pela tabela de-para mencionada anteriormente.
  5. Modelo de requisição para Simulação de impostos Datasul APIs Nativas
    • O Pentaho Carte, ao receber a requisição da aplicação na rota COMMONS_Bloco_TAXSIMULATION, deverá tratar os dados recebidos conforme o modelo da entrada da API de simulação de impostos do Datasul. Este modelo segue o mesmo padrão de body da documentação disponível em https://api.totvs.com.br/apidetails/SalesTaxes_v1_000.json.
    • A URL da rota é definida pelo padrão ${base_url}/api/ftp/v2/ItemTaxSimulationPublic.
    • Com o retorno, o serviço de integração deverá implementar ao menos os campos definidos pela tabela de-para mencionada anteriormente.
  6. Modelo de requisição para simulação de impostos Genérica
    • Será implementado um modelo genérico padrão, onde o Pentaho deverá enviar requisições com autenticação básica definida segundo um modelo padrão, esperando receber retorno de acordo com o modelo padrão definido pela documentação "Manual - Plugin de Integração 'Simulação de Impostos'".
    • Caso os sistemas terceiros se adaptem ao modelo padrão definido, a simulação de impostos poderá ser implementada sem necessidade de customização.
    • Entretanto, se os sistemas não puderem se adaptar para receber e retornar a requisição conforme definido pela documentação, esse modelo de simulação de impostos será configurado na aplicação para disparar um serviço de integração customizado, respeitando apenas o contrato de requisição/retorno definido entre a aplicação e o Pentaho.

PERGUNTAS FREQUENTES

  • question_answerQuais ERPs são compatíveis com este plugin?
    O plugin é compatível com as APIs nativas do Datasul, Protheus e também suporta sistemas genéricos.
   
  • Sem rótulos