diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioLinhasHorario.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioLinhasHorario.java index 272273e04..01c323e54 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioLinhasHorario.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioLinhasHorario.java @@ -15,6 +15,7 @@ import com.rjconsultores.ventaboletos.entidad.Corrida; import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.entidad.GrupoRuta; import com.rjconsultores.ventaboletos.entidad.Ruta; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.DataSource; import com.rjconsultores.ventaboletos.relatorios.utilitarios.ProcessadorParametros; import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; import com.rjconsultores.ventaboletos.relatorios.utilitarios.RelatorioLinhasHorarioBean; @@ -27,9 +28,9 @@ public class RelatorioLinhasHorario extends Relatorio { public RelatorioLinhasHorario(Map parametros, Connection conexao) throws Exception { super(parametros, conexao); - this.setProcessadorParametros(new ProcessadorParametros(this) { + this.setCustomDataSource(new DataSource(this) { @Override - public void processaParametros() throws Exception { + public void initDados() throws Exception { Connection conexao = this.relatorio.getConexao(); @@ -75,6 +76,8 @@ public class RelatorioLinhasHorario extends Relatorio { Integer tipoServico = (Integer) parametros.get("TIPOSERVICIO_ID"); String sql = getSql(lsNumLinha, lsNumServico, empresa, tipoServico, grupoRuta); + System.out.println(sql); + NamedParameterStatement stmt = new NamedParameterStatement(conexao, sql); ResultSet rset = null; @@ -146,6 +149,7 @@ public class RelatorioLinhasHorario extends Relatorio { horarioBean.setOrigem((String) rset.getObject("ORIGEM")); horarioBean.setDestino((String) rset.getObject("DESTINO")); + horarioBean.setSomaExtensaoTrecho((BigDecimal) rset.getObject("EXTENSAO_TRECHO")); horarioBean = trecho(horarioBean); horarioBean = calcTotal(horarioBean); @@ -211,13 +215,13 @@ public class RelatorioLinhasHorario extends Relatorio { parametros.put("TOTAL_KM_RODADO", totalKmRodado); parametros.put("TOTAL_ABSOLUTO", totalAbsoluto); parametros.put("TOTAL_EQUIVALENTE", totalEquivalente); - parametros.put("MEDIA_MPA", mediaMPA.divide(qtdeRegistros, RoundingMode.HALF_EVEN)); - parametros.put("MEDIA_MPE", mediaMPE.divide(qtdeRegistros, RoundingMode.HALF_EVEN)); - parametros.put("MEDIA_RS_POR_KM", mediaRsPorKm.divide(qtdeRegistros, RoundingMode.HALF_EVEN)); + parametros.put("MEDIA_MPA", mediaMPA.divide(qtdeRegistros, 2, RoundingMode.HALF_EVEN)); + parametros.put("MEDIA_MPE", mediaMPE.divide(qtdeRegistros, 2, RoundingMode.HALF_EVEN)); + parametros.put("MEDIA_RS_POR_KM", mediaRsPorKm.divide(qtdeRegistros, 2, RoundingMode.HALF_EVEN)); parametros.put("TOTAL_EQ", totalEQ); parametros.put("TOTAL_TX_EMBARQUE", totalTxEmbarque); parametros.put("TOTAL_PEDAGIO", totalPedagio); - parametros.put("MEDIA_RS_POR_VIAGEM", mediaRSPorViagem.divide(qtdeRegistros, RoundingMode.HALF_EVEN)); + parametros.put("MEDIA_RS_POR_VIAGEM", mediaRSPorViagem.divide(qtdeRegistros, 2, RoundingMode.HALF_EVEN)); parametros.put("TOTAL_PAX_KM_OFERTADO", totalPaxKMOfertado); parametros.put("TOTAL_PAX_KM_TRANSPORTADO", totalPaxKMTransportado); parametros.put("TOTAL_IAP", totalIAP); @@ -253,7 +257,7 @@ public class RelatorioLinhasHorario extends Relatorio { private RelatorioLinhasHorarioBean calcMediaReceitaTotal(RelatorioLinhasHorarioBean horarioBean) { BigDecimal mediaTotal = horarioBean.getPassagens().add(horarioBean.getSeguro()); mediaTotal = mediaTotal.add(horarioBean.getBagagens()); - mediaTotal = mediaTotal.divide(new BigDecimal(3), RoundingMode.CEILING); + mediaTotal = mediaTotal.divide(new BigDecimal(3), 2, RoundingMode.HALF_EVEN); horarioBean.setMediaReceitaViagem(mediaTotal); return horarioBean; } @@ -273,13 +277,11 @@ public class RelatorioLinhasHorario extends Relatorio { private RelatorioLinhasHorarioBean calcEquivalente(RelatorioLinhasHorarioBean horarioBean) { BigDecimal equivalente = new BigDecimal(0); try { - equivalente = horarioBean.getExtensao().divide(horarioBean.getExtensao(), RoundingMode.CEILING); - equivalente = equivalente.multiply(horarioBean.getAbsol()); - + equivalente = horarioBean.getSomaExtensaoTrecho().divide(horarioBean.getExtensao(), 2, RoundingMode.HALF_EVEN); } catch (ArithmeticException e) { - equivalente = new BigDecimal(0); + equivalente = BigDecimal.ZERO; } catch (NullPointerException nex) { - equivalente = new BigDecimal(0); + equivalente = BigDecimal.ZERO; } catch (Exception ex) { ex.printStackTrace(); } @@ -291,11 +293,11 @@ public class RelatorioLinhasHorario extends Relatorio { private RelatorioLinhasHorarioBean calcMpa(RelatorioLinhasHorarioBean horarioBean) { BigDecimal mpa = new BigDecimal(0); try { - mpa = horarioBean.getAbsol().divide(horarioBean.getTotalViagem(), RoundingMode.CEILING); + mpa = horarioBean.getAbsol().divide(horarioBean.getTotalViagem(), 2, RoundingMode.HALF_EVEN); } catch (ArithmeticException e) { - mpa = new BigDecimal(0); + mpa = BigDecimal.ZERO; } catch (NullPointerException nex) { - mpa = new BigDecimal(0); + mpa = BigDecimal.ZERO; } catch (Exception ex) { ex.printStackTrace(); } @@ -304,14 +306,13 @@ public class RelatorioLinhasHorario extends Relatorio { } private RelatorioLinhasHorarioBean calcMpe(RelatorioLinhasHorarioBean horarioBean) { - BigDecimal mpe = horarioBean.getEquivalente().divide(horarioBean.getTotalViagem(), RoundingMode.CEILING); + BigDecimal mpe = horarioBean.getEquivalente().divide(horarioBean.getTotalViagem(), 2, RoundingMode.HALF_EVEN); horarioBean.setMpe(mpe); return horarioBean; } private RelatorioLinhasHorarioBean calcRsKm(RelatorioLinhasHorarioBean horarioBean) { - BigDecimal rsKm = horarioBean.getTotal().divide(horarioBean.getTotalViagem(), RoundingMode.CEILING); - rsKm = rsKm.multiply(horarioBean.getExtensao()); + BigDecimal rsKm = horarioBean.getTotal().divide(horarioBean.getKmRodado(), 2, RoundingMode.HALF_EVEN); horarioBean.setRsKm(rsKm); return horarioBean; } @@ -319,11 +320,11 @@ public class RelatorioLinhasHorario extends Relatorio { private RelatorioLinhasHorarioBean calcEq(RelatorioLinhasHorarioBean horarioBean) { BigDecimal eq = null; try { - eq = horarioBean.getMediaReceitaViagem().divide(horarioBean.getTarifa(), RoundingMode.CEILING); + eq = horarioBean.getMediaReceitaViagem().divide(horarioBean.getTarifa(), 2, RoundingMode.HALF_EVEN); } catch (ArithmeticException e) { - eq = new BigDecimal(0); + eq = BigDecimal.ZERO; } catch (NullPointerException nex) { - eq = new BigDecimal(0); + eq = BigDecimal.ZERO; } catch (Exception ex) { ex.printStackTrace(); } @@ -332,7 +333,7 @@ public class RelatorioLinhasHorario extends Relatorio { } private RelatorioLinhasHorarioBean calcRsViagem(RelatorioLinhasHorarioBean horarioBean) { - BigDecimal RSViagem = horarioBean.getTotal().divide(horarioBean.getTotalViagem(), RoundingMode.CEILING); + BigDecimal RSViagem = horarioBean.getTotal().divide(horarioBean.getTotalViagem(), 2, RoundingMode.HALF_EVEN); horarioBean.setRsViagem(RSViagem); return horarioBean; } @@ -352,12 +353,13 @@ public class RelatorioLinhasHorario extends Relatorio { private RelatorioLinhasHorarioBean calcIap(RelatorioLinhasHorarioBean horarioBean) { BigDecimal iap = null; + BigDecimal CENTO = BigDecimal.TEN.multiply(BigDecimal.TEN); try { - iap = horarioBean.getPaxKmTransportado().divide(horarioBean.getPaxKmOfertado(), 4, RoundingMode.HALF_EVEN); + iap = (horarioBean.getPaxKmTransportado().multiply(CENTO)).divide(horarioBean.getPaxKmOfertado(), 2, RoundingMode.HALF_EVEN); } catch (ArithmeticException e) { - iap = new BigDecimal(0); + iap = BigDecimal.ZERO; } catch (NullPointerException nex) { - iap = new BigDecimal(0); + iap = BigDecimal.ZERO; } catch (Exception ex) { ex.printStackTrace(); } @@ -367,14 +369,13 @@ public class RelatorioLinhasHorario extends Relatorio { @Override protected void processaParametros() throws Exception { - this.getProcessadorParametros().processaParametros(); } private String getSql(ArrayList lsNumLinha, ArrayList lsNumServico, Empresa empresa, Integer tipoServico, GrupoRuta grupoRuta) { StringBuffer sql = new StringBuffer(); sql.append(" SELECT R.RUTA_ID, "); - sql.append(" NVL(GR.DESCGRUPO, 'NÃO POSSUI GRUPO') AS GRUPO_RUTA, "); + 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, "); @@ -384,6 +385,7 @@ public class RelatorioLinhasHorario extends Relatorio { sql.append(" ORIGEM.CVEPARADA AS ORIGEM, "); sql.append(" DESTINO.CVEPARADA AS DESTINO, "); sql.append(" EXTENSAO, "); + sql.append(" SUM(NVL(CJ.NUMKMVIAJE, 0)) AS EXTENSAO_TRECHO, "); sql.append(" SUM(NVL(EE.IMPINGRESO, 0)) AS BAGAGENS, "); sql.append(" SUM(NVL(CJ.IMPORTESEGURO, 0)) AS SEGURO, "); sql.append(" SUM(NVL(CJ.IMPORTETAXAEMBARQUE, 0)) AS TX_EMBARQUE, "); @@ -438,7 +440,7 @@ public class RelatorioLinhasHorario extends Relatorio { sql.append(" AND B.MOTIVOCANCELACION_ID IS NULL "); sql.append(" GROUP BY C.CORRIDA_ID) TB4, "); sql.append(" CORRIDA C "); - sql.append(" LEFT JOIN CAJA CJ "); + sql.append(" LEFT JOIN BOLETO CJ "); sql.append(" ON ( CJ.CORRIDA_ID = C.CORRIDA_ID "); sql.append(" AND CJ.FECCORRIDA = C.FECCORRIDA ) "); sql.append(" LEFT JOIN PARADA ORIGEM "); @@ -473,7 +475,7 @@ public class RelatorioLinhasHorario extends Relatorio { sql.append(" ON ( TF.VIGENCIATARIFA_ID = VTF.VIGENCIATARIFA_ID "); sql.append(" AND C.FECCORRIDA BETWEEN VTF.FECINICIOVIGENCIA AND "); sql.append(" VTF.FECFINVIGENCIA ) "); - sql.append(" WHERE CJ.PRECIOBASE > 0 "); + sql.append(" WHERE CJ.INDSTATUSBOLETO != 'S' "); sql.append(" AND CJ.MOTIVOCANCELACION_ID IS NULL "); sql.append(" AND CJ.FECCORRIDA BETWEEN :DATA_INICIO AND :DATA_FINAL "); sql.append(" AND TB1.RUTA_ID = C.RUTA_ID "); @@ -524,7 +526,7 @@ public class RelatorioLinhasHorario extends Relatorio { sql.append(" AND DA.ACTIVO = 1 "); sql.append(" AND CS.ACTIVO = 1 "); sql.append(" GROUP BY R.RUTA_ID, "); - sql.append(" NVL(GR.DESCGRUPO, 'NÃO POSSUI GRUPO'), "); + 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, "); @@ -539,7 +541,7 @@ public class RelatorioLinhasHorario extends Relatorio { sql.append(" CD.ESTADO_ID, "); sql.append(" ORIGEM.CVEPARADA, "); sql.append(" DESTINO.CVEPARADA "); - sql.append(" ORDER BY NVL(GR.DESCGRUPO, 'NÃO POSSUI GRUPO'), "); + sql.append(" ORDER BY NVL(GR.DESCGRUPO, 'Não Definido'), "); sql.append(" C.CORRIDA_ID "); return sql.toString(); diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioLinhasHorario.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioLinhasHorario.jasper index 6eb500273..48eecfdcb 100644 Binary files a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioLinhasHorario.jasper and b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioLinhasHorario.jasper differ diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioLinhasHorario.jrxml b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioLinhasHorario.jrxml index 0a9fccde6..4da189670 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioLinhasHorario.jrxml +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioLinhasHorario.jrxml @@ -1,5 +1,5 @@ - + @@ -1232,4 +1232,13 @@ + + + + + + + + + diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioLinhasHorarioBean.java b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioLinhasHorarioBean.java index dce70e848..c13ff59fb 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioLinhasHorarioBean.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioLinhasHorarioBean.java @@ -40,6 +40,7 @@ public class RelatorioLinhasHorarioBean { private BigDecimal pedagio; private BigDecimal ordLinha; private BigDecimal extraLinha; + private BigDecimal somaExtensaoTrecho; public RelatorioLinhasHorarioBean() { } @@ -345,4 +346,12 @@ public class RelatorioLinhasHorarioBean { public void setExtraLinha(BigDecimal extraLinha) { this.extraLinha = extraLinha; } + + public BigDecimal getSomaExtensaoTrecho() { + return somaExtensaoTrecho; + } + + public void setSomaExtensaoTrecho(BigDecimal somaExtensaoTrecho) { + this.somaExtensaoTrecho = somaExtensaoTrecho; + } }