diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioAcompanhamentoEquivalentes.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioAcompanhamentoEquivalentes.java index 3273fb3db..04969f4fe 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioAcompanhamentoEquivalentes.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioAcompanhamentoEquivalentes.java @@ -74,8 +74,6 @@ public class RelatorioAcompanhamentoEquivalentes extends Relatorio { Map parametros = this.relatorio.getParametros(); String sql = getSql(); - System.out.println(sql); - NamedParameterStatement stmt = new NamedParameterStatement(conexao, sql); if (parametros.get("EMPRESA_ID") != null) @@ -143,8 +141,7 @@ public class RelatorioAcompanhamentoEquivalentes extends Relatorio { totalDias++; } - BigDecimal ZERO = new BigDecimal(0); - if (valor != null && !valor.equals(ZERO)) { + if (valor != null) { row.put("LINHA", this.resultSet.getString("SIGLA")); row.put("LOTACAO", this.resultSet.getInt("ASSENTOS")); row.put("SERVICO", this.resultSet.getString("TIPO_SERVICO")); @@ -227,9 +224,7 @@ public class RelatorioAcompanhamentoEquivalentes extends Relatorio { } ResultSet resultSet = stmt.executeQuery(); - while (resultSet.next()) { - RelatorioAcompanhamentoEquivalenteBean equivalenteBean = new RelatorioAcompanhamentoEquivalenteBean(); equivalenteBean.setValor(resultSet.getBigDecimal("VALOR")); equivalenteBean.setCorridaId(resultSet.getInt("CORRIDA_ID")); @@ -315,7 +310,7 @@ public class RelatorioAcompanhamentoEquivalentes extends Relatorio { return sql.toString(); } - protected String getSqlIndicadorPax(boolean isServicoExtra ) { + protected String getSqlIndicadorPax(boolean isServicoExtra) { StringBuilder sql = new StringBuilder(); sql.append("SELECT "); @@ -347,8 +342,8 @@ public class RelatorioAcompanhamentoEquivalentes extends Relatorio { StringBuilder sql = new StringBuilder(); sql.append("SELECT "); - sql.append(" ROUND(SUM(:CEM * (( EQUIVALENTE * EXTENSAO_LINHA ) / "); - sql.append(" ( :CAPACIDADE * EXTENSAO_LINHA ))), :DECIMAL ) VALOR, "); + sql.append(" COALESCE(ROUND(SUM(:CEM * (( EQUIVALENTE * EXTENSAO_LINHA ) / "); + sql.append(" ( :CAPACIDADE * EXTENSAO_LINHA ))), :DECIMAL ), 0) AS VALOR, "); sql.append(" FINAL_TAV.CORRIDA_ID, FINAL_TAV.FECCORRIDA "); sql.append("FROM "); sql.append(" (SELECT "); @@ -356,9 +351,13 @@ public class RelatorioAcompanhamentoEquivalentes extends Relatorio { sql.append(" FROM "); sql.append(" (SELECT "); sql.append(" ROUND(( BO.NUMKMVIAJE / ( EXTENSAO_LINHA.EL ) * COUNT(1) ), :DECIMAL) EQ, "); - sql.append(" EXTENSAO_LINHA.EL EL, BO.CORRIDA_ID, BO.FECCORRIDA "); - sql.append(" FROM BOLETO BO, CORRIDA C, "); - sql.append(" (SELECT SUM(TR1.CANTKMREAL) EL, "); + sql.append(" EXTENSAO_LINHA.EL EL, C.CORRIDA_ID, C.FECCORRIDA "); + sql.append(" FROM CORRIDA C "); + sql.append(" LEFT JOIN BOLETO BO ON (C.CORRIDA_ID = BO.CORRIDA_ID AND C.FECCORRIDA = BO.FECCORRIDA "); + sql.append(" AND BO.INDSTATUSOPERACION = 'F' "); + sql.append(" AND BO.MOTIVOCANCELACION_ID IS NULL OR BO.MOTIVOCANCELACION_ID = 0 "); + sql.append(" AND BO.CATEGORIA_ID <> ").append(CONSTANTE_GRATUIDADE_CRIANCA).append("), "); + sql.append(" (SELECT SUM(TR1.CANTKMREAL) EL, "); sql.append(" CR.CORRIDA_ID, "); sql.append(" CR.FECCORRIDA, "); sql.append(" CR.ROLOPERATIVO_ID "); @@ -368,22 +367,17 @@ public class RelatorioAcompanhamentoEquivalentes extends Relatorio { sql.append(" AND (TR1.ORIGEN_ID = CR.ORIGEN_ID AND TR1.DESTINO_ID = CR.DESTINO_ID) "); sql.append(" WHERE CR.ACTIVO = 1 AND RS.ACTIVO = 1 AND TR1.ACTIVO = 1 "); sql.append(" GROUP BY CR.CORRIDA_ID, CR.FECCORRIDA, CR.ROLOPERATIVO_ID) EXTENSAO_LINHA "); - sql.append(" WHERE BO.CORRIDA_ID = :CORRIDA_ID "); - sql.append(" AND TO_CHAR(BO.FECCORRIDA, 'MMYYYY') = TO_CHAR(:DATA_MES, 'MMYYYY') "); - sql.append(" AND BO.CATEGORIA_ID <> ").append(CONSTANTE_GRATUIDADE_CRIANCA); - sql.append(" AND EXTENSAO_LINHA.CORRIDA_ID = BO.CORRIDA_ID "); - sql.append(" AND EXTENSAO_LINHA.FECCORRIDA = BO.FECCORRIDA "); + sql.append(" WHERE C.CORRIDA_ID = :CORRIDA_ID "); + sql.append(" AND TO_CHAR(C.FECCORRIDA, 'MMYYYY') = TO_CHAR(:DATA_MES, 'MMYYYY') "); + sql.append(" AND EXTENSAO_LINHA.CORRIDA_ID = C.CORRIDA_ID "); + sql.append(" AND EXTENSAO_LINHA.FECCORRIDA = C.FECCORRIDA "); sql.append(" AND EXTENSAO_LINHA.ROLOPERATIVO_ID = C.ROLOPERATIVO_ID "); - sql.append(" AND C.CORRIDA_ID = BO.CORRIDA_ID "); - sql.append(" AND C.FECCORRIDA = BO.FECCORRIDA "); sql.append(" AND C.ROLOPERATIVO_ID = :ROLOPERATIVO_ID "); sql.append(" AND TO_CHAR(C.FECHORSALIDAORIGINAL, 'HH24:MI') = TO_CHAR(TO_DATE(:HORARIO, 'HH24:MI'), 'HH24:MI') "); sql.append(isServicoExtra ? " AND C.TIPOSERVICIO_ID = 2 " : " AND C.TIPOSERVICIO_ID <> 2 "); sql.append(" AND C.RUTA_ID = :RUTA_ID "); - sql.append(" AND BO.ACTIVO = 1 "); sql.append(" AND C.ACTIVO = 1 "); - sql.append(" AND (BO.MOTIVOCANCELACION_ID IS NULL OR BO.MOTIVOCANCELACION_ID = 0 ) "); - sql.append(" GROUP BY BO.NUMKMVIAJE, EXTENSAO_LINHA.EL, BO.CORRIDA_ID, BO.FECCORRIDA) TAV "); + sql.append(" GROUP BY BO.NUMKMVIAJE, EXTENSAO_LINHA.EL, C.CORRIDA_ID, C.FECCORRIDA) TAV "); sql.append(" GROUP BY EQ, TAV.EL, TAV.CORRIDA_ID, TAV.FECCORRIDA ) FINAL_TAV "); sql.append("GROUP BY FINAL_TAV.CORRIDA_ID, FINAL_TAV.FECCORRIDA "); sql.append("ORDER BY FINAL_TAV.FECCORRIDA"); @@ -395,7 +389,8 @@ public class RelatorioAcompanhamentoEquivalentes extends Relatorio { protected String getSqlIndicadorReceitaKm(boolean isServicoExtra) { StringBuilder sql = new StringBuilder(); - sql.append("SELECT (SUB_REC.RECEITA/SUB_REC.KM) AS VALOR, "); + sql.append("SELECT "); + sql.append("COALESCE((SUB_REC.RECEITA/SUB_REC.KM), 0) AS VALOR, "); sql.append("SUB_REC.CORRIDA_ID AS CORRIDA_ID, "); sql.append("SUB_REC.FECCORRIDA AS FECCORRIDA "); sql.append("FROM "); @@ -404,14 +399,17 @@ public class RelatorioAcompanhamentoEquivalentes extends Relatorio { sql.append(" SUB_KM.KM, "); sql.append(" CR.CORRIDA_ID, "); sql.append(" CR.FECCORRIDA "); - sql.append(" FROM BOLETO BO "); - sql.append(" INNER JOIN CORRIDA CR ON CR.CORRIDA_ID = BO.CORRIDA_ID AND CR.FECCORRIDA = BO.FECCORRIDA "); + sql.append(" FROM CORRIDA CR "); + sql.append(" LEFT JOIN BOLETO BO ON (CR.CORRIDA_ID = BO.CORRIDA_ID AND CR.FECCORRIDA = BO.FECCORRIDA "); + sql.append(" AND BO.INDSTATUSOPERACION = 'F' "); + sql.append(" AND BO.MOTIVOCANCELACION_ID IS NULL OR BO.MOTIVOCANCELACION_ID = 0 "); + sql.append(" AND BO.CATEGORIA_ID <> ").append(CONSTANTE_GRATUIDADE_CRIANCA).append(") "); sql.append(" INNER JOIN (SELECT SUM(TR1.CANTKMREAL) KM, CR.CORRIDA_ID, CR.FECCORRIDA "); sql.append(" FROM CORRIDA CR "); sql.append(" INNER JOIN RUTA_COMBINACION RS ON RS.RUTA_ID = CR.RUTA_ID "); sql.append(" INNER JOIN TRAMO TR1 ON TR1.TRAMO_ID = RS.TRAMO_ID "); sql.append(" AND (TR1.ORIGEN_ID = CR.ORIGEN_ID AND TR1.DESTINO_ID = CR.DESTINO_ID)"); - sql.append(" WHERE CR.ACTIVO = 1 AND RS.ACTIVO = 1 AND TR1.ACTIVO = 1 "); + sql.append(" WHERE CR.ACTIVO = 1 AND RS.ACTIVO = 1 AND TR1.ACTIVO = 1 "); sql.append(" AND CR.CORRIDA_ID = :CORRIDA_ID "); sql.append(" AND TO_CHAR(CR.FECCORRIDA, 'MMYYYY') = TO_CHAR(:DATA_MES, 'MMYYYY') "); sql.append(" AND TO_CHAR(CR.FECHORSALIDAORIGINAL, 'HH24:MI') = TO_CHAR(TO_DATE(:HORARIO, 'HH24:MI'), 'HH24:MI') "); @@ -420,16 +418,13 @@ public class RelatorioAcompanhamentoEquivalentes extends Relatorio { sql.append(" AND CR.ROLOPERATIVO_ID = :ROLOPERATIVO_ID "); sql.append(" GROUP BY CR.CORRIDA_ID, CR.FECCORRIDA "); sql.append(" )SUB_KM ON SUB_KM.CORRIDA_ID = CR.CORRIDA_ID AND SUB_KM.FECCORRIDA = CR.FECCORRIDA "); - sql.append(" WHERE BO.CORRIDA_ID = :CORRIDA_ID "); - sql.append(" AND TO_CHAR(BO.FECCORRIDA, 'MMYYYY') = TO_CHAR(:DATA_MES, 'MMYYYY') "); + sql.append(" WHERE CR.ACTIVO = 1 "); + sql.append(" AND CR.CORRIDA_ID = :CORRIDA_ID "); + sql.append(" AND TO_CHAR(CR.FECCORRIDA, 'MMYYYY') = TO_CHAR(:DATA_MES, 'MMYYYY') "); sql.append(" AND TO_CHAR(CR.FECHORSALIDAORIGINAL, 'HH24:MI') = TO_CHAR(TO_DATE(:HORARIO, 'HH24:MI'), 'HH24:MI') "); sql.append(isServicoExtra ? " AND CR.TIPOSERVICIO_ID = 2 " : " AND CR.TIPOSERVICIO_ID <> 2 "); sql.append(" AND CR.RUTA_ID = :RUTA_ID "); sql.append(" AND CR.ROLOPERATIVO_ID = :ROLOPERATIVO_ID "); - sql.append(" AND BO.ACTIVO = 1 "); - sql.append(" AND BO.INDSTATUSOPERACION = 'F' "); - sql.append(" AND BO.MOTIVOCANCELACION_ID IS NULL OR BO.MOTIVOCANCELACION_ID = 0 "); - sql.append(" AND BO.CATEGORIA_ID <> ").append(CONSTANTE_GRATUIDADE_CRIANCA); sql.append(" GROUP BY CR.CORRIDA_ID, CR.FECCORRIDA, SUB_KM.KM "); sql.append(" ) SUB_REC "); sql.append("ORDER BY SUB_REC.FECCORRIDA ");