fixes bug#AL-4410

master
celio.souza 2024-06-19 21:32:44 -03:00
parent f9943189cb
commit ae6f076992
2 changed files with 55 additions and 38 deletions

View File

@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>br.com.rjconsultores</groupId> <groupId>br.com.rjconsultores</groupId>
<artifactId>ventaboletosadm</artifactId> <artifactId>ventaboletosadm</artifactId>
<version>1.86.1</version> <version>1.86.2</version>
<packaging>war</packaging> <packaging>war</packaging>
<properties> <properties>

View File

@ -21,7 +21,6 @@ import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
public class RelatorioW2ITaxaEmbarqueAnalitico extends Relatorio { public class RelatorioW2ITaxaEmbarqueAnalitico extends Relatorio {
private List<RelatorioW2IBean> lsDadosRelatorio; private List<RelatorioW2IBean> lsDadosRelatorio;
public RelatorioW2ITaxaEmbarqueAnalitico(Map<String, Object> parametros, Connection conexao) throws Exception { public RelatorioW2ITaxaEmbarqueAnalitico(Map<String, Object> parametros, Connection conexao) throws Exception {
super(parametros, conexao); super(parametros, conexao);
@ -32,10 +31,16 @@ public class RelatorioW2ITaxaEmbarqueAnalitico extends Relatorio {
Connection conexao = this.relatorio.getConexao(); Connection conexao = this.relatorio.getConexao();
Map<String, Object> parametros = this.relatorio.getParametros(); Map<String, Object> parametros = this.relatorio.getParametros();
String puntosVentaIds = (String) parametros.get("NUMPUNTOVENTA"); String puntosVentaIds = (String) parametros.get("NUMPUNTOVENTA");
puntosVentaIds = StringUtils.replace(puntosVentaIds, ",", "','"); List<Integer> puntosVentaIdsList = new ArrayList<>();
for (String id : puntosVentaIds.split(",")) {
puntosVentaIdsList.add(Integer.parseInt(id));
}
lsDadosRelatorio = new ArrayList<RelatorioW2IBean>(); lsDadosRelatorio = new ArrayList<RelatorioW2IBean>();
Integer empresaID = (Integer) parametros.get("EMPRESA_ID");
Integer origemID = (Integer) parametros.get("ORIGEN_ID");
Integer destinoID = (Integer) parametros.get("DESTINO_ID");
String sql = getSql(puntosVentaIds); String sql = getSql(puntosVentaIdsList.size(), empresaID, origemID, destinoID);
NamedParameterStatement stmt = new NamedParameterStatement(conexao, sql); 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 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()); java.sql.Date dataFinal = new java.sql.Date(DateUtil.normalizarToFecha((Date) parametros.get("DATA_FINAL")).getTime());
stmt.setDate("DATA_INICIAL", dataInicial); stmt.setDate(":DATA_INICIAL", dataInicial);
stmt.setDate("DATA_FINAL", dataFinal); stmt.setDate(":DATA_FINAL", dataFinal);
stmt.setDate("DATA_INICIAL_CANCEL",dataInicial); if (empresaID != null)
stmt.setDate("DATA_FINAL_CANCEL", dataFinal); stmt.setInt(":EMPRESA_ID", empresaID);
if (origemID != null)
stmt.setInt(":ORIGEN_ID", origemID);
if (destinoID != null)
stmt.setInt(":ORIGEN_ID", destinoID);
if (parametros.get("EMPRESA_ID") != null) int paramIndex = 0;
stmt.setInt("EMPRESA_ID", (Integer) parametros.get("EMPRESA_ID")); for (Integer id : puntosVentaIdsList) {
else stmt.setInt(":PUNTO_VENTA_"+paramIndex, id);
stmt.setNull("EMPRESA_ID", java.sql.Types.INTEGER); paramIndex++;
}
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(); rset = stmt.executeQuery();
@ -104,7 +105,7 @@ public class RelatorioW2ITaxaEmbarqueAnalitico extends Relatorio {
protected void processaParametros() throws Exception { 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(); StringBuilder sql = new StringBuilder();
sql.append("SELECT DISTINCT "); sql.append("SELECT DISTINCT ");
sql.append("em.empresa_id AS empresaId, "); 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 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 co ON co.ciudad_id=po.ciudad_id ");
sql.append("INNER JOIN CIUDAD cd ON cd.ciudad_id=pd.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 sx.ACTIVO = 1 ");
sql.append("AND em.empresa_id = COALESCE(:EMPRESA_ID, em.empresa_id) "); if(empresaID != null)
sql.append("AND po.parada_id = COALESCE(:ORIGEN_ID, po.parada_id) "); sql.append("AND em.empresa_id = :EMPRESA_ID ");
sql.append("AND pd.parada_id = COALESCE(:DESTINO_ID, pd.parada_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")) { gerarBindPuntoVenta(numPuntosVentaIds, sql);
sql.append(" AND pv.puntoventa_id IN ('" + puntosVentaIds + "') ");
}
sql.append(" UNION "); 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 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 co ON co.ciudad_id=po.ciudad_id ");
sql.append("INNER JOIN CIUDAD cd ON cd.ciudad_id=pd.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 sx.ACTIVO = 1 ");
sql.append("AND em.empresa_id = COALESCE(:EMPRESA_ID, em.empresa_id) "); if(empresaID != null)
sql.append("AND po.parada_id = COALESCE(:ORIGEN_ID, po.parada_id) "); sql.append("AND em.empresa_id = :EMPRESA_ID ");
sql.append("AND pd.parada_id = COALESCE(:DESTINO_ID, pd.parada_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")) { gerarBindPuntoVenta(numPuntosVentaIds, sql);
sql.append(" AND pv.puntoventa_id IN ('" + puntosVentaIds + "') ");
}
sql.append("ORDER BY dataVenda ASC "); sql.append("ORDER BY dataVenda ASC ");
return sql.toString(); 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(") ");
}
}; };
} }