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;
+ }
+
+}