diff --git a/pom.xml b/pom.xml
index e8e438824..c3eebf1c0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
br.com.rjconsultores
ventaboletosadm
- 1.0.102
+ 1.0.103
war
diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioIndiceIRK.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioIndiceIRK.java
index e93c394d8..cb57be121 100644
--- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioIndiceIRK.java
+++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioIndiceIRK.java
@@ -160,72 +160,104 @@ public class RelatorioIndiceIRK extends Relatorio {
sb.append(" (SUM(passagens) + SUM(pedagio) + SUM(txembarque) + SUM(seguro)) - (indiceirkminimo * extensao * qtdCorrida) AS diferencareceita,");
sb.append(" prefixo");
sb.append(" FROM");
- sb.append(" (SELECT cj.caja_id AS cajaId,");
- sb.append(" cj.corrida_id AS servico,");
- sb.append(" r.ruta_id AS rutaid,");
- sb.append(" r.descruta AS descruta,");
- sb.append(" r.indsentidoida AS sentido,");
- sb.append(" nvl(e.indiceirk, 0) AS indiceirkminimo,");
- sb.append(" nvl(gr.descgrupo, 'Nao Definido') AS gruporuta,");
- sb.append(" to_char(co.fechorsalida, 'HH24:MI') AS hora,");
- sb.append(" sum(tr.cantkmreal) AS extensao,");
- sb.append(" cj.importeseguro AS seguro,");
- sb.append(" cj.importetaxaembarque AS txembarque,");
- sb.append(" cj.importepedagio AS pedagio,");
- sb.append(" cj.preciopagado AS passagens,");
- sb.append(" r.prefixo AS prefixo,");
- sb.append(" (SELECT count(*)");
- sb.append(" FROM");
- sb.append(" (SELECT (cjj.feccorrida)");
- sb.append(" FROM caja cjj");
- sb.append(" WHERE cjj.activo = 1");
- sb.append(" AND cjj.motivocancelacion_id IS NULL");
- sb.append(" AND cjj.indstatusboleto = 'V'");
- sb.append(" and cjj.feccorrida BETWEEN TO_DATE(:DATA_INICIO, 'DD/MM/YY hh24:mi:ss') AND TO_DATE(:DATA_FINAL, 'DD/MM/YY hh24:mi:ss') ");
- sb.append(rutaIds == null ||TODOS.equals(rutaIds) ? "" : " AND r.ruta_id IN ( " + rutaIds + " ) ");
- sb.append(corridasIds == null || TODOS.equals(corridasIds) ? "" : " AND cj.corrida_id IN ( " + corridasIds + " ) ");
- sb.append(grupoRutaId == null || TODOS.equals(grupoRutaId) ? "" : " AND R.GRUPORUTA_ID IN ( " + grupoRutaId + " ) ");
- sb.append(" AND cjj.empresacorrida_id =:empresaId ");
- sb.append(" AND cjj.corrida_id IN (cj.corrida_id)");
- sb.append(" GROUP BY cjj.feccorrida))AS qtdCorrida");
- sb.append(" FROM caja cj");
- sb.append(" INNER JOIN ruta r ON (cj.ruta_id = r.ruta_id)");
- sb.append(" LEFT JOIN grupo_ruta gr ON (r.gruporuta_id = gr.gruporuta_id)");
- sb.append(" INNER JOIN ruta_combinacion rc ON (rc.ruta_id = cj.ruta_id");
- sb.append(" AND rc.activo = 1)");
- sb.append(" INNER JOIN corrida co ON (co.corrida_id = cj.corrida_id");
- sb.append(" AND co.ruta_id = r.ruta_id");
- sb.append(" AND co.activo = 1");
- sb.append(" AND cj.feccorrida = co.feccorrida)");
- sb.append(" INNER JOIN tramo tr ON (tr.tramo_id = rc.tramo_id");
- sb.append(" AND tr.origen_id = co.origen_id");
- sb.append(" AND tr.destino_id = co.destino_id)");
- sb.append(" INNER JOIN marca m ON (cj.marca_id = m.marca_id");
- sb.append(" AND m.empresa_id =:empresaId )");
- sb.append(" INNER JOIN empresa e ON (e.empresa_id =:empresaId )");
- sb.append(" INNER JOIN parada origen ON (origen.parada_id = tr.origen_id)");
- sb.append(" INNER JOIN parada destino ON (destino.parada_id = tr.destino_id)");
- sb.append(" WHERE cj.activo = 1");
- sb.append(" AND cj.motivocancelacion_id IS NULL");
- sb.append(" AND cj.indstatusboleto = 'V'");
- sb.append(" and cj.feccorrida BETWEEN TO_DATE(:DATA_INICIO, 'DD/MM/YY hh24:mi:ss') AND TO_DATE(:DATA_FINAL, 'DD/MM/YY hh24:mi:ss') ");
- sb.append(rutaIds == null ||TODOS.equals(rutaIds) ? "" : " AND r.ruta_id IN ( " + rutaIds + " ) ");
- sb.append(corridasIds == null || TODOS.equals(corridasIds) ? "" : " AND cj.corrida_id IN ( " + corridasIds + " ) ");
- sb.append(grupoRutaId == null || TODOS.equals(grupoRutaId) ? "" : " AND R.GRUPORUTA_ID IN ( " + grupoRutaId + " ) ");
- sb.append(" GROUP BY cj.caja_id,");
- sb.append(" cj.corrida_id,");
- sb.append(" r.ruta_id,");
- sb.append(" r.descruta,");
- sb.append(" r.indsentidoida,");
- sb.append(" e.indiceirk,");
- sb.append(" gr.descgrupo,");
- sb.append(" co.fechorsalida,");
- sb.append(" cj.importeseguro,");
- sb.append(" cj.importetaxaembarque,");
- sb.append(" cj.importepedagio,");
- sb.append(" cj.preciopagado,");
- sb.append(" r.prefixo");
- sb.append(" ORDER BY r.descruta) dados_sem_agrupamento");
+
+ sb.append("( WITH corridas AS ( ");
+ sb.append(" SELECT ");
+ sb.append(" coi.fechorsalida AS feccorrida, ");
+ sb.append(" cjj.corrida_id ");
+ sb.append(" FROM ");
+ sb.append(" caja cjj ");
+ sb.append(" INNER JOIN ruta r ON ( cjj.ruta_id = r.ruta_id ) ");
+ sb.append(" INNER JOIN corrida coi ON ( coi.corrida_id = cjj.corrida_id ");
+ sb.append(" AND coi.ruta_id = r.ruta_id ");
+ sb.append(" AND coi.activo = 1 ");
+ sb.append(" AND cjj.feccorrida = coi.feccorrida ) ");
+ sb.append(" WHERE ");
+ sb.append(" cjj.activo = 1 ");
+ sb.append(" AND cjj.motivocancelacion_id IS NULL ");
+ sb.append(" AND cjj.indstatusboleto = 'V' ");
+ sb.append(" and cjj.feccorrida BETWEEN TO_DATE(:DATA_INICIO, 'DD/MM/YY hh24:mi:ss') AND TO_DATE(:DATA_FINAL, 'DD/MM/YY hh24:mi:ss') ");
+ sb.append(rutaIds == null ||TODOS.equals(rutaIds) ? "" : " AND r.ruta_id IN ( " + rutaIds + " ) ");
+ sb.append(corridasIds == null || TODOS.equals(corridasIds) ? "" : " AND cjj.corrida_id IN ( " + corridasIds + " ) ");
+ sb.append(grupoRutaId == null || TODOS.equals(grupoRutaId) ? "" : " AND R.GRUPORUTA_ID IN ( " + grupoRutaId + " ) ");
+ sb.append(" AND cjj.empresacorrida_id =:empresaId ");
+ sb.append(" GROUP BY ");
+ sb.append(" coi.fechorsalida, ");
+ sb.append(" cjj.corrida_id ");
+ sb.append("), corridas_count AS ( ");
+ sb.append(" SELECT ");
+ sb.append(" to_char(feccorrida, 'HH24') AS hora, ");
+ sb.append(" corrida_id, ");
+ sb.append(" COUNT(*) AS quantidade ");
+ sb.append(" FROM ");
+ sb.append(" corridas ");
+ sb.append(" GROUP BY ");
+ sb.append(" to_char(feccorrida, 'HH24'), ");
+ sb.append(" corrida_id ");
+ sb.append(") ");
+ sb.append("SELECT ");
+ sb.append(" cj.caja_id AS cajaid, ");
+ sb.append(" cj.corrida_id AS servico, ");
+ sb.append(" r.ruta_id AS rutaid, ");
+ sb.append(" r.descruta AS descruta, ");
+ sb.append(" r.indsentidoida AS sentido, ");
+ sb.append(" nvl(e.indiceirk, 0) AS indiceirkminimo, ");
+ sb.append(" nvl(gr.descgrupo, 'Nao Definido') AS gruporuta, ");
+ sb.append(" SUM(tr.cantkmreal) AS extensao, ");
+ sb.append(" cj.importeseguro AS seguro, ");
+ sb.append(" cj.importetaxaembarque AS txembarque, ");
+ sb.append(" cj.importepedagio AS pedagio, ");
+ sb.append(" cj.preciopagado AS passagens, ");
+ sb.append(" r.prefixo AS prefixo, ");
+ sb.append(" cos.hora, ");
+ sb.append(" cos.quantidade AS qtdcorrida ");
+ sb.append("FROM ");
+ sb.append(" caja cj ");
+ sb.append(" INNER JOIN ruta r ON ( cj.ruta_id = r.ruta_id ) ");
+ sb.append(" LEFT JOIN grupo_ruta gr ON ( r.gruporuta_id = gr.gruporuta_id ) ");
+ sb.append(" INNER JOIN ruta_combinacion rc ON ( rc.ruta_id = cj.ruta_id ");
+ sb.append(" AND rc.activo = 1 ) ");
+ sb.append(" INNER JOIN corrida co ON ( co.corrida_id = cj.corrida_id ");
+ sb.append(" AND co.ruta_id = r.ruta_id ");
+ sb.append(" AND co.activo = 1 ");
+ sb.append(" AND cj.feccorrida = co.feccorrida ) ");
+ sb.append(" INNER JOIN tramo tr ON ( tr.tramo_id = rc.tramo_id ");
+ sb.append(" AND tr.origen_id = co.origen_id ");
+ sb.append(" AND tr.destino_id = co.destino_id ) ");
+ sb.append(" INNER JOIN marca m ON ( cj.marca_id = m.marca_id ");
+ sb.append(" AND m.empresa_id = :empresaId ) ");
+ sb.append(" INNER JOIN empresa e ON ( e.empresa_id = :empresaId ) ");
+ sb.append(" INNER JOIN parada origen ON ( origen.parada_id = tr.origen_id ) ");
+ sb.append(" INNER JOIN parada destino ON ( destino.parada_id = tr.destino_id ) ");
+ sb.append(" INNER JOIN corridas_count cos ON ( cos.corrida_id = co.corrida_id ");
+ sb.append(" AND hora = to_char(co.fechorsalida, 'HH24') ) ");
+ sb.append("WHERE ");
+ sb.append(" cj.activo = 1 ");
+ sb.append(" AND cj.motivocancelacion_id IS NULL ");
+ sb.append(" AND cj.indstatusboleto = 'V' ");
+ sb.append(" and cj.feccorrida BETWEEN TO_DATE(:DATA_INICIO, 'DD/MM/YY hh24:mi:ss') AND TO_DATE(:DATA_FINAL, 'DD/MM/YY hh24:mi:ss') ");
+ sb.append(rutaIds == null ||TODOS.equals(rutaIds) ? "" : " AND r.ruta_id IN ( " + rutaIds + " ) ");
+ sb.append(corridasIds == null || TODOS.equals(corridasIds) ? "" : " AND cj.corrida_id IN ( " + corridasIds + " ) ");
+ sb.append(grupoRutaId == null || TODOS.equals(grupoRutaId) ? "" : " AND R.GRUPORUTA_ID IN ( " + grupoRutaId + " ) ");
+ sb.append("GROUP BY ");
+ sb.append(" cj.caja_id, ");
+ sb.append(" cj.corrida_id, ");
+ sb.append(" r.ruta_id, ");
+ sb.append(" r.descruta, ");
+ sb.append(" r.indsentidoida, ");
+ sb.append(" nvl(e.indiceirk, 0), ");
+ sb.append(" nvl(gr.descgrupo, 'Nao Definido'), ");
+ sb.append(" cj.importeseguro, ");
+ sb.append(" cj.importetaxaembarque, ");
+ sb.append(" cj.importepedagio, ");
+ sb.append(" cj.preciopagado, ");
+ sb.append(" r.prefixo, ");
+ sb.append(" cos.hora, ");
+ sb.append(" cos.quantidade ");
+ sb.append("ORDER BY ");
+ sb.append(" r.descruta ");
+
+ sb.append(" ) dados_sem_agrupamento");
sb.append(" GROUP BY servico,");
sb.append(" rutaid,");
sb.append(" descruta,");