Ir para conteúdo
  • Cadastre-se

dev botao

Acbrecf - Fiscnet - Fechacupom


Ver Solução Respondido por EMBarbosa,
  • Este tópico foi criado há 2944 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Boa tarde a todos! 
Primeiramente gostaria de agradecer a todos pelos excelentes componentes disponibilizados pelo ACBr!
Estou aprendendo muito estudando os fontes deles.
 
Eu encontrei um pequeno problema com ACBrECF, na camada FiscNet, ACBrECFFiscNET
 
A impressora FiscNet, pelo menos a que estou fazendo testes aqui, não aceita mais que 8 linhas na observação, e da erro se passar dessa quantidade de linhas.
 
Mas a Função FechaCupom dessa impressora, não está retornando o erro..

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) or
           (pos('ErroCMDForaDeSequencia',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 else //Está faltando o Else para dar o exception 
        begin
          raise;
        end;
     end ;

  end ;

está faltando a parte em negrito acima.. 

se acontecer algum erro no primeiro try, e o erro não for um dos dois tratado no except, o erro é ocultado e não retorna exceção nenhuma..

 

  • Consultores
Postado

Qual a marca e o modelo do ECF que você está usando?

[]'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.
Postado (editado)

ZPM 200

mas o problema é no fonte, acho que não ficou claro no post acima, rs..

o fonte original do ACBR está assim..

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) or
           (pos('ErroCMDForaDeSequencia',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 ;

sem o else para exibir a exceção 

 

quando chamo a função FechaCupom , executa sem de o exception, porem não fecha o CF.

pq cai no try except mas o mesmo oculta o exception

Editado por Hallysson
  • Consultores
Postado

A questão é que o protocolo fiscNET abrange modelos de diferentes marcas e gostaria de saber se não é uma limitação do modelo em si.

 

Anexe, por favor, o arquivo que você alterou para que possa ser analisado e enviado ao repositório.

[]'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.
  • Consultores
Postado

Seria a quantidade de linhas mesmo. Mas eu percebi que o código alterado está correto independente do comportamento dos modelos, pois o código atual está "engolindo" Exceptions não tratadas.

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

Na unit que estou usando aqui na empresa, eu alterei também a questão ta linha, deixando enviar somente 8 linhas para a ECF..

mas não enviei essa alteração no anexo, pq como o EMBarbosa comentou, essa limitação pode ser do modelo que estou usando..

Postado

Eu não sabia que era de todas as ECFs..

 

Então essa questão de limitar o numero de linhas, poderia ser feita na FechaCupom da ACBrECF, antes de chamar a FechaCupom de cada ECF, não?

Algumas ECF não dão erro, a Bematech por exemplo, mas algumas não consegue fechar o CF.

 

Verificando a FechaCupom da Bematech, tem um copy de 490 Caracteres, mas ela não dá erro se passar mais de 8 linhas como deu na ZPM-200..

  • Consultores
Postado

Eu não sabia que era de todas as ECFs..

 

Então essa questão de limitar o numero de linhas, poderia ser feita na FechaCupom da ACBrECF, antes de chamar a FechaCupom de cada ECF, não?

  Eu pessoalmente acredito que não. A menos que seja um tratamento recomendado pelo manual do ECF, é uma limitação do ECF no momento. Digo, apenas esse modelo parece não ter o tratamento para remover os caracteres em excesso.

  Mas a alteração da exception eu acredito que esteja faltando mesmo e concordo com a alteração.

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

Blz Então.

 

Eu achei alguns probleminhas parecidos, 

Mas acredito que seja melhor criar um outro tópico pq não trata do FechaCupom.

 

Obrigado pelos esclarecimentos!!.

  • Consultores
  • Solution
Postado

Subi suas alterações para o SVN na Revisão  6646.
Pelo que vi está tudo certo.
Favor testar e reportar qualquer problema.
Obrigado.

 

Com respeito aos outros problemas parecidos, queira realmente criar outros tópicos já que não estão relacionados diretamente com o FechaCupom.

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

Ficou certinho EMBarbosa!

 

Terminando os testes aqui eu crio o outro tópico então.

Obrigado pela atenção e mais uma vez, parabéns a todos que ajudaram a fazer os componentes do ACBr!

  • 2 anos depois...
Postado (editado)

Boa tarde, estou enviando uma correção para a FiscNET com a seguinte situação.

Quando no método fechaCupom enviamos a string:

'MINAS LEGAL: 03600477000104 03112016 14000'#$A'Trib aprox R$:18,83 Federal e 16,80 Estadual'#$A'Fonte:IBPT Ar5Fr7'#$A'SDLFK JSADLKJF HSLDKJF HSKJLD FSADLKJ FSKLDJ '#$A'FSKLJD FHSKLJDAF HSLKDAJF SAKLDJF SKALDJF '#$A'SKALDJF SADKL'#$A'0000002280 '#$A'38440-171-ARAGUARI-MG-'#$A

E os dados do PAF não estão dentro da observação de fechamento e somente em fsPAF temos a seguinte situação:

  if (fsPAF <> '') and (pos(fsPAF,Obs) = 0) then
  begin
    if Obs = '' then
       Obs := fsPAF
    else
       Obs := fsPAF + #10 + Obs //Aqui poderá excede o número de linhas da ECF pois em nenhum momento após isso estamos nos preocupando novamente com o número de linhas resultantes dessa operação.
  end ;
 

Para tal mudei o código para:

  if (fsPAF <> '') and (pos(fsPAF,Obs) = 0) then
  begin
    if Obs = '' then
       Obs := fsPAF
    else begin
       Obs := fsPAF + #10 + Obs ;
       Obs := AjustaLinhas(Obs, Colunas, NumMaxLinhasRodape);
    end;
  end ;
 

 

ACBrSerial-change-log.txt

ACBrECFFiscNET.pas

Editado por Rodrigo Fruhwirth
  • Moderadores
Postado

Boa tarde!

senão me engano isso será removido pois esse novo E.R. não tem mais essa veja o trecho abaixo

Citar

REQUISITO IX

1. O PAF-ECF deve comandar a impressão no Cupom Fiscal de código composto por informações relativas ao respectivo Cupom Fiscal, observando-se que:

2 – REVOGADO

2a. REVOGADO

2b – REVOGADO

2c. Para o PAF-ECF utilizado por estabelecimento situado no Estado da Paraíba, o código deve ser precedido da expressão “PARAÍBA LEGAL - RECEITA CIDADÔ, em caixa alta, na primeira linha e, na segunda linha, “TORPEDO PREMIADO:”, em caixa alta e deve obedecer ao formato 999999999espaçoddmmaaaaespaço888888espaço777777777, onde:

“999999999” representa o número da Inscrição Estadual - IE do contribuinte usuário do ECF, impresso no cabeçalho do Cupom Fiscal;

“ddmmaaaa” representa a data de emissão do Cupom Fiscal impressa em seu cabeçalho;

“888888” representa o número do Cupom Fiscal (Número do Contador de Ordem de Operação - COO) com zeros (0) à esquerda;

“777777777” representa o valor total do respectivo Cupom Fiscal, sem zeros (0) à esquerda;

Exemplo:

Dados do Cupom Fiscal: IE: 161444539 Data: 19/06/2013 COO: 127564 Valor Total: R$ 125,45

Formação do código:

PARAÍBA LEGAL - RECEITA CIDADÃ

TORPEDO PREMIADO:

161444539 19062013 127564 12545

3. O código deve ser impresso na primeira linha disponível do campo “mensagens promocionais" ou do campo “informações suplementares", conforme o modelo de ECF, após a impressão das demais informações previstas nesta especificação.

 

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

Postado

De qualquer forma porque se mandarmos uma string muito grande para a ECF no fechamento do cupom e a expressão do PAF for adicionada a observação, a mesma deve ser remontada para caber dentro das 8 linhas.

Que no exemplo acima a string de fechamento fica com 10 linhas apresentando erro que excedeu o número de linhas.

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