diff --git a/pom.xml b/pom.xml index 9c8b5876c..e95f8c20a 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 br.com.rjconsultores ventaboletosadm - 1.86.1 + 1.86.2 war diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioW2ITaxaEmbarqueAnalitico.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioW2ITaxaEmbarqueAnalitico.java index 48cafb12d..acbea4ece 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioW2ITaxaEmbarqueAnalitico.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioW2ITaxaEmbarqueAnalitico.java @@ -21,7 +21,6 @@ import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; public class RelatorioW2ITaxaEmbarqueAnalitico extends Relatorio { private List lsDadosRelatorio; - public RelatorioW2ITaxaEmbarqueAnalitico(Map parametros, Connection conexao) throws Exception { super(parametros, conexao); @@ -32,10 +31,16 @@ public class RelatorioW2ITaxaEmbarqueAnalitico extends Relatorio { Connection conexao = this.relatorio.getConexao(); Map parametros = this.relatorio.getParametros(); String puntosVentaIds = (String) parametros.get("NUMPUNTOVENTA"); - puntosVentaIds = StringUtils.replace(puntosVentaIds, ",", "','"); + List puntosVentaIdsList = new ArrayList<>(); + for (String id : puntosVentaIds.split(",")) { + puntosVentaIdsList.add(Integer.parseInt(id)); + } lsDadosRelatorio = new ArrayList(); - - String sql = getSql(puntosVentaIds); + Integer empresaID = (Integer) parametros.get("EMPRESA_ID"); + Integer origemID = (Integer) parametros.get("ORIGEN_ID"); + Integer destinoID = (Integer) parametros.get("DESTINO_ID"); + + String sql = getSql(puntosVentaIdsList.size(), empresaID, origemID, destinoID); NamedParameterStatement stmt = new NamedParameterStatement(conexao, sql); @@ -44,26 +49,22 @@ public class RelatorioW2ITaxaEmbarqueAnalitico extends Relatorio { java.sql.Date dataInicial = new java.sql.Date(DateUtil.normalizarToFecha((Date) parametros.get("DATA_INICIAL")).getTime()); java.sql.Date dataFinal = new java.sql.Date(DateUtil.normalizarToFecha((Date) parametros.get("DATA_FINAL")).getTime()); - stmt.setDate("DATA_INICIAL", dataInicial); - stmt.setDate("DATA_FINAL", dataFinal); + stmt.setDate(":DATA_INICIAL", dataInicial); + stmt.setDate(":DATA_FINAL", dataFinal); - stmt.setDate("DATA_INICIAL_CANCEL",dataInicial); - stmt.setDate("DATA_FINAL_CANCEL", dataFinal); + if (empresaID != null) + stmt.setInt(":EMPRESA_ID", empresaID); + if (origemID != null) + stmt.setInt(":ORIGEN_ID", origemID); + if (destinoID != null) + stmt.setInt(":ORIGEN_ID", destinoID); + + int paramIndex = 0; + for (Integer id : puntosVentaIdsList) { + stmt.setInt(":PUNTO_VENTA_"+paramIndex, id); + paramIndex++; + } - if (parametros.get("EMPRESA_ID") != null) - stmt.setInt("EMPRESA_ID", (Integer) parametros.get("EMPRESA_ID")); - else - stmt.setNull("EMPRESA_ID", java.sql.Types.INTEGER); - - if (parametros.get("ORIGEN_ID") != null && parametros.get("ORIGEN_ID") != "" && ((Integer) parametros.get("ORIGEN_ID") != -1)) - stmt.setInt("ORIGEN_ID", (Integer) parametros.get("ORIGEN_ID")); - else - stmt.setNull("ORIGEN_ID", java.sql.Types.INTEGER); - - if (parametros.get("DESTINO_ID") != null && parametros.get("DESTINO_ID") != "" && ((Integer) parametros.get("DESTINO_ID") != -1)) - stmt.setInt("DESTINO_ID", (Integer) parametros.get("DESTINO_ID")); - else - stmt.setNull("DESTINO_ID", java.sql.Types.INTEGER); rset = stmt.executeQuery(); @@ -104,7 +105,7 @@ public class RelatorioW2ITaxaEmbarqueAnalitico extends Relatorio { protected void processaParametros() throws Exception { } - private String getSql(String puntosVentaIds) { + private String getSql(int numPuntosVentaIds, Integer empresaID, Integer origemID ,Integer destinoID) { StringBuilder sql = new StringBuilder(); sql.append("SELECT DISTINCT "); sql.append("em.empresa_id AS empresaId, "); @@ -127,15 +128,16 @@ public class RelatorioW2ITaxaEmbarqueAnalitico extends Relatorio { sql.append("INNER JOIN parada pd ON pd.parada_id=b.destino_id "); sql.append("INNER JOIN CIUDAD co ON co.ciudad_id=po.ciudad_id "); sql.append("INNER JOIN CIUDAD cd ON cd.ciudad_id=pd.ciudad_id "); - sql.append("WHERE TO_DATE(sx.DATAVENDA ,'ddMMyyyy') BETWEEN :DATA_INICIAL AND :DATA_FINAL "); + sql.append("WHERE b.fechorventa BETWEEN :DATA_INICIAL AND :DATA_FINAL "); sql.append("AND sx.ACTIVO = 1 "); - sql.append("AND em.empresa_id = COALESCE(:EMPRESA_ID, em.empresa_id) "); - sql.append("AND po.parada_id = COALESCE(:ORIGEN_ID, po.parada_id) "); - sql.append("AND pd.parada_id = COALESCE(:DESTINO_ID, pd.parada_id) "); + if(empresaID != null) + sql.append("AND em.empresa_id = :EMPRESA_ID "); + if(origemID != null) + sql.append("AND po.parada_id = :ORIGEN_ID "); + if(destinoID != null) + sql.append("AND pd.parada_id = :DESTINO_ID "); - if (!puntosVentaIds.contains("-1")) { - sql.append(" AND pv.puntoventa_id IN ('" + puntosVentaIds + "') "); - } + gerarBindPuntoVenta(numPuntosVentaIds, sql); sql.append(" UNION "); @@ -160,19 +162,34 @@ public class RelatorioW2ITaxaEmbarqueAnalitico extends Relatorio { sql.append("INNER JOIN parada pd ON pd.parada_id=b.destino_id "); sql.append("INNER JOIN CIUDAD co ON co.ciudad_id=po.ciudad_id "); sql.append("INNER JOIN CIUDAD cd ON cd.ciudad_id=pd.ciudad_id "); - sql.append("WHERE TO_DATE(sx.DATACANCELAMENTO ,'ddMMyy') BETWEEN :DATA_INICIAL_CANCEL AND :DATA_FINAL_CANCEL "); + sql.append("WHERE b.fechorventa BETWEEN :DATA_INICIAL AND :DATA_FINAL "); sql.append("AND sx.ACTIVO = 1 "); - sql.append("AND em.empresa_id = COALESCE(:EMPRESA_ID, em.empresa_id) "); - sql.append("AND po.parada_id = COALESCE(:ORIGEN_ID, po.parada_id) "); - sql.append("AND pd.parada_id = COALESCE(:DESTINO_ID, pd.parada_id) "); + if(empresaID != null) + sql.append("AND em.empresa_id = :EMPRESA_ID "); + if(origemID != null) + sql.append("AND po.parada_id = :ORIGEN_ID "); + if(destinoID != null) + sql.append("AND pd.parada_id = :DESTINO_ID "); - if (!puntosVentaIds.contains("-1")) { - sql.append(" AND pv.puntoventa_id IN ('" + puntosVentaIds + "') "); - } + gerarBindPuntoVenta(numPuntosVentaIds, sql); sql.append("ORDER BY dataVenda ASC "); return sql.toString(); + } + + private void gerarBindPuntoVenta(int numPuntosVentaIds, StringBuilder sql) { + if (numPuntosVentaIds > 0) { + sql.append("AND b.puntoventa_id IN ("); + int i; + for (i = 0; i < numPuntosVentaIds; i++) { + if (i > 0) { + sql.append(", "); + } + sql.append(":PUNTO_VENTA_"+i); + } + sql.append(") "); + } }; }