Ir para conteúdo
  • Cadastre-se

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

Recommended Posts

  • Moderadores
Postado

Realizei uma venda (impressora não fiscal MP 4200 TH usando ACBrECFVirtual) 

Valor da venda = 120,00

1pagamento em dinheiro = 100,00

1pagamento em cheque = 50,00

Total dos pagamentos = 150,00

Total do troco = 30,00

Porem, através das funções do ACBrECF1 está retornando 

  dSubTotal   := Frm_ECFPrincipal.ACBrECF1.Subtotal;     ---------->  120,00;
  dTotalPago  := Frm_ECFPrincipal.ACBrECF1.TotalPago;----------->  180,00; (aqui deveria retornar 150,00 pq a venda é 120,00 mas foi pago 150,00)
  dTotalTroco := Frm_ECFPrincipal.ACBrECF1.TotalTroco;---------->  0,00;     (aqui deveria retornar 30,00) 

o erro está sendo causado porque é uma impressora não fiscal e o retorno fica incorreto ou estou obtendo esses retornos no momento errado? (no meu caso, pego esses retornos antes de abrir o cupom (eles estão zerados,correto), após vender o item (eles aparecem com os valores corretos), antes de iniciar o pagamento (continua correto), após cada pagamento (aqui fica correto no primeiro pagamento, mas começa a ficar errado após o segundo onde o valor pago já é > que o valor a pagar). 

Em cupons onde o valor dos pagamentos é igual ao valor a pagar fica tudo correto. 

 


 

  • Moderadores
Postado

Só corrigindo acima, vi que ACBrECF1.TotalTroco não é o valor do troco no cupom e sim o acumulado na redZ e LeituraX . Então substitui por 

dTotalTroco := dTotalPago-dSubTotal;

Porem, mesmo assim, o ACBrECF1.TotalPago está retornando incorreto (180,00), acumulando o troco 2 vezes. 

  • Moderadores
Postado
6 minutos atrás, Gr@c@ disse:

Só corrigindo acima, vi que ACBrECF1.TotalTroco não é o valor do troco no cupom e sim o acumulado na redZ e LeituraX . Então substitui por 

dTotalTroco := dTotalPago-dSubTotal;

Porem, mesmo assim, o ACBrECF1.TotalPago está retornando incorreto (180,00), acumulando o troco 2 vezes. 

Estranho, fiz um teste aqui usando os mesmos passos que os seus e não tive problema com o TotalPago.

Algo a mais no teu código, talvez?

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

Projeto ACBr

 

 

  • Moderadores
Postado

1-Gravo os pagamentos em uma tabela temporária. Quando o valor dos pagamentos é >= ao valor do subtotal começo a efetuar os pagamentos

2-Envio o primeiro pagamento -> 100,00 ok, busco o retorno ACBrECF1.TotalPago 100,00 ok

3-Envio o segundo pagamento -> 50,00 ok, busco o retorno ACBrECF1.TotalPago 180,00 (aqui ele já somou o troco erroneamente)

No cupom sai correto SubTotal = 120,00 Soma dos pagamentos = 120,00 Troco = 20,00

Mas o retorno do TotalPago após o ultimo pagamento (que vou jogar na tela do aplicativo) é que me traz o troco a mais. Debugando, o valor do TotalPago é 180,00. 

obs:tentei fazer com apenas uma forma de pagamento com valor > que o valor do cupom e o erro ocorre também.

Usando o aplicativo para imprimir em uma impressora fiscal usando (ecfBematech), o erro não ocorre. 

 

 

  • Moderadores
Postado

Não sei se alguma coisa a ver, mas debugando o aplicativo com uma venda de 20,00 e um unico pagamento de 50,00 em dinheiro, nessa procedure, onde

if fpCupom.Pagamentos.Count > 1 then   { Tem mais de um pagamento ? }  --->  o fpCupom.Pagamentos.Count = 2. 

Está correto? O troco entra como pagamento? 

Se sim, após imprimir a forma de pagamento (daí como é um pagamento só, já imprime o troco) eu busco o retorno do totalpago (nesse momento ele já está errado). E isso é imediatamente após imprimir o troco e antes de finalizar o cupom. 

 

procedure TACBrECFVirtualBufferClass.EfetuaPagamentoVirtual(
  Pagto: TACBrECFVirtualClassPagamentoCupom);
var
  FPG: TACBrECFFormaPagamento;
  Troco: Double;
  Obs: String;
begin
  ZeraBuffer;
  FPG := fpFormasPagamentos[ Pagto.PosFPG ] ;

  fsBuffer.Add( PadSpace(FPG.Descricao+'|'+
                FormatFloat('#,###,##0.00', Pagto.ValorPago), Colunas,'|') ) ;

  Obs := Pagto.Observacao;
  while Obs <> '' do
  begin
    fsBuffer.Add( copy(Obs, 1, Colunas) ) ;
    Obs := copy(Obs, Colunas + 1, length(Obs) ) ;
  end ;

  if TotalPago >= SubTotal then   { Ultrapassou o Valor do Cupom }
  begin
    if fpCupom.Pagamentos.Count > 1 then   { Tem mais de um pagamento ? }   =======> aqui tá o fpCupom.Pagamentos.Count está = 2
      fsBuffer.Add( PadSpace('SOMA  R$|'+FormatFloat('#,###,##0.00', TotalPago), Colunas, '|') );

     if TotalPago > SubTotal then  { Tem TROCO ? }
     begin
        Troco := RoundTo(TotalPago - SubTotal,-2) ;
        fsBuffer.Add( '<e>' +
                      PadSpace( 'TROCO  R$|'+
                               FormatFloat('#,###,##0.00',Troco),
                       ColunasExpandido() ,'|' ) + '</e>' ) ;
     end ;
  end ;

  ImprimeBuffer ;
end;
 

 

  • Moderadores
Postado

No demo não ocorre o erro. Esse aqui é meu arquivo de log onde marquei o trecho que os valores se alteram. 

-- 28/04 10:43:40:297 GetEstado estVenda
-- 28/04 10:43:40:297 GetNumCupom: 000032
-- 28/04 10:43:40:297 GetNumCCF: 000020
-- 28/04 10:43:40:297 GetSubTotal: 0
-- 28/04 10:43:40:297 GetTotalPago: 0
-- 28/04 10:43:40:297 GetEstado estVenda
-- 28/04 10:43:40:297 GetDataHora: 28/04/2017 10:43:40
-- 28/04 10:43:40:297 GetDataHora: 28/04/2017 10:43:40
-- 28/04 10:43:49:577 GetNumCupom: 000032
-- 28/04 10:43:49:677 VendeItem( 07506195142035 , #SH.H&S.A/CASPA ANTICOC.200ML............................... , FF , 1 , 100 , 0 , UN , $ , D , 1 )
-- 28/04 10:43:49:687 CarregaTotalizadoresNaoTributados
-- 28/04 10:43:49:687 GetEstado estVenda
-- 28/04 10:43:49:697 GravaArqINI
-- 28/04 10:43:49:697 ClasstoINI
-- 28/04 10:43:49:697 GetNumUltimoItem: 1
-- 28/04 10:43:49:697 GetEstado estVenda
-- 28/04 10:43:49:707 GetNumSerie: SIM00000000000000901
-- 28/04 10:43:49:707 GetGrandeTotal: 3351,85
-- 28/04 10:43:50:667 GetSubTotal: 100
-- 28/04 10:43:50:667 GetTotalPago: 0
-- 28/04 10:43:50:667 GetEstado estVenda
-- 28/04 10:43:52:237 GetNumCupom: 000032
-- 28/04 10:43:52:237 GetSubTotal: 100
-- 28/04 10:43:52:237 GetTotalPago: 0
-- 28/04 10:43:52:237 GetEstado estVenda
-- 28/04 10:43:56:317 GetSubTotal: 100
-- 28/04 10:43:56:317 GetTotalPago: 0
-- 28/04 10:43:56:317 GetEstado estVenda
-- 28/04 10:43:56:317 GetSubTotal: 100
-- 28/04 10:43:56:317 GetTotalPago: 0
-- 28/04 10:44:01:887 GetSubTotal: 100
-- 28/04 10:44:01:887 GetTotalPago: 0
-- 28/04 10:44:02:727 GetSubTotal: 100
-- 28/04 10:44:02:727 GetTotalPago: 0
-- 28/04 10:44:02:737 GetEstado estVenda
-- 28/04 10:44:02:737 GetSubTotal: 100
-- 28/04 10:44:02:737 GetNumCupom: 000032
-- 28/04 10:44:02:737 GetNumCupom: 000032
-- 28/04 10:44:02:737 GetNumGNF: 000000
-- 28/04 10:44:02:737 GetNumGRG: 000000
-- 28/04 10:44:02:737 GetNumCDC: 000000
-- 28/04 10:44:02:737 GetNumCCF: 000020
-- 28/04 10:44:02:737 GetDataHora: 28/04/2017 10:44:02
-- 28/04 10:44:02:767 GetEstado estVenda
-- 28/04 10:44:02:767 SubtotalizaCupom( 0 ,  )
-- 28/04 10:44:02:777 GetEstado estVenda
-- 28/04 10:44:02:777 GetSubTotal: 100
-- 28/04 10:44:02:787 GravaArqINI
-- 28/04 10:44:02:787 ClasstoINI
-- 28/04 10:44:02:787 GetSubTotal: 100
-- 28/04 10:44:02:787 GetTotalPago: 0
-- 28/04 10:44:02:787 GetEstado estPagamento
-- 28/04 10:44:03:877 EfetuaPagamentoNaoFiscal( 03 , 120 , , 0 )
-- 28/04 10:44:03:877 GetEstado estPagamento
-- 28/04 10:44:03:877 GetTotalPago: 0
-- 28/04 10:44:03:877 GetSubTotal: 100
-- 28/04 10:44:03:877 GetTotalPago: 120
-- 28/04 10:44:03:877 GetSubTotal: 100
-- 28/04 10:44:03:877 GetTotalPago: 120
-- 28/04 10:44:03:877 GetTotalPago: 120
-- 28/04 10:44:03:877 GetSubTotal: 100
-- 28/04 10:44:03:877 GetTotalPago: 120
-- 28/04 10:44:03:887 GetSubTotal: 100
-- 28/04 10:44:03:897 GravaArqINI
-- 28/04 10:44:03:897 ClasstoINI
-- 28/04 10:44:03:897 GetSubTotal: 100
-- 28/04 10:44:03:897 GetTotalPago: 120
-- 28/04 10:44:03:897 GetEstado estPagamento
-- 28/04 10:44:03:907 GetEstado estPagamento
-- 28/04 10:44:03:907 FechaCupom( VENDEDOR:ANDERSON JACOB GONCALVES )
-- 28/04 10:44:03:907 GetEstado estPagamento
-- 28/04 10:44:03:907 GetTotalPago: 120
-- 28/04 10:44:03:907 GetSubTotal: 100
-- 28/04 10:44:03:907 GetNumECF: 901
-- 28/04 10:44:03:927 GravaArqINI
-- 28/04 10:44:03:927 ClasstoINI
-- 28/04 10:44:03:947 GetNumSerie: SIM00000000000000901
-- 28/04 10:44:03:947 GetGrandeTotal: 3351,85
-- 28/04 10:44:03:947 GetSubTotal: 100
-- 28/04 10:44:03:947 GetTotalPago: 120    ==================> até aqui está correto
-- 28/04 10:44:03:947 GetEstado estLivre
-- 28/04 10:44:04:097 GetNumSerie: SIM00000000000000901
-- 28/04 10:44:04:097 GetGrandeTotal: 3351,85
-- 28/04 10:44:04:107 GetEstado estLivre
-- 28/04 10:44:04:117 GetNumCCF: 000020
-- 28/04 10:44:04:117 CarregaAliquotas
-- 28/04 10:44:04:117 LeArqINI
-- 28/04 10:44:04:117 INItoClass
-- 28/04 10:44:04:147 GetSubTotal: 100
-- 28/04 10:44:04:147 GetTotalPago: 140   ===================> aqui já está errado
-- 28/04 10:44:04:147 GetEstado estLivre
-- 28/04 10:44:04:147 GetEstado estLivre
-- 28/04 10:44:04:147 GetEstado estLivre
-- 28/04 10:44:04:157 GetNumCCF: 000020
-- 28/04 10:44:04:157 CarregaAliquotas
-- 28/04 10:44:04:157 LeArqINI
-- 28/04 10:44:04:157 INItoClass
-- 28/04 10:44:04:167 GetSubTotal: 100
-- 28/04 10:44:04:167 GetTotalPago: 140
-- 28/04 10:44:04:167 GetEstado estLivre
 

  • Moderadores
Postado
24 minutos atrás, Gr@c@ disse:

-- 28/04 10:44:04:157 CarregaAliquotas
-- 28/04 10:44:04:157 LeArqINI
-- 28/04 10:44:04:157 INItoClass

Essa chamada causava o problema.

Substitua e teste.

ACBrECFVirtual.pas

  • Curtir 1
Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

  • Moderadores
Postado
1 hora atrás, BigWings disse:

Essa chamada causava o problema.

Substitua e teste.

ACBrECFVirtual.pas

Com a sua alteração ficou correto. Já fiz vários testes, com valor igual, com valor maior, com uma formapagto, com várias formas, com troco, sem troco. 

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