diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioAproveitamentoFinanceiro.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioAproveitamentoFinanceiro.java index 25a8df641..1b2114aee 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioAproveitamentoFinanceiro.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioAproveitamentoFinanceiro.java @@ -34,10 +34,40 @@ public class RelatorioAproveitamentoFinanceiro extends Relatorio { Map parametros = this.relatorio.getParametros(); StringBuilder sql = new StringBuilder(); - - sql.append("select * from ( "); + sql.append(" select TB.*, "); + sql.append(" (SELECT "); + sql.append(" max (TF.PRECIO) "); + sql.append(" FROM "); + sql.append(" CORRIDA CR, "); + sql.append(" TRAMO TR, "); + sql.append(" RUTA_COMBINACION RC, "); + sql.append(" TARIFA TF, "); + sql.append(" VIGENCIA_TARIFA VT "); + sql.append(" WHERE "); + sql.append(" CR.CORRIDA_ID = TB.SERVICO "); + sql.append(" AND CR.FECCORRIDA BETWEEN :DATA_INICIAL and :DATA_FINAL "); + sql.append(" AND CR.RUTA_ID = TB.RUTAID "); + sql.append(" AND CR.RUTA_ID = RC.RUTA_ID AND RC.ACTIVO = 1 "); + sql.append(" AND RC.TRAMO_ID = TR.TRAMO_ID "); + sql.append(" AND TF.TRAMO_ID = TR.TRAMO_ID "); + sql.append(" AND TF.MARCA_ID = CR.MARCA_ID "); + sql.append(" AND TF.RUTA_ID = CR.RUTA_ID "); + sql.append(" AND TF.STATUSTARIFA = 'A' "); + sql.append(" AND CR.ACTIVO <> 0 "); + 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 VT.FECFINVIGENCIA "); + sql.append(" AND TF.CLASESERVICIO_ID = CR.CLASESERVICIO_ID "); + sql.append(" GROUP BY TF.PRECIO) TARIFA "); + sql.append(" from "); + sql.append(" ( "); + sql.append(" select * from ( "); sql.append(" SELECT "); sql.append(" r.DESCRUTA as linha, "); + sql.append(" r.ruta_id as rutaid, "); sql.append(" count( c.caja_id) as passageiros, "); sql.append(" sum( c.PRECIOPAGADO )as valor, "); sql.append(" to_char( c.FECHORVENTA, 'D') as dia, "); @@ -47,8 +77,7 @@ public class RelatorioAproveitamentoFinanceiro extends Relatorio { sql.append(" r.indsentidoida as sentido, "); sql.append(" da.cantasientos as assentos, "); sql.append(" TO_CHAR(co.fechorsalidaoriginal ,'HH24:mi') as horario, "); - sql.append(" c.CORRIDA_ID as servico, "); - sql.append(" max(c.preciobase) as tarifa "); + sql.append(" c.CORRIDA_ID as servico "); sql.append(" FROM CAJA c "); sql.append(" inner join corrida co "); sql.append(" on c.CORRIDA_ID = co.CORRIDA_ID "); @@ -75,7 +104,7 @@ public class RelatorioAproveitamentoFinanceiro extends Relatorio { sql.append(" and c.MOTIVOCANCELACION_ID is null "); sql.append(" and c.INDSTATUSBOLETO = 'V' "); - sql.append(" GROUP by r.DESCRUTA, r.indsentidoida, da.cantasientos, "); + sql.append(" GROUP by r.DESCRUTA, r.ruta_id, r.indsentidoida, da.cantasientos, "); sql.append(" to_char( c.FECHORVENTA, 'D'), TO_CHAR(co.fechorsalidaoriginal ,'HH24:mi'), "); sql.append(" c.CORRIDA_ID "); sql.append(" ORDER by r.DESCRUTA, r.indsentidoida desc, to_char( c.FECHORVENTA, 'D') "); @@ -87,6 +116,7 @@ public class RelatorioAproveitamentoFinanceiro extends Relatorio { sql.append(" max(passageiros) tot "); sql.append(" for dia in ('1', '2', '3', '4', '5', '6', '7') "); sql.append(") "); + sql.append(") TB"); NamedParameterStatement stmt = new NamedParameterStatement(conexao, sql.toString()); @@ -103,6 +133,7 @@ public class RelatorioAproveitamentoFinanceiro extends Relatorio { Map dataResult = new HashMap(); dataResult.put("LINHA", rset.getString("linha")); + Integer linhaId = rset.getInt("rutaId"); dataResult.put("SENTIDO", rset.getString("sentido")); dataResult.put("SERVICO", rset.getString("servico")); dataResult.put("HORARIO", rset.getString("horario")); @@ -216,6 +247,7 @@ public class RelatorioAproveitamentoFinanceiro extends Relatorio { } + private BigDecimal limpaNulo( BigDecimal val ) { if( val == null ) { return BigDecimal.ZERO; @@ -247,7 +279,7 @@ public class RelatorioAproveitamentoFinanceiro extends Relatorio { BigDecimal fin = totReceita.divide(dividendo, 4, BigDecimal.ROUND_HALF_UP); fin = fin.multiply(new BigDecimal(new Long(100L))).setScale(2); - return fin; + return fin !=null ? fin : BigDecimal.ZERO; }else{ return BigDecimal.ZERO; } diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAproveitamentoFinanceiro.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAproveitamentoFinanceiro.jasper index 0a0fea011..5fdb6eaa6 100644 Binary files a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAproveitamentoFinanceiro.jasper and b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAproveitamentoFinanceiro.jasper differ diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAproveitamentoFinanceiro.jrxml b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAproveitamentoFinanceiro.jrxml index 14396e7ba..15acb53df 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAproveitamentoFinanceiro.jrxml +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAproveitamentoFinanceiro.jrxml @@ -1,8 +1,8 @@ - + - +