-- __ID_EMPRESA, DataInicial, IdUsuarioEmpresa

SELECT  
    e.nome AS empresa,
    bi.numero,
    bi.denominacao,
    CASE WHEN sum(af.quantidade) > 0 THEN 'X' ELSE '' END AS quantidade_afericao,
    sum(ivc.quantidade) AS quantidade_cupom,
    sum(a.quantidade) AS quantidade,
    sum(a.total) as total_bomba,
    min(a.encerrante_inicial) AS encerrante_inicial,
    max(a.encerrante_final) as encerrante_final,
    mv.numero_movimento,
    mv.fechamento,
    su.nome as nome_usario
FROM    
    abastecimento  AS a 
    INNER JOIN bico_combustivel bi on (bi.id_bico_combustivel = a.id_bico_combustivel AND bi.id_empresa = :__ID_EMPRESA)
    LEFT JOIN afericao_bico AS af ON (af.id_abastecimento = a.id_abastecimento AND af.cancelado = 'N') 
    LEFT JOIN item_venda_cf AS ivc ON (a.id_abastecimento = ivc.id_abastecimento AND ivc.cancelado = 'N') 
    LEFT JOIN venda_cf AS v ON (ivc.id_venda_cf = v.id_venda_cf AND v.cancelada = 'N')
    LEFT JOIN movimento_venda_terminal mv on (v.id_movimento_venda_terminal = mv.id_movimento_venda_terminal OR af.id_movimento_venda_terminal = mv.id_movimento_venda_terminal )
    LEFT JOIN sis_usuario as su on su.id_usuario = mv.id_usuario  
    INNER JOIN sis_empresa AS e ON (bi.id_empresa = mv.id_empresa)

WHERE e.id_empresa = :__ID_EMPRESA
AND mv.data_movimento = :DataInicial
AND (:IdUsuarioEmpresa = -1 or su.id_usuario = :IdUsuarioEmpresa)
AND a.situacao != 0
GROUP BY 
    bi.numero,
    bi.denominacao,
    e.nome,
    mv.numero_movimento,
    su.nome,
    mv.fechamento
ORDER BY cast(bi.numero as integer), encerrante_final