Ir para conteúdo
  • Cadastre-se

dev botao

Forma De Pagamento Inválida


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

Recommended Posts

Bom dia a todos. Estou tendo alguns problemas ao emitir um cupom usando alguma forma de pagamento que possui acentuação.

  • O problema começou a acontecer depois que eu atualizei meu Acbr
  • Impressora Bematech MP-400 TH FI
  • Já tentei usar Code Pages 437, 850, 858 e 860.

As formas de pagamento cadastrados na minha são esses:

 

  • Informaçoes do acbrlog:
Dinheiro        Cartao credito  A vista         Carteira        Cheque Pr[130]      Cheque [133] Vista  Cart[198]o D[130]bito   Dep[162]sito        Cart[198]o Cr[130]dito  Boleto          Convenio        TEF             Cartao TEF      CARTAO          Cr[130]dito         Cheque Pre      Cart[198]o          Conv[136]nio        Outros          Recarga

 

 

  • Informações retornadas da função no Delphi:

Dinheiro        Cartao credito  A vista         Carteira        Cheque Pr‚      Cheque … Vista  CartÆo D‚bito   Dep¢sito        CartÆo Cr‚dito  Boleto          Convenio        TEF             Cartao TEF      CARTAO          Cr‚dito         Cheque Pre      CartÆo          Convˆnio        Outros          Recarga        

 

 

