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.