Ir para conteúdo
  • Cadastre-se

dev botao

TNFSeW_ISSDSF.GerarValoresServico. Valor da tag "AliquotaAtividade" vem com valor incorreto.


JJA
  • Este tópico foi criado há 1808 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Boa tarde pessoal,

me deparei agora com um erro um tanto quanto estranho.

Na unit "TNFSeW_ISSDSF" na função "GerarValoresServico", temos seguinte linha:
 

Gerador.wCampoNFSe(tcDe4, '', 'AliquotaAtividade', 01, 11, 1, NFSe.Servico.Valores.Aliquota, '');

Eu passo a alíquota 4,23 no campo NFSe.Servico.Valores.Aliquota, porém no XML do RPS, o valor da tag fica assim:

<AliquotaAtividade>4.2301</AliquotaAtividade>

Notem que ele adicionou 0,0001 na minha alíquota.
Agora o mais esquisito: Eu já verifiquei o valor, forcei formatação para 2 casas, e estou realmente passando o valor 4,23. Só que esta anomalia de sair no RPS o valor 4.2301 ocorre somente na máquina de um cliente, já aqui na minha máquina de desenvolvimento sai corretamente os 4.2300.

Eu resolvi de uma forma não muito elegante pois gostaria de desobrir o motivo e também não alterar os fontes do ACBr, porém forcei a função montar o valor somente com 2 casas:

Gerador.wCampoNFSe(tcDe2, '', 'AliquotaAtividade', 01, 11, 1, NFSe.Servico.Valores.Aliquota, '');

Não achei correto pois não explica essa anomalia, porém não vejo problema pois a alíquota necessita apenas de 2 casas. Então resolveu meu problema, mas não descobri a origem de erro.

Alguém tem ideia do que pode ser?

Um grande abraço

 

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...

Bom dia pessoal,

vou dar mais insistência neste problema pois neste mesmo campo está acontecendo outro problema bem bizarro.

Usando o mesmo conceito e já alterando o formato do campo de tcDec4 para tcDec2 teoricamente resolveu o problema, porém "aleatóriamente" o valor que passo 4.23 agora no RPS está 4.24. Não consegui achar aonde ele faz essa "atualização".

Eu informo o valor da alíquota da seguinte maneira:

ACBrNFSe.NotasFiscais.Items[i].NFSe.Servico.Valores.Aliquota := 4.23;

Na unit "TNFSeW_ISSDSF" na função "GerarValoresServico", na linha abaixo:

Gerador.wCampoNFSe(tcDe2, '', 'AliquotaAtividade', 01, 11, 1, NFSe.Servico.Valores.Aliquota, '');

// As vezes o valor "NFSe.Servico.Valores.Aliquota" chega com o valor 4.2401

Acabou de acontecer. Fechei o sistema e rodei novamente e inacreditavelmente na mesma linha acima, o valor de "NFSe.Servico.Valores.Aliquota" estava com 4.23.

Tem algum outro lugar no fonte que este valor recebe algum tratamento, conversão, equação, etc, que possa justificar este caso?

 

Link para o comentário
Compartilhar em outros sites

Pessoal, boa tarde,

agora aconteceu novamente porém com o valor de alíquota ISS = 5.00, No qual ele montou no XML do RPS o valor 5.01.

A única pista que tenho que explica a anomalia é quando eu faço um envio ou consulta de NFSe e a mesma me retorna erro. Na sequência o componente fica com este problema na alíquota ISS.

Aí se eu fecho a minha aplicação e executo novamente, o problema não ocorre, até repetir o caso acima que eu comentei.

Ou seja, se não tiver nenhuma rejeição de NFSe, o valor da alíquota ISS fica correta conforme eu passei, mas se recebo uma rejeição, começa o problema.

 

OBS: Acabei de notar que postei no fórum errado, poderia algum moderador transferir o tópico para o fórum de ACBrNFSe?

Editado por JJA
  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia,

Isso é estranho, pois toda vez que vamos emitir devemos limpar o componente e alimentar ele com os novos dados, com a alíquota é igual para todas as notas, se você sempre atribuir o valor 5 não vejo porque dessa mudança para 5.01

  • Curtir 1
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Em 03/04/2019 at 09:58, Italo Jurisato Junior disse:

Bom dia,

Isso é estranho, pois toda vez que vamos emitir devemos limpar o componente e alimentar ele com os novos dados, com a alíquota é igual para todas as notas, se você sempre atribuir o valor 5 não vejo porque dessa mudança para 5.01

Bom dia Italo,

estranho mesmo, e o mais estranho é que isso começou a ocorrer após a minha última atualização do ACBr. Eu já tentei acompanhar todos os passos deste campo desde o meu input até a criação dele no XML, mas não encontrei quando isso ocorre.

Eu consegui criar um caso de testes que simula o problema:

1) Tenho uma nota fiscal que irei enviar com dados de CNPJ da empresa A, porém irei enviar com um certificado CNPJ B, para forçar o erro no envio:
Ao carregar o componente ACBrNFSe, estou mando o valor 4,23 conforme a imagem 1:

