Ir para conteúdo
  • Cadastre-se

dev botao

FiscNet -> Sangria + IdentificaPAF


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

Recommended Posts

  • Membros Pro

Estou tendo problemas com as impressoras FiscNet quando é utilizado o comando IdentificaPAF na inicialização do sistema. Ao emitir a Sangria, o sistema dá erro na parte do fechamento do cupom não fiscal, mesmo executando o IdentificaPAF('', ''); o ACBr tenta enviar um #$A para o rodapé do cupom não fiscal.

Alguém saberia me dizer o que está acontecendo, se o problema é do meu ECF ou se realmente a Sangria não aceita rodapé na FiscNet?

Obs: Depurando e setando o conteúdo da variável para vazio a sangria é realizada.

945757316_FantastsoftLogotipo100px.png.20c116e19bad4f7436640307ee0fa01a.png   Endrigo Rodrigues
Fantastsoft Sistemas

Node / Delphi 11.2
Belo Horizonte/MG

 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

O ACBr está utilizando o comando ImprimeTexto para a impressão do rodapé da Sangria, isso está ocasionando erro. O correto é utilizar o parâmetro TextoPromocional do comando EncerraDocumento.

Gostaria de saber se é possível fazerem essa alteração.

945757316_FantastsoftLogotipo100px.png.20c116e19bad4f7436640307ee0fa01a.png   Endrigo Rodrigues
Fantastsoft Sistemas

Node / Delphi 11.2
Belo Horizonte/MG

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Você pode anexar aí as alterações sugeridas?

[]'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

Esse é o Código Antigo


procedure TACBrECFFiscNET.FechaCupom(Observacao: AnsiString; IndiceBMP : Integer);

var

  Obs: AnsiString;

