Nota fiscal de saída (OINV) – Problema ao calcular imposto retido na fonte.
Olá pessoal!
Venho escrever minha segunda publicação para um problema que detectei no SAP que é bastante bizarro e pontual… Vou tentar ser o mais sucinto possível para um entendimento rápido e eficiente.
Desenvolvi um agente integrador entre um sistema legado e o SAP, este agente trabalha com um banco integrador, onde o sistema legado deposita as informações, o agente leva para o SAP, e depois devolve para o banco integrador o feedback da integração, seja positivo ou não. Essa integração funciona em duas vias, tanto o sistema integrador para o SAP, quanto o SAP para o sistema de integrador, utilizando um banco de dados como meio de comunicação.
Diante o descritivo acima, vamos ao problema… Em um determinado momento (sim, um determinado, algo esporádico, dentre 1 milhão de notas, vem uma com problema) o add-on integra a nota fiscal de saída com seus devidos impostos retidos na fonte, e a integração é apenas o código do imposto, os valores ficam a cargo do calculo interno do SAP, conforme a imagem abaixo:
Na imagem acima, somente o campo ID_EXTERNO é integrado, este campo representa o código do imposto, os campos VALOR e VALOR_ALTERADO servem para marcar o valor inicial do imposto que foi calculado no SAP, e se houver alterações, o add-on inclui no campo VALOR_ALTERADO, assim, é só subtrair o campo VALOR_ALTERADO – VALOR e saberá se houve acréscimo ou decréscimo.
Neste caso específico, a nota tem imposto retido na fonte e o SAP deveria ter calculado, mas na pratica não foi o que ocorreu:
Depois de tentar descobrir quais possíveis causas que poderiam afetar isso dentro do SAP, inclusive solicitando apoio de consultores, eu pensei em cancelar a nota acima e reenviar ela para a integração a partir da base de dados, na tentativa de repetir o mesmo erro que aconteceu, só que para minha surpresa, o SAP calculou certinho, conforme as imagens abaixo:
Notem que utilizei as mesmas características da nota que deu problema no calculo de imposto, mas na segunda tentativa, o SAP calculou corretamente, segue abaixo o trecho de código em C# que utilizo para integrar tal informação:
A principio, a solução que pensei foi integrar o código e o valor do imposto retido na fonte, e de fato isso corrige o problema, mas o cliente precisou criar toda uma rotina para fazer tal calculo, sendo que o SAP faz isso. Realizei testes pela propria interface do SAP e não consegui simular estre problema, e em diversas integrações via DI API, também não consegui simular tal situação, somente no cliente, e é uma margem de quase 99,9% certo e uma com esse problema, em números podemos dizer que é uma em um milhão.
Minha sugestão para aqueles que enfrentarem o mesmo problema que eu, é integrar o código e o valor do imposto, é mais seguro, porém é mais trabalhoso, conforme o trecho de código abaixo:
Hoje não consigo determinar de fato qual situação devo fazer para dar este problema, logo não consigo criar evidências concretas para a abertura de um chamado e a SAP atue para nos ajudar, então continuarei investigando para descobrir a causa deste problema, e claro, contando com ajuda da vasta comunidade de desenvolvedores SAP SDK para solucionar esta situação.
É isso, muito obrigado pela atenção de todos e mãos a obra!
PS: A equipe da SAP, seria de grande ajuda o diagnostico deste problema, então se puderem me surpreender e descobrir a solução, ficarei extremamente grato.
Informações técnicas
SAP Business One 9.2 PL7;
Microsoft Visual Studio 2017;
Microsoft SQL Server 2012;
Parabéns pela explicação Former Member.
Muito obrigado Laert, espero ter colaborado com a comunidade.
Luiz, já tive problemas deste tipo até com imposto direto. minha integração hoje funciona com imposto direto, mas faço uma ligação com o pedido de compra/venda... vou testar minhas integrações com impostos retidos e depois te digo.
Mas antes gostaria de saber alguns detalhes:
Bom dia Eduardo Gama,
Eu acabei trocando de área, estava acontecendo algumas mudanças para desenvolvedores B1 e não concordei, então resolvi voltar para meu campo de conforto que é desenvolvimento web e mobile.
Mas, segue as respostas para teus questionamentos:
Sim.
Sim.
No momento que criei este arquivo, era exatamente a sua versão, 9.2 PL8.
Um resumo do que acontecia era que o calculo do imposto na interface do SAP funcionava perfeitamente, na integração tinha uma porcentagem de 99,9% de sucesso, apenas alguns casos esporádicos davam problema.
Imagina a dor de cabeça que dava pro contador na hora de descobrir porque os valores não batiam? Era tremenda!
A solução imediata que dei naquele momento foi o sistema deles ficasse responsável pelo calculo do imposto retido e enviasse pro SAP, assim resolveu o problema, porém, o cliente ficou questionando a eficácia do SAP.
Espero que o SAP descubra o problema e solucione, para que facilite a vida dos meus ex-companheiros de profissão (desenvolvedores B1).
Um forte abraço e sucesso!
Luiz,
Fiz teste com minha integração e não ocorreu problema, lembrando que minha integrações passam por pedido de compra.
Fiz de duas maneiras
OrderApp.Lines.WithholdingTaxLines.WTCode = "E004"
OrderApp.Lines.WithholdingTaxLines.Add
OrderApp.Lines.WithholdingTaxLines.WTCode = "E008"
OrderApp.Lines.WithholdingTaxLines.Add
Um abraço
Eduardo Gama
A forma que você está utilizando é exatamente a forma que utilizei, e como mencionei anteriormente, existia uma porcentagem de 99,9% de sucesso, era casos esporádicos que davam este problema.