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>
<groupId>br.com.rjconsultores</groupId>
<artifactId>ventaboletosadm</artifactId>
<version>1.86.1</version>
<version>1.86.2</version>
<packaging>war</packaging>
<properties>

View File

@ -21,7 +21,6 @@ import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
public class RelatorioW2ITaxaEmbarqueAnalitico extends Relatorio {
private List<RelatorioW2IBean> lsDadosRelatorio;
public RelatorioW2ITaxaEmbarqueAnalitico(Map<String, Object> parametros, Connection conexao) throws Exception {
super(parametros, conexao);
@ -32,10 +31,16 @@ public class RelatorioW2ITaxaEmbarqueAnalitico extends Relatorio {
Connection conexao = this.relatorio.getConexao();
Map<String, Object> parametros = this.relatorio.getParametros();
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>();
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(") ");
}
};
}