diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioOrigemDestino.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioOrigemDestino.java
index 6c3a0c443..7df139a61 100644
--- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioOrigemDestino.java
+++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioOrigemDestino.java
@@ -282,19 +282,19 @@ public class RelatorioOrigemDestino extends Relatorio {
sql.append(" RESULTADO_2.fechorsalida, ");
sql.append(" RESULTADO_2.origem, ");
sql.append(" RESULTADO_2.destino, ");
- sql.append(" RESULTADO_2.km_tramo, ");
+ sql.append(" COALESCE(RESULTADO_2.km_tramo,0) AS km_tramo, ");
sql.append(" RESULTADO_2.ruta_id, ");
sql.append(" RESULTADO_2.descruta, ");
sql.append(" RESULTADO_2.indsentidoida, ");
sql.append(" RESULTADO_2.absolutos, ");
- sql.append(" RESULTADO_2.receita, ");
- sql.append(" RESULTADO_2.preciobase, ");
+ sql.append(" COALESCE(RESULTADO_2.receita,0) AS receita, ");
+ sql.append(" COALESCE(RESULTADO_2.preciobase,0) AS preciobase, ");
sql.append(" RESULTADO_2.viagens, ");
sql.append(" RESULTADO_2.km_corrida, ");
sql.append(" RESULTADO_2.disponibilidade, ");
sql.append(" RESULTADO_2.absoluto_total_corrida,");
- sql.append(" RESULTADO_2.importetaxaembarque, ");
- sql.append(" RESULTADO_2.importepedagio ");
+ sql.append(" COALESCE(RESULTADO_2.importetaxaembarque,0) AS IMPORTETAXAEMBARQUE, ");
+ sql.append(" COALESCE(RESULTADO_2.importepedagio,0) AS IMPORTEPEDAGIO ");
sql.append(" FROM (SELECT RESULTADO.*, ");
sql.append(" (SELECT Count(*) ");
sql.append(" FROM corrida CO ");
@@ -330,19 +330,32 @@ public class RelatorioOrigemDestino extends Relatorio {
sql.append(" CO.origen_id ORIGEN_ID, ");
sql.append(" CO.destino_id DESTINO_ID, ");
sql.append(" DES.cveparada DESTINO, ");
- sql.append(" CA.numkmviaje KM_TRAMO, ");
+ sql.append(" T.CANTKMREAL KM_TRAMO, ");
sql.append(" RU.ruta_id, ");
sql.append(" RU.descruta, ");
sql.append(" RU.indsentidoida, ");
- sql.append(" Count(*) ABSOLUTOS, ");
+ sql.append(" Count(CA.BOLETO_ID) ABSOLUTOS, ");
sql.append(" Sum(CA.preciopagado) RECEITA, ");
sql.append(" CA.preciobase, ");
sql.append(" SUM(CA.IMPORTETAXAEMBARQUE) as importetaxaembarque, ");
sql.append(" SUM(CA.IMPORTEPEDAGIO) as importepedagio ");
- sql.append(" FROM boleto CA ");
- sql.append(" INNER JOIN parada ORI ON ORI.parada_id = CA.origen_id ");
- sql.append(" INNER JOIN parada DES ON DES.parada_id = CA.destino_id ");
- sql.append(" INNER JOIN corrida CO ON ( CO.corrida_id = CA.corrida_id AND CO.feccorrida = CA.feccorrida ) ");
+ sql.append(" FROM corrida CO ");
+ sql.append(" INNER JOIN parada ORI ON ORI.parada_id = CO.origen_id ");
+ sql.append(" INNER JOIN parada DES ON DES.parada_id = CO.destino_id ");
+ sql.append(" INNER JOIN RUTA_COMBINACION RC ON RC.RUTA_ID = CO.RUTA_ID ");
+ sql.append(" INNER JOIN TRAMO T ON RC.TRAMO_ID = T.TRAMO_ID ");
+ sql.append(" AND T.ORIGEN_ID = ORI.PARADA_ID ");
+ sql.append(" AND T.DESTINO_ID = DES.PARADA_ID ");
+ sql.append(" AND T.ACTIVO = 1 ");
+ sql.append(" AND RC.ACTIVO = 1 ");
+ sql.append(" LEFT JOIN boleto CA ON (CO.corrida_id = CA.corrida_id ");
+ sql.append(" AND CO.feccorrida = CA.feccorrida ");
+ sql.append(" AND CA.activo = 1 ");
+ sql.append(" AND CA.motivocancelacion_id IS NULL ");
+ sql.append(" AND CA.CATEGORIA_ID <> ").append(CONSTANTE_GRATUIDADE_CRIANCA);
+ sql.append(" AND CA.preciobase IS NOT NULL ");
+ sql.append((bilhetesGratuitos ? " AND CA.PRECIOBASE >= 0 " : " AND CA.PRECIOBASE > 0 "));
+ sql.append(" ) ");
sql.append(" INNER JOIN empresa EM ON EM.empresa_id = CO.empresacorrida_id ");
sql.append(" INNER JOIN ruta RU ON RU.ruta_id = CO.ruta_id ");
sql.append(" INNER JOIN tarifa TF ON (TF.CLASESERVICIO_ID = CO.CLASESERVICIO_ID ");
@@ -351,15 +364,11 @@ public class RelatorioOrigemDestino extends Relatorio {
sql.append(" AND TF.MARCA_ID = CO.MARCA_ID ");
sql.append(" AND TF.RUTA_ID = CO.RUTA_ID)");
sql.append("INNER JOIN VIGENCIA_TARIFA VT ON (TF.VIGENCIATARIFA_ID=VT.VIGENCIATARIFA_ID)");
- sql.append(" WHERE CA.activo = 1 AND RU.activo = 1 AND EM.activo = 1 AND ORI.activo = 1 AND DES.activo = 1 ");
+ sql.append(" WHERE RU.activo = 1 AND EM.activo = 1 AND ORI.activo = 1 AND DES.activo = 1 ");
sql.append(" AND CO.activo = 1 ");
- sql.append((!corridasIds.equals("Todas") ? " AND CA.CORRIDA_ID IN (" + corridasIds + ") " : " "));
+ sql.append((!corridasIds.equals("Todas") ? " AND CO.CORRIDA_ID IN (" + corridasIds + ") " : " "));
sql.append((" AND CO.EMPRESACORRIDA_ID IN (") + empresaIds + ") ");
- sql.append(" AND CA.FECCORRIDA BETWEEN to_date('" + dataDe + "','dd/mm/yyyy HH24:mi:ss') AND to_date('" + dataAte + "','dd/mm/yyyy HH24:mi:ss') ");
- sql.append(" AND CA.motivocancelacion_id IS NULL ");
- sql.append(" AND CA.CATEGORIA_ID <> ").append(CONSTANTE_GRATUIDADE_CRIANCA);
- sql.append(" AND CA.preciobase IS NOT NULL ");
- sql.append((bilhetesGratuitos ? " AND CA.PRECIOBASE >= 0 " : " AND CA.PRECIOBASE > 0 "));
+ sql.append(" AND CO.FECCORRIDA BETWEEN to_date('" + dataDe + "','dd/mm/yyyy HH24:mi:ss') AND to_date('" + dataAte + "','dd/mm/yyyy HH24:mi:ss') ");
sql.append(" AND CO.FECCORRIDA BETWEEN vt.FECINICIOVIGENCIA and vt.FECFINVIGENCIA");
sql.append(" GROUP BY RU.ruta_id, ");
sql.append(" EM.nombempresa, ");
@@ -367,7 +376,7 @@ public class RelatorioOrigemDestino extends Relatorio {
sql.append(" DES.cveparada, ");
sql.append(" CO.origen_id, ");
sql.append(" CO.destino_id, ");
- sql.append(" CA.numkmviaje, ");
+ sql.append(" T.CANTKMREAL, ");
sql.append(" CO.corrida_id, ");
sql.append(" RU.descruta, ");
sql.append(" RU.indsentidoida, ");
@@ -412,7 +421,7 @@ public class RelatorioOrigemDestino extends Relatorio {
sql.append(" RESULTADO_2.IMPORTEPEDAGIO ");
sql.append(" ORDER BY RESULTADO_2.corrida_id) T1 ");
sql.append(" INNER JOIN (SELECT RESULTADO_2.corrida_id CORRIDA_2, ");
- sql.append(" Sum(RESULTADO_2.equivalente) EQUIVALENTE_TOTAL_CORRIDA ");
+ sql.append(" COALESCE(Sum(RESULTADO_2.equivalente),0) AS EQUIVALENTE_TOTAL_CORRIDA ");
sql.append(" FROM (SELECT RESULTADO.*, ");
sql.append(" ( RESULTADO.km_tramo / Sum(TR.cantkmreal) ) * ( ");
sql.append(" SELECT Count(*) ");
@@ -440,20 +449,23 @@ public class RelatorioOrigemDestino extends Relatorio {
sql.append(" CA.preciobase, ");
sql.append(" CO.origen_id, ");
sql.append(" CO.destino_id ");
- sql.append(" FROM boleto CA ");
- sql.append(" INNER JOIN parada ORI ON ORI.parada_id = CA.origen_id ");
- sql.append(" INNER JOIN parada DES ON DES.parada_id = CA.destino_id ");
- sql.append(" INNER JOIN corrida CO ON ( CO.corrida_id = CA.corrida_id AND CO.feccorrida = CA.feccorrida ) ");
+ sql.append(" FROM corrida CO ");
+ sql.append(" INNER JOIN parada ORI ON ORI.parada_id = CO.origen_id ");
+ sql.append(" INNER JOIN parada DES ON DES.parada_id = CO.destino_id ");
+ sql.append(" LEFT JOIN boleto CA ON (CO.corrida_id = CA.corrida_id ");
+ sql.append(" AND CO.feccorrida = CA.feccorrida ");
+ sql.append(" AND CA.activo = 1 ");
+ sql.append(" AND CA.motivocancelacion_id IS NULL ");
+ sql.append(" AND CA.CATEGORIA_ID <> ").append(CONSTANTE_GRATUIDADE_CRIANCA);
+ sql.append(" AND CA.preciobase IS NOT NULL ");
+ sql.append((bilhetesGratuitos ? " AND CA.PRECIOBASE >= 0 " : " AND CA.PRECIOBASE > 0 "));
+ sql.append(" ) ");
sql.append(" INNER JOIN empresa EM ON EM.empresa_id = CO.empresacorrida_id ");
sql.append(" INNER JOIN ruta RU ON RU.ruta_id = CO.ruta_id ");
- sql.append(" WHERE CA.activo = 1 AND RU.activo = 1 AND EM.activo = 1 AND ORI.activo = 1 AND DES.activo = 1 ");
+ sql.append(" WHERE RU.activo = 1 AND EM.activo = 1 AND ORI.activo = 1 AND DES.activo = 1 ");
sql.append(" AND CO.activo = 1 ");
sql.append((" AND CO.EMPRESACORRIDA_ID IN (") + empresaIds + ") ");
- sql.append(" AND CA.FECCORRIDA BETWEEN to_date('" + dataDe + "','dd/mm/yyyy HH24:mi:ss') AND to_date('" + dataAte + "','dd/mm/yyyy HH24:mi:ss') ");
- sql.append(" AND CA.motivocancelacion_id IS NULL ");
- sql.append(" AND CA.CATEGORIA_ID <> ").append(CONSTANTE_GRATUIDADE_CRIANCA);
- sql.append(" AND CA.preciobase IS NOT NULL ");
- sql.append((bilhetesGratuitos ? " AND CA.PRECIOBASE >= 0 " : " AND CA.PRECIOBASE > 0 "));
+ sql.append(" AND CO.FECCORRIDA BETWEEN to_date('" + dataDe + "','dd/mm/yyyy HH24:mi:ss') AND to_date('" + dataAte + "','dd/mm/yyyy HH24:mi:ss') ");
sql.append(" GROUP BY RU.ruta_id, ");
sql.append(" EM.nombempresa, ");
sql.append(" ORI.cveparada, ");
diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOrigemDestino.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOrigemDestino.jasper
index 58e3cab99..3a969c4f6 100644
Binary files a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOrigemDestino.jasper and b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOrigemDestino.jasper differ
diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOrigemDestino.jrxml b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOrigemDestino.jrxml
index 9c8452faa..29757977b 100644
--- a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOrigemDestino.jrxml
+++ b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOrigemDestino.jrxml
@@ -55,7 +55,7 @@
-
+ 0 ? new BigDecimal($F{ABSOLUTO_TOTAL_CORRIDA}.toString()) : new BigDecimal(1)), 2,2)]]>
@@ -67,7 +67,7 @@
-
+ 0 ? $F{EQUIVALENTE_TOTAL_CORRIDA} : new BigDecimal(1)), 4, 2)]]>
@@ -79,10 +79,10 @@
-
+ 0 ? new BigDecimal($F{ABSOLUTO_TOTAL_CORRIDA}.toString()) : new BigDecimal(1)), 4,2 )]]>
-
+ 0 ? new BigDecimal($F{ABSOLUTOS}.toString()) : new BigDecimal(1)), 2,2)]]>