diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioResumoLinhasAnaliticoSimplificadoSumarizado.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioResumoLinhasAnaliticoSimplificadoSumarizado.java index f7aa9126c..a09f1fc42 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioResumoLinhasAnaliticoSimplificadoSumarizado.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioResumoLinhasAnaliticoSimplificadoSumarizado.java @@ -3,12 +3,13 @@ */ package com.rjconsultores.ventaboletos.relatorios.impl; -import java.math.BigDecimal; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.Date; import java.util.List; import java.util.Map; @@ -85,6 +86,12 @@ public class RelatorioResumoLinhasAnaliticoSimplificadoSumarizado extends Relato } } + Collections.sort(lsDadosRelatorio, new Comparator() { + @Override + public int compare(RelatorioResumoLinhasBean rel1, RelatorioResumoLinhasBean rel2) { + return rel1.getDESCRUTA().compareTo(rel2.getDESCRUTA()); + } + }); if (lsDadosRelatorio.size() > 0) { setLsDadosRelatorio(lsDadosRelatorio); }else { @@ -110,6 +117,7 @@ public class RelatorioResumoLinhasAnaliticoSimplificadoSumarizado extends Relato /** * Obtém SQL, necessário ordenar por prefixo. + * Obs.: Não deve será alterado ordenação pois impactará na lógica de agrupamento por ida/volta * * @param rutaId * @param grupoRutaId @@ -117,235 +125,244 @@ public class RelatorioResumoLinhasAnaliticoSimplificadoSumarizado extends Relato */ private String getSql(Integer rutaId, Integer grupoRutaId) { StringBuilder sqlSb = new StringBuilder(); - sqlSb.append(" SELECT SUB.*, "); + sqlSb.append(" SELECT SUB.*, "); sqlSb.append(" (NVL(SUB.PASSAGEIROS,0) / DECODE(NVL(SUB.VIAGENS_TOTAL,0), 0, 1, NVL(SUB.VIAGENS_TOTAL,0))) AS PASSAGEIROS_MPA, "); sqlSb.append(" ( ROUND(NVL(SUB.PASSAGEIROS_EQUIVALENTE,0), 2) / DECODE(NVL(SUB.VIAGENS_TOTAL,0), 0, 1, NVL(SUB.VIAGENS_TOTAL,0))) AS PASSAGEIROS_MPE, "); sqlSb.append(" (NVL(SUB.RECEITA_TOTAL,0) / DECODE(NVL(SUB.KM_RODADO,0), 0, 1, NVL(SUB.KM_RODADO,0))) RECEITA_KM, "); sqlSb.append(" (NVL(SUB.RECEITA_TOTAL,0) / DECODE(NVL(SUB.VIAGENS_TOTAL,0), 0, 1, NVL(SUB.VIAGENS_TOTAL,0))) AS RECEITA_VIAGEM, "); - sqlSb.append(" (ROUND(NVL(SUB.PASSAGEIROS_EQUIVALENTE,0), 2) * NVL(SUB.EXTENSAO_KM,0)) AS PAX_KM, "); - sqlSb.append(" (NVL(SUB.ASSENTOS,0) * NVL(SUB.KM_RODADO,0)) AS PAX_OFERTADO "); - sqlSb.append(" FROM "); - sqlSb.append(" (SELECT TAB.INDSENTIDOIDA, "); - sqlSb.append(" TAB.RUTA_ID, "); - sqlSb.append(" TAB.NUMRUTA, "); - sqlSb.append(" TAB.PREFIXO, "); - sqlSb.append(" TAB.DESCRUTA, "); - sqlSb.append(" TAB.INTERESTADUAL, "); - sqlSb.append(" TAB.GRUPO_LINHA, "); - sqlSb.append(" TAB.EXTENSAO_KM, "); - sqlSb.append(" TAB.CVE_CLASE_SERVICIO, "); - sqlSb.append(" SUM(NVL(TAB.RECEITA_SEGURO,0)) AS RECEITA_SEGURO, "); - sqlSb.append(" SUM(NVL(TAB.RECEITA_BAGAGEM,0)) AS RECEITA_BAGAGEM, "); - sqlSb.append(" SUM(NVL(TAB.RECEITA_SEGURO_OUTROS,0)) AS RECEITA_SEGURO_OUTROS, "); - sqlSb.append(" SUM(NVL(TAB.RECEITA_TARIFA,0)) AS RECEITA_TARIFA, "); - sqlSb.append(" SUM(NVL(TAB.RECEITA_PEDAGIO,0)) AS RECEITA_PEDAGIO, "); - sqlSb.append(" SUM(NVL(TAB.RECEITA_EMBARQUE,0)) AS RECEITA_EMBARQUE, "); - sqlSb.append(" SUM(NVL(TAB.PASSAGEIROS,0)) AS PASSAGEIROS, "); - sqlSb.append(" SUM(NVL(TAB.VIAGENS_EXTRA,0)) AS VIAGENS_EXTRA, "); - sqlSb.append(" SUM(NVL(TAB.VIAGENS,0)) AS VIAGENS, "); - sqlSb.append(" SUM(NVL(TAB.RECEITA_TOTAL,0)) AS RECEITA_TOTAL, "); - sqlSb.append(" SUM(NVL(TAB.VIAGENS_TOTAL,0)) AS VIAGENS_TOTAL, "); - sqlSb.append(" SUM(NVL(TAB.KM_RODADO,0)) AS KM_RODADO, "); - sqlSb.append(" SUM(NVL(TAB.PASSAGEIROS_EQUIVALENTE,0)) AS PASSAGEIROS_EQUIVALENTE, "); - sqlSb.append(" TAB.ASSENTOS AS ASSENTOS "); - sqlSb.append(" FROM "); - sqlSb.append(" (SELECT TAB1.*, "); - sqlSb.append(" (TAB1.RECEITA_TARIFA + RECEITA_SEGURO + RECEITA_EMBARQUE + RECEITA_PEDAGIO) RECEITA_TOTAL, "); - sqlSb.append(" (NVL(TAB1.VIAGENS,0) + NVL(TAB1.VIAGENS_EXTRA,0)) VIAGENS_TOTAL, "); - sqlSb.append(" ((NVL(TAB1.VIAGENS,0) + NVL(TAB1.VIAGENS_EXTRA,0)) * NVL(TAB1.EXTENSAO_KM,0)) KM_RODADO, "); - sqlSb.append(" (SELECT SUM(NVL(PE.EQUIVALENTE,0)) "); - sqlSb.append(" FROM "); - sqlSb.append(" (SELECT CO.FECCORRIDA, "); - sqlSb.append(" CO.RUTA_ID, "); - sqlSb.append(" BO.PRECIOBASE, "); - sqlSb.append(" ROUND((BO.NUMKMVIAJE * COUNT(1) / "); - sqlSb.append(" (SELECT SUM(NVL(TR.CANTKMREAL,0)) "); - sqlSb.append(" FROM RUTA_COMBINACION RS, "); - sqlSb.append(" TRAMO TR "); - sqlSb.append(" WHERE RS.RUTA_ID = CO.RUTA_ID "); - sqlSb.append(" AND RS.TRAMO_ID = TR.TRAMO_ID "); - sqlSb.append(" )), 2) EQUIVALENTE "); - sqlSb.append(" FROM CORRIDA CO, "); - sqlSb.append(" BOLETO BO "); - sqlSb.append(" WHERE CO.CORRIDA_ID = BO.CORRIDA_ID "); - sqlSb.append(" AND CO.FECCORRIDA = BO.FECCORRIDA "); - sqlSb.append(" AND BO.ACTIVO = 1 "); - sqlSb.append(" AND (BO.MOTIVOCANCELACION_ID IS NULL "); - sqlSb.append(" OR BO.MOTIVOCANCELACION_ID = 0) "); - sqlSb.append(" GROUP BY CO.FECCORRIDA, "); - sqlSb.append(" CO.RUTA_ID, "); - sqlSb.append(" BO.PRECIOBASE, "); - sqlSb.append(" BO.NUMKMVIAJE "); - sqlSb.append(" ) PE "); - sqlSb.append(" WHERE PE.FECCORRIDA = TAB1.FECCORRIDA "); - sqlSb.append(" AND PE.RUTA_ID = TAB1.RUTA_ID "); - sqlSb.append(" ) PASSAGEIROS_EQUIVALENTE, "); - sqlSb.append(" (SELECT SUM(NVL(DA.CANTASIENTOS,0)) FROM DIAGRAMA_AUTOBUS DA "); - sqlSb.append(" INNER JOIN ROL_OPERATIVO RO ON (DA.DIAGRAMAAUTOBUS_ID = RO.DIAGRAMAAUTOBUS_ID) "); - sqlSb.append(" INNER JOIN CORRIDA CO ON (RO.ROLOPERATIVO_ID = CO.ROLOPERATIVO_ID) "); - sqlSb.append(" INNER JOIN RUTA RU ON (RU.RUTA_ID = CO.RUTA_ID) "); + sqlSb.append(" (ROUND(NVL(SUB.PASSAGEIROS_EQUIVALENTE,0), 2) * NVL(SUB.EXTENSAO_KM,0)) AS PAX_KM, "); + sqlSb.append(" (NVL(SUB.ASSENTOS,0) * NVL(SUB.KM_RODADO,0)) AS PAX_OFERTADO "); + sqlSb.append(" FROM "); + sqlSb.append(" (SELECT TAB.INDSENTIDOIDA, "); + sqlSb.append(" TAB.PREFIXO, "); + sqlSb.append(" TAB.DESCRUTA, "); + sqlSb.append(" TAB.RUTA_ID, "); + sqlSb.append(" TAB.NUMRUTA, "); + sqlSb.append(" TAB.INTERESTADUAL, "); + sqlSb.append(" TAB.GRUPO_LINHA, "); + sqlSb.append(" TAB.EXTENSAO_KM, "); + sqlSb.append(" TAB.CVE_CLASE_SERVICIO, "); + sqlSb.append(" TAB.DESC_CLASE_SERVICIO, "); + sqlSb.append(" SUM(NVL(TAB.RECEITA_SEGURO,0)) AS RECEITA_SEGURO, "); + sqlSb.append(" SUM(NVL(TAB.RECEITA_BAGAGEM,0)) AS RECEITA_BAGAGEM, "); + sqlSb.append(" SUM(NVL(TAB.RECEITA_SEGURO_OUTROS,0)) AS RECEITA_SEGURO_OUTROS, "); + sqlSb.append(" SUM(NVL(TAB.RECEITA_TARIFA,0)) AS RECEITA_TARIFA, "); + sqlSb.append(" SUM(NVL(TAB.RECEITA_PEDAGIO,0)) AS RECEITA_PEDAGIO, "); + sqlSb.append(" SUM(NVL(TAB.RECEITA_EMBARQUE,0)) AS RECEITA_EMBARQUE, "); + sqlSb.append(" SUM(NVL(TAB.PASSAGEIROS,0)) AS PASSAGEIROS, "); + sqlSb.append(" SUM(NVL(TAB.VIAGENS_EXTRA,0)) AS VIAGENS_EXTRA, "); + sqlSb.append(" SUM(NVL(TAB.VIAGENS,0)) AS VIAGENS, "); + sqlSb.append(" SUM(NVL(TAB.RECEITA_TOTAL,0)) AS RECEITA_TOTAL, "); + sqlSb.append(" SUM(NVL(TAB.VIAGENS_TOTAL,0)) AS VIAGENS_TOTAL, "); + sqlSb.append(" SUM(NVL(TAB.KM_RODADO,0)) AS KM_RODADO, "); + sqlSb.append(" SUM(NVL(TAB.PASSAGEIROS_EQUIVALENTE,0)) AS PASSAGEIROS_EQUIVALENTE, "); + sqlSb.append(" TAB.ASSENTOS AS ASSENTOS "); + sqlSb.append(" FROM "); + sqlSb.append(" (SELECT TAB1.*, "); + sqlSb.append(" (TAB1.RECEITA_TARIFA + RECEITA_SEGURO + RECEITA_EMBARQUE + RECEITA_PEDAGIO) RECEITA_TOTAL, "); + sqlSb.append(" (NVL(TAB1.VIAGENS,0) + NVL(TAB1.VIAGENS_EXTRA,0)) VIAGENS_TOTAL, "); + sqlSb.append(" ((NVL(TAB1.VIAGENS,0) + NVL(TAB1.VIAGENS_EXTRA,0)) * NVL(TAB1.EXTENSAO_KM,0)) KM_RODADO, "); + sqlSb.append(" (SELECT SUM(NVL(PE.EQUIVALENTE,0)) "); + sqlSb.append(" FROM "); + sqlSb.append(" (SELECT CO.FECCORRIDA, "); + sqlSb.append(" CO.RUTA_ID, "); + sqlSb.append(" BO.PRECIOBASE, "); + sqlSb.append(" ROUND((BO.NUMKMVIAJE * COUNT(1) / "); + sqlSb.append(" (SELECT SUM(NVL(TR.CANTKMREAL,0)) "); + sqlSb.append(" FROM RUTA_COMBINACION RS, "); + sqlSb.append(" TRAMO TR "); + sqlSb.append(" WHERE RS.RUTA_ID = CO.RUTA_ID "); + sqlSb.append(" AND RS.TRAMO_ID = TR.TRAMO_ID "); + sqlSb.append(" )), 2) EQUIVALENTE "); + sqlSb.append(" FROM CORRIDA CO, "); + sqlSb.append(" BOLETO BO "); + sqlSb.append(" WHERE CO.CORRIDA_ID = BO.CORRIDA_ID "); + sqlSb.append(" AND CO.FECCORRIDA = BO.FECCORRIDA "); + sqlSb.append(" AND BO.ACTIVO = 1 "); + sqlSb.append(" AND (BO.MOTIVOCANCELACION_ID IS NULL "); + sqlSb.append(" OR BO.MOTIVOCANCELACION_ID = 0) "); + sqlSb.append(" GROUP BY CO.FECCORRIDA, "); + sqlSb.append(" CO.RUTA_ID, "); + sqlSb.append(" BO.PRECIOBASE, "); + sqlSb.append(" BO.NUMKMVIAJE "); + sqlSb.append(" ) PE "); + sqlSb.append(" WHERE PE.FECCORRIDA = TAB1.FECCORRIDA "); + sqlSb.append(" AND PE.RUTA_ID = TAB1.RUTA_ID "); + sqlSb.append(" ) PASSAGEIROS_EQUIVALENTE, "); + sqlSb.append(" (SELECT SUM(NVL(DA.CANTASIENTOS,0)) FROM DIAGRAMA_AUTOBUS DA "); + sqlSb.append(" INNER JOIN ROL_OPERATIVO RO ON (DA.DIAGRAMAAUTOBUS_ID = RO.DIAGRAMAAUTOBUS_ID) "); + sqlSb.append(" INNER JOIN CORRIDA CO ON (RO.ROLOPERATIVO_ID = CO.ROLOPERATIVO_ID) "); + sqlSb.append(" INNER JOIN RUTA RU ON (RU.RUTA_ID = CO.RUTA_ID) "); sqlSb.append(" WHERE CO.FECCORRIDA BETWEEN TO_DATE(:DATA_INICIAL, 'DD/MM/YY hh24:mi:ss') AND TO_DATE(:DATA_FINAL, 'DD/MM/YY hh24:mi:ss') "); - sqlSb.append(" AND RU.RUTA_ID = TAB1.RUTA_ID "); - sqlSb.append(" AND DA.ACTIVO = 1 "); - sqlSb.append(" AND RO.ACTIVO = 1 "); - sqlSb.append(" AND CO.ACTIVO = 1 "); - sqlSb.append(" AND RU.ACTIVO = 1) ASSENTOS "); - sqlSb.append(" FROM "); - sqlSb.append(" (SELECT RUTA_ID, "); - sqlSb.append(" INDSENTIDOIDA, "); - sqlSb.append(" NUMRUTA, "); - sqlSb.append(" PREFIXO, "); - sqlSb.append(" FECCORRIDA, "); - sqlSb.append(" DESCRUTA, "); - sqlSb.append(" INTERESTADUAL, "); - sqlSb.append(" GRUPO_LINHA, "); - sqlSb.append(" EXTENSAO_KM, "); - sqlSb.append(" RECEITA_SEGURO, "); - sqlSb.append(" RECEITA_BAGAGEM, "); - sqlSb.append(" RECEITA_SEGURO_OUTROS, "); - sqlSb.append(" RECEITA_PEDAGIO, "); - sqlSb.append(" RECEITA_EMBARQUE, "); - sqlSb.append(" SUM(PASSAGEIROS) AS PASSAGEIROS, "); - sqlSb.append(" VIAGENS_EXTRA, "); - sqlSb.append(" VIAGENS, "); - sqlSb.append(" CVE_CLASE_SERVICIO, "); - sqlSb.append(" SUM(PRECIOPAGADO) AS RECEITA_TARIFA "); - sqlSb.append(" FROM "); - sqlSb.append(" (SELECT RT.RUTA_ID, "); - sqlSb.append(" BL.BOLETO_ID, "); - sqlSb.append(" SUM(BL.PRECIOPAGADO) AS preciototal, "); - sqlSb.append(" BL.preciopagado AS PRECIOPAGADO, "); - sqlSb.append(" RT.INDSENTIDOIDA, "); - sqlSb.append(" RT.NUMRUTA, "); - sqlSb.append(" RT.PREFIXO, "); - sqlSb.append(" CR.FECCORRIDA, "); - sqlSb.append(" RT.DESCRUTA, "); - sqlSb.append(" CASE "); - sqlSb.append(" WHEN CO.ESTADO_ID <> CD.ESTADO_ID "); - sqlSb.append(" THEN 'S' "); - sqlSb.append(" ELSE 'N' "); - sqlSb.append(" END INTERESTADUAL, "); - sqlSb.append(" NVL(GR.DESCGRUPO, 'Não Definido') GRUPO_LINHA, "); - sqlSb.append(" (SELECT SUM(NVL(RS.KMORIGINAL,0)) "); - sqlSb.append(" FROM RUTA_SECUENCIA RS, "); - sqlSb.append(" TRAMO TR "); - sqlSb.append(" WHERE RS.RUTA_ID = RT.RUTA_ID "); - sqlSb.append(" AND RS.TRAMO_ID = TR.TRAMO_ID "); - sqlSb.append(" AND RS.ACTIVO = 1 "); - sqlSb.append(" ) EXTENSAO_KM, "); - sqlSb.append(" NVL(SUM(NVL(BL.IMPORTESEGURO,0)), 0) RECEITA_SEGURO, "); - sqlSb.append(" 0 RECEITA_BAGAGEM, "); - sqlSb.append(" 0 RECEITA_SEGURO_OUTROS, "); - sqlSb.append(" SUM(NVL(BL.IMPORTEPEDAGIO,0)) RECEITA_PEDAGIO, "); - sqlSb.append(" SUM(NVL(BL.IMPORTETAXAEMBARQUE,0)) RECEITA_EMBARQUE, "); - sqlSb.append(" COUNT(DISTINCT BOLETO_ID) PASSAGEIROS, "); - sqlSb.append(" COUNT(DISTINCT "); - sqlSb.append(" CASE "); - sqlSb.append(" WHEN CR.TIPOSERVICIO_ID = 2 "); - sqlSb.append(" THEN CR.FECCORRIDA "); - sqlSb.append(" || CR.CORRIDA_ID "); - sqlSb.append(" ELSE NULL "); - sqlSb.append(" END) VIAGENS_EXTRA, "); - sqlSb.append(" COUNT(DISTINCT "); - sqlSb.append(" CASE "); - sqlSb.append(" WHEN CR.TIPOSERVICIO_ID <> 2 "); - sqlSb.append(" THEN CR.FECCORRIDA "); - sqlSb.append(" || CR.CORRIDA_ID "); - sqlSb.append(" ELSE NULL "); - sqlSb.append(" END) VIAGENS, "); - sqlSb.append(" NVL(CS.CVECLASE, ' ') CVE_CLASE_SERVICIO "); - sqlSb.append(" FROM RUTA RT, "); - sqlSb.append(" BOLETO BL, "); - sqlSb.append(" CORRIDA CR, "); - sqlSb.append(" TRAMO TR, "); - sqlSb.append(" VIGENCIA_TARIFA VT, "); - sqlSb.append(" GRUPO_RUTA GR, "); - sqlSb.append(" PARADA PO, "); - sqlSb.append(" PARADA PD, "); - sqlSb.append(" CIUDAD CO, "); - sqlSb.append(" CIUDAD CD, "); - sqlSb.append(" CLASE_SERVICIO CS "); - sqlSb.append(" WHERE RT.RUTA_ID = CR.RUTA_ID "); - sqlSb.append(" AND CS.CLASESERVICIO_ID = RT.CLASESERVICIO_ID "); - sqlSb.append(" AND CR.FECCORRIDA = BL.FECCORRIDA "); + sqlSb.append(" AND RU.RUTA_ID = TAB1.RUTA_ID "); + sqlSb.append(" AND DA.ACTIVO = 1 "); + sqlSb.append(" AND RO.ACTIVO = 1 "); + sqlSb.append(" AND CO.ACTIVO = 1 "); + sqlSb.append(" AND RU.ACTIVO = 1) ASSENTOS "); + sqlSb.append(" FROM "); + sqlSb.append(" (SELECT RUTA_ID, "); + sqlSb.append(" INDSENTIDOIDA, "); + sqlSb.append(" NUMRUTA, "); + sqlSb.append(" PREFIXO, "); + sqlSb.append(" FECCORRIDA, "); + sqlSb.append(" DESCRUTA, "); + sqlSb.append(" INTERESTADUAL, "); + sqlSb.append(" GRUPO_LINHA, "); + sqlSb.append(" EXTENSAO_KM, "); + sqlSb.append(" RECEITA_SEGURO, "); + sqlSb.append(" RECEITA_BAGAGEM, "); + sqlSb.append(" RECEITA_SEGURO_OUTROS, "); + sqlSb.append(" RECEITA_PEDAGIO, "); + sqlSb.append(" RECEITA_EMBARQUE, "); + sqlSb.append(" SUM(PASSAGEIROS) AS PASSAGEIROS, "); + sqlSb.append(" VIAGENS_EXTRA, "); + sqlSb.append(" VIAGENS, "); + sqlSb.append(" CVE_CLASE_SERVICIO, "); + sqlSb.append(" DESC_CLASE_SERVICIO, "); + sqlSb.append(" SUM(PRECIOPAGADO) AS RECEITA_TARIFA "); + sqlSb.append(" FROM "); + sqlSb.append(" (SELECT RT.RUTA_ID, "); + sqlSb.append(" BL.BOLETO_ID, "); + sqlSb.append(" SUM(BL.PRECIOPAGADO) AS preciototal, "); + sqlSb.append(" BL.preciopagado AS PRECIOPAGADO, "); + sqlSb.append(" RT.INDSENTIDOIDA, "); + sqlSb.append(" RT.NUMRUTA, "); + sqlSb.append(" RT.PREFIXO, "); + sqlSb.append(" CR.FECCORRIDA, "); + sqlSb.append(" RT.DESCRUTA, "); + sqlSb.append(" CASE "); + sqlSb.append(" WHEN CO.ESTADO_ID <> CD.ESTADO_ID "); + sqlSb.append(" THEN 'S' "); + sqlSb.append(" ELSE 'N' "); + sqlSb.append(" END INTERESTADUAL, "); + sqlSb.append(" NVL(GR.DESCGRUPO, 'Não Definido') GRUPO_LINHA, "); + sqlSb.append(" (SELECT SUM(NVL(RS.KMORIGINAL,0)) "); + sqlSb.append(" FROM RUTA_SECUENCIA RS, "); + sqlSb.append(" TRAMO TR "); + sqlSb.append(" WHERE RS.RUTA_ID = RT.RUTA_ID "); + sqlSb.append(" AND RS.TRAMO_ID = TR.TRAMO_ID "); + sqlSb.append(" AND RS.ACTIVO = 1 "); + sqlSb.append(" ) EXTENSAO_KM, "); + sqlSb.append(" NVL(SUM(NVL(BL.IMPORTESEGURO,0)), 0) RECEITA_SEGURO, "); + sqlSb.append(" 0 RECEITA_BAGAGEM, "); + sqlSb.append(" 0 RECEITA_SEGURO_OUTROS, "); + sqlSb.append(" SUM(NVL(BL.IMPORTEPEDAGIO,0)) RECEITA_PEDAGIO, "); + sqlSb.append(" SUM(NVL(BL.IMPORTETAXAEMBARQUE,0)) RECEITA_EMBARQUE, "); + sqlSb.append(" COUNT(DISTINCT BOLETO_ID) PASSAGEIROS, "); + sqlSb.append(" COUNT(DISTINCT "); + sqlSb.append(" CASE "); + sqlSb.append(" WHEN CR.TIPOSERVICIO_ID = 2 "); + sqlSb.append(" THEN CR.FECCORRIDA "); + sqlSb.append(" || CR.CORRIDA_ID "); + sqlSb.append(" ELSE NULL "); + sqlSb.append(" END) VIAGENS_EXTRA, "); + sqlSb.append(" COUNT(DISTINCT "); + sqlSb.append(" CASE "); + sqlSb.append(" WHEN CR.TIPOSERVICIO_ID <> 2 "); + sqlSb.append(" THEN CR.FECCORRIDA "); + sqlSb.append(" || CR.CORRIDA_ID "); + sqlSb.append(" ELSE NULL "); + sqlSb.append(" END) VIAGENS, "); + sqlSb.append(" NVL(CS.CVECLASE, ' ') CVE_CLASE_SERVICIO ,"); + sqlSb.append(" NVL(CS.DESCCLASE, ' ') DESC_CLASE_SERVICIO "); + sqlSb.append(" FROM RUTA RT, "); + sqlSb.append(" BOLETO BL, "); + sqlSb.append(" CORRIDA CR, "); + sqlSb.append(" TRAMO TR, "); + sqlSb.append(" VIGENCIA_TARIFA VT, "); + sqlSb.append(" GRUPO_RUTA GR, "); + sqlSb.append(" PARADA PO, "); + sqlSb.append(" PARADA PD, "); + sqlSb.append(" CIUDAD CO, "); + sqlSb.append(" CIUDAD CD, "); + sqlSb.append(" CLASE_SERVICIO CS "); + sqlSb.append(" WHERE RT.RUTA_ID = CR.RUTA_ID "); + sqlSb.append(" AND CS.CLASESERVICIO_ID = RT.CLASESERVICIO_ID "); + sqlSb.append(" AND CR.FECCORRIDA = BL.FECCORRIDA "); if (rutaId != null) { - sqlSb.append(" AND CR.RUTA_ID = NVL(:RUTA_ID, CR.RUTA_ID) "); + sqlSb.append(" AND CR.RUTA_ID = NVL(:RUTA_ID, CR.RUTA_ID) "); } if (grupoRutaId != null) { - sqlSb.append(" AND DECODE(:GRUPORUTA_ID, NULL, 1, RT.GRUPORUTA_ID) = DECODE(:GRUPORUTA_ID, NULL, 1, :GRUPORUTA_ID) "); + sqlSb.append(" AND DECODE(:GRUPORUTA_ID, NULL, 1, RT.GRUPORUTA_ID) = DECODE(:GRUPORUTA_ID, NULL, 1, :GRUPORUTA_ID) "); } - sqlSb.append(" AND CR.CORRIDA_ID = BL.CORRIDA_ID "); - sqlSb.append(" AND CR.EMPRESACORRIDA_ID = :EMPRESA_ID "); - sqlSb.append(" AND CR.ORIGEN_ID = PO.PARADA_ID "); - sqlSb.append(" AND CR.DESTINO_ID = PD.PARADA_ID "); - sqlSb.append(" AND PO.CIUDAD_ID = CO.CIUDAD_ID "); - sqlSb.append(" AND PD.CIUDAD_ID = CD.CIUDAD_ID "); - sqlSb.append(" AND RT.GRUPORUTA_ID = GR.GRUPORUTA_ID(+) "); - sqlSb.append(" AND TR.ORIGEN_ID = CR.ORIGEN_ID "); - sqlSb.append(" AND TR.DESTINO_ID = CR.DESTINO_ID "); - sqlSb.append(" AND BL.MOTIVOCANCELACION_ID IS NULL "); - sqlSb.append(" AND BL.INDSTATUSOPERACION = 'F' "); - sqlSb.append(" AND VT.ACTIVO = 1 "); - sqlSb.append(" AND CR.FECCORRIDA BETWEEN VT.FECINICIOVIGENCIA AND VT.FECFINVIGENCIA "); - sqlSb.append(" AND CR.FECCORRIDA BETWEEN TO_DATE(:DATA_INICIAL, 'DD/MM/YY hh24:mi:ss') AND TO_DATE(:DATA_FINAL, 'DD/MM/YY hh24:mi:ss') "); - sqlSb.append(" AND CR.ACTIVO = 1 "); - sqlSb.append(" GROUP BY RT.RUTA_ID, "); - sqlSb.append(" RT.NUMRUTA, "); - sqlSb.append(" RT.PREFIXO, "); - sqlSb.append(" CR.FECCORRIDA, "); - sqlSb.append(" RT.DESCRUTA, "); - sqlSb.append(" GR.DESCGRUPO, "); - sqlSb.append(" CO.ESTADO_ID, "); - sqlSb.append(" CD.ESTADO_ID, "); - sqlSb.append(" RT.INDSENTIDOIDA, "); - sqlSb.append(" CS.CVECLASE, "); - sqlSb.append(" BL.BOLETO_ID, "); - sqlSb.append(" BL.preciopagado "); - sqlSb.append(" ) DADOS "); - sqlSb.append(" GROUP BY RUTA_ID, "); - sqlSb.append(" INDSENTIDOIDA, "); - sqlSb.append(" NUMRUTA, "); - sqlSb.append(" PREFIXO, "); - sqlSb.append(" FECCORRIDA, "); - sqlSb.append(" DESCRUTA, "); - sqlSb.append(" INTERESTADUAL, "); - sqlSb.append(" GRUPO_LINHA, "); - sqlSb.append(" EXTENSAO_KM, "); - sqlSb.append(" RECEITA_SEGURO, "); - sqlSb.append(" RECEITA_BAGAGEM, "); - sqlSb.append(" RECEITA_SEGURO_OUTROS, "); - sqlSb.append(" RECEITA_PEDAGIO, "); - sqlSb.append(" RECEITA_EMBARQUE, "); - sqlSb.append(" PASSAGEIROS, "); - sqlSb.append(" VIAGENS_EXTRA, "); - sqlSb.append(" VIAGENS, "); - sqlSb.append(" CVE_CLASE_SERVICIO "); - sqlSb.append(" ) TAB1 "); - sqlSb.append(" )TAB "); - sqlSb.append(" GROUP BY TAB.RUTA_ID, "); - sqlSb.append(" TAB.NUMRUTA, "); - sqlSb.append(" TAB.PREFIXO, "); - sqlSb.append(" TAB.DESCRUTA, "); - sqlSb.append(" TAB.INTERESTADUAL, "); - sqlSb.append(" TAB.GRUPO_LINHA, "); - sqlSb.append(" TAB.EXTENSAO_KM, "); - sqlSb.append(" TAB.CVE_CLASE_SERVICIO, "); - sqlSb.append(" TAB.INDSENTIDOIDA, "); - sqlSb.append(" TAB.ASSENTOS "); - sqlSb.append(" ) SUB "); - sqlSb.append(" WHERE (DECODE(NVL(SUB.VIAGENS_TOTAL,0), 0, 1, NVL(SUB.VIAGENS_TOTAL,0)) != 0) "); - sqlSb.append(" AND DECODE(NVL(SUB.VIAGENS_TOTAL,0), 0, 1, NVL(SUB.VIAGENS_TOTAL,0)) != 0 "); - sqlSb.append(" AND DECODE(NVL(SUB.KM_RODADO,0), 0, 1, NVL(SUB.KM_RODADO,0)) != 0 "); - sqlSb.append(" AND DECODE(NVL(SUB.VIAGENS_TOTAL,0), 0, 1, NVL(SUB.VIAGENS_TOTAL,0)) != 0 "); - sqlSb.append(" AND DECODE(NVL(SUB.VIAGENS_TOTAL,0), 0, 1, NVL(SUB.VIAGENS_TOTAL,0)) != 0 "); - sqlSb.append(" ORDER BY SUB.PREFIXO, "); - sqlSb.append(" SUB.INDSENTIDOIDA DESC "); + sqlSb.append(" AND CR.CORRIDA_ID = BL.CORRIDA_ID "); + sqlSb.append(" AND CR.EMPRESACORRIDA_ID = :EMPRESA_ID "); + sqlSb.append(" AND CR.ORIGEN_ID = PO.PARADA_ID "); + sqlSb.append(" AND CR.DESTINO_ID = PD.PARADA_ID "); + sqlSb.append(" AND PO.CIUDAD_ID = CO.CIUDAD_ID "); + sqlSb.append(" AND PD.CIUDAD_ID = CD.CIUDAD_ID "); + sqlSb.append(" AND RT.GRUPORUTA_ID = GR.GRUPORUTA_ID(+) "); + sqlSb.append(" AND TR.ORIGEN_ID = CR.ORIGEN_ID "); + sqlSb.append(" AND TR.DESTINO_ID = CR.DESTINO_ID "); + sqlSb.append(" AND BL.MOTIVOCANCELACION_ID IS NULL "); + sqlSb.append(" AND BL.INDSTATUSOPERACION = 'F' "); + sqlSb.append(" AND VT.ACTIVO = 1 "); + sqlSb.append(" AND CR.FECCORRIDA BETWEEN VT.FECINICIOVIGENCIA AND VT.FECFINVIGENCIA "); + sqlSb.append(" AND CR.FECCORRIDA BETWEEN TO_DATE(:DATA_INICIAL, 'DD/MM/YY hh24:mi:ss') AND TO_DATE(:DATA_FINAL, 'DD/MM/YY hh24:mi:ss') "); + sqlSb.append(" AND CR.ACTIVO = 1 "); + sqlSb.append(" GROUP BY RT.RUTA_ID, "); + sqlSb.append(" RT.NUMRUTA, "); + sqlSb.append(" RT.PREFIXO, "); + sqlSb.append(" CR.FECCORRIDA, "); + sqlSb.append(" RT.DESCRUTA, "); + sqlSb.append(" GR.DESCGRUPO, "); + sqlSb.append(" CO.ESTADO_ID, "); + sqlSb.append(" CD.ESTADO_ID, "); + sqlSb.append(" RT.INDSENTIDOIDA, "); + sqlSb.append(" CS.CVECLASE, "); + sqlSb.append(" CS.DESCCLASE, "); + sqlSb.append(" BL.BOLETO_ID, "); + sqlSb.append(" BL.preciopagado "); + sqlSb.append(" ) DADOS "); + sqlSb.append(" GROUP BY RUTA_ID, "); + sqlSb.append(" INDSENTIDOIDA, "); + sqlSb.append(" NUMRUTA, "); + sqlSb.append(" PREFIXO, "); + sqlSb.append(" FECCORRIDA, "); + sqlSb.append(" DESCRUTA, "); + sqlSb.append(" INTERESTADUAL, "); + sqlSb.append(" GRUPO_LINHA, "); + sqlSb.append(" EXTENSAO_KM, "); + sqlSb.append(" RECEITA_SEGURO, "); + sqlSb.append(" RECEITA_BAGAGEM, "); + sqlSb.append(" RECEITA_SEGURO_OUTROS, "); + sqlSb.append(" RECEITA_PEDAGIO, "); + sqlSb.append(" RECEITA_EMBARQUE, "); + sqlSb.append(" PASSAGEIROS, "); + sqlSb.append(" VIAGENS_EXTRA, "); + sqlSb.append(" VIAGENS, "); + sqlSb.append(" CVE_CLASE_SERVICIO, "); + sqlSb.append(" DESC_CLASE_SERVICIO "); + sqlSb.append(" ) TAB1 "); + sqlSb.append(" )TAB "); + //Obs.: Não deve será alterado ordenação pois impactará na lógica de agrupamento por ida/volta + sqlSb.append(" GROUP BY "); + sqlSb.append(" TAB.PREFIXO, "); + sqlSb.append(" TAB.DESCRUTA, "); + sqlSb.append(" TAB.RUTA_ID, "); + sqlSb.append(" TAB.NUMRUTA, "); + sqlSb.append(" TAB.INTERESTADUAL, "); + sqlSb.append(" TAB.GRUPO_LINHA, "); + sqlSb.append(" TAB.EXTENSAO_KM, "); + sqlSb.append(" TAB.CVE_CLASE_SERVICIO, "); + sqlSb.append(" TAB.DESC_CLASE_SERVICIO, "); + sqlSb.append(" TAB.INDSENTIDOIDA, "); + sqlSb.append(" TAB.ASSENTOS "); + sqlSb.append(" ) SUB "); + sqlSb.append(" WHERE (DECODE(NVL(SUB.VIAGENS_TOTAL,0), 0, 1, NVL(SUB.VIAGENS_TOTAL,0)) != 0) "); + sqlSb.append(" AND DECODE(NVL(SUB.VIAGENS_TOTAL,0), 0, 1, NVL(SUB.VIAGENS_TOTAL,0)) != 0 "); + sqlSb.append(" AND DECODE(NVL(SUB.KM_RODADO,0), 0, 1, NVL(SUB.KM_RODADO,0)) != 0 "); + sqlSb.append(" AND DECODE(NVL(SUB.VIAGENS_TOTAL,0), 0, 1, NVL(SUB.VIAGENS_TOTAL,0)) != 0 "); + sqlSb.append(" AND DECODE(NVL(SUB.VIAGENS_TOTAL,0), 0, 1, NVL(SUB.VIAGENS_TOTAL,0)) != 0 "); + sqlSb.append(" ORDER BY SUB.PREFIXO, "); + sqlSb.append(" SUB.INDSENTIDOIDA DESC "); return sqlSb.toString(); } /** - * Preenche objeto de relatório caso seja Ida criar novo objeto e preenche com dados, caso seja Volta concantena/agrupa com o objeto de linha da Ida + * Preenche objeto de relatório caso seja Ida criar novo objeto e preenche com dados, caso seja Volta concantena/agrupa com o objeto de linha da Ida. + * Obs.: Não deve será alterado ordenação pois impactará na lógica abaixo. * * @param rset * @param relatorioBean @@ -360,7 +377,7 @@ public class RelatorioResumoLinhasAnaliticoSimplificadoSumarizado extends Relato relatorioBean.setRUTA_ID(rset.getBigDecimal("RUTA_ID")); relatorioBean.setNUMRUTA(rset.getString("NUMRUTA")); relatorioBean.setPREFIXO(rset.getString("PREFIXO")); - relatorioBean.setDESCRUTA(rset.getString("DESCRUTA") + (BigDecimal.ZERO.equals(rset.getBigDecimal("INDSENTIDOIDA")) ? " - VOLTA " : " - IDA")); + relatorioBean.setDESCRUTA(rset.getString("DESCRUTA")); relatorioBean.setINTERESTADUAL(rset.getString("INTERESTADUAL")); relatorioBean.setGRUPO_LINHA(rset.getString("GRUPO_LINHA")); relatorioBean.setEXTENSAO_KM(rset.getBigDecimal("EXTENSAO_KM")); @@ -368,12 +385,15 @@ public class RelatorioResumoLinhasAnaliticoSimplificadoSumarizado extends Relato relatorioBean.setRECEITA_BAGAGEM(rset.getBigDecimal("RECEITA_BAGAGEM")); relatorioBean.setRECEITA_SEGURO_OUTROS(rset.getBigDecimal("RECEITA_SEGURO_OUTROS")); relatorioBean.setRECEITA_TARIFA(rset.getBigDecimal("RECEITA_TARIFA")); + relatorioBean.setRECEITA_TARIFA_SEGURO(rset.getBigDecimal("RECEITA_SEGURO") !=null ? + rset.getBigDecimal("RECEITA_TARIFA").add(rset.getBigDecimal("RECEITA_SEGURO")) : rset.getBigDecimal("RECEITA_TARIFA") ); relatorioBean.setRECEITA_PEDAGIO(rset.getBigDecimal("RECEITA_PEDAGIO")); relatorioBean.setRECEITA_EMBARQUE(rset.getBigDecimal("RECEITA_EMBARQUE")); relatorioBean.setPASSAGEIROS(rset.getBigDecimal("PASSAGEIROS")); relatorioBean.setVIAGENS_EXTRA(rset.getBigDecimal("VIAGENS_EXTRA")); relatorioBean.setVIAGENS(rset.getBigDecimal("VIAGENS")); relatorioBean.setCVE_CLASE_SERVICIO(rset.getString("CVE_CLASE_SERVICIO")); + relatorioBean.setDESC_CLASE_SERVICIO(rset.getString("DESC_CLASE_SERVICIO")); relatorioBean.setRECEITA_TOTAL(rset.getBigDecimal("RECEITA_TOTAL")); relatorioBean.setVIAGENS_TOTAL(rset.getBigDecimal("VIAGENS_TOTAL")); relatorioBean.setKM_RODADO(rset.getBigDecimal("KM_RODADO")); @@ -384,12 +404,13 @@ public class RelatorioResumoLinhasAnaliticoSimplificadoSumarizado extends Relato relatorioBean.setRECEITA_VIAGEM(rset.getBigDecimal("RECEITA_VIAGEM")); relatorioBean.setPAX_KM(rset.getBigDecimal("PAX_KM")); relatorioBean.setPAX_OFERTADO(rset.getBigDecimal("PAX_OFERTADO")); + relatorioBean.setASSENTOS(rset.getBigDecimal("ASSENTOS")); } else { //Volta relatorioBean.setRUTA_ID(rset.getBigDecimal("RUTA_ID")); relatorioBean.setNUMRUTA(relatorioBean.getNUMRUTA() + rset.getString("NUMRUTA")); relatorioBean.setPREFIXO(rset.getString("PREFIXO")); - relatorioBean.setDESCRUTA(relatorioBean.getDESCRUTA() + (BigDecimal.ZERO.equals(rset.getBigDecimal("INDSENTIDOIDA")) ? " - VOLTA " : " - IDA")); + relatorioBean.setDESCRUTA(relatorioBean.getDESCRUTA()); relatorioBean.setINTERESTADUAL(rset.getString("INTERESTADUAL")); relatorioBean.setGRUPO_LINHA(rset.getString("GRUPO_LINHA")); relatorioBean.setEXTENSAO_KM(relatorioBean.getEXTENSAO_KM().add(rset.getBigDecimal("EXTENSAO_KM"))); @@ -397,12 +418,15 @@ public class RelatorioResumoLinhasAnaliticoSimplificadoSumarizado extends Relato relatorioBean.setRECEITA_BAGAGEM(relatorioBean.getRECEITA_BAGAGEM().add(rset.getBigDecimal("RECEITA_BAGAGEM"))); relatorioBean.setRECEITA_SEGURO_OUTROS(relatorioBean.getRECEITA_SEGURO_OUTROS().add(rset.getBigDecimal("RECEITA_SEGURO_OUTROS"))); relatorioBean.setRECEITA_TARIFA(relatorioBean.getRECEITA_TARIFA().add(rset.getBigDecimal("RECEITA_TARIFA"))); + relatorioBean.setRECEITA_TARIFA_SEGURO(rset.getBigDecimal("RECEITA_SEGURO") !=null ? + relatorioBean.getRECEITA_TARIFA_SEGURO().add(rset.getBigDecimal("RECEITA_SEGURO")) : rset.getBigDecimal("RECEITA_TARIFA")); relatorioBean.setRECEITA_PEDAGIO(relatorioBean.getRECEITA_PEDAGIO().add(rset.getBigDecimal("RECEITA_PEDAGIO"))); relatorioBean.setRECEITA_EMBARQUE(relatorioBean.getRECEITA_EMBARQUE().add(rset.getBigDecimal("RECEITA_EMBARQUE"))); relatorioBean.setPASSAGEIROS(relatorioBean.getPASSAGEIROS().add(rset.getBigDecimal("PASSAGEIROS"))); relatorioBean.setVIAGENS_EXTRA(relatorioBean.getVIAGENS_EXTRA().add(rset.getBigDecimal("VIAGENS_EXTRA"))); relatorioBean.setVIAGENS(relatorioBean.getVIAGENS().add(rset.getBigDecimal("VIAGENS"))); relatorioBean.setCVE_CLASE_SERVICIO(rset.getString("CVE_CLASE_SERVICIO")); + relatorioBean.setDESC_CLASE_SERVICIO(rset.getString("DESC_CLASE_SERVICIO")); relatorioBean.setRECEITA_TOTAL(relatorioBean.getRECEITA_TOTAL().add(rset.getBigDecimal("RECEITA_TOTAL"))); relatorioBean.setVIAGENS_TOTAL(relatorioBean.getVIAGENS_TOTAL().add(rset.getBigDecimal("VIAGENS_TOTAL"))); relatorioBean.setKM_RODADO(relatorioBean.getKM_RODADO().add(rset.getBigDecimal("KM_RODADO"))); @@ -413,6 +437,7 @@ public class RelatorioResumoLinhasAnaliticoSimplificadoSumarizado extends Relato relatorioBean.setRECEITA_VIAGEM(relatorioBean.getRECEITA_VIAGEM().add(rset.getBigDecimal("RECEITA_VIAGEM"))); relatorioBean.setPAX_KM(relatorioBean.getPAX_KM().add(rset.getBigDecimal("PAX_KM"))); relatorioBean.setPAX_OFERTADO(relatorioBean.getPAX_OFERTADO().add(rset.getBigDecimal("PAX_OFERTADO"))); + relatorioBean.setASSENTOS(relatorioBean.getASSENTOS().add(rset.getBigDecimal("ASSENTOS"))); } return relatorioBean; diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioResumoLinhasAnaliticoSimplificadoSumarizado.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioResumoLinhasAnaliticoSimplificadoSumarizado.jasper index 6e256ffb9..93963dde0 100644 Binary files a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioResumoLinhasAnaliticoSimplificadoSumarizado.jasper and b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioResumoLinhasAnaliticoSimplificadoSumarizado.jasper differ diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioResumoLinhasAnaliticoSimplificadoSumarizado.jrxml b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioResumoLinhasAnaliticoSimplificadoSumarizado.jrxml index 76573a306..6645aef14 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioResumoLinhasAnaliticoSimplificadoSumarizado.jrxml +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioResumoLinhasAnaliticoSimplificadoSumarizado.jrxml @@ -1,8 +1,8 @@ - - + +