begin

  Obs := Observacao ;


  if not Consumidor.Enviado then

  begin

     { Removendo o Consumidor da Observação, pois vai usar comando próprio }

     Obs := StringReplace(Obs,#10+'CPF/CNPJ consumidor: '+Consumidor.Documento,'',[]) ;

     Obs := StringReplace(Obs,#10+'Nome: '+Consumidor.Nome,'',[]) ;

     Obs := StringReplace(Obs,#10+'Endereco: '+Consumidor.Endereco,'',[]) ;

     try

        { Se tiver Observações no rodape, deve enviar antes do consumidor }

        if Obs <> '' then

        begin

          FiscNETComando.NomeComando := 'ImprimeTexto' ;

          FiscNETComando.AddParamString('TextoLivre',Obs);

          EnviaComando ;

        end ;


        FiscNETComando.NomeComando := 'IdentificaConsumidor' ;

        FiscNETComando.AddParamString('IdConsumidor',LeftStr(Consumidor.Documento,29)) ;

        if Consumidor.Nome <> '' then

           FiscNETComando.AddParamString('NomeConsumidor',LeftStr(Consumidor.Nome,30)) ;

        if Consumidor.Nome <> '' then

           FiscNETComando.AddParamString('EnderecoConsumidor',LeftStr(Consumidor.Endereco,80)) ;

        EnviaComando ;

        Consumidor.Enviado := True ;

     except

//        Obs := Observacao ;

     end ;

  end ;


     { Tem PAF ? }     { PAF ainda não está na Obs ?}

  if (fsPAF <> '') and (pos(fsPAF,Obs) = 0) then

     if Obs = '' then

        Obs := fsPAF

     else 

        Obs := fsPAF + #10 + Obs ;


  if (Obs <> '') then

  begin

     FiscNETComando.NomeComando := 'ImprimeTexto' ;

     FiscNETComando.AddParamString('TextoLivre',Obs);

     EnviaComando ;

  end else


  FiscNETComando.NomeComando := 'EncerraDocumento' ;

  FiscNETComando.TimeOut     := 5 ;

  FiscNETComando.AddParamString('Operador',Operador) ;

  EnviaComando ;


  fsEmPagamento := false ;

end;

Com as devidas Alterações ficou Assim
procedure TACBrECFFiscNET.FechaCupom(Observacao: AnsiString; IndiceBMP : Integer);

var

  Obs: AnsiString;

begin

  Obs := Observacao ;


  if not Consumidor.Enviado then

  begin

     { Removendo o Consumidor da Observação, pois vai usar comando próprio }

     Obs := StringReplace(Obs,#10+'CPF/CNPJ consumidor: '+Consumidor.Documento,'',[]) ;

     Obs := StringReplace(Obs,#10+'Nome: '+Consumidor.Nome,'',[]) ;

     Obs := StringReplace(Obs,#10+'Endereco: '+Consumidor.Endereco,'',[]) ;

     try

        { Se tiver Observações no rodape, deve enviar antes do consumidor }

        if Obs <> '' then

        begin

          FiscNETComando.NomeComando := 'EncerraDocumento' ;

          FiscNETComando.AddParamString('TextoPromocional',Obs);

          EnviaComando ;

        end ;


        FiscNETComando.NomeComando := 'IdentificaConsumidor' ;

        FiscNETComando.AddParamString('IdConsumidor',LeftStr(Consumidor.Documento,29)) ;

        if Consumidor.Nome <> '' then

           FiscNETComando.AddParamString('NomeConsumidor',LeftStr(Consumidor.Nome,30)) ;

        if Consumidor.Nome <> '' then

           FiscNETComando.AddParamString('EnderecoConsumidor',LeftStr(Consumidor.Endereco,80)) ;

        EnviaComando ;

        Consumidor.Enviado := True ;

     except

//        Obs := Observacao ;

     end ;

  end ;


     { Tem PAF ? }     { PAF ainda não está na Obs ?}

  if (fsPAF <> '') and (pos(fsPAF,Obs) = 0) then

     if Obs = '' then

        Obs := fsPAF

     else 

        Obs := fsPAF + #10 + Obs ;


  if (Obs <> '') then

  begin

     FiscNETComando.NomeComando := 'EncerraDocumento' ;

     FiscNETComando.AddParamString('TextoPromocional',Obs);

     EnviaComando ;

  end else

  begin

    FiscNETComando.NomeComando := 'EncerraDocumento' ;

    FiscNETComando.TimeOut     := 5 ;

    FiscNETComando.AddParamString('Operador',Operador) ;

    EnviaComando ;

  end;


  fsEmPagamento := false ;

end;

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
procedure TACBrECFFiscNET.FechaCupom(Observacao: AnsiString; IndiceBMP : Integer);

var

  Obs: AnsiString;

begin

  Obs := Observacao ;


  if not Consumidor.Enviado then

  begin

     { Removendo o Consumidor da Observação, pois vai usar comando próprio }

     Obs := StringReplace(Obs,#10+'CPF/CNPJ consumidor: '+Consumidor.Documento,'',[]) ;

     Obs := StringReplace(Obs,#10+'Nome: '+Consumidor.Nome,'',[]) ;

     Obs := StringReplace(Obs,#10+'Endereco: '+Consumidor.Endereco,'',[]) ;

     try

        { Se tiver Observações no rodape, deve enviar antes do consumidor }

        if Obs <> '' then

        begin

          FiscNETComando.NomeComando := 'EncerraDocumento' ;

          FiscNETComando.AddParamString('TextoPromocional',Obs);

          EnviaComando ;

        end ;


        FiscNETComando.NomeComando := 'IdentificaConsumidor' ;

        FiscNETComando.AddParamString('IdConsumidor',LeftStr(Consumidor.Documento,29)) ;

        if Consumidor.Nome <> '' then

           FiscNETComando.AddParamString('NomeConsumidor',LeftStr(Consumidor.Nome,30)) ;

        if Consumidor.Nome <> '' then

           FiscNETComando.AddParamString('EnderecoConsumidor',LeftStr(Consumidor.Endereco,80)) ;

        EnviaComando ;

        Consumidor.Enviado := True ;

     except

//        Obs := Observacao ;

     end ;

  end ;


     { Tem PAF ? }     { PAF ainda não está na Obs ?}

  if (fsPAF <> '') and (pos(fsPAF,Obs) = 0) then

     if Obs = '' then

        Obs := fsPAF

     else

        Obs := fsPAF + #10 + Obs ;


  FiscNETComando.NomeComando := 'EncerraDocumento' ; 

  if (Obs <> '') then 

     FiscNETComando.AddParamString('TextoPromocional',Obs); 

  FiscNETComando.TimeOut     := 5 ; 

  FiscNETComando.AddParamString('Operador',Operador) ; 

  EnviaComando ; 


  fsEmPagamento := false ;

end;

945757316_FantastsoftLogotipo100px.png.20c116e19bad4f7436640307ee0fa01a.png   Endrigo Rodrigues
Fantastsoft Sistemas

Node / Delphi 11.2
Belo Horizonte/MG

 

Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois ...
  • Fundadores

Lembro que já mudei isso uma vez.. justamente por não funcionar em algumas situações...

Observe que esse método não é usado apenas na Sangria, mas tb no fechamento de cupom...

A modificação sugerida é compatível com todas as rotinas que chamam esse método ?

Veja como era na revisão: 1890

http://acbr.svn.sourceforge.net/viewvc/ ... threv=1890

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

A questão Daniel, é se foi testado essa modificação após a alteração 1890 para Sangria com IdentificaPAF. Pois do jeito que está hoje, não funciona, funciona somente a Sangria se não tiver sido executado o IdentificaPAF. Agora, com a versão 1890 funciona todos os comandos.

945757316_FantastsoftLogotipo100px.png.20c116e19bad4f7436640307ee0fa01a.png   Endrigo Rodrigues
Fantastsoft Sistemas

Node / Delphi 11.2
Belo Horizonte/MG

 

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
  • Fundadores

Por favor me envie o LOG onde o erro ocorria...

Estou modificando a Unit para que ela seja esperta o suficiente para tentar as duas formas, caso uma delas falhe:


try
FiscNETComando.NomeComando := 'EncerraDocumento' ;
if (Obs '') then
FiscNETComando.AddParamString('TextoPromocional',Obs);
FiscNETComando.TimeOut := 5 ;
FiscNETComando.AddParamString('Operador',Operador) ;
EnviaComando ;

except
on E : Exception do
begin
if (pos('ErroProtSequenciaComando',E.Message) 0) then
begin
if (Obs '') then
begin
FiscNETComando.NomeComando := 'ImprimeTexto' ;
FiscNETComando.AddParamString('TextoLivre',Obs);
EnviaComando ;
end ;

FiscNETComando.NomeComando := 'EncerraDocumento' ;
FiscNETComando.TimeOut := 5 ;
FiscNETComando.AddParamString('Operador',Operador) ;
EnviaComando ;
end ;
end ;
end ;
[/code]

Eu preciso saber qual é exatamente a mensagem de erro que será disparada na sua situação, para possivelmente substituir a expressão "ErroProtSequenciaComando" no código acima.

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

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