diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioAcompanhamentoEquivalentes.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioAcompanhamentoEquivalentes.java index 8282a5007..a4476ac9e 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioAcompanhamentoEquivalentes.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioAcompanhamentoEquivalentes.java @@ -80,21 +80,18 @@ public class RelatorioAcompanhamentoEquivalentes extends Relatorio { @Override public void initDados() throws Exception { - this.prepareQuery(); Date dataInicial = (Date) this.relatorio.getParametros().get("DATA_MES"); while (this.resultSet.next()) { - Integer rolOperativoId = this.resultSet.getInt("ROLOPERATIVO_ID"); Integer corridaId = this.resultSet.getInt("CORRIDA_ID"); Map row = new HashMap(); BigDecimal totalMes = BigDecimal.ZERO; Integer totalDias = 0; - row.put("LINHA", this.resultSet.getString("SIGLA")); row.put("LOTACAO", this.resultSet.getInt("ASSENTOS")); @@ -109,8 +106,8 @@ public class RelatorioAcompanhamentoEquivalentes extends Relatorio { cal.set(Calendar.DATE, 1); // Roda todos os dias do mes - for (int dia = 1 ; dia <= cal.getActualMaximum(Calendar.DATE) ; dia++) { - + for (int dia = 1; dia <= cal.getActualMaximum(Calendar.DATE); dia++) { + BigDecimal valor = getValorByIndicador(cal.getTime(), corridaId, rolOperativoId, (Integer) this.relatorio.getParametros().get("INDICADOR")); if (valor != null) { @@ -119,14 +116,13 @@ public class RelatorioAcompanhamentoEquivalentes extends Relatorio { } row.put(String.valueOf(cal.get(Calendar.DATE)), valor); - - if(cal.get(Calendar.DATE) < cal.getActualMaximum(Calendar.DATE)) + + if (cal.get(Calendar.DATE) < cal.getActualMaximum(Calendar.DATE)) cal.add(Calendar.DATE, 1); } - System.out.println("Total mes "+totalMes+ "Total dias"+ totalDias); - if(totalMes != null && !totalMes.equals(BigDecimal.ZERO) && totalDias > 0) + if (totalMes != null && !totalMes.equals(BigDecimal.ZERO) && totalDias > 0) row.put("MEDIA", totalMes.divide(BigDecimal.valueOf(totalDias), 2, RoundingMode.HALF_UP)); this.dados.add(row); @@ -141,24 +137,25 @@ public class RelatorioAcompanhamentoEquivalentes extends Relatorio { switch (IndicadorRelatorio.fromInt(indicador)) { case MPE: + sql = getSqlIndicadorEquivalentes(); break; case ABSOLUTO: sql = getSqlIndicadorAbsoluto(); break; case EQ: - + sql = getSqlIndicadorEq(); break; case IAP: - + sql = getSqlIndicadorIap(); break; case PAXKM: - + sql = getSqlIndicadorPax(); break; case RECEITA_KM: - + sql = getSqlIndicadorReceitaKm(); break; case RECEITA_VIAGEM: - + sql = getSqlIndicadorReceitaViagem(); break; } @@ -168,6 +165,227 @@ public class RelatorioAcompanhamentoEquivalentes extends Relatorio { }); } + protected String getSqlIndicadorEq() { + StringBuilder sql = new StringBuilder(); + sql.append(" SELECT ROUND((SELECT TF.PRECIO"); + sql.append(" FROM CORRIDA CR, TRAMO TR, TARIFA TF, VIGENCIA_TARIFA VT"); + sql.append(" WHERE CR.CORRIDA_ID = :CORRIDA_ID"); + sql.append(" AND CR.FECCORRIDA = :FECCORRIDA"); + sql.append(" AND TF.CLASESERVICIO_ID = CR.CLASESERVICIO_ID"); + sql.append(" AND TF.MARCA_ID = CR.MARCA_ID"); + sql.append(" AND TF.RUTA_ID = CR.RUTA_ID"); + sql.append(" AND TF.TRAMO_ID = TR.TRAMO_ID"); + sql.append(" AND TF.STATUSTARIFA = 'A'"); + sql.append(" AND TF.ACTIVO = 1"); + sql.append(" AND TR.ORIGEN_ID = CR.ORIGEN_ID"); + sql.append(" AND TR.DESTINO_ID = CR.DESTINO_ID"); + sql.append(" AND TF.VIGENCIATARIFA_ID = VT.VIGENCIATARIFA_ID"); + sql.append(" AND VT.ACTIVO = 1"); + sql.append(" AND CR.FECCORRIDA BETWEEN VT.FECINICIOVIGENCIA AND"); + sql.append(" VT.FECFINVIGENCIA) /"); + sql.append(" (SELECT SUM(BO.PRECIOPAGADO + BO.IMPORTEPEDAGIO +"); + sql.append(" BO.IMPORTESEGURO + BO.IMPORTETAXAEMBARQUE) RECEITA"); + sql.append(" FROM BOLETO BO"); + sql.append(" WHERE BO.CORRIDA_ID = :CORRIDA_ID"); + sql.append(" AND BO.FECCORRIDA = :FECCORRIDA"); + sql.append(" AND BO.ACTIVO = 1"); + sql.append(" AND BO.INDREIMPRESION = 0"); + sql.append(" AND BO.INDSTATUSOPERACION = 'F'"); + sql.append(" AND (BO.MOTIVOCANCELACION_ID IS NULL OR"); + sql.append(" BO.MOTIVOCANCELACION_ID = 0)),"); + sql.append(" 0) VALOR"); + sql.append(" FROM DUAL"); + + return sql.toString(); + } + + protected String getSqlIndicadorPax() { + StringBuilder sql = new StringBuilder(); + sql.append(" SELECT (TAB1.EQUIVALENTE * TAB1.EXTENSAO_LINHA) "); + sql.append(" VALOR"); + sql.append(" FROM (SELECT TAB.*,"); + sql.append(" (SELECT SUM((TR.CANTKMREAL / TAB.EXTENSAO_LINHA) *"); + sql.append(" COUNT(1))"); + sql.append(" FROM CORRIDA CR,"); + sql.append(" CORRIDA_TRAMO CT,"); + sql.append(" TRAMO TR,"); + sql.append(" BOLETO BO,"); + sql.append(" CORRIDA_TRAMO CTD,"); + sql.append(" CORRIDA_TRAMO CTO"); + sql.append(" WHERE CR.CORRIDA_ID = :CORRIDA_ID"); + sql.append(" AND CR.FECCORRIDA = :FECCORRIDA"); + sql.append(" AND CT.FECCORRIDA = CR.FECCORRIDA"); + sql.append(" AND CT.CORRIDA_ID = CR.CORRIDA_ID"); + sql.append(" AND TR.TRAMO_ID = CT.TRAMO_ID"); + sql.append(" AND BO.CORRIDA_ID = CT.CORRIDA_ID"); + sql.append(" AND BO.FECCORRIDA = CT.FECCORRIDA"); + sql.append(" AND BO.ORIGEN_ID = CTO.ORIGEN_ID"); + sql.append(" AND BO.DESTINO_ID = CTD.DESTINO_ID"); + sql.append(" AND CTD.CORRIDA_ID = CT.CORRIDA_ID"); + sql.append(" AND CTD.FECCORRIDA = CT.FECCORRIDA"); + sql.append(" AND CTO.CORRIDA_ID = CT.CORRIDA_ID"); + sql.append(" AND CTO.FECCORRIDA = CT.FECCORRIDA"); + sql.append(" AND CTO.ACTIVO = 1"); + sql.append(" AND CTD.ACTIVO = 1"); + sql.append(" AND CT.NUMSECUENCIA BETWEEN CTO.NUMSECUENCIA AND"); + sql.append(" CTD.NUMSECUENCIA"); + sql.append(" AND BO.ACTIVO = 1"); + sql.append(" AND BO.INDREIMPRESION = 0"); + sql.append(" AND BO.INDSTATUSOPERACION = 'F'"); + sql.append(" AND (BO.MOTIVOCANCELACION_ID IS NULL OR"); + sql.append(" BO.MOTIVOCANCELACION_ID = 0)"); + sql.append(" GROUP BY CT.TRAMO_ID, TR.CANTKMREAL) EQUIVALENTE"); + sql.append(" FROM (SELECT (SELECT SUM(TR1.CANTKMREAL)"); + sql.append(" FROM CORRIDA_TRAMO CT1, TRAMO TR1"); + sql.append(" WHERE CT1.CORRIDA_ID = :CORRIDA_ID"); + sql.append(" AND CT1.FECCORRIDA = :FECCORRIDA"); + sql.append(" AND TR1.TRAMO_ID = CT1.TRAMO_ID) EXTENSAO_LINHA"); + sql.append(" "); + sql.append(" FROM DUAL) TAB) TAB1"); + + return sql.toString(); + + } + + protected String getSqlIndicadorIap() { + StringBuilder sql = new StringBuilder(); + sql.append(" SELECT (TAB1.EQUIVALENTE * TAB1.EXTENSAO_LINHA) /"); + sql.append(" (TAB1.CAPACIDADE * TAB1.EXTENSAO_LINHA) VALOR"); + sql.append(" FROM (SELECT TAB.*,"); + sql.append(" (SELECT SUM((TR.CANTKMREAL / TAB.EXTENSAO_LINHA) *"); + sql.append(" COUNT(1))"); + sql.append(" FROM CORRIDA CR,"); + sql.append(" CORRIDA_TRAMO CT,"); + sql.append(" TRAMO TR,"); + sql.append(" BOLETO BO,"); + sql.append(" CORRIDA_TRAMO CTD,"); + sql.append(" CORRIDA_TRAMO CTO"); + sql.append(" WHERE CR.CORRIDA_ID = :CORRIDA_ID"); + sql.append(" AND CR.FECCORRIDA = :FECCORRIDA"); + sql.append(" AND CT.FECCORRIDA = CR.FECCORRIDA"); + sql.append(" AND CT.CORRIDA_ID = CR.CORRIDA_ID"); + sql.append(" AND TR.TRAMO_ID = CT.TRAMO_ID"); + sql.append(" AND BO.CORRIDA_ID = CT.CORRIDA_ID"); + sql.append(" AND BO.FECCORRIDA = CT.FECCORRIDA"); + sql.append(" AND BO.ORIGEN_ID = CTO.ORIGEN_ID"); + sql.append(" AND BO.DESTINO_ID = CTD.DESTINO_ID"); + sql.append(" AND CTD.CORRIDA_ID = CT.CORRIDA_ID"); + sql.append(" AND CTD.FECCORRIDA = CT.FECCORRIDA"); + sql.append(" AND CTO.CORRIDA_ID = CT.CORRIDA_ID"); + sql.append(" AND CTO.FECCORRIDA = CT.FECCORRIDA"); + sql.append(" AND CTO.ACTIVO = 1"); + sql.append(" AND CTD.ACTIVO = 1"); + sql.append(" AND CT.NUMSECUENCIA BETWEEN CTO.NUMSECUENCIA AND"); + sql.append(" CTD.NUMSECUENCIA"); + sql.append(" AND BO.ACTIVO = 1"); + sql.append(" AND BO.INDREIMPRESION = 0"); + sql.append(" AND BO.INDSTATUSOPERACION = 'F'"); + sql.append(" AND (BO.MOTIVOCANCELACION_ID IS NULL OR"); + sql.append(" BO.MOTIVOCANCELACION_ID = 0)"); + sql.append(" GROUP BY CT.TRAMO_ID, TR.CANTKMREAL) EQUIVALENTE"); + sql.append(" FROM (SELECT (SELECT SUM(TR1.CANTKMREAL)"); + sql.append(" FROM CORRIDA_TRAMO CT1, TRAMO TR1"); + sql.append(" WHERE CT1.CORRIDA_ID = :CORRIDA_ID"); + sql.append(" AND CT1.FECCORRIDA = :FECCORRIDA"); + sql.append(" AND TR1.TRAMO_ID = CT1.TRAMO_ID) EXTENSAO_LINHA,"); + sql.append(" "); + sql.append(" (SELECT DA.CANTASIENTOS"); + sql.append(" FROM CORRIDA CR,"); + sql.append(" ROL_OPERATIVO RO,"); + sql.append(" DIAGRAMA_AUTOBUS DA"); + sql.append(" WHERE CR.CORRIDA_ID = :CORRIDA_ID"); + sql.append(" AND CR.FECCORRIDA = :FECCORRIDA"); + sql.append(" AND RO.ROLOPERATIVO_ID = CR.ROLOPERATIVO_ID"); + sql.append(" AND RO.DIAGRAMAAUTOBUS_ID ="); + sql.append(" DA.DIAGRAMAAUTOBUS_ID) CAPACIDADE"); + sql.append(" "); + sql.append(" FROM DUAL) TAB) TAB1"); + + return sql.toString(); + + } + + protected String getSqlIndicadorReceitaKm() { + StringBuilder sql = new StringBuilder(); + sql.append(" SELECT (RECEITA / (SELECT SUM(TR1.CANTKMREAL) "); + sql.append(" FROM CORRIDA_TRAMO CT1, TRAMO TR1 "); + sql.append(" WHERE CT1.CORRIDA_ID = :CORRIDA_ID "); + sql.append(" AND CT1.FECCORRIDA = :FECCORRIDA "); + sql.append(" AND TR1.TRAMO_ID = CT1.TRAMO_ID)) VALOR "); + sql.append(" FROM (SELECT SUM(BO.PRECIOPAGADO + BO.IMPORTEPEDAGIO + BO.IMPORTESEGURO + "); + sql.append(" BO.IMPORTETAXAEMBARQUE) RECEITA "); + sql.append(" FROM BOLETO BO "); + sql.append(" WHERE BO.CORRIDA_ID = :CORRIDA_ID "); + sql.append(" AND BO.FECCORRIDA = :FECCORRIDA "); + sql.append(" AND BO.ACTIVO = 1 "); + sql.append(" AND BO.INDREIMPRESION = 0 "); + sql.append(" AND BO.INDSTATUSOPERACION = 'F' "); + sql.append(" AND (BO.MOTIVOCANCELACION_ID IS NULL OR "); + sql.append(" BO.MOTIVOCANCELACION_ID = 0)) RC "); + + return sql.toString(); + + } + + protected String getSqlIndicadorReceitaViagem() { + StringBuilder sql = new StringBuilder(); + + sql.append("SELECT SUM(BO.PRECIOPAGADO + BO.IMPORTEPEDAGIO + BO.IMPORTESEGURO + "); + sql.append(" BO.IMPORTETAXAEMBARQUE) VALOR "); + sql.append(" FROM BOLETO BO "); + sql.append(" WHERE BO.CORRIDA_ID = :CORRIDA_ID "); + sql.append(" AND BO.FECCORRIDA = :FECCORRIDA "); + sql.append(" AND BO.ACTIVO = 1 "); + sql.append(" AND BO.INDREIMPRESION = 0 "); + sql.append(" AND BO.INDSTATUSOPERACION = 'F' "); + sql.append(" AND (BO.MOTIVOCANCELACION_ID IS NULL OR "); + sql.append(" BO.MOTIVOCANCELACION_ID = 0) "); + + return sql.toString(); + + } + + protected String getSqlIndicadorEquivalentes() { + /* O calculo do MPE não leva em consideração a quantidade de viagens conforme formula, uma vez que o detalhemtno do relatório já é por viagem */ + StringBuilder sql = new StringBuilder(); + sql.append(" SELECT SUM((TR.CANTKMREAL/EL.EXTENSAO_LINHA ) * COUNT(1)) VALOR "); + sql.append(" FROM CORRIDA CR, "); + sql.append(" CORRIDA_TRAMO CT, "); + sql.append(" TRAMO TR, "); + sql.append(" BOLETO BO, "); + sql.append(" CORRIDA_TRAMO CTD, "); + sql.append(" CORRIDA_TRAMO CTO, "); + sql.append(" (SELECT SUM(TR1.CANTKMREAL) EXTENSAO_LINHA "); + sql.append(" FROM CORRIDA_TRAMO CT1, TRAMO TR1 "); + sql.append(" WHERE CT1.CORRIDA_ID = :CORRIDA_ID "); + sql.append(" AND CT1.FECCORRIDA = :FECCORRIDA "); + sql.append(" AND TR1.TRAMO_ID = CT1.TRAMO_ID) EL "); + sql.append(" WHERE CR.CORRIDA_ID = :CORRIDA_ID "); + sql.append(" AND CR.FECCORRIDA = :FECCORRIDA "); + sql.append(" AND CT.FECCORRIDA = CR.FECCORRIDA "); + sql.append(" AND CT.CORRIDA_ID = CR.CORRIDA_ID "); + sql.append(" AND TR.TRAMO_ID = CT.TRAMO_ID "); + sql.append(" AND BO.CORRIDA_ID = CT.CORRIDA_ID "); + sql.append(" AND BO.FECCORRIDA = CT.FECCORRIDA "); + sql.append(" AND BO.ORIGEN_ID = CTO.ORIGEN_ID "); + sql.append(" AND BO.DESTINO_ID = CTD.DESTINO_ID "); + sql.append(" AND CTD.CORRIDA_ID = CT.CORRIDA_ID "); + sql.append(" AND CTD.FECCORRIDA = CT.FECCORRIDA "); + sql.append(" AND CTO.CORRIDA_ID = CT.CORRIDA_ID "); + sql.append(" AND CTO.FECCORRIDA = CT.FECCORRIDA "); + sql.append(" AND CTO.ACTIVO = 1 "); + sql.append(" AND CTD.ACTIVO = 1 "); + sql.append(" AND CT.NUMSECUENCIA BETWEEN CTO.NUMSECUENCIA AND CTD.NUMSECUENCIA "); + sql.append(" AND BO.ACTIVO = 1 "); + sql.append(" AND BO.INDREIMPRESION = 0 "); + sql.append(" AND BO.INDSTATUSOPERACION = 'F' "); + sql.append(" AND (BO.MOTIVOCANCELACION_ID IS NULL OR BO.MOTIVOCANCELACION_ID = 0) "); + sql.append(" GROUP BY CT.TRAMO_ID, TR.CANTKMREAL, EL.EXTENSAO_LINHA "); + + return sql.toString(); + + } + protected String getSqlIndicadorAbsoluto() { StringBuilder sql = new StringBuilder(); diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioAcompanhamentoEquivalentes_pt_BR.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioAcompanhamentoEquivalentes_pt_BR.properties new file mode 100644 index 000000000..1917da802 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioAcompanhamentoEquivalentes_pt_BR.properties @@ -0,0 +1,8 @@ +#geral +msg.noData=Não foi possivel obter dados com os parâmetros informados. + +#Labels cabeçalho +cabecalho.relatorio=Relatório: +cabecalho.servico=Serviço: +cabecalho.data=Data: + diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAcompanhamentoEquivalentes.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAcompanhamentoEquivalentes.jasper index 0e6c70aea..19d3f0108 100644 Binary files a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAcompanhamentoEquivalentes.jasper and b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAcompanhamentoEquivalentes.jasper differ diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAcompanhamentoEquivalentes.jrxml b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAcompanhamentoEquivalentes.jrxml index 2d8367cf5..8db31465f 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAcompanhamentoEquivalentes.jrxml +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAcompanhamentoEquivalentes.jrxml @@ -1,8 +1,8 @@ - - + +