Ir para conteúdo
  • Cadastre-se

dev botao

Problema com forma de pagamento AcbrECfVirtual


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

Recommended Posts

  • Membros Pro

Boa tarde, estou com problema ao usar o AcbrECFVirtual (no caso AcbrEcfVirtualSAT), quando a sequencia da forma de pagamento no INI esta "pulada"

[Formas_Pagamento]
00=00|TROCO|-1|0|30/12/1899||
01=01|DINHEIRO|0|0|30/12/1899||
02=02|CREDIARIO|-1|0|30/12/1899||
03=03|CHEQUE|-1|0|30/12/1899||
04=05|PIX|-1|5|30/12/1899||
05=06|VALE COMPRA|-1|0|30/12/1899||
06=07|TEF|-1|0|30/12/1899||
07=08|NAO PAGAR|-1|0|30/12/1899||
08=04|POS|-1|0|30/12/1899||

 

Nesse caso quando vai abrir um Vinculado o componente diz que a forma não foi usada

Abaixo: Onde detectei o erro

procedure TACBrECFVirtualClass.AbreCupomVinculado(COO, CodFormaPagto,
  CodComprovanteNaoFiscal: String; Valor: Double);
Var
  FPG : TACBrECFFormaPagamento ;
  I, PosFPG, n : Integer ;
  UsouPagamento : Boolean ;
  SubTotalCupomAnterior: Double;

begin
  GravaLog( ComandoLOG );

  if COO = '' then
    raise EACBrECFERRO.create(ACBrStr('COO inválido'));

  if Estado <> estLivre  then
    raise EACBrECFERRO.Create(ACBrStr('O Estado não é "LIVRE"')) ;

  if fpCupom.Pagamentos.Count < 1 then
    raise EACBrECFERRO.Create(ACBrStr('Ultimo Documento não é Cupom')) ;

  COO := Poem_Zeros(COO,6) ;

  FPG := AchaFPGIndice( CodFormaPagto ) ;
  if FPG = Nil then
    raise EACBrECFERRO.Create(ACBrStr('Posição de Pagamento: '+CodFormaPagto+' inválida'));

  if not FPG.PermiteVinculado then
    raise EACBrECFERRO.Create(ACBrStr('Forma de Pagamento: '+FPG.Indice+'-'+FPG.Descricao+
                                      ' não permite Vinculado'));

  UsouPagamento := False ;
  I := 0 ;
  while (not UsouPagamento) and (I < fpCupom.Pagamentos.Count) do
  begin
    PosFPG := fpCupom.Pagamentos[I].PosFPG ;
//    UsouPagamento := (fpFormasPagamentos[ PosFPG ].Indice = FPG.Indice ) ; -- isso é o que estava

  // --- Alterei para pesquisar pelo indice e não pegar o indice e usa-lo como posição
    for n := 0 to fpFormasPagamentos.Count -1  do
      if fpFormasPagamentos[n].Indice = FPG.Indice then
      begin
        UsouPagamento := True;
        break;
      end;
    Inc( I ) ;
  end ;

  if not UsouPagamento then
    raise EACBrECFERRO.create(ACBrStr('Forma de Pagamento: '+FPG.Descricao+
                                      ' não foi utilizada no Cupom anterior')) ;

  try
    fpNumGNF := fpNumGNF + 1 ;
    fpNumCDC := fpNumCDC + 1 ;
    SubTotalCupomAnterior := Subtotal;

    //ZeraCupom;  // Não Zera Dados, para permitir chamar "CancelaCupom" após Vinculado
    SetEstadoECFVirtual(estRelatorio);

    AbreCupomVinculadoVirtual(COO, FPG, CodComprovanteNaoFiscal, SubTotalCupomAnterior, Valor);
    AbreDocumento ;
  except
     LeArqINI ;
     raise ;
  end ;
end;

 

 

Nesse caso esta errado, o componente não esta respeitando o indice (digo ele imagina que o indice tambem sera a posicao), tem como contornar isso, pq acredito que possa haver outras partes com o mesmo detalhe

 

Espero ter sido claro

 

Att

 

João Victor
 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Tópico movido para a área do SAC, para que o SLA de respostas seja considerado

