Ir para conteúdo
  • Cadastre-se

dev botao

Function Tacbrecfepson.getdatahorasb: Tdatetime


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

Recommended Posts

  • Moderadores
Postado

Boa tarde!

 

Estou fazendo alguns testes com o simulador TM-T81 FBIII da Epson e utilizando o ACBrECF.DataHoraSB está dando um erro de conversão de data e hora no retorno. Abri a unit e ACBrECFEpson e questiono se o tratamento da função está correto. Está da seguinte forma:

function TACBrECFEpson.GetDataHoraSB: TDateTime;
Var
  DtHrStr : AnsiString ;
begin
  try
     // Le pela Captura da Leitura da Memoria Fiscal
     Result := inherited GetDataHoraSB;
  except
     EpsonComando.Comando := '0402' ;
     EnviaComando ;

     DtHrStr := EpsonResposta.Params[8] + '000000' ;
     Result := EncodeDateTime( StrToInt(copy(DtHrStr, 5,4)),   // Ano
                               StrToInt(copy(DtHrStr, 3,2)),   // Mes
                               StrToInt(copy(DtHrStr, 1,2)),   // Dia
                               StrToInt(copy(DtHrStr, 1,2)),   // Hora
                               StrToInt(copy(DtHrStr, 3,2)),   // Min
                               StrToInt(copy(DtHrStr, 5,2)),   // Seg
                               0 );
  end;
end;

Fiquei em dúvida se o uso daqueles 'zeros' no retorno e a formação da hora está realmente certa. No caso do emulador, está retornando somente data, não tem hora.

 

Esse é o trecho do log com o retorno:

   14:11:50:399 RX <- [STX][136][NUL][NUL][FS][192][NUL][FS][FS][NUL][NUL][FS][FS]EP081300000000000001[FS]MFD0000000000000001[FS]EPSON[FS]TM-T81 FBIII[FS]ECF-IF[FS]01.00.04[FS]99[FS]99[FS]30012013

Cleber C. Ferreira
Analista de Sistemas e Consultor
Email e
Skype: [email protected]
Formiga-MG

  • Consultores
Postado

Acho que deveria se questionar o motivo do emulador não retornar a hora...

Qual o conteúdo de EpsonResposta.Params[8] na hora da execuçã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.
  • Moderadores
Postado

Indo um pouco mais a fundo, estou reparando aqui, é disparada um LeituraMemoriaFiscalSerial por intervalo de CRZ. Como o emulador foi instalado recentemente, o CRZ retornado é '000' que consequentemente dá a seguinte mensagem: "Erro 0914 - Leitura da Memória Fiscal - intervalo de CRZ inválido!"

 

Na prática, se é instalada uma ECF nova no cliente, não tem como fazer uma leitura por CRZ.

 

Espero que isso ajude em algo.

Cleber C. Ferreira
Analista de Sistemas e Consultor
Email e
Skype: [email protected]
Formiga-MG

  • Consultores
  • Solution
Postado

Acho que não está relacionado.
Acho que o código está incorreto, pelo menos no caso do emulador. Vejam:

DtHrStr := EpsonResposta.Params[8] + '000000' ; // '30012013' + '000000' = '30012013000000'
 
StrToInt(copy(DtHrStr, 5,4)), // Ano => 2013
StrToInt(copy(DtHrStr, 3,2)), // Mes => 01
StrToInt(copy(DtHrStr, 1,2)), // Dia  => 30
StrToInt(copy(DtHrStr, 1,2)), // Hora => 30
StrToInt(copy(DtHrStr, 3,2)), // Min => 01
StrToInt(copy(DtHrStr, 5,2)), // Seg => 20

Não tem sentido o copy para Ano receber como parâmetro o mesmo Index (neste caso, 5) que o copy para seg.

Acho que Hora, Min e Seg deveriam ser:

StrToInt(copy(DtHrStr, 9,2)), // Hora => 00
StrToInt(copy(DtHrStr, 11,2)), // Min => 00
StrToInt(copy(DtHrStr, 13,2)), // Seg => 00

Gostaria de lembrar que não tenho prática com este protocolo atualmente, então estou apenas analisando o código reportado.

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

Esse método tem 2 versões... primeiro ele tenta ler a Data e Hora do Sw.Básico pela captura da Leitura da Memória Fiscal, se isso falhar... ele tenta ler apenas a Data usando o comando nativo...

 

Não há comando nativo que retorne a data e a hora...

 

As correções do Elton estavam certas... foi um refactoring mal feito...

 

Apliquei correções nos fontes do SVN...

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