Ir para conteúdo
  • Cadastre-se

dev botao

Erro TACBrNFeFRClass FastReport - CarregaDadosProdutos - FNFe.Det.Items -> Field Valor Liquido Errado


Ver Solução Respondido por BigWings,
  • Este tópico foi criado há 1176 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Estudando uma regra da ACBR identifiquei um erro mas não tenho acesso para realizar a correção do .pas 

[*] Erro na TACBrNFeFRClass.CarregaDadosProdutos;
--| O ValorLiquido do produto estava somando apenas o valor de Desconto do XML, dessa forma desprezando o valor de despesa acessórios (vOutros) que é o acréscimo do valor do produto.

Alguém que tem acesso verifica a alteração e verifica se é valido para fazer alteração no projeto principal, espero ter ajudado a comunidade.

PATH

Index: ACBrNFeDANFEFRDM.pas
===================================================================
--- ACBrNFeDANFEFRDM.pas    (revision 20998)ACBrNFeDANFEFRDM.pas.patch
+++ ACBrNFeDANFEFRDM.pas    (working copy)
@@ -1069,8 +1069,8 @@
FieldByName('Valorliquido').AsString      := FormatFloatBr( Prod.vProd - Prod.vDesc + Prod.vOutro,',0.00');

 

Espero ter contribuído com a comunidade !

Link para o comentário
Compartilhar em outros sites

  • Moderadores
15 horas atrás, Lucas Lima Freire Brito disse:

Estudando uma regra da ACBR identifiquei um erro mas não tenho acesso para realizar a correção do .pas 

[*] Erro na TACBrNFeFRClass.CarregaDadosProdutos;
--| O ValorLiquido do produto estava somando apenas o valor de Desconto do XML, dessa forma desprezando o valor de despesa acessórios (vOutros) que é o acréscimo do valor do produto.

Alguém que tem acesso verifica a alteração e verifica se é valido para fazer alteração no projeto principal, espero ter ajudado a comunidade.

PATH

Index: ACBrNFeDANFEFRDM.pas
===================================================================
--- ACBrNFeDANFEFRDM.pas    (revision 20998)ACBrNFeDANFEFRDM.pas.patch
+++ ACBrNFeDANFEFRDM.pas    (working copy)
@@ -1069,8 +1069,8 @@
FieldByName('Valorliquido').AsString      := FormatFloatBr( Prod.vProd - Prod.vDesc + Prod.vOutro,',0.00');

 

Espero ter contribuído com a comunidade !

Favor anexar o arquivo completo enão o patch

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

Em 28/11/2020 at 09:10, BigWings disse:

Esse campo 'Valorliquido' é usado onde?

Você tem algum XML de exemplo onde o item tenha desconto e acréscimo?

Arquivo em anexo.

O problema não é no XML, e sim quando é realizado uma criação do objeto com os valores lendo o xml do acbr, dessa forma o item é composto de valor - Desconto + Acréscimo 
esse é um exemplo de um dos produtos do XML que consta o valores:

<vDesc>68.00</vDesc>

<vOutro>0.96</vOutro>

<det nItem="1"><prod><cProd>62598</cProd><cEAN>7896006200604</cEAN><xProd>NOTA FISCAL EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL</xProd><NCM>30049099</NCM><CEST>1300401</CEST><indEscala>S</indEscala><CFOP>5405</CFOP><uCom>U</uCom><qCom>3.6000</qCom><vUnCom>62.5000000000</vUnCom><vProd>225.00</vProd><cEANTrib>7896006200604</cEANTrib><uTrib>U</uTrib><qTrib>3.6000</qTrib><vUnTrib>62.5000000000</vUnTrib><vDesc>68.00</vDesc><vOutro>0.96</vOutro><indTot>1</indTot></prod><imposto><vTotTrib>13.38</vTotTrib><ICMS><ICMS60><orig>0</orig><CST>60</CST></ICMS60></ICMS><PIS><PISNT><CST>04</CST></PISNT></PIS><COFINS><COFINSNT><CST>04</CST></COFINSNT></COFINS></imposto></det>


image.thumb.png.7265c54dfb35ecbd6c1618abd5392ff6.png


 

ACBrNFeDANFEFRDM.pas

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Pelo que analise vai precisar alterar o .fr3 pra mostrar os acréscimos antes dos descontos pra que os valores façam sentido:

image.png

Não parece a solução ideal.

O XML é de uma venda real ou um caso hipotético? Em que cenário vai haver acréscimo e desconto na mesma venda?

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

17 horas atrás, BigWings disse:

Pelo que analise vai precisar alterar o .fr3 pra mostrar os acréscimos antes dos descontos pra que os valores façam sentido:

image.png

Não parece a solução ideal.

O XML é de uma venda real ou um caso hipotético? Em que cenário vai haver acréscimo e desconto na mesma venda?

 

O XML é de uma venda real ou um caso hipotético?

O que acontece é que meus clientes são de diversos segmentos. Esse é um caso real que fiz de demonstração em uma maquina de homologação para demonstrar o que é ocorre.

Em que cenário vai haver acréscimo e desconto na mesma venda?

