Ir para conteúdo
  • Cadastre-se

dev botao

Relatório Gerencial "fantasma"/ Alinhamento A Direita


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

Recommended Posts

Boa tarde colegas

 

Após realizar a implementação de um sistema para ECF utilizando o emulador da Bematech sem nenhum problema, no momento de executa-lo em uma impressora real (Bematech também) estou com os seguintes problemas:

 

1) Toda vez que emito um relatório gerencial, antes de emitir o relatório correto o ecf emite um relatório gerencial em branco, apenas com o cabeçalho.

 

2) No caso de relatórios gerenciais formatados, a tag <ad> </ad> está jogando o valor formatado para a linha de baixo.

 

Alguém pode me dizer o que pode ser isso?

 

Código referente ao item 1, onde rel é um TStringList

          //Gera o relatório de fechamento
          rel.Text := geraRelFechaCaixa;
          try
            //ecf.AbreRelatorioGerencial(1);
            ecf.RelatorioGerencial(rel);
            ecf.CortaPapel(True);
          except
            //Protege exceção silenciosa levantada pelo ecf. Não é um erro!
          end;

Texto do relatório gerencial formatado

================================================
<ce>COMPROVANTE CONTA CORRENTE</ce>
<ce><n>1ª via</n></ce>
================================================
Convênio: &[DSCCONV]
Cupom Vinc.:&[NUMCUPOM]
Operador: &[DSCOPER]
------------------------------------------------
<n>Conta Corrente R$</n>:&[VALORPGTO]
------------------------------------------------
Cli: &[NOMECLI]
Doc: &[CPFCLI]
------------------------------------------------



<ce>--------------------------------------</ce>
<ce>assinatura</ce>




Grato

 

 

Edson

Link para o comentário
Compartilhar em outros sites

  • Moderadores

O comando ecf.RelatorioGerencial abre, imprime e fecha o relatório.

Caso você queira imprimir linha a linha, deve usar:

ACBrECF1.AbreRelatorioGerencial(IndiceRel) ;
ACBrECF1.LinhaRelatorioGerencial( Linha1, IndiceBMP );
ACBrECF1.LinhaRelatorioGerencial( Linha2, IndiceBMP );
ACBrECF1.LinhaRelatorioGerencial( Linha3, IndiceBMP );
ACBrECF1.LinhaRelatorioGerencial( Linha4, IndiceBMP );
....
ACBrECF1.FechaRelatorio ;
djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.lambretinha.com.br
Link para o comentário
Compartilhar em outros sites

Olá André!

 

Minha intenção é imprimir tudo de uma vez mesmo, usando um TstringList com o texto que eu quero no gerencial e enviando ele pelo método ecf.RelatorioGerencial. O problema é que antes de gerar o relatório que eu mandei, ele gera um relatório vazio e eu não estou comandando (pelo menos de propósito :) ) a emissão desse relatório. E isso só acontece no ECF real, no emulador sai tudo certinho.

 

 

Grato

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Pelo seu log, você está chamando o método de abertura do relatório gerencial duas vezes, provavelmente você está fazendo assim:

  ACBrECF1.AbreRelatorioGerencial(<indice>);
  ACBrECF1.RelatorioGerencial(<stringlist>, ...);

Faça somente:

ACBrECF1.RelatorioGerencial(<stringlist>, ...);

Ou siga a forma que o André mostrou para imprimir linha a linha.

  • Curtir 1

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

Olá Régys!

 

Realmente no início estava da forma que você citou mesmo, mas como eu imaginei que o problema poderia ser esse, eu removi do código a abertura e deixei só o gerencial. 

Eu, por falta de atenção, anexei o log completo do dia. Estou anexando agora o log de uma venda apenas. Note que na linha 217 tem um comando de fechamento de relatório, mas sem nenhum comando de abertura (pelo menos que eu tenha visto).

 

Grato

 

Edson

UnicaVenda.txt

Link para o comentário
Compartilhar em outros sites

Olá novamente Régys!

 

Verifiquei de cima em baixo o código e eu não chamo esse método em local algum do código. Não tenho nenhuma referencia a ele no projeto inteiro.

 

Segue o trecho referente ao fechamento do cupom:

            ecf.FechaCupom;
            ecf.AbreGaveta;
            ECF.CortaPapel;
            //Verifica se existe Cupons Vinculados à serem emitidos
            frmRecebimento.tblRecebimentos.First;
            with frmRecebimento do begin
              try
                 relGerencial := TStringList.Create;
                 repeat
                   if Length(Trim(tblRecebimentosCUPOM_VINC.AsString)) > 0 then begin
                     //MostraAviso('Emitindo cupom vinculado. Pressione enter...');
                     relGerencial.Clear;
                     relGerencial.Text := tblRecebimentosCUPOM_VINC.AsString;
                     //ecf.AbreRelatorioGerencial(1);
                     try
                       ecf.RelatorioGerencial(relGerencial,tblRecebimentosqtdVias.AsInteger);
                     except
                     
                     end;
                  end;
                  tblRecebimentos.Next;
              until tblRecebimentos.Eof;
              finally
                FreeAndNil(relGerencial);
              end;
            end;

Grato

 

Edson

Editado por Edson Alexandre Mendes
Link para o comentário
Compartilhar em outros sites

  • Consultores

Ele pode estar sendo chamado nos eventos ou em outro local do seu aplicativo.

Tente reproduzir o problema com o programa de exemplo.

Se não acontecer, execute seu aplicativo, coloque um breakpoint no "FecharRelatorio" do componente e veja quem está chamando ele.

  • Curtir 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

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

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

Bom dia senhores!

 

Verifiquei tudo que me foi sugerido duas vezes e não encontrei motivo para a emissão do relatório gerencial "vazio" antes do relatório comandado. Verificando o código fonte da ACBR, vi também que o comando "FecharRelatorio" que aparece no Log é normal, segundo o comentário encontrado no código, é apenas por segurança.

Alterei o relatório gerencial por um Cupom Vinculado e o problema se resolveu, ou seja, agora só é emitido o Cupom vinculado e nenhum Gerencial. Como esse relatório é apenas para o cliente que marca sua compra para desconto em folha de pagamento, creio que não tem problema.

 

Mas a dúvida quanto a tag de formatação para alinhamento a direita <ad> continua. Ela insiste em jogar o texto formatado para a linha de baixo na impressão. Isso é normal? O que os colegas sugerem no caso de ter que imprimir um valor alinhado a direita em um gerencial?

 

Obs.: Possuo outros gerenciais que imprimem normalmente, ou seja, sem relatório fantasma antes, mas onde a tag <ad> funciona como citado acima.

 

Grato

Link para o comentário
Compartilhar em outros sites

  • Consultores

Só fique alerta pois, onde o PAF-ECF é aplicado, cupom vinculado só pode ser utilizado para transação TEF. Não sei em SP...

  • Curtir 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

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

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

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