diff --git a/pom.xml b/pom.xml index 7bc57d0c3..9478ca699 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 br.com.rjconsultores ventaboletosadm - 1.54.6 + 1.54.7 war diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioEstoque.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioEstoque.java index ba4c9ac63..0cda99763 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioEstoque.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioEstoque.java @@ -1,89 +1,169 @@ package com.rjconsultores.ventaboletos.relatorios.impl; +import java.math.BigDecimal; import java.sql.Connection; import java.sql.ResultSet; -import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Date; import java.util.HashMap; +import java.util.List; import java.util.Map; -import com.rjconsultores.ventaboletos.enums.EnumTipoVenda; import com.rjconsultores.ventaboletos.relatorios.utilitarios.ArrayDataSource; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.ItemReporteControleEstoqueBoletos; import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; import com.rjconsultores.ventaboletos.utilerias.DateUtil; import com.rjconsultores.ventaboletos.web.utilerias.NamedParameterStatement; +import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; + public class RelatorioEstoque extends Relatorio { + private List lsDadosRelatorio; + public RelatorioEstoque(Map parametros, Connection conexao) throws Exception { super(parametros, conexao); this.setCustomDataSource(new ArrayDataSource(this) { public void initDados() throws Exception { + Connection conexao = this.relatorio.getConexao(); - String sql = getSql(); - - NamedParameterStatement stmt = new NamedParameterStatement(conexao, sql); + Integer empresaId = null; + String puntoVentaId = null; + Date dtInicio = (Date) parametros.get("DATA_INICIO"); Date dtFim = (Date) parametros.get("DATA_FIM"); + + if (parametros.get("EMPRESA_ID") != null) { + empresaId = Integer.valueOf(parametros.get("EMPRESA_ID").toString()); + } + if (parametros.get("NUMPUNTOVENTA") != null) { + puntoVentaId = String.valueOf(parametros.get("NUMPUNTOVENTA")); + } + String sql = retornarItensConsultaPorPuloFolio(puntoVentaId,empresaId, dtInicio, dtFim); + NamedParameterStatement stmt = new NamedParameterStatement(conexao, sql); + if(dtInicio != null && dtFim != null) { stmt.setString("dataInicio", DateUtil.getStringDate(dtInicio, "dd/MM/yyyy") + " 00:00:00"); stmt.setString("dataFinal", DateUtil.getStringDate(dtFim, "dd/MM/yyyy") + " 23:59:59"); }else if(dtInicio != null) { stmt.setString("dataInicio", DateUtil.getStringDate(dtInicio, "dd/MM/yyyy") + " 00:00:00"); } + lsDadosRelatorio = new ArrayList(); + ResultSet rset = null; + rset = stmt.executeQuery(); + List lsEstoquePorSalto = new ArrayList<>(); - - ResultSet rset = stmt.executeQuery(); - while (rset.next()) { - Map dataResult = new HashMap(); - String tipoVenta = rset.getString("tipoVenta"); - String formfinal = rset.getString("formfinal"); - - String formInicio = rset.getString("forminicial"); - - - String ultimoFolioCaja = rset.getString("ultimoFolioCaja"); - - boolean isFormularioMaior = false; - try { - int ultimoFolioCajaInt = Integer.parseInt(ultimoFolioCaja); - int formfinalInt = Integer.parseInt(formfinal); - - if (ultimoFolioCaja != null && ultimoFolioCajaInt > formfinalInt) { - isFormularioMaior = true; - } - - } catch (Exception e) { - } - - if (isFormularioMaior) { - formInicio = formfinal; - } else { - formInicio = ultimoFolioCaja != null ? ultimoFolioCaja : formInicio; - } - - - dataResult.put("dataVencimento", rset.getDate("dataVencimento")); - dataResult.put("dataAquicision", rset.getDate("dataAquicision")); - dataResult.put("aidf", rset.getString("aidf")); - dataResult.put("empresa", rset.getString("nombempresa")); - dataResult.put("estacao", rset.getString("estacao")); - dataResult.put("agencia", rset.getString("nombpuntoventa")); - dataResult.put("serie", rset.getString("serie")); - dataResult.put("forminicio", formInicio); - dataResult.put("formfinal", formfinal); - dataResult.put("estado", rset.getString("nombestado")); - dataResult.put("tipo", rset.getString("tipo")); - - this.dados.add(dataResult); + ItemReporteControleEstoqueBoletos item = new ItemReporteControleEstoqueBoletos(); + item.setAidfId(rset.getInt("aidfId") > 0 ? rset.getInt("aidfId") : null); + item.setNombEmpresa((String) rset.getObject("nombEmpresa")); + item.setNomeEstado((String) rset.getObject("nomeEstado")); + item.setDescPuntoVenta((String) rset.getObject("descPuntoVenta")); + item.setSerie((String) rset.getObject("serie")); + item.setTipo((String) rset.getObject("tipo")); + item.setFolioInicial((String) rset.getObject("folioInicial")); + item.setFolioFinal((String) rset.getString("folioFinal")); + item.setFolioCaja((BigDecimal) rset.getObject("folioCaja")); + item.setArticuloId(rset.getInt("articuloId") > 0 ? rset.getInt("articuloId") : null); + item.setFechorAquisicion((Date) rset.getObject("fechorAquisicion")); + item.setFecVencimento((Date) rset.getObject("fecVencimento")); + item.setID((String) rset.getObject("ID")); + lsEstoquePorSalto.add(item); } this.resultSet = rset; + + + String sqlretornEstoque = sQLretornarEstoque(puntoVentaId, dtInicio, dtFim,empresaId); + + NamedParameterStatement stmt2 = new NamedParameterStatement(conexao, sqlretornEstoque); + + if(dtInicio != null && dtFim != null) { + stmt2.setString("dataInicio", DateUtil.getStringDate(dtInicio, "dd/MM/yyyy") + " 00:00:00"); + stmt2.setString("dataFinal", DateUtil.getStringDate(dtFim, "dd/MM/yyyy") + " 23:59:59"); + }else if(dtInicio != null) { + stmt2.setString("dataInicio", DateUtil.getStringDate(dtInicio, "dd/MM/yyyy") + " 00:00:00"); + } + + ResultSet rset2 = null; + rset2 = stmt2.executeQuery(); + List lsEstoque = new ArrayList<>() ; + while (rset2.next()) { + + ItemReporteControleEstoqueBoletos item = new ItemReporteControleEstoqueBoletos(); + item.setAidfId(rset2.getInt("aidfId") > 0 ? rset2.getInt("aidfId") : null); + item.setNombEmpresa((String) rset2.getObject("nombEmpresa")); + item.setDescPuntoVenta((String) rset2.getObject("descPuntoVenta")); + item.setNomeEstado((String) rset2.getObject("nomeEstado")); + item.setSerie((String) rset2.getObject("serie")); + item.setTipo((String) rset2.getObject("tipo")); + item.setFolioInicial((String) rset2.getObject("folioInicial")); + item.setFolioFinal((String) rset2.getObject("folioFinal")); + item.setFolioCaja((BigDecimal) rset2.getObject("folioCaja")); + item.setArticuloId(rset2.getInt("articuloId") > 0 ? rset2.getInt("articuloId") : null); + item.setFechorAquisicion((Date) rset2.getObject("fechorAquisicion")); + item.setFecVencimento((Date) rset2.getObject("fecVencimento")); + item.setID((String) rset2.getObject("ID")); + item.setCveUsuario((String) rset2.getObject("cveUsuario")); + item.setDescArticulo(rset2.getObject("descArticulo") != null ? rset2.getBigDecimal("descArticulo").toString(): null); + lsEstoque.add(item); + } + rset2 = stmt2.executeQuery(); + + + Map map = new HashMap(); + List lsTemp = new ArrayList<>(); + List lsTempRetorno = new ArrayList<>(); + List lsTempRetornoAux = new ArrayList<>(); + for (ItemReporteControleEstoqueBoletos i : lsEstoquePorSalto) { + if(map.get(i.getID()) == null) { + for (ItemReporteControleEstoqueBoletos item : lsEstoquePorSalto) { + if(i.getID().equals(item.getID())) { + lsTemp.add(item); + } + } + map.put(i.getID(), i.getID()); + lsTempRetorno.addAll(gerarRangesDeFolios(recuperarOsFaltantes(lsTemp), lsTemp)); + lsTemp = new ArrayList(); + } + } + lsTempRetornoAux.addAll(lsTempRetorno); + + + boolean contem = false; + + + for (ItemReporteControleEstoqueBoletos itemEstoque : lsEstoque) { + for (ItemReporteControleEstoqueBoletos itemReporteStockBoletos : lsTempRetorno) { + + if (itemReporteStockBoletos.getID().equals(itemEstoque.getID())) { + continue; + }else { + for (ItemReporteControleEstoqueBoletos itemReporteStockBoletos2 : lsTempRetornoAux) { + if(itemReporteStockBoletos2.getID().equals(itemEstoque.getID())) { + contem = true; + } + } + if(contem) { + contem = false; + continue; + }else { + lsTempRetornoAux.add(itemEstoque); + contem = false; + } + } + } + } + + List lsBlocoJaTodoUtilizado = tratarBlocoJaTodoUtilizado(lsTempRetornoAux); + for (ItemReporteControleEstoqueBoletos itemReporteControleEstoqueBoletos : lsBlocoJaTodoUtilizado) { + lsDadosRelatorio.add(itemReporteControleEstoqueBoletos); + } + setLsDadosRelatorio(lsDadosRelatorio); } }); } @@ -91,75 +171,313 @@ public class RelatorioEstoque extends Relatorio { @Override protected void processaParametros() throws Exception { } - - private String getSql() { - StringBuilder sql = new StringBuilder(); - sql.append("SELECT ai.fecvencimiento as dataVencimento, ai.fecadquisicion as dataAquicision, dab.aidf_id AS aidf, "); - sql.append(" e.nombempresa, "); - sql.append(" p.nombpuntoventa, "); - 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 forminicial,"); - sql.append(" dab.NUMFOLIOFINAL AS formfinal, "); - 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)+1) "); - 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)+1) "); - 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 ultimoFolioCaja, "); - sql.append(" ar.articulo_id AS tipoventa,"); - sql.append(" ar.descarticulo, "); - sql.append(" est.nombestado "); - 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(); - + public void setLsDadosRelatorio(List lsDadosRelatorio) { + this.setCollectionDataSource(new JRBeanCollectionDataSource(lsDadosRelatorio)); + this.lsDadosRelatorio = lsDadosRelatorio; + } + + public List getLsDadosRelatorio() { + return lsDadosRelatorio; } + + + + private String retornarItensConsultaPorPuloFolio(String puntoVentaId, Integer empresaId, Date dataInicio, Date dataFim) { + + StringBuilder sb = new StringBuilder(); + + sb.append("SELECT DAB.AIDF_ID AS aidfId, est.NOMBESTADO as nomeEstado,"); + sb.append("dab.NUMSERIEPREIMPRESA as serie, "); + sb.append(" TO_NUMBER(CJ.NUMFOLIOPREIMPRESO) as folioCaja, "); + sb.append(" DAB.NUMFOLIOINICIAL AS folioInicial,"); + sb.append(" DAB.NUMFOLIOFINAL AS folioFinal,"); + sb.append(" PV.NOMBPUNTOVENTA AS descPuntoVenta,"); + sb.append(" AI.SUBSERIE AS subSerie,"); + sb.append(" AB.ARTICULO_ID AS articuloId, "); + sb.append(" EM.NOMBEMPRESA AS nombEmpresa," ); + sb.append(" EM.EMPRESA_ID AS empresaId," ); + sb.append(" M.MARCA_ID AS marcaId, " ); + sb.append(" DAB.AIDF_ID || DAB.NUMSERIEPREIMPRESA || DAB.NUMFOLIOINICIAL || DAB.NUMFOLIOFINAL || EM.EMPRESA_ID AS ID, " ); + sb.append("CASE WHEN dab.STATUSOPERACION = 4 THEN CONCAT(a.descarticulo,' (Distribuição Estoque)') ELSE a.descarticulo END as tipo, "); + sb.append(" to_date(to_char(AI.fecadquisicion, 'dd/MM/yyyy'), 'dd/MM/yyyy') as fechorAquisicion, "); + sb.append(" to_date(to_char(ai.fecvencimiento, 'dd/MM/yyyy'), 'dd/MM/yyyy') as fecVencimento "); + sb.append("FROM CAJA CJ,"); + sb.append(" ESTACION E,"); + sb.append(" ARTICULO A,"); + sb.append(" EMPRESA EM,"); + sb.append(" MARCA M,"); + + sb.append(" AIDF AI,"); + sb.append(" ESTADO est,"); + + sb.append(" USUARIO U,"); + sb.append(" PUNTO_VENTA PV,"); + sb.append(" ABASTO_BOLETO AB "); + sb.append("LEFT JOIN DET_ABASTO_BOLETO DAB ON (AB.ABASTOBOLETO_ID = DAB.ABASTOBOLETO_ID) "); + sb.append("WHERE TO_NUMBER(CJ.NUMFOLIOPREIMPRESO) BETWEEN TO_NUMBER(DAB.NUMFOLIOINICIAL) AND TO_NUMBER(DAB.NUMFOLIOFINAL) "); + sb.append(" AND CJ.PUNTOVENTA_ID = AB.PUNTOVENTA_ID "); + sb.append(" AND DAB.ACTIVO = 1 "); + sb.append("and (cj.NUMSERIEPREIMPRESA = dab.NUMSERIEPREIMPRESA OR (cj.NUMSERIEPREIMPRESA IS NULL and dab.NUMSERIEPREIMPRESA is null)) "); + + if (puntoVentaId != null) { + sb.append(" AND pv.PUNTOVENTA_ID in("+puntoVentaId+ ")"); + } + + if(empresaId != null) { + sb.append(" AND Em.empresa_ID = ") + .append(empresaId); + } + + sb.append(" AND DAB.NUMFOLIOFINAL < 2147483647"); + sb.append(" AND DAB.STATUSOPERACION IN(0,1,4)"); + sb.append(" AND A.ARTICULO_ID = AB.ARTICULO_ID"); + sb.append(" AND EM.EMPRESA_ID = AB.EMPRESA_ID"); + sb.append(" AND M.EMPRESA_ID = EM.EMPRESA_ID"); + sb.append(" AND M.ACTIVO = 1 "); + + sb.append(" AND DAB.AIDF_ID = AI.AIDF_ID"); + + + if(dataInicio!= null && dataFim != null) { + sb.append(" AND AI.fecadquisicion BETWEEN TO_DATE(:dataInicio,'dd/mm/yyyy hh24:mi:ss') AND TO_DATE(:dataFinal,'dd/mm/yyyy hh24:mi:ss') "); + }else if(dataInicio!= null) { + sb.append(" AND fecadquisicion >= TO_DATE(:dataInicio,'dd/mm/yyyy hh24:mi:ss') "); + } + sb.append(" AND CJ.USUARIO_ID = U.USUARIO_ID"); + sb.append(" AND (CJ.INDREIMPRESION = 0"); + sb.append(" OR (CJ.INDREIMPRESION = 1"); + sb.append(" AND CJ.INDSTATUSBOLETO = 'E'))"); + sb.append(" AND CJ.PUNTOVENTA_ID = PV.PUNTOVENTA_ID"); + sb.append(" AND DAB.ACTIVO = 1 and AB.activo =1 and est.estado_id = ai.ESTADO_ID "); + sb.append("GROUP BY DAB.AIDF_ID,"); + sb.append(" DAB.NUMSERIEPREIMPRESA,"); + sb.append(" CJ.NUMFOLIOPREIMPRESO,"); + sb.append(" DAB.NUMFOLIOINICIAL,"); + sb.append(" DAB.NUMFOLIOFINAL,"); + sb.append(" PV.NOMBPUNTOVENTA,"); + + + sb.append(" AI.SUBSERIE,"); + + sb.append(" AB.ARTICULO_ID,"); + sb.append(" EM.NOMBEMPRESA,"); + sb.append(" U.USUARIO_ID,"); + sb.append(" EM.EMPRESA_ID,"); + sb.append(" DAB.AIDF_ID,"); + sb.append(" M.MARCA_ID, "); + sb.append(" A.descarticulo, "); + sb.append(" dab.STATUSOPERACION, "); + sb.append(" to_char(AI.fecadquisicion, 'dd/MM/yyyy'),"); + sb.append(" to_char(ai.fecvencimiento, 'dd/MM/yyyy'), est.NOMBESTADO "); + sb.append("ORDER BY DAB.AIDF_ID,"); + sb.append(" DAB.NUMSERIEPREIMPRESA,"); + sb.append(" TO_NUMBER(CJ.NUMFOLIOPREIMPRESO)"); + + + return sb.toString(); + + } + + private String sQLretornarEstoque(String puntoVentaId, Date dataInicio, Date dataFim, Integer empresaId) { + + StringBuilder queryString = new StringBuilder("SELECT DISTINCT to_date(to_char(ai.fecvencimiento, 'dd/MM/yyyy'), 'dd/MM/yyyy') as fecVencimento, to_date(to_char(AI.fecadquisicion, 'dd/MM/yyyy'), 'dd/MM/yyyy') as fechorAquisicion, ") + .append("dab.NUMSERIEPREIMPRESA as serie, ") + .append("dab.NUMFOLIOINICIAL as folioInicial, ") + .append("dab.NUMFOLIOFINAL as folioFinal, ") + .append("pv.NOMBPUNTOVENTA as descPuntoVenta, ") + .append("to_number(dab.NUMFOLIOINICIAl) as ultimoFolioCaja, ") + .append(" CASE ") + .append(" WHEN dab.STATUSOPERACION = 1 THEN fp.FOLIOPREIMPRESO ") + .append(" ELSE COALESCE( ") + .append(" ") + .append(" (SELECT TO_CHAR(MAX(c.numfoliopreimpreso)+1) ") + .append(" FROM caja c ") + .append(" WHERE (c.numseriepreimpresa = dab.numseriepreimpresa ") + .append(" OR (c.numseriepreimpresa IS NULL ") + .append(" AND dab.numseriepreimpresa IS NULL)) ") + .append(" AND to_number(c.numfoliopreimpreso) BETWEEN dab.numfolioinicial AND dab.numfoliofinal ") + .append(" AND (c.indreimpresion = 0 ") + .append(" OR (c.indreimpresion = 1 ") + .append(" AND c.indstatusboleto = 'E')) ") + .append(" AND c.marca_id = m.marca_id), (SELECT to_char(MAX(cd.numfoliopreimpreso)+1) ") + .append(" FROM caja_diversos cd ") + .append(" WHERE cd.numseriepreimpresa = dab.numseriepreimpresa AND to_number(cd.numfoliopreimpreso) BETWEEN dab.numfolioinicial AND dab.numfoliofinal ) , dab.NUMFOLIOINICIAL) ") + .append("END as folioAtual, ") + .append("ab.ARTICULO_ID as articuloId, ") + .append("a.ARTICULO_ID as descArticulo, ") + .append("CASE WHEN dab.STATUSOPERACION = 4 THEN CONCAT(a.descarticulo,' (Distribuição Estoque)') ELSE a.descarticulo END as tipo, ") + .append("em.nombEmpresa as \"nombEmpresa\", ") + .append("em.EMPRESA_ID as \"empresaId\", ") + .append("CASE WHEN dab.STATUSOPERACION = 1 THEN to_number(fp.FOLIOPREIMPRESO) ELSE NULL END as folioCaja, ") + .append("dab.AIDF_ID as aidfId, ") + .append("m.MARCA_ID as marcaId, ") + .append("ai.SUBSERIE as subSerie, ") + .append("us.CVEUSUARIO as cveUsuario, ") + .append(" DAB.AIDF_ID || DAB.NUMSERIEPREIMPRESA || dab.NUMFOLIOINICIAL || dab.NUMFOLIOFINAL || EM.EMPRESA_ID AS ID, " ) + .append("est.NOMBESTADO as nomeEstado ") + .append("FROM DET_ABASTO_BOLETO dab ") + .append("INNER JOIN ABASTO_BOLETO ab ON dab.ABASTOBOLETO_ID = ab.ABASTOBOLETO_ID ") + .append("LEFT JOIN USUARIO us ON ab.USUARIOESTOQUE_ID = us.USUARIO_ID ") + .append("INNER JOIN PUNTO_VENTA pv ON ab.PUNTOVENTA_ID = pv.PUNTOVENTA_ID ") + .append("LEFT JOIN FOLIO_PREIMPRESO fp ON fp.EMPRESA_ID = ab.EMPRESA_ID ") + .append(" AND (fp.NUMESERIE = dab.NUMSERIEPREIMPRESA OR (fp.NUMESERIE IS NULL AND dab.NUMSERIEPREIMPRESA IS NULL)) ") + .append(" AND to_number(fp.FOLIOPREIMPRESO) BETWEEN to_number(dab.NUMFOLIOINICIAL) AND to_number(dab.NUMFOLIOFINAL) ") + .append(" AND (fp.ACTIVO = 1) ") + .append("LEFT JOIN ARTICULO a ON a.ARTICULO_ID = ab.ARTICULO_ID ") + .append("LEFT JOIN EMPRESA em ON em.EMPRESA_ID = ab.EMPRESA_ID ") + .append("LEFT JOIN MARCA m ON m.EMPRESA_ID = em.EMPRESA_ID AND m.ACTIVO = 1 ") + .append("LEFT JOIN AIDF ai ON dab.AIDF_ID = ai.AIDF_ID ") + .append("LEFT JOIN ESTADO est ON est.ESTADO_ID = est.ESTADO_ID ") + .append("WHERE dab.STATUSOPERACION IN(0,1,4) ") + .append("AND dab.ACTIVO = 1 ") + .append(" and dab.NUMFOLIOFINAL < 2147483647 ") + .append(" AND DAB.AIDF_ID = AI.AIDF_ID and ai.activo = 1 "); + + + if (puntoVentaId != null) { + queryString.append(" AND pv.PUNTOVENTA_ID in("+puntoVentaId+ ")"); + } + + if (empresaId != null) { + queryString.append(" AND em.EMPRESA_ID = ") + .append(empresaId); + } + if(dataInicio!= null && dataFim != null) { + queryString.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(dataInicio!= null) { + queryString.append(" AND fecadquisicion >= TO_DATE(:dataInicio,'dd/mm/yyyy hh24:mi:ss') "); + } + queryString.append(" ORDER BY 5,11,1,7"); + + return queryString.toString(); + + } + + private List gerarRangesDeFolios(int[] a, List lsTemp){ + + int length = 1; + List list = new ArrayList(); + ItemReporteControleEstoqueBoletos ItemReporteStockBoletos= null; + + if (a.length == 0) { + return list; + } + + for (int i = 1; i <= a.length; i++) { + + if (i == a.length || a[i] - a[i - 1] != 1) { + + ItemReporteStockBoletos = new ItemReporteControleEstoqueBoletos(); + ItemReporteStockBoletos.setEstacionId(lsTemp.get(0).getEstacionId()); + ItemReporteStockBoletos.setDescEstacion((lsTemp.get(0).getDescEstacion())); + ItemReporteStockBoletos.setDescPuntoVenta((lsTemp.get(0).getDescPuntoVenta())); + ItemReporteStockBoletos.setAidfId(lsTemp.get(0).getAidfId()); + ItemReporteStockBoletos.setNombEmpresa(lsTemp.get(0).getNombEmpresa()); + ItemReporteStockBoletos.setNombreUsuario(lsTemp.get(0).getNombreUsuario()); + ItemReporteStockBoletos.setCveUsuario(lsTemp.get(0).getCveUsuario()); + ItemReporteStockBoletos.setTipo(lsTemp.get(0).getTipo()); + ItemReporteStockBoletos.setID(lsTemp.get(0).getID()); + ItemReporteStockBoletos.setFechorAquisicion(lsTemp.get(0).getFechorAquisicion()); + ItemReporteStockBoletos.setFecVencimento(lsTemp.get(0).getFecVencimento()); + ItemReporteStockBoletos.setSerie(lsTemp.get(0).getSerie()); + ItemReporteStockBoletos.setNomeEstado(lsTemp.get(0).getNomeEstado()); + ItemReporteStockBoletos.setDescEstacion("Todas"); + + if (length == 1) { + if(a[i - length] != 0) { + + ItemReporteStockBoletos.setFolioInicial(String.valueOf(a[i - length])); + ItemReporteStockBoletos.setFolioAtual(String.valueOf(a[i - length])); + ItemReporteStockBoletos.setFolioFinal(String.valueOf(a[i - length])); + } + } + else { + + ItemReporteStockBoletos.setFolioInicial(String.valueOf(a[i - length])); + ItemReporteStockBoletos.setFolioAtual(String.valueOf(a[i - length])); + ItemReporteStockBoletos.setFolioFinal(String.valueOf(a[i - 1])); + list.add(ItemReporteStockBoletos); + } + length = 1; + } + else { + length++; + } + } + + return list; + } + + private int[] recuperarOsFaltantes(List listEstoque) { + int arrayTemp[] = null; + ItemReporteControleEstoqueBoletos item = new ItemReporteControleEstoqueBoletos(); + item.setFolioCaja(new BigDecimal(listEstoque.get(0).getFolioFinal()).add(new BigDecimal(1))); + listEstoque.add(item); + + int cont = 0; + int low = Integer.parseInt(listEstoque.get(0).getFolioInicial()); + int high = 9999999; + + arrayTemp = new int[high+1]; + arrayTemp[high] = Integer.parseInt(listEstoque.get(0).getFolioFinal()); + + int index = ceilindex(listEstoque, low, 0, listEstoque.size() - 1); + int x = low; + + while (index < listEstoque.size() && x <= high) { + if (listEstoque.get(index).getFolioCaja().intValue() != x) { + if(x != 0) { + arrayTemp[cont++] = x; + } + } + else + index++; + x++; + } + + while (x <= high) { + x++; + } + arrayTemp[arrayTemp.length-1] = 0; + + return arrayTemp; + } + + private int ceilindex(List arrayTemp, int val, int menor, int maior) { + + if (val < arrayTemp.get(0).getFolioCaja().intValue()) + return 0; + if (val > arrayTemp.get(arrayTemp.size() - 1).getFolioCaja().intValue()) + return arrayTemp.size(); + + int mid = (menor + maior) / 2; + + if (arrayTemp.get(mid).getFolioCaja().intValue() == val) + return mid; + + if (arrayTemp.get(mid).getFolioCaja().intValue() < val) { + if (mid + 1 < maior && arrayTemp.get(mid + 1).getFolioCaja().intValue() >= val) + return mid + 1; + return ceilindex(arrayTemp, val, mid + 1, maior); + }else { + if (mid - 1 >= menor && arrayTemp.get(mid - 1).getFolioCaja().intValue() < val) + return mid; + return ceilindex(arrayTemp, val, menor, mid - 1); + } + } + + private List tratarBlocoJaTodoUtilizado(List lsTempRetornoAux) { + List lsBlocoJaTodoUtilizado = new ArrayList(); + for (ItemReporteControleEstoqueBoletos itemReporteStockBoletos : lsTempRetornoAux) { + if(itemReporteStockBoletos.getFolioAtual() != null) { + if(!itemReporteStockBoletos.getFolioAtual().equals(itemReporteStockBoletos.getFolioFinal())) { + lsBlocoJaTodoUtilizado.add(itemReporteStockBoletos); + } + } + } + return lsBlocoJaTodoUtilizado; + } + + } diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioEstoque.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioEstoque.jasper index b73b1c52b..9ee375011 100644 Binary files a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioEstoque.jasper and b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioEstoque.jasper differ diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioEstoque.jrxml b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioEstoque.jrxml index 612f7b535..0d3a83fcb 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioEstoque.jrxml +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioEstoque.jrxml @@ -1,8 +1,8 @@ - - - + + + @@ -13,22 +13,17 @@ - - - + + + - - - - - - + + + - - - - - + + + @@ -187,7 +182,7 @@ - + @@ -195,7 +190,7 @@ - + @@ -209,14 +204,14 @@ - + - + - + @@ -232,35 +227,35 @@ - + - + - + - + - + diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/ItemReporteControleEstoqueBoletos.java b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/ItemReporteControleEstoqueBoletos.java new file mode 100644 index 000000000..91d846312 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/ItemReporteControleEstoqueBoletos.java @@ -0,0 +1,185 @@ +package com.rjconsultores.ventaboletos.relatorios.utilitarios; + +import java.math.BigDecimal; +import java.util.Date; + +public class ItemReporteControleEstoqueBoletos { + + private Integer estacionId; + private String serie; + private String folioInicial; + private String folioFinal; + private String descPuntoVenta; + private Long numCaja; + private String descEstacion; + private String folioAtual; + private Integer articuloId; + private String tipo; + private String nombEmpresa; + private BigDecimal empresaId; + private BigDecimal folioCaja; + private Integer aidfId; + private Integer marcaId; + private Integer ultimoFolioCaja; + private String subSerie; + private String cveUsuario; + private String nombreUsuario; + private String nomeEstado; + private String descArticulo; + private Date fechorAquisicion; + private Date fecVencimento; + private Integer numfoliopreimpreso; + private String ID; + + public Integer getEstacionId() { + return estacionId; + } + public void setEstacionId(Integer estacionId) { + this.estacionId = estacionId; + } + public String getSerie() { + return serie; + } + public void setSerie(String serie) { + this.serie = serie; + } + public String getFolioInicial() { + return folioInicial; + } + public void setFolioInicial(String folioInicial) { + this.folioInicial = folioInicial; + } + public String getFolioFinal() { + return folioFinal; + } + public void setFolioFinal(String folioFinal) { + this.folioFinal = folioFinal; + } + public String getDescPuntoVenta() { + return descPuntoVenta; + } + public void setDescPuntoVenta(String descPuntoVenta) { + this.descPuntoVenta = descPuntoVenta; + } + public Long getNumCaja() { + return numCaja; + } + public void setNumCaja(Long numCaja) { + this.numCaja = numCaja; + } + public String getDescEstacion() { + return descEstacion; + } + public void setDescEstacion(String descEstacion) { + this.descEstacion = descEstacion; + } + public String getFolioAtual() { + return folioAtual; + } + public void setFolioAtual(String folioAtual) { + this.folioAtual = folioAtual; + } + public Integer getArticuloId() { + return articuloId; + } + public void setArticuloId(Integer articuloId) { + this.articuloId = articuloId; + } + public String getTipo() { + return tipo; + } + public void setTipo(String tipo) { + this.tipo = tipo; + } + public String getNombEmpresa() { + return nombEmpresa; + } + public void setNombEmpresa(String nombEmpresa) { + this.nombEmpresa = nombEmpresa; + } + public BigDecimal getEmpresaId() { + return empresaId; + } + public void setEmpresaId(BigDecimal empresaId) { + this.empresaId = empresaId; + } + public BigDecimal getFolioCaja() { + return folioCaja; + } + public void setFolioCaja(BigDecimal folioCaja) { + this.folioCaja = folioCaja; + } + public Integer getAidfId() { + return aidfId; + } + public void setAidfId(Integer aidfId) { + this.aidfId = aidfId; + } + public Integer getMarcaId() { + return marcaId; + } + public void setMarcaId(Integer marcaId) { + this.marcaId = marcaId; + } + public Integer getUltimoFolioCaja() { + return ultimoFolioCaja; + } + public void setUltimoFolioCaja(Integer ultimoFolioCaja) { + this.ultimoFolioCaja = ultimoFolioCaja; + } + public String getSubSerie() { + return subSerie; + } + public void setSubSerie(String subSerie) { + this.subSerie = subSerie; + } + public String getCveUsuario() { + return cveUsuario; + } + public void setCveUsuario(String cveUsuario) { + this.cveUsuario = cveUsuario; + } + public String getNombreUsuario() { + return nombreUsuario; + } + public void setNombreUsuario(String nombreUsuario) { + this.nombreUsuario = nombreUsuario; + } + public String getNomeEstado() { + return nomeEstado; + } + public void setNomeEstado(String nomeEstado) { + this.nomeEstado = nomeEstado; + } + public String getDescArticulo() { + return descArticulo; + } + public void setDescArticulo(String descArticulo) { + this.descArticulo = descArticulo; + } + public Date getFechorAquisicion() { + return fechorAquisicion; + } + public void setFechorAquisicion(Date fechorAquisicion) { + this.fechorAquisicion = fechorAquisicion; + } + public Date getFecVencimento() { + return fecVencimento; + } + public void setFecVencimento(Date fecVencimento) { + this.fecVencimento = fecVencimento; + } + public Integer getNumfoliopreimpreso() { + return numfoliopreimpreso; + } + public void setNumfoliopreimpreso(Integer numfoliopreimpreso) { + this.numfoliopreimpreso = numfoliopreimpreso; + } + public String getID() { + return ID; + } + public void setID(String iD) { + ID = iD; + } + +}