depois de muitas tentativas, segue um exemplo de como verificar o status da redução z para uso da ecf bematech:
se (dataUltimaReducao = dataImpressora)
reducao_Z_bloqueada (quando efetuado reducao Z no final do dia depois de efetuado venda no mesmo dia)
senao (dataMovimento < dataImpressora)
reducao_Z_pendente (quando a data a ecf vira para a próxima data e não efetuado redução no dia anterior)
senao
reducao_Z_liberadao (ecf liberado para efetuar venda)
fim
segue exemplo C#:
public virtual StatusReducaoZ VerificarReducaoZ()
{
var dataImpressora = DataImpressora();
var dataUltimaReducao = DataHoraUltimaReducao();
var dataMovimento = DataMovimento();
// quando efetuado reducao Z no final do dia depois de efetuado venda no mesmo dia
if (dataUltimaReducao?.Date == dataImpressora.Date)
return StatusReducaoZ.Bloqueado;
// quando a data a ecf vira para a próxima data e não efetuado redução no dia anterior
else if (dataMovimento?.Date < dataImpressora.Date)
return StatusReducaoZ.Pendente;
// ecf liberado para efetuar venda
else
return StatusReducaoZ.Liberado;
}