Ir para conteúdo
  • Cadastre-se

dev botao

Truncar Valor Total Item ACBrECFNaoFiscal


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

Recommended Posts

  • Membros Pro

Olá a todos,

Tive dificuldades na utilização do ACBrECFNaoFiscal, onde estou utilizando os métodos em um sistema para posto de combustível.

(Utilizo o ACBREcf com ACBrECFVirtualNaoFiscal para fazer a Venda do "Cupom" na tela do aplicativo, após a finalização geramos o SAT.)

O problema estava na finalização do cupom, onde não nos permitia continuar, pois os valores não batiam (Valor da Finalização com o Subtotal).

Após muitas analises e pesquisas verificamos que o método vendeitem, por padrão arredonda (RoundABNT), mas no caso de posto de combustível os valores devem ser truncados. Tentei achar alguma solução que não fosse alterar o fonte, mas não consegui encontrar nada. Então por isso estou enviando para vocês a solução que encontramos e que está funcionando.

Peço por gentileza que se já existir alguma solução desconsidere o que foi feito e me passe o que devo fazer para que funcione corretamente.

Agora vou descrever o que foi feito.

Na unit: ACBrECFClass

Criei uma propriedade: TruncarItemECF: Boolean com seu valor default False; 

(Justificativa da criação da nova propriedade: Não achei legal utilizar as propriedades: ArredondaPorQtd ou  ArredondaItemMFD, pois poderia influenciar em algum outro processos, por isso resolvi criar uma nova propriedade exclusivamente para isso)

Após isso na Unit: ACBrECF, também fiz a implementação da propriedade.

Dentro da Unit.: ACBrECFNaoFiscal, no método: VendeItem fiz a seguinte implementação.

iF TrucarItemECF Then
     Total   := TruncTo( Qtd * ValorUnitario, -2)
Else
    Total   := RoundABNT( Qtd * ValorUnitario, -2) ;

Se a property estiver habilitada, o valor será truncado, caso contrário continuará da mesma maneira. 

Segue em anexo as 3 units alteradas.

Obrigado desde já pela atenção e auxilio.

 

 

ACBrECF.pas

ACBrECFClass.pas

ACBrECFNaoFiscal.pas

  • Curtir 1

Atenciosamente,

 

 Assinatura.png

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Não parece ser uma boa ideia criar uma nova propriedade chamada "TruncaItemECF"... pois, ela não será suportada nas demais classes, e ela entra em conflito com as propriedades de arredondamento... Podemos usar a "ArredondaItemMFD"

Estou analisando a situação... me parece que existem vários outros locais do código, onde a verificação de Arredondamento seria necessária...

 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Boa tarde Daniel,

Primeiramente Obrigado pelo retorno. Se você não ver problema em utilizar o ArredondaItemMFD, sem problemas podemos utilizar ele. Não fiz a implementação nos demais locais que utilizam o RoundABNT, pois a falha é entre o valor do item que foi vendido no total do SubTotal.

Corrigindo apenas o valor que é calculado no item o Subtotal já fica correto. Por isso não fiz a troca nos demais locais. 

Estou a disposição para auxiliar na implementação se necessário.

Obrigado mais uma vez pelo auxilio.

Atenciosamente,

 

 Assinatura.png

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Daniel,

Testei aqui, precisei fazer alguns ajustes, pois não estava compilando. (Nome dos parâmetros estavam diferente do que estava dentro do método)

Outra coisa era que no método: VendeItem estava dessa forma

Total   := CalcTotalItem( Qtd * ValorUnitario,-2);

Troquei para 

Total   := CalcTotalItem( Qtd, ValorUnitario)

Após isso finalizou normalmente a venda, atendendo assim a necessidade, e resolvendo meu problema.

Segue em anexo a Unit alterada.

Obrigado mais uma vez pelo auxilio e atenção.

ACBrECFNaoFiscal.pas

  • Curtir 1

Atenciosamente,

 

 Assinatura.png

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Modificações enviadas para o SVN

Citar

-- ACBrECFNaoFiscal, ACBrECFVirtual, ACBrECFVirtualBuffer --
[*] Ajustes para permitir calculos com Truncamento, quando:
    ArredondaItemMFD := False                                   (por: DSA)

 

  • Curtir 2
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

  • Moderadores

@Daniel Simoes

Foi aplicado a correção correção abaixo na unit?

Citar

Daniel,

Testei aqui, precisei fazer alguns ajustes, pois não estava compilando. (Nome dos parâmetros estavam diferente do que estava dentro do método)

Outra coisa era que no método: VendeItem estava dessa forma

Total   := CalcTotalItem( Qtd * ValorUnitario,-2);

Troquei para 

Total   := CalcTotalItem( Qtd, ValorUnitario)

Após isso finalizou normalmente a venda, atendendo assim a necessidade, e resolvendo meu problema.

Segue em anexo a Unit alterada.

Obrigado mais uma vez pelo auxilio e atenção.

ACBrECFNaoFiscal.pas

 

Para funcionar corretamente ajustei para  Total   := CalcTotalItem( Qtd, ValorUnitario).

Se puder dar uma conferida , acredito que deve ter escapado esse detalhe.

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Não estou com erros de compilação...

Por favor verifique por colisão nos fontes 

Não estou com erros de compilação...

Por favor verifique por colisão nos fontes 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

  • Moderadores

@Daniel Simoes

Não se trata de erro de compilação e sim erro no código mesmo;

Veja na unit ACBrECFNaoFiscal o códido atual é esse :  Total   := CalcTotalItem( Qtd * ValorUnitario,-2);

Mas o correto seria esse :  Total   := CalcTotalItem( Qtd, ValorUnitario);

Da uma verificada ai por favor.

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

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