From b5c8b18b30583ffbd39ffec33aa70d98a8b5fa95 Mon Sep 17 00:00:00 2001 From: "wallace.henrique" Date: Mon, 4 Mar 2024 18:35:42 -0300 Subject: [PATCH] fixes bug#AL-3937 --- pom.xml | 2 +- .../relatorios/impl/RelatorioEstoque.java | 119 +++++++++++++++++- .../ItemReporteControleEstoqueBoletos.java | 16 +++ 3 files changed, 133 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index 1f4c68e6c..1c7a069a7 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 br.com.rjconsultores ventaboletosadm - 1.55.1 + 1.55.2 war diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioEstoque.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioEstoque.java index d9267ab76..efabfe60f 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioEstoque.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioEstoque.java @@ -112,7 +112,7 @@ public class RelatorioEstoque extends Relatorio { item.setDescArticulo(rset2.getObject("descArticulo") != null ? rset2.getBigDecimal("descArticulo").toString(): null); lsEstoque.add(item); } - rset2 = stmt2.executeQuery(); + Map map = new HashMap(); @@ -160,9 +160,51 @@ public class RelatorioEstoque extends Relatorio { } List lsBlocoJaTodoUtilizado = tratarBlocoJaTodoUtilizado(lsTempRetornoAux); - for (ItemReporteControleEstoqueBoletos itemReporteControleEstoqueBoletos : lsBlocoJaTodoUtilizado) { - lsDadosRelatorio.add(itemReporteControleEstoqueBoletos); + + String sqlIncluirEstoqueSeNaoHouverMovimentacao = getIncluirEstoqueSeNaoHouverMovimentacao(); + + NamedParameterStatement stmt3 = new NamedParameterStatement(conexao, sqlIncluirEstoqueSeNaoHouverMovimentacao); + + if(dtInicio != null && dtFim != null) { + stmt3.setString("dataInicio", DateUtil.getStringDate(dtInicio, "dd/MM/yyyy") + " 00:00:00"); + stmt3.setString("dataFinal", DateUtil.getStringDate(dtFim, "dd/MM/yyyy") + " 23:59:59"); + }else if(dtInicio != null) { + stmt3.setString("dataInicio", DateUtil.getStringDate(dtInicio, "dd/MM/yyyy") + " 00:00:00"); } + + ResultSet rset3 = null; + rset3 = stmt3.executeQuery(); + List lsEstoqueNaoUtilizado = new ArrayList<>() ; + List lsEstoqueNaoUtilizadoTemp = new ArrayList<>() ; + while (rset3.next()) { + + ItemReporteControleEstoqueBoletos item = new ItemReporteControleEstoqueBoletos(); + item.setAidfId(rset3.getInt("aidf") > 0 ? rset3.getInt("aidf") : null); + item.setNombEmpresa((String) rset3.getObject("nombEmpresa")); + item.setDescPuntoVenta((String) rset3.getObject("descPuntoVenta")); + item.setNomeEstado((String) rset3.getObject("nomeEstado")); + item.setSerie((String) rset3.getObject("serie")); + item.setTipo((String) rset3.getObject("tipo")); + item.setFolioInicial((String) rset3.getObject("folioInicial")); + item.setFolioFinal((String) rset3.getObject("folioFinal")); + item.setFechorAquisicion((Date) rset3.getObject("dataAquicision")); + item.setFecVencimento((Date) rset3.getObject("dataVencimento")); + item.setDescArticulo((String) rset3.getObject("tipo")); + item.setDescEstacion((String) rset3.getObject("estacao")); + lsEstoqueNaoUtilizado.add(item); + } + + lsEstoqueNaoUtilizadoTemp.addAll(lsBlocoJaTodoUtilizado); + for (ItemReporteControleEstoqueBoletos item : lsEstoqueNaoUtilizado) { + if(lsBlocoJaTodoUtilizado.contains(item)) { + continue; + }else { + lsEstoqueNaoUtilizadoTemp.add(item); + } + } + + lsDadosRelatorio.addAll(lsEstoqueNaoUtilizadoTemp); + setLsDadosRelatorio(lsDadosRelatorio); } }); @@ -562,6 +604,77 @@ public class RelatorioEstoque extends Relatorio { } return lsBlocoJaTodoUtilizado; } + + private String getIncluirEstoqueSeNaoHouverMovimentacao() { + + StringBuilder sql = new StringBuilder(); + sql.append("SELECT ai.fecvencimiento as dataVencimento, ai.fecadquisicion as dataAquicision, dab.aidf_id AS aidf, "); + sql.append(" e.nombempresa as nombEmpresa, "); + sql.append(" p.nombpuntoventa as descPuntoVenta, "); + sql.append(" dab.NUMSERIEPREIMPRESA AS serie, "); + sql.append(" coalesce(es.descestacion, 'Todas') AS estacao, "); + sql.append(" tp.desctipo AS tipo, "); + + sql.append(" ( case "); + sql.append(" when "); + sql.append(" dab.STATUSOPERACION = 0 "); + sql.append(" then "); + sql.append(" dab.NUMFOLIOINICIAL"); + sql.append(" else "); + sql.append(" coalesce(fp.FOLIOPREIMPRESO,dab.NUMFOLIOINICIAL) "); + sql.append(" end ) AS folioInicial,"); + sql.append(" dab.NUMFOLIOFINAL AS folioFinal, "); + sql.append(" CASE "); + sql.append(" WHEN dab.STATUSOPERACION = 1 THEN fp.FOLIOPREIMPRESO "); + sql.append(" ELSE COALESCE( "); + sql.append(" "); + sql.append(" (SELECT TO_CHAR(MAX(c.numfoliopreimpreso)) "); + sql.append(" FROM caja c "); + sql.append(" WHERE (c.numseriepreimpresa = dab.numseriepreimpresa "); + sql.append(" OR (c.numseriepreimpresa IS NULL "); + sql.append(" AND dab.numseriepreimpresa IS NULL)) "); + sql.append(" AND to_number(c.numfoliopreimpreso) BETWEEN dab.numfolioinicial AND dab.numfoliofinal "); + sql.append(" AND (c.indreimpresion = 0 "); + sql.append(" OR (c.indreimpresion = 1 "); + sql.append(" AND c.indstatusboleto = 'E')) "); + sql.append(" AND c.marca_id = m.marca_id), (SELECT to_char(MAX(cd.numfoliopreimpreso)) "); + sql.append(" FROM caja_diversos cd "); + sql.append(" WHERE cd.numseriepreimpresa = dab.numseriepreimpresa AND to_number(cd.numfoliopreimpreso) BETWEEN dab.numfolioinicial AND dab.numfoliofinal ) , dab.NUMFOLIOINICIAL) "); + sql.append(" END AS folioCaja, "); + sql.append(" ar.articulo_id AS tipo,"); + sql.append(" ar.descarticulo, "); + sql.append(" est.nombestado as nomeEstado "); + sql.append(" FROM abasto_boleto ab "); + sql.append(" INNER JOIN det_abasto_boleto dab ON ( dab.abastoboleto_id = ab.abastoboleto_id and dab.ACTIVO = 1 )"); + sql.append(" INNER JOIN aidf ai ON ( ai.aidf_id =dab.aidf_id )"); + sql.append(" INNER JOIN estado est ON ( est.estado_id = ai.ESTADO_ID ) "); + sql.append(" INNER JOIN empresa e ON ( e.empresa_id = ab.empresa_id and ab.ACTIVO = 1 )"); + sql.append(" INNER JOIN punto_venta p ON ( p.puntoventa_id = ab.puntoventa_id and p.ACTIVO = 1 )"); + sql.append(" INNER JOIN ARTICULO ar ON ( ar.ARTICULO_ID = ab.ARTICULO_ID )"); + sql.append(" LEFT JOIN TIPO_PTOVTA tp ON ( tp.TIPOPTOVTA_ID = p.TIPOPTOVTA_ID and tp.ACTIVO = 1 )"); + sql.append(" LEFT JOIN estacion es ON ( es.ESTACION_ID = ab.ESTACION_ID )"); + sql.append(" LEFT JOIN FOLIO_PREIMPRESO fp ON ( fp.AIDF_ID = dab.AIDF_ID and fp.EMPRESA_ID = e.EMPRESA_ID and fp.ESTACION_ID = ab.ESTACION_ID and fp.activo = 1 )"); + sql.append(" LEFT JOIN EMPRESA em ON em.EMPRESA_ID = ab.EMPRESA_ID "); + sql.append(" LEFT JOIN MARCA m ON m.EMPRESA_ID = em.EMPRESA_ID AND m.ACTIVO = 1 "); + + sql.append(" WHERE "); + sql.append(" dab.statusoperacion in (0,1) and dab.activo = 1 and ab.activo = 1 and ai.activo = 1 "); + if (parametros.get("EMPRESA_ID") != null) { + sql.append(" AND e.empresa_id = ").append(parametros.get("EMPRESA_ID")); + } + if (parametros.get("NUMPUNTOVENTA") != null) { + sql.append(" AND ab.puntoventa_id in(").append(parametros.get("NUMPUNTOVENTA")).append(") "); + } + if(parametros.get("DATA_INICIO") != null && parametros.get("DATA_FIM") != null) { + sql.append(" AND fecadquisicion BETWEEN TO_DATE(:dataInicio,'dd/mm/yyyy hh24:mi:ss') AND TO_DATE(:dataFinal,'dd/mm/yyyy hh24:mi:ss') "); + }else if(parametros.get("DATA_INICIO") != null) { + sql.append(" AND fecadquisicion >= TO_DATE(:dataInicio,'dd/mm/yyyy hh24:mi:ss') "); + } + sql.append(" ORDER BY e.nombempresa, p.nombpuntoventa,es.descestacion, ar.descarticulo, forminicial"); + + return sql.toString(); + + } } diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/ItemReporteControleEstoqueBoletos.java b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/ItemReporteControleEstoqueBoletos.java index 91d846312..783fc5b08 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/ItemReporteControleEstoqueBoletos.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/ItemReporteControleEstoqueBoletos.java @@ -2,6 +2,7 @@ package com.rjconsultores.ventaboletos.relatorios.utilitarios; import java.math.BigDecimal; import java.util.Date; +import java.util.Objects; public class ItemReporteControleEstoqueBoletos { @@ -181,5 +182,20 @@ public class ItemReporteControleEstoqueBoletos { public void setID(String iD) { ID = iD; } + @Override + public int hashCode() { + return Objects.hash(aidfId); + } + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + ItemReporteControleEstoqueBoletos other = (ItemReporteControleEstoqueBoletos) obj; + return Objects.equals(aidfId, other.aidfId); + } }