Acontece sempre que é realizado uma venda de produtos que possuem acréscimo devido a negociação. e no fechamento da venda ocorre um desconto exemplos de balcão de venda de farmácias pequenas, e na sequencia o cliente no ponto de vendas chora um desconto nos produtos que acaba sendo rateado entre os produtos do cupom. 

 

O .fr3 que estou utilizando já esta com acréscimo antes do desconto como você tinha dito. O problema é que se for utilizar da forma que o ACBr esta tratando, antes o valor liquido, não acrescenta o valor de acréscimo. vou tentar demonstrar melhor abaixo: por que da forma que esta hoje atende apenas se o cliente tiver no produto, apenas desconto ou acréscimo não podendo ter os dois.  

No .FR3 esta da seguinte forma nos dois exemplos abaixo 

image.thumb.png.c200ad36d1cfb189734c19500f402aa0.png

 

 

Exemplo com ACBr, Antes da correção. 
procedure TACBrNFeFRClass.CarregaDadosProdutos;
FieldByName('Valorliquido').AsString      := FormatFloatBr( Prod.vProd - Prod.vDesc ,',0.00');

Dessa forma, se não for somar o valor vOutro ele não soma no valor liquido o acréscimo onde fica o problema pois no caso apresentado

FieldByName('Valorliquido').AsString      := FormatFloatBr( 62,50 - 12,50 ,',0.00');

FieldByName('Valorliquido').AsString      := 50,00;

image.png.f62d4fdd4afa7fef3675a6be383d7e52.png

 

Exemplo com ACBr, Após as mudanças.

procedure TACBrNFeFRClass.CarregaDadosProdutos;
FieldByName('Valorliquido').AsString      := FormatFloatBr( Prod.vProd - Prod.vDesc + Prod.vOutro ,',0.00');

Essa foi a forma que utilizei pra resolver o problema, por que se na hora de carregar os dados do XML ele não popular o valor de acréscimo do item no valor liquido, vai ter que ser alterado no .fr3 e não faz muito sentido pois o valor líquido seria o valor deduzido de acréscimos e descontos, esse caso dessa forma que estava sendo tratado funcionava apenas quando existe apenas desconto ou acréscimo.

 

image.png.d7091a31ffdbe0ee2f12f605154b0808.png
 

Link para o comentário
Compartilhar em outros sites

  • Moderadores

O que quis dizer é que não devia ser necessária a alteração no .fr3, com o acréscimo em cima.

Nas versões em Fortes e ESC/Pos o desconto vem primeiro, depois os acréscimos, seria interessante manter esse padrão.

Outra alteração que notei no seu .fr3 é que o campo da descrição está muito pequeno, gera muitas linhas se a descrição do item for longa.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

52 minutos atrás, BigWings disse:

O que quis dizer é que não devia ser necessária a alteração no .fr3, com o acréscimo em cima.

Nas versões em Fortes e ESC/Pos o desconto vem primeiro, depois os acréscimos, seria interessante manter esse padrão.

Outra alteração que notei no seu .fr3 é que o campo da descrição está muito pequeno, gera muitas linhas se a descrição do item for longa.

Certo, podemos mudar o .fr3 para ficar valor acréscimo em baixo ou em cima isso indefere por que minha visão é melhorar a ferramenta da comunidade, mas dessa forma não vai funcionar o processo, por que a nomenclatura de valor liquido = ValorBaseCalculoProduto + Acréscimo - Desconto;

Pelo motivo que atualmente esses são os valores que se encontram no acbr: 

FieldByName('Valorliquido').AsString      := FormatFloatBr( Prod.vProd - Prod.vDesc ,',0.00');           ---> (62,50 - 12,50) = 50,00
FieldByName('ValorAcrescimos').AsString   := FormatFloatBr( Prod.vProd + Prod.vOutro,',0.00');  ---> (62,50 + 10,00) = 72,50

image.png.1a93766b9be44187e96b6ef2f264f588.png 

Para isso funcionar nos valores do acréscimo teria que subtrair o valor do desconto passando a ficar dessa forma se fizer a seguinte alteração:

FieldByName('Valorliquido').AsString      := FormatFloatBr( Prod.vProd - Prod.vDesc ,',0.00');                                        ---> (62,50 - 12,50) = 50,00
FieldByName('ValorAcrescimos').AsString   := FormatFloatBr( Prod.vProd - Prod.vDesc + Prod.vOutro,',0.00');   ---> (62,50 - 12,50 + 10,00) = 60,00

Mas dessa forma vamos resolver o problema com um remendo, onde não aconselho a fazer, gastei mais de 1 hora analisando o ACBr para identificar o erro, mas se for a única forma para solucionar o problema ok. 

image.png.f513908112b1d6199bd4b1f6833e84f3.png

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores
2 horas atrás, Lucas Lima Freire Brito disse:

FieldByName('Valorliquido').AsString      := FormatFloatBr( Prod.vProd - Prod.vDesc ,',0.00');           ---> (62,50 - 12,50) = 50,00
FieldByName('ValorAcrescimos').AsString   := FormatFloatBr( Prod.vProd + Prod.vOutro,',0.00');  ---> (62,50 + 10,00) = 72,50

se estiver assim está errado.

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...
  • Este tópico foi criado há 1176 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...