Ir para conteúdo
  • Cadastre-se

dev botao

Alíquota Calculada de forma incorreta(Ginfes)


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

Recommended Posts

Bom dia! Estou com um problema no valor da alíquota, por algum motivo, em algumas situações ela vem com valores diferentes. O problema está ocorrendo quando o valor passado possui casas decimais, por exemplo 3,87. Estou passando para o componente da seguinte forma:

Servico.Valores.Aliquota  := 3.87;

Percebi que na unit pnfsNFSeW_ABRASFv1, quando o provedor é Ginfes, a alíquota é dividida por 100.

case FProvedor of   

    proGINFES:   Gerador.wCampoNFSe(tcDe4, '#25', 'Aliquota', 01, 05, 0, (NFSe.Servico.Valores.Aliquota / 100), '');

Então o valor correto para ser enviado para o xml deveria ser 0,0387, mas algumas vezes(não sei o motivo) é enviado 0.0388. Observem os dois xml, cada um com uma alíquota diferente.

Será que ao invés de deixar o componente fazer essa divisão não seria melhor já passar o valor dividido? Na verdade não sei se o problema realmente é este, é apenas uma suposição.

Enfim, se alguém puder me ajudar, agradeço.

103UNICA-rps.xml

1212UNICA-rps.xml

Link para o comentário
Compartilhar em outros sites

Bom dia! Esqueci de mencionar que o problema citado anteriormente gera uma rejeição, ou seja, não é só o fato de ter essa pequena diferença de centavos. O RPS não é convertido, pois a alíquota não condiz com a esperada.

 

Erro.png

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Mota,

Neste caso é preciso informar a alíquota correta.

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

  • Consultores

Bom dia Mota,

Na unit pnfsNFSeW_ABRASFv1 - linha 281 temos:

    proGINFES:   Gerador.wCampoNFSe(tcDe4, '#25', 'Aliquota', 01, 05, 0, (NFSe.Servico.Valores.Aliquota / 100), '');

Faça um teste, altere esse linha para:

    proGINFES:   Gerador.wCampoNFSe(tcDe4, '#25', 'Aliquota', 01, 05, 0, (NFSe.Servico.Valores.Aliquota * 0.01), '');

Vamos ver se com essa alteração desaparece esse problema de arredondamento.

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 meses depois ...
  • 3 semanas depois ...
  • Consultores

Bom dia,

Já checou os tipos das variáveis para saber se alguma delas esta arredondando o valor?

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

  • 11 meses depois ...

Bom dia pessoal,

Também estou com o mesmo problema, e depois de muito debug consegui entender o que ocorre, mas não consegui resolver!

A aliquota de ISS para o Ginfes que meu cliente utiliza em Rio Preto - SP é de 3,87

Esse valor é recebido do banco de dados Firebird, de uma tabela com tal campo configurado como double precision. Usamos componentes IBX e detectamos na primeira vez que se atribui o valor 3,87 a tag Servicos.Valores.Aliquota ocorre tudo bem, o componente preenche com 3,87 corretamente o XML e da tudo certo, antes da primeira asinatura

Após isso, quando o cliente tenta após a primeira assinatura, nossa aplicação estava enviando um valor alterado ...

A atribuição é realizada de tal forma: 

            Servico.Valores.Aliquota := Dm.QSeek.FieldByName('aliq_iss_ginfes').AsCurrency;
 

na segunda ocrrencia, Dm.QSeek.FieldByName('aliq_iss_ginfes').AsCurrency estava vindo com 3,8701 o que era passado para o componente e o componente gerava 3,88 .. até ai tudo bem...

Fizemos um cast na instrução SQL que traz os valores, (cast aliq_iss_serv as numeric(15,2)) e agora sempre é retornado para a aplicação o valor 3,87 ou seja, não mais vem como 3,8701

Porém, mesmo passando na segunda vez o valor correto ( e nos certificamos disso ), o componente tbm possui o mesmo "bug", ele altera o valor que passamos de 3,87 para 3,8701

Ao debugar essa linha aqui

    proGINFES: Gerador.wCampoNFSe(tcDe4, '#25', 'Aliquota', 01, 05, 0, (NFSe.Servico.Valores.Aliquota / 100), DSC_VALIQ);

Na segunda vez, mesmo passando 3,87 corretamente o componente possui o valor 3,8701 , isso ocorre em todas as vezes

Para nos certificamos do problema, resolvemos passar o valor 3,87 no código, sempre, atribuindo diretamente (Servico.Valores.Aliquota := 3.87;)  e o componente na segunda vez, após a assinatura, sempre coloca 3,8701

Como proceder para truncar em duas casas decimais NFSe.Servico.Valores.Aliquota ?

 

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 2500 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.

The popup will be closed in 10 segundos...