Por exemplo, informando um pagamento em Cartão, é passado à função TACBrECFClass.AchaFPGDescricao('Cartão [Descricao], true [buscaExata], true [ignorarCase]).

No trecho que compara a descrição passada com as formas de pagamento cadastradas na impressora, temos a seguinte situação 'CARTÆO' <> 'CARTãO', logo, nunca retornará o índice da forma de pagamento.

 

Alguém pode me ajudar? Muito obrigado.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Por favor,

  faça o teste utilizando o ECFTeste que é o exemplo do ACBrECF. Anexe o log do ACBrECF gerado pelo ECFTeste.

  Adicione informações sobre a versão do Delphi utilizado, qual revisão você utilizava e para qual você atualizou.

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

Obrigado pela resposta. Então, eu não sei em qual revisão estava o meu Acbr, :/ E não sei como descobrir também, já procurei aqui de todo jeito, e nada!

 

Para facilitar, fui exportando as revisões que tiveram alteração no arquivo ACBrECFClasse e testando uma a uma. Como não é viável testar revisão por revisão, verifiquei somente algumas delas.

 

  • O que eu consigo afirmar é que a partir da 6987 não funciona, e as revisões anteriores a 6884 funcionam, ou seja, entre as revisões 6884 e 6987 eu não consigo dizer em quais revisões SUCESSIVAS o problema começou a acontecer. Não sei se isso vai ajudar em alguma coisa.
  • Delphi XE3.
  • Log em anexo. -> Teste de Procurar a forma de pagamento pela descrição "Cartão".

Obrigado.

acbrlog.txt

Link para o comentário
Compartilhar em outros sites

Bom, no meu ponto de vista realmente não era pra dar erro. 

 

O problema é que existe a forma de pagamento "Cartão" cadastrada, assim como existe "Depósito", "Dinheiro" e etc., mas todas essas formas de pagamento com acentos não são encontradas no teste do ECFTeste > Variáveis > Formas de Pagamento > Achar Formas de Pagamento por Descrição.

 

Dá mesma forma ocorre quando vou simular uma venda no ECFTeste, lá funciona normalmente porque é passado o índice da forma de pagamento e não feito uma comparação (como no ACBrECFClass) da forma if ('DEP¢SITO' = ''DEPóSITO') ou if('CARTÆO' = 'CARTãO'), na qual, depois de comparar as descrições e a cláusula se tornar verdadeira, retorna o índice. Entendeu?

 

Obrigado.

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Uma coisa que deve levar em consideração! é as strings que mudam entre ansi e utf-8!

 

retificando o que falei é as strings, widestrings e ansistrings

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

Acabei de realizar um teste aqui com uma impressora Sweda ST2000, cadastrando a forma de pagamento Cartão e usando o caminho que você falou ECFTeste > Variáveis > Formas de Pagamento > Achar Formas de Pagamento por Descrição

 

Funcionou corretamente.

 

Estou com a revisão 7135 que é bem mais atual que a revisão que você relatou que tem o problema mas não é a última.

 

Então acho que você atualizando o ACBr deve funcionar.

 

Pode fazer isso?

Giuliano Naspolini Ribeiro

Automalog Consultoria e Sistemas Ltda

Link para o comentário
Compartilhar em outros sites

Bingo! Descobri como resolver o problema! Mas confesso que não aceitei muito, rs'. 

 

O empecilho está na ACBrECFClass. As 3 últimas modificações nessa unit foram nas revisões 7079, 7014 e 6884. O problema começou a ocorrer a partir da 7014.

 

Motivo do problema:  a função "TACBrECF( fpOwner ).CarregaFormasPagamento ; ;" foi substituída por "CarregaFormasPagamento" (em anexo, linhas 3444 - 3446). Dessa forma, cada uma chama funções diferentes.

 

A primeira, chama uma função lá dentro da unit UCBrECF, na qual passa por um outra função de decodificação. A segunda, chama uma função dentro da própria unit ACBrECFClass, onde não passa por nenhum método de decodificação. 

 

Obs.:

  • apaguei todo meu ACBr e dei restore para me certificar que o problema está definitivamente especificado.
  • comentei a linha 3444 para forçar o passagem pelas chamadas das funções.

 

Obrigado a todos, mas como disse ali em cima, não "aceitei" muito essa solução, talvez seja um tiro no pé. Alguém pode explicar o que aconteceu, de fato?

 

Obrigado mais uma vez.

post-13290-0-10692900-1405086843_thumb.j

Link para o comentário
Compartilhar em outros sites

  • Consultores

Edit: Enquanto estava confeccionando essa resposta o Pedro respondeu acima...

 

Acho que consegui reproduzir aqui o problema. Veja o log da aba "Cmd/Resp" do ACBrECF.

Cadastrei as formas de pagamento

 

- + - + - + - + - + - + - + - + - + - + - + -
Forma Pagto: 01 -> Dinheiro  Permite Vinculado: N
Forma Pagto: 02 -> CARTAO CREDITO  Permite Vinculado: S
Forma Pagto: 03 -> CARTAO DEBITO  Permite Vinculado: S
Forma Pagto: 04 -> CARTAO TEF  Permite Vinculado: S
Forma Pagto: 05 -> ANOTADO  Permite Vinculado: S
Forma Pagto: 06 -> ANOTADO EM CONT  Permite Vinculado: S
Forma Pagto: 07 -> DINHEIRO  Permite Vinculado: S
Forma Pagto: 08 -> Cheque  Permite Vinculado: S
---------------------------------
Forma Pagto: 01 -> Dinheiro  Permite Vinculado: N
Forma Pagto: 02 -> CARTAO CREDITO  Permite Vinculado: S
Forma Pagto: 03 -> CARTAO DEBITO  Permite Vinculado: S
Forma Pagto: 04 -> CARTAO TEF  Permite Vinculado: S
Forma Pagto: 05 -> ANOTADO  Permite Vinculado: S
Forma Pagto: 06 -> ANOTADO EM CONT  Permite Vinculado: S
Forma Pagto: 07 -> DINHEIRO  Permite Vinculado: S
Forma Pagto: 08 -> Cheque  Permite Vinculado: S
Forma Pagto: 09 -> Depósito  Permite Vinculado: S
---------------------------------
Forma de Pagamento (Depósito) não encontrada!

- + - + - + - + - + - + - + - + - + - + - + -
Indice   : 08
Descrição: Cheque
Valor atual do totalizador R$ 0,00

- + - + - + - + - + - + - + - + - + - + - + -
Indice   : 09
Descrição: Dep¢sito
Valor atual do totalizador R$ 0,00

- + - + - + - + - + - + - + - + - + - + - + -
 

 

No log do ACBrECF em si não há nada estranho. O meu ficou semelhante ao do Pedro Henrique aí acima anexo. Então não vi necessidade de anexar aqui.

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

Motivo do problema:  a função "TACBrECF( fpOwner ).CarregaFormasPagamento ; ;" foi substituída por "CarregaFormasPagamento" (em anexo, linhas 3444 - 3446). Dessa forma, cada uma chama funções diferentes.

 

A primeira, chama uma função lá dentro da unit UCBrECF, na qual passa por um outra função de decodificação. A segunda, chama uma função dentro da própria unit ACBrECFClass, onde não passa por nenhum método de decodificação. 

 

Obs.:

  • apaguei todo meu ACBr e dei restore para me certificar que o problema está definitivamente especificado.
  • comentei a linha 3444 para forçar o passagem pelas chamadas das funções.
Obrigado a todos, mas como disse ali em cima, não "aceitei" muito essa solução, talvez seja um tiro no pé. Alguém pode explicar o que aconteceu, de fato?

 

Essa alteração foi feita para criar o que vai possibilitar, além de outras coisas, trabalhar com impressoras não fiscais de maneira mais simples.

Para uma explicação mais detalhada do motivo específico desta alteração vamos tentar aguardar o Daniel.

Visto que ela também criou um efeito colateral em outra área como você acho que vamos logo ter uma posição sobre o que fazer.

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

  • 3 semanas depois ...

Obrigado pela resposta. Então, eu não sei em qual revisão estava o meu Acbr, :/ E não sei como descobrir também, já procurei aqui de todo jeito, e nada!

 

Para facilitar, fui exportando as revisões que tiveram alteração no arquivo ACBrECFClasse e testando uma a uma. Como não é viável testar revisão por revisão, verifiquei somente algumas delas.

 

  • O que eu consigo afirmar é que a partir da 6987 não funciona, e as revisões anteriores a 6884 funcionam, ou seja, entre as revisões 6884 e 6987 eu não consigo dizer em quais revisões SUCESSIVAS o problema começou a acontecer. Não sei se isso vai ajudar em alguma coisa.
  • Delphi XE3.
  • Log em anexo. -> Teste de Procurar a forma de pagamento pela descrição "Cartão".

Obrigado.

Um pouco tarde para resposta mais vamos la :

 

Se quer saber em qual revisao seu acbr está, faça o seguinte, se estiver usando tortoiseSVN,  botao direito na pasta do acbr - TortoiseSVN - ShowLog

 a sua revisao vai estar com número em negrito, abraço

Editado por Jicelmo Andrade
Link para o comentário
Compartilhar em outros sites

Bom, na verdade, na verdade mesmo, eu não atualizei o meu ACBr como a última postagem do Daniel Simões sugere. O simples motivo foi porque a versão corrente do ACBr local (revisão 7251) se apresentava "estável" em meu sistema, aí deixei como estava. Em relação a resolução do problema que eu descrevi ali em cima, fiz algumas outras mudanças, mas basicamente, foi o seguinte: 

  1. Dei Restore e instalei todo o ACBr novamente.
  2. Na unit ACBrECFBematech, linha 1937, eu substituí "FPagto.Descricao := Descr;" por "FPagto.Descricao := DecodificarPaginaDeCodigoECF(Descr);"

 

Isso resolveu o meu problema na revisão 7251. OBS.: não testei nas versões subsequentes.

Editado por Pedro Henrique Camargo
Link para o comentário
Compartilhar em outros sites

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