Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado
Encontrei um problema ao usar o Simulador da Sweda sem redução Z ao retornar a data do movimento:
 
Ao executar RetornaInfoECF('A2') sem Redução Z a String retornada é:
 
#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'28/11/2013'#0'17:28:20'#0#0'21/11/2013'#0'15:26:16'#0#0'28/11/2013'#0'17:28:30'#0#0#3'¹'#2'934+0000CA˜À’€€A2'
 
Ao executar RetornaInfoECF('A2') Com Redução Z a String retornada é:
 
'29/11/2013'#0'16:41:00'#0#0'29/11/2013'#0'16:42:08'#0#0'29/11/2013'#0'16:41:26'#0#0'29/11/2013'#0'16:42:16'#0#0#3#5#2'934+0000AA˜À’€€A2'
 
No primeiro caso a função Trim esta eliminando as informações da primeira data (Redução Z). Neste caso creio que o correto seria o uso de RemoveNulos() no lugar de Trim.
 
 
function TACBrECFSwedaSTX.GetDataMovimento: TDateTime;
 Var
  RetCmd : AnsiString ;
  OldShortDateFormat: AnsiString;
  sData:String;
begin
//  RetCmd := Trim(RetornaInfoECF('A2'));
   RetCmd := RemoveNulos(RetornaInfoECF('A2'));
   OldShortDateFormat := ShortDateFormat ;
   try
      sData := Copy(RetCmd,22,10);
      ShortDateFormat := 'dd/mm/yyyy' ;
      Result := StrToDate(sData);
   finally
      ShortDateFormat := OldShortDateFormat ;
   end ;
end;
Postado

Exatamente. Ele não retorna a data correta.

 

Usando a classe TACBrECFSwedaSTX para retornar a data do movimento no EMULADOR  Sweda Connect/SIM sem Redução Z (simulando uma impressora nova) ele esta me retornando a data do Ultimo Reinício de Operação ao invés da Data do Movimento.

 

Explicando:

 

O protocolo STX da Sweda retorna as seguintes informações ao solicitar o comando A2 (Dados Fiscais - Redução Z):

 

Data da última Redução Z
Horário da última Redução Z
Data do início do movimento
Horário do início do movimento
Data do último reinício de operação
Horário do último reinício de operação
Data do último documento emitido
Horário do último documento emitido

 

O método GetDataMovimento faz um Copy(RetCmd,22,10); que esta correto em relação as informações retornadas. Entretanto se a impressora não possui Redução Z a Data e Hora da Redução Z vem com os bytes 0 na resposta da impressora. Caso aplicamos um Trim nessa resposta todas posições em relação a Data e Hora da Redução Z, os primeiros 22 bytes, são removidos. E o comando Copy faz o retorno da Data do último reinício de operação. Em resumo é um ato um pouco perigoso aplicar um Trim em respostas da Impressora no protocolo STX se efetuamos um copy de uma posição fixa pois a mesma pode retornar ou não byte 0 no início.

 

O LOG não esta retornando o problema de forma visível. A grande diferença pode se observada se solicitamos a Data do Movimento usando as classes ACBr do protocolo ESC e o protocolo STX da Sweda. O protocolo ESC vai retornar a data correta. O protocolo STX esta retornando a data de último reinício de operação.

 

A string de resposta do comando RetornaInfoECF('A2'), que informei no post anterior, exemplifica muito bem isso. No primeiro caso observe que possui somente 3 datas (Não tem a data da última Redução Z). No segundo caso existe 4 datas (Possui a data da última redução Z conforme formato do Protocolo STX). No segundo caso o comando Copy funcionava perfeitamente porque o comando TRIM não removeu as informações da data da última redução Z.

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