image.thumb.png.6f829facd218bac473ed59d66692bafb.png

2) Ao entrar na função que cria o XML, o valor está conforme o informado na imagem 2:
image.png
3) Ao tentar enviar o XML do RPS, é retornado o erro de CNPJ diferente do informado no certificado digital:
image.png.ad4d0f7eea5cb18bae11f5b0aa719bff.png
4) Logo após o erro do passo 3, faço exatamente o mesmo procedimento do passo 1, e reenvio a mesma nota fiscal:
image.thumb.png.360cafaa6a80a46a61728fe3f1167a07.png

5) Ao chegar na função do XML, o valor já está modificado de 4,23 para 4,2401
image.thumb.png.f14f091cb5edb8436793577623a1d3ca.png

Acredito que com estes passos, é possível descobrir o problema. Se puderem me dar dicas do que posso testar para também ajudar a encontrar o erro, me passem que eu tento achar também.

um grande abraço.

 

Editado por JJA
Organização dos anexos
Link para o comentário
Compartilhar em outros sites

  • Administradores

Boa tarde.

O curioso é que mais ninguém reportou este problema, recomendo pontos de debug em todos os locais onde esse valor pode ser alterado...

Obs. Considere assinar o SAC ACBr para ter acesso ao SLA de resposta de 1 dia útil, além das diversas vantagens do mesmo.

Att.

  • Curtir 1
Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

33 minutos atrás, Juliana Tamizou disse:

Boa tarde.

O curioso é que mais ninguém reportou este problema, recomendo pontos de debug em todos os locais onde esse valor pode ser alterado...

Obs. Considere assinar o SAC ACBr para ter acesso ao SLA de resposta de 1 dia útil, além das diversas vantagens do mesmo.

Att.

Boa tarde Juliana,

já coloquei em todos os locais que trabalham com essa variável. As imagens que postei foram justamente nos pontos aonde mostra o valor antes e depois da anomalia.

Vou considerar atualizar os fontes e re-instalar os componentes, porém fiz isso a algumas semanas atrás.

Sobre o SAC, vou considerar a possibilidade junto com a diretoria da empresa.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Administradores

Boa tarde.

Ao analisar o SAC, considere o beneficio exclusivo dos contratos Anuais, onde está disponível também o chat em grupo com os consultores e moderadores.

Att.

  • Curtir 1
Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde JJA,

Pelas imagens que você anexou e analisando o código do componente notei o seguinte:

O campo Alíquota é definido como Currency na classe TValores.

Pode esta ocorrendo alguma incompatibilidade entre o Currency o Float, quando você faz a leitura do valor no campo do banco de dados.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

21 minutos atrás, Italo Jurisato Junior disse:

Boa tarde JJA,

Pelas imagens que você anexou e analisando o código do componente notei o seguinte:

O campo Alíquota é definido como Currency na classe TValores.

Pode esta ocorrendo alguma incompatibilidade entre o Currency o Float, quando você faz a leitura do valor no campo do banco de dados.

Boa tarde Italo,

eu constatei isso ontem. Realmente está ficando uma dízima. Após alimentar o campo do ACBr, eu subtraí este mesmo valor da minha variável, e realmente ficou um resto. Porém, o mais confuso é que isso só ocorre após algum evento, pois se for usar da primeira vez, não ocorre.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde,

O tipo dessa variável dAliquotaISS é do mesmo tipo da propriedade Alíquota?

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

36 minutos atrás, Italo Jurisato Junior disse:

Boa tarde,

O tipo dessa variável dAliquotaISS é do mesmo tipo da propriedade Alíquota?

Boa tarde Italo, 

não é. Ela é do tipo double. Antes eu atribuía diretamente de um campo do DataSet, fazendo um Cast AsFloat. Também não resolveu.

Mas reforço que da primeira vez que uso o componente, não ocorre o erro, somente a partir de segunda vez simulando o erro que eu comentei.

Resolvi fazendo um POG no qual comparo o valor original com o já atribuído ao componente, convertendo para string, assim consigo achar exatamente a diferença.

Ex:

if '4,23' (Valor original) <> '4,2301' (Valor no componente) then
conto o número de casas após a vírgula e faço uma subtração

if Length(Parte decimal) = 2 then
  Valor := Valor - 0.01
else if Length(Parte decimal) = 4 then
  Valor := Valor - 0.0001;

Preciso saber o número de casas pois tenho casos de alíquota inteira que também ocorre a diferença (5 fica 5,01)

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde,

Já pensou em usar o RoundTo(valor, -2) para ficar com no máximo 2 casas decimais?

E no caso de alíquota inteira usar o Trunc.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

2 minutos atrás, Italo Jurisato Junior disse:

Boa tarde,

Já pensou em usar o RoundTo(valor, -2) para ficar com no máximo 2 casas decimais?

E no caso de alíquota inteira usar o Trunc.

Já sim, mas ao receber o valor, ocorre a mesma coisa.

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 1808 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.