1 hora atrás, syspan disse:

Boa tarde, estou com problema ao usar o AcbrECFVirtual (no caso AcbrEcfVirtualSAT), quando a sequencia da forma de pagamento no INI esta "pulada"

[Formas_Pagamento]
00=00|TROCO|-1|0|30/12/1899||
01=01|DINHEIRO|0|0|30/12/1899||
02=02|CREDIARIO|-1|0|30/12/1899||
03=03|CHEQUE|-1|0|30/12/1899||
04=05|PIX|-1|5|30/12/1899||
05=06|VALE COMPRA|-1|0|30/12/1899||
06=07|TEF|-1|0|30/12/1899||
07=08|NAO PAGAR|-1|0|30/12/1899||
08=04|POS|-1|0|30/12/1899||

 

Nesse caso quando vai abrir um Vinculado o componente diz que a forma não foi usada

Abaixo: Onde detectei o erro

procedure TACBrECFVirtualClass.AbreCupomVinculado(COO, CodFormaPagto,
  CodComprovanteNaoFiscal: String; Valor: Double);
Var
  FPG : TACBrECFFormaPagamento ;
  I, PosFPG, n : Integer ;
  UsouPagamento : Boolean ;
  SubTotalCupomAnterior: Double;

begin
  GravaLog( ComandoLOG );

  if COO = '' then
    raise EACBrECFERRO.create(ACBrStr('COO inválido'));

  if Estado <> estLivre  then
    raise EACBrECFERRO.Create(ACBrStr('O Estado não é "LIVRE"')) ;

  if fpCupom.Pagamentos.Count < 1 then
    raise EACBrECFERRO.Create(ACBrStr('Ultimo Documento não é Cupom')) ;

  COO := Poem_Zeros(COO,6) ;

  FPG := AchaFPGIndice( CodFormaPagto ) ;
  if FPG = Nil then
    raise EACBrECFERRO.Create(ACBrStr('Posição de Pagamento: '+CodFormaPagto+' inválida'));

  if not FPG.PermiteVinculado then
    raise EACBrECFERRO.Create(ACBrStr('Forma de Pagamento: '+FPG.Indice+'-'+FPG.Descricao+
                                      ' não permite Vinculado'));

  UsouPagamento := False ;
  I := 0 ;
  while (not UsouPagamento) and (I < fpCupom.Pagamentos.Count) do
  begin
    PosFPG := fpCupom.Pagamentos[I].PosFPG ;
//    UsouPagamento := (fpFormasPagamentos[ PosFPG ].Indice = FPG.Indice ) ; -- isso é o que estava

  // --- Alterei para pesquisar pelo indice e não pegar o indice e usa-lo como posição
    for n := 0 to fpFormasPagamentos.Count -1  do
      if fpFormasPagamentos[n].Indice = FPG.Indice then
      begin
        UsouPagamento := True;
        break;
      end;
    Inc( I ) ;
  end ;

  if not UsouPagamento then
    raise EACBrECFERRO.create(ACBrStr('Forma de Pagamento: '+FPG.Descricao+
                                      ' não foi utilizada no Cupom anterior')) ;

  try
    fpNumGNF := fpNumGNF + 1 ;
    fpNumCDC := fpNumCDC + 1 ;
    SubTotalCupomAnterior := Subtotal;

    //ZeraCupom;  // Não Zera Dados, para permitir chamar "CancelaCupom" após Vinculado
    SetEstadoECFVirtual(estRelatorio);

    AbreCupomVinculadoVirtual(COO, FPG, CodComprovanteNaoFiscal, SubTotalCupomAnterior, Valor);
    AbreDocumento ;
  except
     LeArqINI ;
     raise ;
  end ;
end;

 

 

Nesse caso esta errado, o componente não esta respeitando o indice (digo ele imagina que o indice tambem sera a posicao), tem como contornar isso, pq acredito que possa haver outras partes com o mesmo detalhe

 

Espero ter sido claro

 

Att

 

João Victor
 

Boa tarde!
Muito obrigado pela contribuição e pelo aviso!
Por favor, é possível anexar os arquivos alterados para que sejam validados e caso aceitos enviados ao SVN?

Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

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

×
×
  • 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.