leonardo 2015-04-23 13:16:53 +00:00
parent 94e8bbbf2e
commit 8754ea8405
1 changed files with 58 additions and 60 deletions

View File

@ -85,67 +85,65 @@ public class RelatorioEmpresaCorrida extends Relatorio {
private String getSql(String empresa) {
StringBuffer sql = new StringBuffer();
sql.append("SELECT DISTINCT e.empresa_id, ");
sql.append(" r.ruta_id, ");
sql.append(" r.descruta AS linea, ");
sql.append(" nombempresa, ");
sql.append(" COALESCE(Sum(CASE ");
sql.append(" WHEN ((b.motivocancelacion_id is null) AND (cat.grupocategoria_id is null OR cat.grupocategoria_id <> 4)) THEN ");
sql.append(" b.preciopagado ");
sql.append(" ELSE 0 ");
sql.append(" END), 0) boletos, ");
sql.append(" COALESCE(Sum(CASE ");
sql.append(" WHEN b.motivocancelacion_id is null AND cat.grupocategoria_id = 4 THEN ");
sql.append(" b.preciopagado ");
sql.append(" ELSE 0 ");
sql.append(" END), 0) abonos, ");
sql.append(" COALESCE(SUM(CASE WHEN b.motivocancelacion_id is null THEN 1 ELSE 0 END), 0) passageirosTransp, ");
sql.append(" COALESCE(km2.kmtotal, 0) kmtotal, ");
sql.append(" COALESCE(km2.kmonibusproprio, 0) kmOnibusProprio, ");
sql.append(" COALESCE(km2.kmonibusarrendados, 0) kmOnibusArrendados ");
sql.append("FROM boleto b ");
sql.append(" INNER JOIN categoria cat on cat.categoria_id = b.categoria_id ");
sql.append(" INNER JOIN marca m ON m.marca_id = b.marca_id ");
sql.append(" INNER JOIN empresa e ON e.empresa_id = m.empresa_id ");
sql.append(" INNER JOIN ruta r ON r.ruta_id = b.ruta_id ");
sql.append(" LEFT JOIN (SELECT c1.ruta_id ruta_id, ");
sql.append(" c1.EMPRESACORRIDA_ID empresa_id, ");
sql.append(" COALESCE(Sum(t1.cantkmreal), 0) kmtotal, ");
sql.append(" COALESCE(Sum(CASE ");
sql.append(" WHEN a.empresa_id = c1.empresacorrida_id ");
sql.append(" THEN ");
sql.append(" t1.cantkmreal ");
sql.append(" ELSE 0 ");
sql.append(" END), 0) kmOnibusProprio, ");
sql.append(" COALESCE(Sum(CASE ");
sql.append(" WHEN a.empresa_id <> ");
sql.append(" c1.empresacorrida_id THEN ");
sql.append(" t1.cantkmreal ");
sql.append(" ELSE 0 ");
sql.append(" END), 0) kmOnibusArrendados ");
sql.append(" FROM tramo t1 ");
sql.append(" INNER JOIN corrida_tramo ct ");
sql.append(" ON ct.tramo_id = t1.tramo_id ");
sql.append(" INNER JOIN corrida c1 ");
sql.append(" ON ct.corrida_id = c1.corrida_id ");
sql.append(" AND ct.feccorrida = c1.feccorrida ");
sql.append(" INNER JOIN autobus a ");
sql.append(" ON ct.autobus_id = a.autobus_id ");
sql.append(" WHERE c1.activo <> 0 AND ct.activo <> 0 ");
sql.append(" AND a.activo <> 0 AND t1.activo <> 0 ");
sql.append(StringUtils.isBlank(empresa) ? "" : " AND c1.empresacorrida_id = :empresa_id ");
sql.append(" GROUP BY c1.ruta_id, c1.EMPRESACORRIDA_ID) km2 ");
sql.append(" ON ( km2.ruta_id = r.ruta_id ");
sql.append(" AND km2.empresa_id = e.empresa_id ) ");
sql.append("WHERE b.fechorventa BETWEEN :fecInicio AND :fecFinal ");
sql.append("SELECT DISTINCT c1.ruta_id, ");
sql.append(" c1.EMPRESACORRIDA_ID, ");
sql.append(" r.descruta AS linea, ");
sql.append(" e.nombempresa, ");
sql.append(" COALESCE(SUM( ");
sql.append(" CASE ");
sql.append(" WHEN ((b.motivocancelacion_id IS NULL) ");
sql.append(" AND (cat.grupocategoria_id IS NULL ");
sql.append(" OR cat.grupocategoria_id <> 4)) ");
sql.append(" THEN b.preciopagado ");
sql.append(" ELSE 0 ");
sql.append(" END), 0) boletos, ");
sql.append(" COALESCE(SUM( ");
sql.append(" CASE ");
sql.append(" WHEN b.motivocancelacion_id IS NULL ");
sql.append(" AND cat.grupocategoria_id = 4 ");
sql.append(" THEN b.preciopagado ");
sql.append(" ELSE 0 ");
sql.append(" END), 0) abonos, ");
sql.append(" COALESCE(SUM( ");
sql.append(" CASE ");
sql.append(" WHEN b.motivocancelacion_id IS NULL ");
sql.append(" THEN 1 ");
sql.append(" ELSE 0 ");
sql.append(" END), 0) passageirosTransp, ");
sql.append(" COALESCE(SUM(t1.cantkmreal), 0) kmtotal, ");
sql.append(" COALESCE(SUM( ");
sql.append(" CASE ");
sql.append(" WHEN a.empresa_id = c1.empresacorrida_id ");
sql.append(" THEN t1.cantkmreal ");
sql.append(" ELSE 0 ");
sql.append(" END), 0) kmOnibusProprio, ");
sql.append(" COALESCE(SUM( ");
sql.append(" CASE ");
sql.append(" WHEN a.empresa_id <> c1.empresacorrida_id ");
sql.append(" THEN t1.cantkmreal ");
sql.append(" ELSE 0 ");
sql.append(" END), 0) kmOnibusArrendados ");
sql.append("FROM ");
sql.append(" tramo t1 ");
sql.append(" INNER JOIN corrida_tramo ct ON ct.tramo_id = t1.tramo_id ");
sql.append(" INNER JOIN corrida c1 ON ct.corrida_id = c1.corrida_id AND ct.feccorrida = c1.feccorrida ");
sql.append(" INNER JOIN autobus a ON ct.autobus_id = a.autobus_id ");
sql.append(" INNER JOIN ruta r ON r.ruta_id = c1.ruta_id ");
sql.append(" LEFT JOIN boleto b ON b.corrida_id = c1.corrida_id AND b.feccorrida = c1.feccorrida ");
sql.append(" LEFT JOIN categoria cat ON cat.categoria_id = b.categoria_id ");
sql.append(" INNER JOIN empresa e ON e.empresa_id = c1.EMPRESACORRIDA_ID ");
sql.append("WHERE ");
sql.append(" c1.activo <> 0 ");
sql.append(" AND ct.activo <> 0 ");
sql.append(" AND a.activo <> 0 ");
sql.append(" AND t1.activo <> 0 ");
sql.append(" AND c1.feccorrida between :fecInicio AND :fecFinal ");
sql.append(StringUtils.isBlank(empresa) ? "" : " AND e.empresa_id = :empresa_id ");
sql.append("GROUP BY e.empresa_id, ");
sql.append(" r.ruta_id, ");
sql.append(" r.descruta, ");
sql.append(" e.nombempresa, ");
sql.append(" km2.kmtotal, ");
sql.append(" km2.kmonibusproprio, ");
sql.append(" km2.kmonibusarrendados ");
sql.append("GROUP BY ");
sql.append(" c1.ruta_id, ");
sql.append(" c1.EMPRESACORRIDA_ID, ");
sql.append(" r.descruta, ");
sql.append(" e.nombempresa ");
sql.append("ORDER BY nombempresa, linea ");
return sql.toString();