Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado (editado)

Pessoal,

Estava tendo problemas com uma MP 4200 TH FI, que estava retornando "Erro Específico do Fabricante - Motivo 40".

Analisando o LOG, identifiquei que o problema estava no método AbreNaoFiscal.

Na linha 2319 da unit ACBrECFEscECF, inicia-se o seguinte código:

  if Trim(CPF_CNPJ) <> '' then
     Consumidor.AtribuiConsumidor(CPF_CNPJ,Nome,Endereco);

  EscECFComando.CMD := 16;

Aparentemente não há nada de errado. Porém, se o CPF_CNPJ enviado for inválido, o comando será enviado à impressora e o erro descrito acima será retornado.

Neste caso, bastaria que o sistema alertasse o usuário e o mesmo fizesse a correção. Ok. 

O problema é que, caso o CPF_CNPJ enviado seja VAZIO, o erro continua ocorrendo. E o motivo é que o conteúdo das variáveis da classe Consumidor ainda permanecem com os valores antigos.

Para reproduzir o problema no ACBrTeste basta realizar os seguintes passos:

- Selecionar o modelo ecfEscECF;
- Abre Não Fiscal
- Deixar em branco os dados do consumidor (ou informar um CPF valido) e OK;
- Fechar Não Fiscal;

O "Não Fiscal" será impresso corretamente.

- Abre Não Fiscal
- Informe 123 (simulando CPF inválido)
- Observar a mensagem de Erro
- Fechar Não Fiscal

- Abre Não Fiscal
- Deixar em branco os dados do consumidor (ou informar um CPF valido) e OK;
- Observar a mensagem de Erro
- Fechar Não Fiscal

A minha sugestão é modificar o código para:

if Trim(CPF_CNPJ) <> '' then
     Consumidor.AtribuiConsumidor(CPF_CNPJ,Nome,Endereco)
else
     Consumidor.Zera;

  EscECFComando.CMD := 16;

 

[]´s

Everton Garcia

Editado por Everton Garcia
  • Fundadores
Postado

Não sei se a correção proposta é correta... Isso impediria o programador de fazer algo como:

ACBrECF1.IdentificaConsumidor( CPF, NOME, ENDERECO );
ACBrECF1.AbreNaoFiscal; 

compreendi o problema... vou pensar em algo...

Experimente dessa maneira:

procedure TACBrECFEscECF.AbreNaoFiscal(CPF_CNPJ: String; Nome: String;
   Endereco: String);
begin
  if Trim(CPF_CNPJ) <> '' then
     Consumidor.AtribuiConsumidor(CPF_CNPJ,Nome,Endereco);

  EscECFComando.CMD := 16;
  EscECFComando.AddParamString(LeftStr(OnlyNumber(Consumidor.Documento),14)) ;
  EscECFComando.AddParamString(LeftStr(Consumidor.Nome,30)) ;
  EscECFComando.AddParamString(LeftStr(Consumidor.Endereco,79)) ;
  Consumidor.Zera;

  EnviaComando;

  RespostasComando.Clear;
  RespostasComando.AddField( 'COO',        EscECFResposta.Params[0] );
  RespostasComando.AddField( 'DataHora',   EscECFResposta.Params[1] );
  RespostasComando.AddField( 'VendaBruta', EscECFResposta.Params[2] );
  RespostasComando.AddField( 'NumSerie',   EscECFResposta.Params[3] );

  fsEmPagamento := false ;
  SalvaRespostasMemoria(False);
end;

 

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.

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