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(") ");
+ }
};
}