From 12ea687532f86047b2cea25e672271ba3ba6e432 Mon Sep 17 00:00:00 2001 From: julio Date: Thu, 7 May 2015 21:29:09 +0000 Subject: [PATCH] =?UTF-8?q?Diverg=C3=AAncia=20Relat=C3=B3rio=20Empresa=20?= =?UTF-8?q?=C3=B4nibus=20x=20Empresa=20Corrida=20(bug=20#6270)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@43831 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../impl/RelatorioEmpresaCorrida.java | 150 +++++++++++++----- .../filtroRelatorioEmpresaOnibus.zul | 2 +- 2 files changed, 113 insertions(+), 39 deletions(-) diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioEmpresaCorrida.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioEmpresaCorrida.java index 3725098fa..49b21a9e0 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioEmpresaCorrida.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioEmpresaCorrida.java @@ -84,13 +84,15 @@ public class RelatorioEmpresaCorrida extends Relatorio { } private String getSql(String empresa) { - StringBuffer sql = new StringBuffer(); - 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 "); + + StringBuilder sql = new StringBuilder(); + sql.append("SELECT DISTINCT "); + sql.append(" 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)) "); @@ -110,42 +112,114 @@ public class RelatorioEmpresaCorrida extends Relatorio { 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(" COALESCE(km2.kmtotal, 0) kmtotal, "); + sql.append(" COALESCE(km2.kmonibusproprio, 0) kmOnibusProprio, "); + sql.append(" COALESCE(km2.kmonibusarrendados, 0) kmOnibusArrendados "); + sql.append("FROM "); + sql.append(" tramo t1 "); + sql.append("INNER JOIN "); + sql.append(" corrida_tramo ct "); + sql.append("ON "); + sql.append(" ct.tramo_id = t1.tramo_id "); + sql.append("INNER JOIN "); + sql.append(" corrida c1 "); + sql.append("ON "); + sql.append(" ct.corrida_id = c1.corrida_id "); + sql.append("AND ct.feccorrida = c1.feccorrida "); + sql.append("INNER JOIN "); + sql.append(" autobus a "); + sql.append("ON "); + sql.append(" ct.autobus_id = a.autobus_id "); + sql.append("LEFT JOIN "); + sql.append(" boleto b "); + sql.append("ON "); + sql.append(" b.corrida_id = c1.corrida_id "); + sql.append("AND b.feccorrida = c1.feccorrida "); + sql.append("LEFT JOIN "); + sql.append(" categoria cat "); + sql.append("ON "); + sql.append(" cat.categoria_id = b.categoria_id "); + sql.append("INNER JOIN "); + sql.append(" empresa e "); + sql.append("ON "); + sql.append(" e.empresa_id = c1.EMPRESACORRIDA_ID "); + sql.append("INNER JOIN "); + sql.append(" ruta r "); + sql.append("ON "); + sql.append(" r.ruta_id = c1.ruta_id "); + sql.append("LEFT JOIN "); + sql.append(" ( "); + sql.append(" SELECT "); + sql.append(" c.ruta_id ruta_id, "); + sql.append(" c.EMPRESACORRIDA_ID empresa_id, "); + sql.append(" COALESCE(SUM(t.cantkmreal), 0) kmtotal, "); + sql.append(" COALESCE(SUM( "); + sql.append(" CASE "); + sql.append(" WHEN a.empresa_id = c.empresacorrida_id "); + sql.append(" THEN t.cantkmreal "); + sql.append(" ELSE 0 "); + sql.append(" END), 0) kmOnibusProprio, "); + sql.append(" COALESCE(SUM( "); + sql.append(" CASE "); + sql.append(" WHEN a.empresa_id <> c.empresacorrida_id "); + sql.append(" THEN t.cantkmreal "); + sql.append(" ELSE 0 "); + sql.append(" END), 0) kmOnibusArrendados "); + sql.append(" FROM "); + sql.append(" corrida c "); + sql.append(" INNER JOIN "); + sql.append(" corrida_tramo ct "); + sql.append(" ON "); + sql.append(" ct.corrida_id = c.corrida_id "); + sql.append(" AND c.feccorrida = ct.feccorrida "); + sql.append(" INNER JOIN "); + sql.append(" tramo t "); + sql.append(" ON "); + sql.append(" t.tramo_id = ct.tramo_id "); + sql.append(" INNER JOIN "); + sql.append(" parada o "); + sql.append(" ON "); + sql.append(" o.parada_id = ct.origen_id "); + sql.append(" INNER JOIN "); + sql.append(" parada d "); + sql.append(" ON "); + sql.append(" d.parada_id = ct.destino_id "); + sql.append(" INNER JOIN "); + sql.append(" autobus a "); + sql.append(" ON "); + sql.append(" a.autobus_id = ct.autobus_id "); + sql.append(" INNER JOIN "); + sql.append(" empresa e "); + sql.append(" ON "); + sql.append(" e.empresa_id = a.empresa_id "); + sql.append(" WHERE c.activo <> 0 "); + sql.append(" AND e.empresa_id = 1 "); + sql.append(" AND ct.activo = 1 "); + sql.append(" AND c.feccorrida BETWEEN :fecInicio AND :fecFinal "); + sql.append(" AND ct.feccorrida BETWEEN :fecInicio AND :fecFinal "); + sql.append(" GROUP BY "); + sql.append(" c.ruta_id, "); + sql.append(" c.EMPRESACORRIDA_ID ) km2 "); + sql.append("ON (km2.ruta_id = r.ruta_id AND km2.empresa_id = e.empresa_id) "); + sql.append("WHERE 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 "); + 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 "); + sql.append(" e.nombempresa, "); + sql.append(" km2.kmtotal, "); + sql.append(" km2.kmonibusproprio, "); + sql.append(" km2.kmonibusarrendados "); + sql.append("ORDER BY "); + sql.append(" nombempresa, "); + sql.append(" linea"); return sql.toString(); } + } diff --git a/web/gui/relatorios/filtroRelatorioEmpresaOnibus.zul b/web/gui/relatorios/filtroRelatorioEmpresaOnibus.zul index a2380640c..549ef1774 100644 --- a/web/gui/relatorios/filtroRelatorioEmpresaOnibus.zul +++ b/web/gui/relatorios/filtroRelatorioEmpresaOnibus.zul @@ -7,7 +7,7 @@