A Epson não retorna a Data do Movimento nos Dados da última Redução Z... Veja:
//Esta função utiliza o comando "Obter Totais da Jornada (09 0D)", que aceita
//como parâmetro um CRZ. Então para obter os totais da última redução, passamos o
//CRZ atual, que guarda o número da última redução Z. Os campos retornados pelo
//comando estão abaixo:
//Campo Tipo Tamanho
//1-Número da Redução Z N 4
//2-Número do COO N 6
//3-CRO N 6
//4-Venda Bruta Diária N 14
//5-Total F N 13
//6-Total I N 13
//7-Total N N 13
//8-Total FS N 13
//9-Total IS N 13
//10-Total NS N 13
//11-Total Canc. ICMS N 13
//12-Total Canc. ISS N 13
//13-Total Canc. NF N 13
//14-Total Desc. ICMS N 13
//15-Total Desc. ISS N 13
//16-Total Desc. NF N 13
//17-Total Acre. ICMS N 13
//18-Total Acre. ISS N 13
//19-Total Acre. NF N 13
//20-Total ICMS N 13
//21-Total ISS N 13
//22-Total NF N 13
//23-Data de Fechamento RZ (D) 8
//24-Hora de Fechamento RZ (H) 6
//25-Totalizador Geral N 17
//n+25-Percentual do Totalizador parcial N 4
//n+26-Total vendido N 13
Então como o ACBrECFEpson faz ? Ora, o projeto ACBr é código aberto, lembra ? Então basta abrir a sua IDE no fonte ACBrECFEpson.pas e procurar por: "DadosUltimaReducaoZ"
Agora lendo os fontes com mais calma, veja as observações existentes na linha 3328 de ACBrECFEpson.pas
{ Epson não retorna a Data do Movimento e SIM a Data de Fechamento da Z
tentando descobir se o Fechamento ocorreu no dia correto do movimento }
if (not (ECFEst in [estBloqueada, estRequerX])) and // Ainda não abriu a Jornada
(DataFechaZ < DataMov) then
begin
if DateOf( DataFechaZ ) = DateOf( DataMov ) then
DataMov := EndOfTheDay( IncDay( DateOf( DataFechaZ ), - 1) )
else
DataMov := DataFechaZ;
end;
Como você pode ver, nem sempre o truque acima irá funcionar...