diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioLinhasHorario.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioLinhasHorario.java index b185c86e8..0563edfb9 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioLinhasHorario.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioLinhasHorario.java @@ -453,6 +453,23 @@ public class RelatorioLinhasHorario extends Relatorio { sql.append(" ABSOL, "); sql.append(" CJ.KM_REAL AS KM_REAL "); sql.append(" FROM CORRIDA C "); + + sql.append(" INNER JOIN PARADA ORIGEM ON (C.ORIGEN_ID = ORIGEM.PARADA_ID ) "); + sql.append(" INNER JOIN PARADA DESTINO ON ( C.DESTINO_ID = DESTINO.PARADA_ID ) "); + sql.append(" INNER JOIN CIUDAD CO ON (CO.CIUDAD_ID = ORIGEM.CIUDAD_ID ) "); + sql.append(" INNER JOIN CIUDAD CD ON (CD.CIUDAD_ID = DESTINO.CIUDAD_ID ) "); + sql.append(" INNER JOIN RUTA R ON (C.RUTA_ID = R.RUTA_ID ) "); + sql.append(" LEFT JOIN GRUPO_RUTA GR ON (R.GRUPORUTA_ID = GR.GRUPORUTA_ID ) "); + sql.append(" LEFT JOIN ROL_OPERATIVO RO ON (C.ROLOPERATIVO_ID = RO.ROLOPERATIVO_ID ) "); + sql.append(" LEFT JOIN DIAGRAMA_AUTOBUS DA ON (DA.DIAGRAMAAUTOBUS_ID = RO.DIAGRAMAAUTOBUS_ID ) "); + sql.append(" LEFT JOIN CLASE_SERVICIO CS ON (CS.CLASESERVICIO_ID = C.CLASESERVICIO_ID ) "); + sql.append(" LEFT JOIN EVENTO_EXTRA EE ON (EE.CORRIDA_ID = C.CORRIDA_ID AND EE.FECCORRIDA = C.FECCORRIDA AND EE.TIPOEVENTOEXTRA_ID = 1 ) "); + sql.append(" INNER JOIN RUTA_COMBINACION RC ON (RC.RUTA_ID = C.RUTA_ID AND RC.ACTIVO=1) "); + sql.append(" INNER JOIN TRAMO TR ON (TR.TRAMO_ID = RC.TRAMO_ID AND TR.ORIGEN_ID = C.ORIGEN_ID AND TR.DESTINO_ID = C.DESTINO_ID) "); + sql.append(" INNER JOIN TARIFA TF ON ( TR.TRAMO_ID=TF.TRAMO_ID AND TF.CLASESERVICIO_ID = C.CLASESERVICIO_ID AND TF.DESTINO_ID = C.DESTINO_ID AND TF.ORIGEN_ID = C.ORIGEN_ID AND TF.MARCA_ID = C.MARCA_ID AND TF.RUTA_ID = C.RUTA_ID AND R.ORGAOCONCEDENTE_ID= TF.ORGAOCONCEDENTE_ID AND TF.ACTIVO=1 ) "); + sql.append(" INNER JOIN VIGENCIA_TARIFA VT ON (VT.VIGENCIATARIFA_ID = TF.VIGENCIATARIFA_ID AND C.FECCORRIDA BETWEEN VT.FECINICIOVIGENCIA AND VT.FECFINVIGENCIA ) "); + + sql.append(" INNER JOIN ("); sql.append(" SELECT "); sql.append(" C.CORRIDA_ID, "); @@ -463,12 +480,18 @@ public class RelatorioLinhasHorario extends Relatorio { sql.append(" C.ROLOPERATIVO_ID, "); sql.append(" TO_CHAR(C.FECHORSALIDA, 'HH24:MI') AS HORASALIDA, "); sql.append(" COUNT(CASE WHEN C.TIPOSERVICIO_ID = 1 THEN 1 ELSE NULL END) AS ORD, "); - sql.append(" COUNT(CASE WHEN C.TIPOSERVICIO_ID = 2 THEN 1 ELSE NULL END) AS EXTRA "); + sql.append(" COUNT(CASE WHEN C.TIPOSERVICIO_ID = 2 THEN 1 ELSE NULL END) AS EXTRA, "); + sql.append(" NVL(TF.PRECIO, 0) AS TARIFA "); sql.append(" FROM CORRIDA C "); sql.append(" INNER JOIN PARADA ORIGEM ON C.Origen_Id = ORIGEM.PARADA_ID "); sql.append(" INNER JOIN PARADA DESTINO ON C.DESTINO_ID = DESTINO.PARADA_ID "); sql.append(empresa == null ? "" : " INNER JOIN MARCA M ON (C.MARCA_ID = M.MARCA_ID AND M.EMPRESA_ID=" + empresa.getEmpresaId() + ")"); + sql.append(" INNER JOIN RUTA R ON (C.RUTA_ID = R.RUTA_ID ) "); + sql.append(" INNER JOIN RUTA_COMBINACION RC ON (RC.RUTA_ID = C.RUTA_ID AND RC.ACTIVO=1) "); + sql.append(" INNER JOIN TRAMO TR ON (TR.TRAMO_ID = RC.TRAMO_ID AND TR.ORIGEN_ID = C.ORIGEN_ID AND TR.DESTINO_ID = C.DESTINO_ID) "); + sql.append(" INNER JOIN TARIFA TF ON ( TR.TRAMO_ID=TF.TRAMO_ID AND TF.CLASESERVICIO_ID = C.CLASESERVICIO_ID AND TF.DESTINO_ID = C.DESTINO_ID AND TF.ORIGEN_ID = C.ORIGEN_ID AND TF.MARCA_ID = C.MARCA_ID AND TF.RUTA_ID = C.RUTA_ID AND R.ORGAOCONCEDENTE_ID= TF.ORGAOCONCEDENTE_ID AND TF.ACTIVO=1 ) "); + sql.append(" INNER JOIN VIGENCIA_TARIFA VT ON (VT.VIGENCIATARIFA_ID = TF.VIGENCIATARIFA_ID AND C.FECCORRIDA BETWEEN VT.FECINICIOVIGENCIA AND VT.FECFINVIGENCIA ) "); sql.append(" WHERE "); sql.append(" EXISTS (SELECT * FROM CAJA CA WHERE CA.CORRIDA_ID = C.CORRIDA_ID AND CA.FECCORRIDA = C.FECCORRIDA AND CA.MOTIVOCANCELACION_ID IS NULL) "); @@ -478,10 +501,12 @@ public class RelatorioLinhasHorario extends Relatorio { sql.append(" c.ruta_id, "); sql.append(" Destino.Cveparada, "); sql.append(" ORIGEM.CVEPARADA, "); - sql.append(" TO_CHAR(C.FECHORSALIDA, 'HH24:MI') "); - sql.append(" ) TB2 ON (TB2.CORRIDA_ID = C.CORRIDA_ID AND (TB2.CORRIDA2_ID=C.CORRIDA2_ID OR (TB2.CORRIDA2_ID IS NULL AND C.CORRIDA2_ID IS NULL)) and tb2.c_ruta_id = c.ruta_id ) "); + sql.append(" TO_CHAR(C.FECHORSALIDA, 'HH24:MI'), "); + sql.append(" NVL(TF.PRECIO, 0) "); + sql.append(" ) TB2 ON (TB2.CORRIDA_ID = C.CORRIDA_ID AND (TB2.CORRIDA2_ID=C.CORRIDA2_ID OR (TB2.CORRIDA2_ID IS NULL AND C.CORRIDA2_ID IS NULL)) and tb2.c_ruta_id = c.ruta_id "); sql.append(" AND TB2.ROLOPERATIVO_ID = C.ROLOPERATIVO_ID "); sql.append(" AND TB2.HORASALIDA = TO_CHAR(C.FECHORSALIDA, 'HH24:MI') "); + sql.append(" AND TB2.TARIFA=TF.PRECIO) "); sql.append(" INNER JOIN ("); sql.append(" SELECT "); sql.append(" C.CORRIDA_ID, "); @@ -490,7 +515,9 @@ public class RelatorioLinhasHorario extends Relatorio { sql.append(" C.DESTINO_ID, "); sql.append(" C.ORIGEN_ID, "); sql.append(" TO_CHAR(C.FECHORSALIDA, 'HH24:MI') AS HORASALIDA, "); - sql.append(" COUNT(B.BOLETO_ID) AS ABSOL, C.CORRIDA2_ID "); + sql.append(" COUNT(B.BOLETO_ID) AS ABSOL, C.CORRIDA2_ID, "); + sql.append(" NVL(TF.PRECIO, 0) AS TARIFA "); + sql.append(" FROM CORRIDA C "); sql.append(empresa == null ? "" : " INNER JOIN MARCA M ON (C.MARCA_ID = M.MARCA_ID AND M.EMPRESA_ID=" + empresa.getEmpresaId() + ")"); @@ -500,6 +527,13 @@ public class RelatorioLinhasHorario extends Relatorio { sql.append(" AND B.ACTIVO = 1 "); sql.append(" AND B.MOTIVOCANCELACION_ID IS NULL "); sql.append(" AND B.CATEGORIA_ID <> ").append(CONSTANTE_GRATUIDADE_CRIANCA).append(") "); + sql.append(" INNER JOIN RUTA R ON (C.RUTA_ID = R.RUTA_ID ) "); + sql.append(" INNER JOIN RUTA_COMBINACION RC ON (RC.RUTA_ID = C.RUTA_ID AND RC.ACTIVO=1) "); + sql.append(" INNER JOIN TRAMO TR ON (TR.TRAMO_ID = RC.TRAMO_ID AND TR.ORIGEN_ID = C.ORIGEN_ID AND TR.DESTINO_ID = C.DESTINO_ID) "); + sql.append(" INNER JOIN TARIFA TF ON ( TR.TRAMO_ID=TF.TRAMO_ID AND TF.CLASESERVICIO_ID = C.CLASESERVICIO_ID AND TF.DESTINO_ID = C.DESTINO_ID AND TF.ORIGEN_ID = C.ORIGEN_ID AND TF.MARCA_ID = C.MARCA_ID AND TF.RUTA_ID = C.RUTA_ID AND R.ORGAOCONCEDENTE_ID= TF.ORGAOCONCEDENTE_ID AND TF.ACTIVO=1 ) "); + sql.append(" INNER JOIN VIGENCIA_TARIFA VT ON (VT.VIGENCIATARIFA_ID = TF.VIGENCIATARIFA_ID AND C.FECCORRIDA BETWEEN VT.FECINICIOVIGENCIA AND VT.FECFINVIGENCIA ) "); + + sql.append(" WHERE C.ACTIVO = 1 AND C.FECCORRIDA BETWEEN :DATA_INICIO AND :DATA_FINAL "); if (lsNumServico.size() > 0) { @@ -513,13 +547,14 @@ public class RelatorioLinhasHorario extends Relatorio { sql.append(" ) "); } + sql.append(" GROUP BY C.CORRIDA_ID,C.CORRIDA2_ID, c.ruta_id, C.ROLOPERATIVO_ID, "); - sql.append(" C.DESTINO_ID, C.ORIGEN_ID, TO_CHAR(C.FECHORSALIDA, 'HH24:MI') "); - sql.append(" ) TB4 ON (TB4.CORRIDA_ID = C.CORRIDA_ID AND (TB4.CORRIDA2_ID=C.CORRIDA2_ID OR (TB4.CORRIDA2_ID IS NULL AND C.CORRIDA2_ID IS NULL)) and tb4.c_ruta_id = c.ruta_id) "); + sql.append(" C.DESTINO_ID, C.ORIGEN_ID, TO_CHAR(C.FECHORSALIDA, 'HH24:MI'),NVL(TF.PRECIO, 0) "); + sql.append(" ) TB4 ON (TB4.CORRIDA_ID = C.CORRIDA_ID AND (TB4.CORRIDA2_ID=C.CORRIDA2_ID OR (TB4.CORRIDA2_ID IS NULL AND C.CORRIDA2_ID IS NULL)) and tb4.c_ruta_id = c.ruta_id "); sql.append(" AND c.DESTINO_ID = TB4.DESTINO_ID "); sql.append(" AND c.ORIGEN_ID = TB4.ORIGEN_ID "); sql.append(" AND TB4.ROLOPERATIVO_ID = C.ROLOPERATIVO_ID "); - sql.append(" AND TB4.HORASALIDA = TO_CHAR(C.FECHORSALIDA, 'HH24:MI') "); + sql.append(" AND TB4.HORASALIDA = TO_CHAR(C.FECHORSALIDA, 'HH24:MI') AND TB4.TARIFA=TF.PRECIO) "); sql.append(" LEFT JOIN "); sql.append(" (SELECT CO.FECCORRIDA, "); @@ -538,12 +573,23 @@ public class RelatorioLinhasHorario extends Relatorio { sql.append(" NVL(BO.IMPORTETAXAEMBARQUE, 0) AS IMPORTETAXAEMBARQUE, "); sql.append(" NVL(BO.IMPORTEPEDAGIO, 0) AS IMPORTEPEDAGIO, "); sql.append(" NVL(BO.PRECIOPAGADO, 0) AS PRECIOPAGADO, "); - sql.append(" nvl(bo.preciobase, 0) AS PRECIOBASE "); + sql.append(" NVL(bo.preciobase, 0) AS PRECIOBASE, "); + sql.append(" NVL(TF.PRECIO,0) AS TARIFA "); sql.append(" FROM CORRIDA CO "); sql.append(empresa == null ? "" : " INNER JOIN MARCA M ON (CO.MARCA_ID = M.MARCA_ID AND M.EMPRESA_ID=" + empresa.getEmpresaId() + ")"); sql.append(" INNER JOIN BOLETO BO ON CO.CORRIDA_ID = BO.CORRIDA_ID AND CO.FECCORRIDA = BO.FECCORRIDA AND BO.ACTIVO = 1 "); 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 AND T.ORIGEN_ID = BO.ORIGEN_ID AND T.DESTINO_ID = BO.DESTINO_ID "); + + sql.append(" INNER JOIN RUTA R ON R.RUTA_ID = CO.RUTA_ID "); + sql.append(" INNER JOIN RUTA_COMBINACION RC2 ON (RC2.RUTA_ID = R.RUTA_ID AND RC2.ACTIVO=1) "); + sql.append(" INNER JOIN TRAMO TR ON (TR.TRAMO_ID = RC2.TRAMO_ID AND TR.ORIGEN_ID = CO.ORIGEN_ID AND TR.DESTINO_ID = CO.DESTINO_ID) "); + sql.append(" INNER JOIN TARIFA TF ON ( TR.TRAMO_ID=TF.TRAMO_ID AND TF.CLASESERVICIO_ID = CO.CLASESERVICIO_ID AND TF.DESTINO_ID = CO.DESTINO_ID AND TF.ORIGEN_ID = CO.ORIGEN_ID AND TF.MARCA_ID = CO.MARCA_ID AND TF.RUTA_ID = CO.RUTA_ID AND R.ORGAOCONCEDENTE_ID= TF.ORGAOCONCEDENTE_ID AND TF.ACTIVO=1 ) "); + sql.append(" INNER JOIN VIGENCIA_TARIFA VT ON (VT.VIGENCIATARIFA_ID = TF.VIGENCIATARIFA_ID AND CO.FECCORRIDA BETWEEN VT.FECINICIOVIGENCIA AND VT.FECFINVIGENCIA ) "); + + + + sql.append(" WHERE CO.ACTIVO = 1 "); sql.append(" AND RC.ACTIVO = 1"); sql.append(" AND T.ACTIVO = 1"); @@ -565,28 +611,12 @@ public class RelatorioLinhasHorario extends Relatorio { sql.append(" GROUP BY CO.FECCORRIDA, CO.CORRIDA_ID, CO.CORRIDA2_ID, CO.ROLOPERATIVO_ID, "); sql.append(" CO.RUTA_ID, CO.EMPRESACORRIDA_ID, BO.NUMKMVIAJE, BO.BOLETO_ID, T.CANTKMREAL, "); sql.append(" NVL(BO.IMPORTESEGURO, 0), NVL(BO.IMPORTETAXAEMBARQUE, 0), "); - sql.append(" NVL(BO.IMPORTEPEDAGIO, 0), NVL(BO.PRECIOPAGADO, 0), nvl(bo.preciobase, 0)) CJ "); + sql.append(" NVL(BO.IMPORTEPEDAGIO, 0), NVL(BO.PRECIOPAGADO, 0), nvl(bo.preciobase, 0),nvl(TF.PRECIO, 0)) CJ "); sql.append(" ON (CJ.CORRIDA_ID = C.CORRIDA_ID AND (CJ.CORRIDA2_ID=C.CORRIDA2_ID OR (CJ.CORRIDA2_ID IS NULL AND C.CORRIDA2_ID IS NULL)) AND CJ.FECCORRIDA = C.FECCORRIDA AND CJ.ROLOPERATIVO_ID = C.ROLOPERATIVO_ID "); - sql.append(" AND CJ.RUTA_ID = C.RUTA_ID AND CJ.EMPRESACORRIDA_ID = C.EMPRESACORRIDA_ID) "); - sql.append(" INNER JOIN PARADA ORIGEM ON (C.ORIGEN_ID = ORIGEM.PARADA_ID ) "); - sql.append(" INNER JOIN PARADA DESTINO ON ( C.DESTINO_ID = DESTINO.PARADA_ID ) "); - sql.append(" INNER JOIN CIUDAD CO ON (CO.CIUDAD_ID = ORIGEM.CIUDAD_ID ) "); - sql.append(" INNER JOIN CIUDAD CD ON (CD.CIUDAD_ID = DESTINO.CIUDAD_ID ) "); - sql.append(" INNER JOIN RUTA R ON (C.RUTA_ID = R.RUTA_ID ) "); - sql.append(" LEFT JOIN GRUPO_RUTA GR ON (R.GRUPORUTA_ID = GR.GRUPORUTA_ID ) "); - sql.append(" LEFT JOIN ROL_OPERATIVO RO ON (C.ROLOPERATIVO_ID = RO.ROLOPERATIVO_ID ) "); - sql.append(" LEFT JOIN DIAGRAMA_AUTOBUS DA ON (DA.DIAGRAMAAUTOBUS_ID = RO.DIAGRAMAAUTOBUS_ID ) "); - sql.append(" LEFT JOIN CLASE_SERVICIO CS ON (CS.CLASESERVICIO_ID = C.CLASESERVICIO_ID ) "); - sql.append(" LEFT JOIN EVENTO_EXTRA EE ON (EE.CORRIDA_ID = C.CORRIDA_ID AND EE.FECCORRIDA = C.FECCORRIDA AND EE.TIPOEVENTOEXTRA_ID = 1 ) "); - sql.append(" INNER JOIN RUTA_COMBINACION RC ON RC.RUTA_ID = C.RUTA_ID "); - sql.append(" INNER JOIN TRAMO TR ON TR.TRAMO_ID = RC.TRAMO_ID AND TR.ORIGEN_ID = C.ORIGEN_ID AND TR.DESTINO_ID = C.DESTINO_ID "); - sql.append(" LEFT JOIN TARIFA TF ON ( TR.TRAMO_ID=TF.TRAMO_ID AND TF.CLASESERVICIO_ID = C.CLASESERVICIO_ID AND TF.DESTINO_ID = C.DESTINO_ID AND TF.ORIGEN_ID = C.ORIGEN_ID AND TF.MARCA_ID = C.MARCA_ID AND TF.RUTA_ID = C.RUTA_ID AND R.ORGAOCONCEDENTE_ID= TF.ORGAOCONCEDENTE_ID AND TF.ACTIVO=1) "); - sql.append(" LEFT JOIN VIGENCIA_TARIFA VT ON (VT.VIGENCIATARIFA_ID = TF.VIGENCIATARIFA_ID ) "); - sql.append(" AND TR.ORIGEN_ID = ORIGEM.PARADA_ID "); - sql.append(" AND TR.DESTINO_ID = DESTINO.PARADA_ID "); + sql.append(" AND CJ.RUTA_ID = C.RUTA_ID AND CJ.EMPRESACORRIDA_ID = C.EMPRESACORRIDA_ID AND CJ.TARIFA=TF.PRECIO ) "); + sql.append(" WHERE C.FECCORRIDA BETWEEN :DATA_INICIO AND :DATA_FINAL "); - sql.append(" AND (TF.TARIFA_ID IS NULL OR (TF.TARIFA_ID IS NOT NULL AND C.FECCORRIDA BETWEEN VT.FECINICIOVIGENCIA AND VT.FECFINVIGENCIA )) "); - + if (lsNumServico.size() > 0) { for (Corrida corrida : lsNumServico) { @@ -624,7 +654,7 @@ public class RelatorioLinhasHorario extends Relatorio { sql.append("GROUP BY GRUPO_RUTA, HORA, SERVICO, SERVICO2, SENTIDO, LOT, CLA, TARIFA, ORIGEM, DESTINO, "); sql.append(" EXTENSAO, BAGAGENS, ORD, EXTRA, TIPO_LINHA, ISDOUBLEDECK, ABSOL "); sql.append("ORDER BY TIPO_LINHA, GRUPO_RUTA, SERVICO, SERVICO2, ORIGEM, DESTINO "); - + log.info(sql.toString()); return sql.toString(); }