Ir para conteúdo
  • Cadastre-se

dev botao

Acbrecf - Fiscnet - Fechacupom


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

Recommended Posts

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

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

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.
Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

  • Consultores

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.
Link para o comentário
Compartilhar em outros sites

  • Moderadores

A questão é do tamanho de linhas Elton?

se for alguns das outras marcas simplesmente corta ele e envia somente o que a ECF pode usar!

evitando disparar uma exceção 

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

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

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

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.
Link para o comentário
Compartilhar em outros sites

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

Link para o comentário
Compartilhar em outros sites

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

Link para o comentário
Compartilhar em outros sites

  • Consultores

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.
Link para o comentário
Compartilhar em outros sites

  • Consultores
  • Solution

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.
Link para o comentário
Compartilhar em outros sites

  • 2 anos depois...

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
Link para o comentário
Compartilhar em outros sites

  • Moderadores

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_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

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.

Link para o comentário
Compartilhar em outros sites

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