fixes bug#AL-2671

master
Célio de Souza Ribeiro JR 2023-06-14 10:36:39 -03:00
parent 5752885f80
commit dceb5cabae
2 changed files with 284 additions and 191 deletions

View File

@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>br.com.rjconsultores</groupId> <groupId>br.com.rjconsultores</groupId>
<artifactId>ventaboletosadm</artifactId> <artifactId>ventaboletosadm</artifactId>
<version>1.7.11</version> <version>1.7.12</version>
<packaging>war</packaging> <packaging>war</packaging>
<properties> <properties>

View File

@ -438,176 +438,225 @@ public class RelatorioLinhasHorarioSimplificado extends Relatorio {
GrupoRuta grupoRuta, Boolean isSentidoIda, Boolean isSentidoVolta) { GrupoRuta grupoRuta, Boolean isSentidoIda, Boolean isSentidoVolta) {
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
sql.append(" SELECT "); sql.append("with tb2 as ( ");
sql.append(" GRUPO_RUTA, "); sql.append(" select ");
sql.append(" HORA, "); sql.append(" c.corrida_id, ");
sql.append(" DESCRUTA, ");
sql.append(" SERVICO, ");
sql.append(" SENTIDO , ");
sql.append(" LOT, ");
sql.append(" CLA, ");
sql.append(" ORIGEM, ");
sql.append(" DESTINO, ");
sql.append(" EXTENSAO, ");
sql.append(" COALESCE(SUM(EQUIVALENTE * EXTENSAO) ,0) AS EXTENSAO_TRECHO, ");
sql.append(" COALESCE(BAGAGENS, 0) AS BAGAGENS, ");
sql.append(" COALESCE(SUM(SEGURO), 0) AS SEGURO, ");
sql.append(" COALESCE(SUM(TX_EMBARQUE), 0) AS TX_EMBARQUE, ");
sql.append(" COALESCE(SUM(PEDAGIO), 0) AS PEDAGIO, ");
sql.append(" COALESCE(SUM(PASSAGENS), 0) AS PASSAGENS, ");
sql.append(" ORD, ");
sql.append(" EXTRA, ");
sql.append(" TIPO_LINHA, ");
sql.append(" ABSOL, ");
sql.append(" COALESCE(SUM(KM_REAL), 0) AS KM_REAL ");
sql.append(" FROM ");
sql.append(" (SELECT ");
sql.append(" R.RUTA_ID, ");
sql.append(" R.DESCRUTA AS DESCRUTA, ");
sql.append(" NVL(GR.DESCGRUPO, 'Não Definido') AS GRUPO_RUTA, ");
sql.append(" TO_CHAR(C.FECHORSALIDA, 'HH24:MI') AS HORA, ");
sql.append(" C.CORRIDA_ID AS SERVICO, ");
sql.append(" R.INDSENTIDOIDA AS SENTIDO, ");
sql.append(" DA.CANTASIENTOS AS LOT, ");
sql.append(" NVL(CS.DESCCLASE, '') AS CLA, ");
sql.append(" MAX(NVL(TF.PRECIOORIGINAL, 0)) AS TARIFA, ");
sql.append(" ORIGEM.CVEPARADA AS ORIGEM, ");
sql.append(" DESTINO.CVEPARADA AS DESTINO, ");
sql.append(" EXTENSAO AS EXTENSAO, ");
sql.append(" CJ.EQUIVALENTE AS EQUIVALENTE, ");
sql.append(" SUM(EE.IMPINGRESO) AS BAGAGENS, ");
sql.append(" CJ.IMPORTESEGURO AS SEGURO, ");
sql.append(" CJ.IMPORTETAXAEMBARQUE AS TX_EMBARQUE, ");
sql.append(" CJ.IMPORTEPEDAGIO AS PEDAGIO, ");
sql.append(" CJ.PRECIOPAGADO AS PASSAGENS, ");
sql.append(" CJ.BOLETO_ID, ");
sql.append(" TB2.ORD, ");
sql.append(" TB2.EXTRA, ");
sql.append(" CASE WHEN CO.ESTADO_ID <> CD.ESTADO_ID THEN 'INTERESTADUAL' ELSE 'INTERMUNICIPAL' END TIPO_LINHA, ");
sql.append(" ABSOL, ");
sql.append(" CJ.KM_REAL AS KM_REAL ");
sql.append(" FROM CORRIDA C ");
sql.append(" INNER JOIN (");
sql.append(" SELECT ");
sql.append(" C.CORRIDA_ID, ");
sql.append(" c.ruta_id as c_ruta_id, "); sql.append(" c.ruta_id as c_ruta_id, ");
sql.append(" Destino.Cveparada AS DESTINO, "); sql.append(" destino.cveparada as destino, ");
sql.append(" ORIGEM.CVEPARADA AS ORIGEM, "); sql.append(" origem.cveparada as origem, ");
sql.append(" C.ROLOPERATIVO_ID, "); sql.append(" c.roloperativo_id, ");
sql.append(" TO_CHAR(C.FECHORSALIDA, 'HH24:MI') AS HORASALIDA, "); 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 = 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(" FROM CORRIDA C "); sql.append(" from corrida c ");
sql.append(" INNER JOIN PARADA ORIGEM ON C.Origen_Id = ORIGEM.PARADA_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 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_ID) ");
sql.append(empresa == null ? "" : " INNER JOIN MARCA M ON (C.MARCA_ID = M.MARCA_ID AND M.EMPRESA_ID= :EMPRESA_ID)"); sql.append(" where ");
sql.append(" exists (select 1 from caja ca where ca.corrida_id = c.corrida_id ");
sql.append(" WHERE "); sql.append(" and ca.feccorrida = c.feccorrida ");
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) "); sql.append(" and ca.motivocancelacion_id is null) ");
sql.append(" AND C.FECCORRIDA BETWEEN TO_DATE(:DATA_INICIO, 'DD/MM/YYYY hh24:mi:ss') AND TO_DATE(:DATA_FINAL, 'DD/MM/YYYY hh24:mi:ss') "); sql.append(" and c.feccorrida between to_date(:DATA_INICIO, 'DD/MM/YYYY hh24:mi:ss') ");
sql.append(" GROUP BY C.CORRIDA_ID, "); sql.append(" and to_date(:DATA_FINAL, 'DD/MM/YYYY hh24:mi:ss') ");
sql.append(" C.ROLOPERATIVO_ID, "); sql.append(tipoServico == 0 ? "" : " and c.TIPOSERVICIO_ID = :TIPOSERVICIO_ID ");
sql.append(rutaIds.isEmpty() ? "" : " and c.RUTA_ID IN (" + rutaIds + ") ");
sql.append(corridaIds.isEmpty() ? "" : " and c.CORRIDA_ID IN (" + corridaIds + ") ");
sql.append(" group by ");
sql.append(" c.corrida_id, ");
sql.append(" c.roloperativo_id, ");
sql.append(" c.ruta_id, "); sql.append(" c.ruta_id, ");
sql.append(" Destino.Cveparada, "); sql.append(" destino.cveparada, ");
sql.append(" ORIGEM.CVEPARADA, "); sql.append(" origem.cveparada, ");
sql.append(" TO_CHAR(C.FECHORSALIDA, 'HH24:MI') "); sql.append(" to_char(c.fechorsalida, 'HH24:MI') ");
sql.append(" ) TB2 ON ((TB2.CORRIDA_ID = C.CORRIDA_ID and tb2.c_ruta_id = c.ruta_id ) "); sql.append(" ), ");
sql.append(" AND TB2.ROLOPERATIVO_ID = C.ROLOPERATIVO_ID "); sql.append("tb4 as ( ");
sql.append(" AND TB2.HORASALIDA = TO_CHAR(C.FECHORSALIDA, 'HH24:MI')) "); sql.append(" select ");
sql.append(" c.corrida_id, ");
sql.append(" INNER JOIN (");
sql.append(" SELECT ");
sql.append(" C.CORRIDA_ID, ");
sql.append(" c.ruta_id as c_ruta_id, "); sql.append(" c.ruta_id as c_ruta_id, ");
sql.append(" C.ROLOPERATIVO_ID, "); sql.append(" c.roloperativo_id, ");
sql.append(" C.DESTINO_ID, "); sql.append(" c.destino_id, ");
sql.append(" C.ORIGEN_ID, "); sql.append(" c.origen_id, ");
sql.append(" TO_CHAR(C.FECHORSALIDA, 'HH24:MI') AS HORASALIDA, "); sql.append(" to_char(c.fechorsalida, 'HH24:MI') as horasalida, ");
sql.append(" COUNT(B.BOLETO_ID) AS ABSOL "); sql.append(" count(b.boleto_id) as absol ");
sql.append(" FROM CORRIDA C "); 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_ID)");
sql.append(empresa == null ? "" : " INNER JOIN MARCA M ON (C.MARCA_ID = M.MARCA_ID AND M.EMPRESA_ID= :EMPRESA_ID)"); sql.append(" left join boleto b on ( b.corrida_id = c.corrida_id ");
sql.append(" and b.feccorrida = c.feccorrida ");
sql.append(" LEFT JOIN BOLETO B ON (B.CORRIDA_ID = C.CORRIDA_ID AND B.FECCORRIDA = C.FECCORRIDA AND B.ACTIVO = 1 AND B.MOTIVOCANCELACION_ID IS NULL "); sql.append(" and b.activo = 1 ");
sql.append(" AND B.CATEGORIA_ID <> :CRIANCA_ID ) "); sql.append(" and b.motivocancelacion_id is null ");
sql.append(" WHERE C.ACTIVO NOT IN (0,2) "); sql.append(" and b.categoria_id <> :CRIANCA_ID ) ");
sql.append(" AND C.FECCORRIDA BETWEEN TO_DATE(:DATA_INICIO, 'DD/MM/YYYY hh24:mi:ss') AND TO_DATE(:DATA_FINAL, 'DD/MM/YYYY hh24:mi:ss') "); sql.append(" where ");
sql.append(" c.activo not in ( 0, 2 ) ");
sql.append(corridaIds.isEmpty() ? "" : " AND B.CORRIDA_ID IN ("+corridaIds+") "); sql.append(" and c.feccorrida between to_date(:DATA_INICIO, 'DD/MM/YYYY hh24:mi:ss') ");
sql.append(" and to_date(:DATA_FINAL, 'DD/MM/YYYY hh24:mi:ss') ");
sql.append(" GROUP BY C.CORRIDA_ID, c.ruta_id, C.ROLOPERATIVO_ID, C.DESTINO_ID, C.ORIGEN_ID, TO_CHAR(C.FECHORSALIDA, 'HH24:MI') "); sql.append(corridaIds.isEmpty() ? "" : " AND b.CORRIDA_ID IN (" + corridaIds + ") ");
sql.append(" ) TB4 ON ((TB4.CORRIDA_ID = C.CORRIDA_ID and tb4.c_ruta_id = c.ruta_id) "); sql.append(" group by ");
sql.append(" AND c.DESTINO_ID = TB4.DESTINO_ID "); sql.append(" c.corrida_id, ");
sql.append(" AND c.ORIGEN_ID = TB4.ORIGEN_ID "); sql.append(" c.ruta_id, ");
sql.append(" AND TB4.ROLOPERATIVO_ID = C.ROLOPERATIVO_ID "); sql.append(" c.roloperativo_id, ");
sql.append(" AND TB4.HORASALIDA = TO_CHAR(C.FECHORSALIDA, 'HH24:MI')) "); sql.append(" c.destino_id, ");
sql.append(" c.origen_id, ");
sql.append("LEFT JOIN "); sql.append(" to_char(c.fechorsalida, 'HH24:MI') ");
sql.append(" (SELECT CO.FECCORRIDA, "); sql.append(" ), ");
sql.append(" CO.CORRIDA_ID, "); sql.append(" cj as ( ");
sql.append(" CO.ROLOPERATIVO_ID, "); sql.append(" select ");
sql.append(" CO.RUTA_ID, "); sql.append(" co.feccorrida, ");
sql.append(" CO.EMPRESACORRIDA_ID, "); sql.append(" co.corrida_id, ");
sql.append(" BO.BOLETO_ID, "); sql.append(" co.roloperativo_id, ");
sql.append(" BO.NUMKMVIAJE * COUNT(1) AS KM_REAL, "); sql.append(" co.ruta_id, ");
sql.append(" CASE "); sql.append(" co.empresacorrida_id, ");
sql.append(" WHEN T.CANTKMREAL<>0 AND BO.NUMKMVIAJE<>0 "); sql.append(" bo.boleto_id, ");
sql.append(" THEN ROUND(BO.NUMKMVIAJE * COUNT(1) / T.CANTKMREAL, 3) "); sql.append(" bo.numkmviaje * count(1) as km_real, ");
sql.append(" ELSE 0 "); sql.append(" case when t.cantkmreal <> 0 and bo.numkmviaje <> 0 then ");
sql.append(" END AS EQUIVALENTE, "); sql.append(" round(bo.numkmviaje * count(1) / t.cantkmreal, 3) ");
sql.append(" NVL(BO.IMPORTESEGURO, 0) AS IMPORTESEGURO, "); sql.append(" else 0 end as equivalente, ");
sql.append(" NVL(BO.IMPORTETAXAEMBARQUE, 0) AS IMPORTETAXAEMBARQUE, "); sql.append(" nvl(bo.importeseguro, 0) as importeseguro, ");
sql.append(" NVL(BO.IMPORTEPEDAGIO, 0) AS IMPORTEPEDAGIO, "); sql.append(" nvl(bo.importetaxaembarque, 0) as importetaxaembarque, ");
sql.append(" NVL(BO.PRECIOPAGADO, 0) AS PRECIOPAGADO "); sql.append(" nvl(bo.importepedagio, 0) as importepedagio, ");
sql.append(" FROM CORRIDA CO "); sql.append(" nvl(bo.preciopagado, 0) as preciopagado ");
sql.append(empresa == null ? "" : " INNER JOIN MARCA M ON (CO.MARCA_ID = M.MARCA_ID AND M.EMPRESA_ID= :EMPRESA_ID)"); sql.append(" from corrida co ");
sql.append(" INNER JOIN BOLETO BO ON CO.CORRIDA_ID = BO.CORRIDA_ID AND CO.FECCORRIDA = BO.FECCORRIDA AND BO.ACTIVO = 1 "); sql.append(empresa == null ? "" : " inner join marca m on (co.marca_id = m.marca_id and m.empresa_id = :EMPRESA_ID) ");
sql.append(" INNER JOIN RUTA_COMBINACION RC ON RC.RUTA_ID = CO.RUTA_ID "); sql.append(" inner join boleto bo on co.corrida_id = bo.corrida_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(" and co.feccorrida = bo.feccorrida ");
sql.append(" WHERE CO.ACTIVO NOT IN (0,2) "); sql.append(" and bo.activo = 1 ");
sql.append(" AND RC.ACTIVO = 1"); sql.append(" inner join ruta_combinacion rc on rc.ruta_id = co.ruta_id ");
sql.append(" AND T.ACTIVO = 1"); sql.append(" inner join tramo t on rc.tramo_id = t.tramo_id ");
sql.append(" AND BO.INDSTATUSBOLETO != 'S' AND BO.MOTIVOCANCELACION_ID IS NULL "); sql.append(" and t.origen_id = bo.origen_id ");
sql.append(" AND BO.CATEGORIA_ID <> :CRIANCA_ID"); sql.append(" and t.destino_id = bo.destino_id ");
sql.append(" AND BO.FECCORRIDA BETWEEN TO_DATE(:DATA_INICIO, 'DD/MM/YYYY hh24:mi:ss') AND TO_DATE(:DATA_FINAL, 'DD/MM/YYYY hh24:mi:ss') "); sql.append(" where ");
sql.append(" co.activo not in ( 0, 2 ) ");
sql.append(corridaIds.isEmpty() ? "" : " AND BO.CORRIDA_ID IN ("+corridaIds+") "); sql.append(corridaIds.isEmpty() ? "" : " AND bo.CORRIDA_ID IN (" + corridaIds + ") ");
sql.append(" and rc.activo = 1 ");
sql.append(" GROUP BY CO.FECCORRIDA, CO.CORRIDA_ID, CO.ROLOPERATIVO_ID, CO.RUTA_ID, CO.EMPRESACORRIDA_ID, BO.NUMKMVIAJE, BO.BOLETO_ID, T.CANTKMREAL, "); sql.append(" and t.activo = 1 ");
sql.append(" NVL(BO.IMPORTESEGURO, 0), NVL(BO.IMPORTETAXAEMBARQUE, 0), NVL(BO.IMPORTEPEDAGIO, 0), NVL(BO.PRECIOPAGADO, 0) "); sql.append(" and bo.indstatusboleto != 'S' ");
sql.append(" ) CJ ON (CJ.CORRIDA_ID = C.CORRIDA_ID AND CJ.FECCORRIDA = C.FECCORRIDA AND CJ.ROLOPERATIVO_ID = C.ROLOPERATIVO_ID "); sql.append(" and bo.motivocancelacion_id is null ");
sql.append(" AND CJ.RUTA_ID = C.RUTA_ID AND CJ.EMPRESACORRIDA_ID = C.EMPRESACORRIDA_ID) "); sql.append(" and bo.categoria_id <> :CRIANCA_ID ");
sql.append("INNER JOIN PARADA ORIGEM ON (C.ORIGEN_ID = ORIGEM.PARADA_ID ) "); sql.append(" and bo.feccorrida between to_date(:DATA_INICIO, 'DD/MM/YYYY hh24:mi:ss') ");
sql.append("INNER JOIN PARADA DESTINO ON ( C.DESTINO_ID = DESTINO.PARADA_ID ) "); sql.append(" and to_date(:DATA_FINAL, 'DD/MM/YYYY hh24:mi:ss') ");
sql.append("INNER JOIN CIUDAD CO ON (CO.CIUDAD_ID = ORIGEM.CIUDAD_ID ) "); sql.append(" group by ");
sql.append("INNER JOIN CIUDAD CD ON (CD.CIUDAD_ID = DESTINO.CIUDAD_ID ) "); sql.append(" co.feccorrida, ");
sql.append("INNER JOIN RUTA R ON (C.RUTA_ID = R.RUTA_ID ) "); sql.append(" co.corrida_id, ");
sql.append("LEFT JOIN GRUPO_RUTA GR ON (R.GRUPORUTA_ID = GR.GRUPORUTA_ID ) "); sql.append(" co.roloperativo_id, ");
sql.append("LEFT JOIN ROL_OPERATIVO RO ON (C.ROLOPERATIVO_ID = RO.ROLOPERATIVO_ID ) "); sql.append(" co.ruta_id, ");
sql.append("LEFT JOIN DIAGRAMA_AUTOBUS DA ON (DA.DIAGRAMAAUTOBUS_ID = RO.DIAGRAMAAUTOBUS_ID ) "); sql.append(" co.empresacorrida_id, ");
sql.append("LEFT JOIN CLASE_SERVICIO CS ON (CS.CLASESERVICIO_ID = C.CLASESERVICIO_ID ) "); sql.append(" bo.numkmviaje, ");
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(" bo.boleto_id, ");
sql.append("LEFT JOIN TARIFA TF ON (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) "); sql.append(" t.cantkmreal, ");
sql.append("LEFT JOIN VIGENCIA_TARIFA VTF ON (TF.VIGENCIATARIFA_ID = VTF.VIGENCIATARIFA_ID ) "); sql.append(" nvl(bo.importeseguro, 0), ");
sql.append("INNER JOIN "); sql.append(" nvl(bo.importetaxaembarque, 0), ");
sql.append("( "); sql.append(" nvl(bo.importepedagio, 0), ");
sql.append("SELECT RC.RUTA_ID, T.ORIGEN_ID, T.DESTINO_ID, NVL(T.CANTKMREAL,0) AS EXTENSAO "); sql.append(" nvl(bo.preciopagado, 0) ");
sql.append("FROM RUTA_COMBINACION RC "); sql.append(" ), ");
sql.append("INNER JOIN TRAMO T ON RC.TRAMO_ID = T.TRAMO_ID "); sql.append(" tb5 as ( ");
sql.append("WHERE RC.ACTIVO = 1 "); sql.append(" select ");
sql.append(") TB5 ON (TB5.RUTA_ID = C.RUTA_ID "); sql.append(" rc.ruta_id, ");
sql.append("AND TB5.ORIGEN_ID = ORIGEM.PARADA_ID "); sql.append(" t.origen_id, ");
sql.append("AND TB5.DESTINO_ID = DESTINO.PARADA_ID) "); sql.append(" t.destino_id, ");
sql.append(" WHERE C.FECCORRIDA BETWEEN TO_DATE(:DATA_INICIO, 'DD/MM/YYYY hh24:mi:ss') AND TO_DATE(:DATA_FINAL, 'DD/MM/YYYY hh24:mi:ss') "); sql.append(" nvl(t.cantkmreal, 0) as extensao ");
sql.append(" AND (TF.TARIFA_ID IS NULL OR (TF.TARIFA_ID IS NOT NULL AND C.FECCORRIDA BETWEEN VTF.FECINICIOVIGENCIA AND VTF.FECFINVIGENCIA )) "); sql.append(" from ruta_combinacion rc ");
sql.append(" "); sql.append(" inner join tramo t on rc.tramo_id = t.tramo_id ");
sql.append(" where ");
sql.append(corridaIds.isEmpty() ? "" : " AND C.CORRIDA_ID IN ("+corridaIds+") "); sql.append(" rc.activo = 1 ");
sql.append(grupoRuta == null ? "" : " AND R.GRUPORUTA_ID IN (:GRUPORUTA_ID) "); sql.append(" ) ");
sql.append(rutaIds.isEmpty() ? "" : " AND R.RUTA_ID IN ("+rutaIds+") "); sql.append("select ");
sql.append(tipoServico == 0 ? "" : " AND C.TIPOSERVICIO_ID = :TIPOSERVICIO_ID" ); sql.append(" grupo_ruta, ");
sql.append(" hora, ");
sql.append(" descruta, ");
sql.append(" servico, ");
sql.append(" sentido, ");
sql.append(" lot, ");
sql.append(" cla, ");
sql.append(" origem, ");
sql.append(" destino, ");
sql.append(" extensao, ");
sql.append(" coalesce(sum(equivalente * extensao), 0) as extensao_trecho, ");
sql.append(" coalesce(bagagens, 0) as bagagens, ");
sql.append(" coalesce(sum(seguro), 0) as seguro, ");
sql.append(" coalesce(sum(tx_embarque), 0) as tx_embarque, ");
sql.append(" coalesce(sum(pedagio), 0) as pedagio, ");
sql.append(" coalesce(sum(passagens), 0) as passagens, ");
sql.append(" ord, ");
sql.append(" extra, ");
sql.append(" tipo_linha, ");
sql.append(" absol, ");
sql.append(" coalesce(sum(km_real), 0) as km_real ");
sql.append("from ");
sql.append(" ( ");
sql.append(" select ");
sql.append(" r.ruta_id, ");
sql.append(" r.descruta as descruta, ");
sql.append(" nvl(gr.descgrupo, 'Não Definido') as grupo_ruta, ");
sql.append(" to_char(c.fechorsalida, 'HH24:MI') as hora, ");
sql.append(" c.corrida_id as servico, ");
sql.append(" r.indsentidoida as sentido, ");
sql.append(" da.cantasientos as lot, ");
sql.append(" nvl(cs.descclase, '') as cla, ");
sql.append(" max(nvl(tf.preciooriginal, 0)) as tarifa, ");
sql.append(" origem.cveparada as origem, ");
sql.append(" destino.cveparada as destino, ");
sql.append(" extensao as extensao, ");
sql.append(" cj.equivalente as equivalente, ");
sql.append(" sum(ee.impingreso) as bagagens, ");
sql.append(" cj.importeseguro as seguro, ");
sql.append(" cj.importetaxaembarque as tx_embarque, ");
sql.append(" cj.importepedagio as pedagio, ");
sql.append(" cj.preciopagado as passagens, ");
sql.append(" cj.boleto_id, ");
sql.append(" tb2.ord, ");
sql.append(" tb2.extra, ");
sql.append(" case when co.estado_id <> cd.estado_id then ");
sql.append(" 'INTERESTADUAL' else 'INTERMUNICIPAL' end as tipo_linha, ");
sql.append(" absol, ");
sql.append(" cj.km_real as km_real ");
sql.append(" from corrida c ");
sql.append(" inner join tb2 on ( ( tb2.corrida_id = c.corrida_id ");
sql.append(" 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(" inner join tb4 on ( ( tb4.corrida_id = c.corrida_id ");
sql.append(" 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(" left join cj on ( cj.corrida_id = c.corrida_id ");
sql.append(" and cj.feccorrida = c.feccorrida ");
sql.append(" and cj.roloperativo_id = c.roloperativo_id ");
sql.append(" and cj.ruta_id = c.ruta_id ");
sql.append(" 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 ");
sql.append(" and ee.feccorrida = c.feccorrida ");
sql.append(" and ee.tipoeventoextra_id = 1 ) ");
sql.append(" left join tarifa tf on ( tf.claseservicio_id = c.claseservicio_id ");
sql.append(" and tf.destino_id = c.destino_id ");
sql.append(" and tf.origen_id = c.origen_id ");
sql.append(" and tf.marca_id = c.marca_id ");
sql.append(" and tf.ruta_id = c.ruta_id ");
sql.append(" and r.orgaoconcedente_id = tf.orgaoconcedente_id ) ");
sql.append(" left join vigencia_tarifa vtf on ( tf.vigenciatarifa_id = vtf.vigenciatarifa_id ) ");
sql.append(" inner join tb5 on ( tb5.ruta_id = c.ruta_id ");
sql.append(" and tb5.origen_id = origem.parada_id ");
sql.append(" and tb5.destino_id = destino.parada_id ) ");
sql.append(" where ");
sql.append(" c.feccorrida between to_date(:DATA_INICIO, 'DD/MM/YYYY hh24:mi:ss') ");
sql.append(" and to_date(:DATA_FINAL, 'DD/MM/YYYY hh24:mi:ss') ");
sql.append(" and ( tf.tarifa_id is null ");
sql.append(" or ( tf.tarifa_id is not null ");
sql.append(" and c.feccorrida between vtf.feciniciovigencia and vtf.fecfinvigencia ) ) ");
sql.append(" and c.activo <> 0 ");
sql.append(corridaIds.isEmpty() ? "" : " AND c.CORRIDA_ID IN (" + corridaIds + ") ");
sql.append(grupoRuta == null ? "" : " AND r.GRUPORUTA_ID IN ( :GRUPORUTA_ID ) ");
sql.append(rutaIds.isEmpty() ? "" : " AND r.RUTA_ID IN (" + rutaIds + ") ");
sql.append(tipoServico == 0 ? "" : " AND c.TIPOSERVICIO_ID = :TIPOSERVICIO_ID ");
if(Boolean.TRUE.equals(isSentidoIda)) { if(Boolean.TRUE.equals(isSentidoIda)) {
sql.append(" AND R.INDSENTIDOIDA =1 "); sql.append(" AND R.INDSENTIDOIDA =1 ");
} }
@ -615,19 +664,63 @@ public class RelatorioLinhasHorarioSimplificado extends Relatorio {
if(Boolean.TRUE.equals(isSentidoVolta)) { if(Boolean.TRUE.equals(isSentidoVolta)) {
sql.append(" AND R.INDSENTIDOIDA = 0 "); sql.append(" AND R.INDSENTIDOIDA = 0 ");
} }
sql.append(" and origem.activo = 1 ");
sql.append(" AND C.ACTIVO <> 0 AND ORIGEM.ACTIVO = 1 AND DESTINO.ACTIVO = 1 AND TB2.ORIGEM = ORIGEM.CVEPARADA AND TB2.DESTINO = DESTINO.CVEPARADA "); sql.append(" and destino.activo = 1 ");
sql.append("AND R.ACTIVO = 1 AND RO.ACTIVO = 1 AND DA.ACTIVO = 1 AND CS.ACTIVO = 1 AND (cj.boleto_id is not null ) "); sql.append(" and tb2.origem = origem.cveparada ");
sql.append("GROUP BY R.RUTA_ID, R.DESCRUTA, NVL(GR.DESCGRUPO, 'Não Definido'), TO_CHAR(C.FECHORSALIDA, 'HH24:MI'),"); sql.append(" and tb2.destino = destino.cveparada ");
sql.append(" C.CORRIDA_ID, R.INDSENTIDOIDA, "); sql.append(" and r.activo = 1 ");
sql.append(" DA.CANTASIENTOS, CS.DESCCLASE, TB5.EXTENSAO, TB2.ORD, TB2.EXTRA, ABSOL, "); sql.append(" and ro.activo = 1 ");
sql.append(" CO.ESTADO_ID, CD.ESTADO_ID, ORIGEM.CVEPARADA, DESTINO.CVEPARADA, CJ.PRECIOPAGADO, "); sql.append(" and da.activo = 1 ");
sql.append(" CJ.IMPORTESEGURO, CJ.IMPORTETAXAEMBARQUE, CJ.IMPORTEPEDAGIO, "); sql.append(" and cs.activo = 1 ");
sql.append(" CJ.EQUIVALENTE, CJ.KM_REAL , CJ.BOLETO_ID ) "); sql.append(" and ( cj.boleto_id is not null ) ");
sql.append("GROUP BY GRUPO_RUTA, HORA, "); sql.append(" group by ");
sql.append(" DESCRUTA, SERVICO, SENTIDO, LOT, CLA, ORIGEM, DESTINO, "); sql.append(" r.ruta_id, ");
sql.append(" EXTENSAO, BAGAGENS, ORD, EXTRA, TIPO_LINHA, ABSOL "); sql.append(" r.descruta, ");
sql.append("ORDER BY TIPO_LINHA, GRUPO_RUTA, DESCRUTA, SERVICO, ORIGEM, DESTINO "); sql.append(" nvl(gr.descgrupo, 'Não Definido'), ");
sql.append(" to_char(c.fechorsalida, 'HH24:MI'), ");
sql.append(" c.corrida_id, ");
sql.append(" r.indsentidoida, ");
sql.append(" da.cantasientos, ");
sql.append(" cs.descclase, ");
sql.append(" tb5.extensao, ");
sql.append(" tb2.ord, ");
sql.append(" tb2.extra, ");
sql.append(" absol, ");
sql.append(" co.estado_id, ");
sql.append(" cd.estado_id, ");
sql.append(" origem.cveparada, ");
sql.append(" destino.cveparada, ");
sql.append(" cj.preciopagado, ");
sql.append(" cj.importeseguro, ");
sql.append(" cj.importetaxaembarque, ");
sql.append(" cj.importepedagio, ");
sql.append(" cj.equivalente, ");
sql.append(" cj.km_real, ");
sql.append(" cj.boleto_id ");
sql.append(" ) ");
sql.append("group by ");
sql.append(" grupo_ruta, ");
sql.append(" hora, ");
sql.append(" descruta, ");
sql.append(" servico, ");
sql.append(" sentido, ");
sql.append(" lot, ");
sql.append(" cla, ");
sql.append(" origem, ");
sql.append(" destino, ");
sql.append(" extensao, ");
sql.append(" bagagens, ");
sql.append(" ord, ");
sql.append(" extra, ");
sql.append(" tipo_linha, ");
sql.append(" absol ");
sql.append("order by ");
sql.append(" tipo_linha, ");
sql.append(" grupo_ruta, ");
sql.append(" descruta, ");
sql.append(" servico, ");
sql.append(" origem, ");
sql.append(" destino ");
return sql.toString(); return sql.toString();
} }