From a0c5f556c47db2c73e0cf3ed5093e53f91c7adfb Mon Sep 17 00:00:00 2001 From: wilian Date: Thu, 10 Aug 2017 14:12:47 +0000 Subject: [PATCH] fixes bug #9581 fixes bug #9387 git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@72489 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../impl/RelatorioDevolucaoBilhetes.java | 97 +++- ...RelatorioDevolucaoBilhetesConsolidado.java | 51 +- .../RelatorioDevolucaoBilhetesFinanceiro.java | 175 ++++++ ...DevolucaoBilhetesConsolidado_es.properties | 7 +- ...olucaoBilhetesConsolidado_pt_BR.properties | 7 +- ...oDevolucaoBilhetesFinanceiro_es.properties | 26 + ...volucaoBilhetesFinanceiro_pt_BR.properties | 26 + .../RelatorioDevolucaoBilhetes_es.properties | 17 +- ...elatorioDevolucaoBilhetes_pt_BR.properties | 17 +- .../RelatorioDevolucaoBilhetes.jasper | Bin 53432 -> 71883 bytes .../RelatorioDevolucaoBilhetes.jrxml | 529 +++++++++++++----- ...latorioDevolucaoBilhetesConsolidado.jasper | Bin 49214 -> 54478 bytes ...elatorioDevolucaoBilhetesConsolidado.jrxml | 161 ++++-- ...elatorioDevolucaoBilhetesFinanceiro.jasper | Bin 0 -> 51723 bytes ...RelatorioDevolucaoBilhetesFinanceiro.jrxml | 468 ++++++++++++++++ .../RelatorioDevolucaoBilhetesTeste.jrxml | 470 ++++++++++++++++ .../utilitarios/DevolucaoBilhetes.java | 76 +++ .../EditarRegionMetropolitanaController.java | 25 +- .../RelatorioDevolucaoBilhetesController.java | 49 +- web/WEB-INF/i3-label_es_MX.label | 27 + web/WEB-INF/i3-label_pt_BR.label | 9 +- .../filtroRelatorioDevolucaoBilhetes.zul | 26 +- 22 files changed, 2002 insertions(+), 261 deletions(-) create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDevolucaoBilhetesFinanceiro.java create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDevolucaoBilhetesFinanceiro_es.properties create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDevolucaoBilhetesFinanceiro_pt_BR.properties create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDevolucaoBilhetesFinanceiro.jasper create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDevolucaoBilhetesFinanceiro.jrxml create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDevolucaoBilhetesTeste.jrxml diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDevolucaoBilhetes.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDevolucaoBilhetes.java index 8651b76be..ba2a3bd19 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDevolucaoBilhetes.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDevolucaoBilhetes.java @@ -3,8 +3,8 @@ package com.rjconsultores.ventaboletos.relatorios.impl; import java.math.BigDecimal; import java.sql.Connection; import java.sql.ResultSet; -import java.sql.Timestamp; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Map; @@ -38,6 +38,10 @@ public class RelatorioDevolucaoBilhetes extends Relatorio { List lsPuntoVenta = parametros.get("PUNTOVENTAS") == null ? new ArrayList() : (ArrayList) parametros.get("PUNTOVENTAS"); List lsEstado = parametros.get("ESTADOS") == null ? new ArrayList() : (ArrayList) parametros.get("ESTADOS"); Integer empresaId = parametros.get("EMPRESA_ID") == null ? null : (Integer) parametros.get("EMPRESA_ID"); + Date dataVendaInicial = parametros.get("dataVendaInicial") == null ? null : (Date) parametros.get("dataVendaInicial"); + Date dataVendaFinal = parametros.get("dataVendaFinal") == null ? null : (Date) parametros.get("dataVendaFinal"); + Date dataDevolucaoInicial = parametros.get("dataDevolucaoInicial") == null ? null : (Date) parametros.get("dataDevolucaoInicial"); + Date dataDevolucaoFinal = parametros.get("dataDevolucaoFinal") == null ? null : (Date) parametros.get("dataDevolucaoFinal"); String puntoVentas = null; for (PuntoVenta pv : lsPuntoVenta) { @@ -57,14 +61,27 @@ public class RelatorioDevolucaoBilhetes extends Relatorio { } } - String sql = getSql(empresaId, puntoVentas, estados); + String sql = getSql(empresaId, puntoVentas, estados, dataVendaInicial, dataVendaFinal, dataDevolucaoInicial, dataDevolucaoFinal); log.debug(sql); NamedParameterStatement stmt = new NamedParameterStatement(conexao, sql); ResultSet rset = null; - stmt.setString("DATA_INICIO", DateUtil.getStringDate(((Timestamp) parametros.get("DATA_INICIO")), "dd/MM/yyyy HH:mm:ss")); - stmt.setString("DATA_FINAL", DateUtil.getStringDate(((Timestamp) parametros.get("DATA_FINAL")), "dd/MM/yyyy HH:mm:ss")); + if(dataVendaInicial != null) { + stmt.setString("dataVendaInicial", DateUtil.getStringDate(dataVendaInicial, "dd/MM/yyyy HH:mm")); + } + + if(dataVendaFinal != null) { + stmt.setString("dataVendaFinal", DateUtil.getStringDate(dataVendaFinal, "dd/MM/yyyy HH:mm")); + } + + if(dataDevolucaoInicial != null) { + stmt.setString("dataDevolucaoInicial", DateUtil.getStringDate(dataDevolucaoInicial, "dd/MM/yyyy HH:mm")); + } + + if(dataDevolucaoFinal != null) { + stmt.setString("dataDevolucaoFinal", DateUtil.getStringDate(dataDevolucaoFinal, "dd/MM/yyyy HH:mm")); + } rset = stmt.executeQuery(); @@ -77,7 +94,10 @@ public class RelatorioDevolucaoBilhetes extends Relatorio { db.setSerieSubSerie((String) rset.getObject("SERIE_SUBSERIE")); db.setFolio((String) rset.getObject("FOLIO")); db.setUf((String) rset.getObject("UF")); + db.setEstado((String) rset.getObject("ESTADO")); + db.setEstadoId(rset.getInt("ESTADO_ID")); db.setFechorVenta((String) rset.getObject("FECHOR_VENTA")); + db.setFechorDevolucao((String) rset.getObject("FECHOR_DEVOLUCAO")); db.setIcms((BigDecimal) rset.getObject("ICMS")); db.setPrecioBase((BigDecimal) rset.getObject("PRECIOBASE")); db.setPrecioPagado((BigDecimal) rset.getObject("PRECIOPAGADO")); @@ -85,11 +105,33 @@ public class RelatorioDevolucaoBilhetes extends Relatorio { db.setEmpresa((String) rset.getObject("NOMB_EMPRESA")); db.setNumpuntoventa((String) rset.getObject("NUMPUNTOVENTA")); db.setNumpuntoventaOrigem((String) rset.getObject("NUMPUNTOVENTAORIGEM")); + db.setIsenta(rset.getInt("ISENTA") == 1); db.setTotalBilhete(rset.getBigDecimal("TOTAL")); + db.setValorContabil(db.getTotalBilhete()); + db.setValorIcms(BigDecimal.ZERO); + db.setValorIsenta(BigDecimal.ZERO); BigDecimal valorIcms = BigDecimal.ZERO; valorIcms = db.getPrecioPagado().multiply(db.getIcms().divide(BigDecimal.valueOf(100))); - db.setValorIcms(valorIcms); + if(db.isIsenta()) { + db.setValorIsenta(valorIcms); + } else { + db.setValorIcms(valorIcms); + } + + db.setPorcMunicipal(rset.getObject("PORC_MUNICIPAL") == null ? BigDecimal.ZERO : (BigDecimal) rset.getObject("PORC_MUNICIPAL")); + db.setPorcEstadual(rset.getObject("PORC_ESTADUAL") == null ? BigDecimal.ZERO : (BigDecimal) rset.getObject("PORC_ESTADUAL")); + + boolean isEstadual = rset.getInt("IS_ESTADUAL") == 1; + BigDecimal estornoMunicipal = BigDecimal.ZERO; + BigDecimal estornoEstadual = BigDecimal.ZERO; + if (isEstadual) { + estornoEstadual = valorIcms.multiply(db.getPorcEstadual().divide(BigDecimal.valueOf(100))); + } else { + estornoMunicipal = valorIcms.multiply(db.getPorcMunicipal().divide(BigDecimal.valueOf(100))); + } + db.setEstornoMunicipal(estornoMunicipal); + db.setEstornoEstadual(estornoEstadual); lsDev.add(db); } @@ -104,7 +146,7 @@ public class RelatorioDevolucaoBilhetes extends Relatorio { this.setCollectionDataSource(new JRBeanCollectionDataSource(lsDev)); } - private String getSql(Integer empresaId, String puntoVentas, String estados) { + private String getSql(Integer empresaId, String puntoVentas, String estados, Date dataVendaInicial, Date dataVendaFinal, Date dataDevolucaoInicial, Date dataDevolucaoFinal) { StringBuilder sql = new StringBuilder(); sql.append("SELECT COALESCE(AIDF.ACFISCAL,SUBSTR(R4.NUMSERIE20, -6, 7)) AS AIDF, "); @@ -117,18 +159,25 @@ public class RelatorioDevolucaoBilhetes extends Relatorio { sql.append(" E.EMPRESA_ID AS EMPRESA_ID, "); sql.append(" PTV.NUMPUNTOVENTA AS NUMPUNTOVENTA, "); sql.append(" PTVO.NUMPUNTOVENTA AS NUMPUNTOVENTAORIGEM, "); + sql.append(" EST.NOMBESTADO AS ESTADO, "); sql.append(" EST.CVEESTADO AS UF, "); - sql.append(" NVL(EI.ICMS,0) AS ICMS, "); - sql.append(" TO_CHAR(B.FECHORVENTA, 'DD/MM/YYYY') AS FECHOR_VENTA, "); + sql.append(" NVL(EST.ESTADO_ID,0) AS ESTADO_ID, "); + sql.append(" NVL(EI.PORCREDBASEICMS,0) AS ICMS, "); + sql.append(" TO_CHAR(BORI.FECHORVENTA, 'DD/MM/YYYY') AS FECHOR_VENTA, "); + sql.append(" TO_CHAR(B.FECHORVENTA, 'DD/MM/YYYY') AS FECHOR_DEVOLUCAO, "); + sql.append(" (CASE WHEN CO.ESTADO_ID <> CD.ESTADO_ID THEN 1 ELSE 0 END) IS_ESTADUAL, "); + sql.append(" EI.PORCREDMUNICIPAL AS PORC_MUNICIPAL, "); + sql.append(" EI.PORCREDESTADUAL AS PORC_ESTADUAL, "); + sql.append(" (CASE WHEN NVL(ORI.REGIONMETROPOLITANA_ID ,-1) = NVL(DES.REGIONMETROPOLITANA_ID,-2) THEN 1 ELSE 0 END) as ISENTA, "); sql.append(" NVL(B.PRECIOPAGADO,0) + NVL(B.IMPORTEOUTROS,0) + NVL(B.IMPORTEPEDAGIO,0) + NVL(B.IMPORTESEGURO,0) + NVL(B.IMPORTETAXAEMBARQUE,0) AS TOTAL "); sql.append("FROM BOLETO B "); sql.append("INNER JOIN MARCA M ON M.MARCA_ID = B.MARCA_ID AND M.ACTIVO = 1 "); sql.append("INNER JOIN EMPRESA E ON E.EMPRESA_ID = M.EMPRESA_ID "); sql.append("INNER JOIN PUNTO_VENTA PTV ON PTV.PUNTOVENTA_ID = B.PUNTOVENTA_ID "); - sql.append("INNER JOIN PARADA ORIGEM ON (B.ORIGEN_ID = ORIGEM.PARADA_ID ) "); - sql.append("INNER JOIN PARADA DESTINO ON (B.DESTINO_ID = DESTINO.PARADA_ID ) "); - sql.append("INNER JOIN CIUDAD CO ON (CO.CIUDAD_ID = ORIGEM.CIUDAD_ID ) "); - sql.append("INNER JOIN CIUDAD CD ON (CD.CIUDAD_ID = DESTINO.CIUDAD_ID ) "); + sql.append("INNER JOIN PARADA ORI ON (B.ORIGEN_ID = ORI.PARADA_ID ) "); + sql.append("INNER JOIN PARADA DES ON (B.DESTINO_ID = DES.PARADA_ID ) "); + sql.append("INNER JOIN CIUDAD CO ON (CO.CIUDAD_ID = ORI.CIUDAD_ID ) "); + sql.append("INNER JOIN CIUDAD CD ON (CD.CIUDAD_ID = DES.CIUDAD_ID ) "); sql.append("INNER JOIN ESTADO EST ON EST.ESTADO_ID = CO.ESTADO_ID "); sql.append("LEFT JOIN FISCAL_R4 R4 ON R4.BOLETO_ID = B.BOLETOORIGINAL_ID "); sql.append("LEFT JOIN PUNTO_VENTA PTVO ON PTVO.PUNTOVENTA_ID = B.PTOVTAVENTA_ID "); @@ -136,14 +185,32 @@ public class RelatorioDevolucaoBilhetes extends Relatorio { sql.append(" AND EI.EMPRESA_ID = M.EMPRESA_ID "); sql.append(" AND EI.ACTIVO = 1 "); sql.append("LEFT JOIN AIDF AIDF ON AIDF.AIDF_ID = B.AIDF_ID "); - sql.append("WHERE B.MOTIVOCANCELACION_ID IN (32,10,99) "); + sql.append("LEFT JOIN BOLETO BORI ON BORI.BOLETO_ID = B.BOLETOORIGINAL_ID "); + sql.append("WHERE B.MOTIVOCANCELACION_ID IN (31,32,10,37,99,36) "); sql.append("AND B.INDSTATUSBOLETO = 'C' "); - sql.append("AND B.FECHORVENTA BETWEEN TO_DATE(:DATA_INICIO,'DD/MM/YYYY HH24:MI:SS') AND TO_DATE(:DATA_FINAL,'DD/MM/YYYY HH24:MI:SS') "); + sql.append("AND B.INDCANCELACION = 1 "); + + if(dataVendaInicial != null) { + sql.append("AND BORI.FECHORVENTA >= TO_DATE(:dataVendaInicial,'DD/MM/YYYY HH24:MI') "); + } + + if(dataVendaFinal != null) { + sql.append("AND BORI.FECHORVENTA <= TO_DATE(:dataVendaFinal,'DD/MM/YYYY HH24:MI') "); + } + + if(dataDevolucaoInicial != null) { + sql.append("AND B.FECHORVENTA >= TO_DATE(:dataDevolucaoInicial,'DD/MM/YYYY HH24:MI') "); + } + + if(dataDevolucaoFinal != null) { + sql.append("AND B.FECHORVENTA <= TO_DATE(:dataDevolucaoFinal,'DD/MM/YYYY HH24:MI') "); + } + sql.append("AND B.CATEGORIA_ID NOT IN (SELECT VALORCONSTANTE FROM CONSTANTE WHERE NOMBCONSTANTE = 'GRATUIDADE_CRIANCA') "); sql.append(estados == null ? "" : "AND EST.ESTADO_ID IN (" + estados + ") "); sql.append(puntoVentas == null ? "" : "AND PTV.PUNTOVENTA_ID IN (" + puntoVentas + ") "); sql.append(empresaId == null ? "" : "AND E.EMPRESA_ID IN (" + empresaId + ") "); - sql.append("ORDER BY NOMB_EMPRESA, FECHOR_VENTA, UF"); + sql.append("ORDER BY NOMB_EMPRESA, ESTADO, UF, FECHOR_VENTA, NUMFOLIOSISTEMA"); return sql.toString(); } diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDevolucaoBilhetesConsolidado.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDevolucaoBilhetesConsolidado.java index 6e04c1a7c..776ac6385 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDevolucaoBilhetesConsolidado.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDevolucaoBilhetesConsolidado.java @@ -3,8 +3,8 @@ package com.rjconsultores.ventaboletos.relatorios.impl; import java.math.BigDecimal; import java.sql.Connection; import java.sql.ResultSet; -import java.sql.Timestamp; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Map; @@ -38,6 +38,10 @@ public class RelatorioDevolucaoBilhetesConsolidado extends Relatorio { List lsPuntoVenta = parametros.get("PUNTOVENTAS") == null ? new ArrayList() : (ArrayList) parametros.get("PUNTOVENTAS"); List lsEstado = parametros.get("ESTADOS") == null ? new ArrayList() : (ArrayList) parametros.get("ESTADOS"); Integer empresaId = parametros.get("EMPRESA_ID") == null ? null : (Integer) parametros.get("EMPRESA_ID"); + Date dataVendaInicial = parametros.get("dataVendaInicial") == null ? null : (Date) parametros.get("dataVendaInicial"); + Date dataVendaFinal = parametros.get("dataVendaFinal") == null ? null : (Date) parametros.get("dataVendaFinal"); + Date dataDevolucaoInicial = parametros.get("dataDevolucaoInicial") == null ? null : (Date) parametros.get("dataDevolucaoInicial"); + Date dataDevolucaoFinal = parametros.get("dataDevolucaoFinal") == null ? null : (Date) parametros.get("dataDevolucaoFinal"); String puntoVentas = null; for (PuntoVenta pv : lsPuntoVenta) { @@ -57,14 +61,27 @@ public class RelatorioDevolucaoBilhetesConsolidado extends Relatorio { } } - String sql = getSql(empresaId, puntoVentas, estados); + String sql = getSql(empresaId, puntoVentas, estados, dataVendaInicial, dataVendaFinal, dataDevolucaoInicial, dataDevolucaoFinal); log.debug(sql); NamedParameterStatement stmt = new NamedParameterStatement(conexao, sql); ResultSet rset = null; - stmt.setString("DATA_INICIO", DateUtil.getStringDate(((Timestamp) parametros.get("DATA_INICIO")), "dd/MM/yyyy HH:mm:ss")); - stmt.setString("DATA_FINAL", DateUtil.getStringDate(((Timestamp) parametros.get("DATA_FINAL")), "dd/MM/yyyy HH:mm:ss")); + if(dataVendaInicial != null) { + stmt.setString("dataVendaInicial", DateUtil.getStringDate(dataVendaInicial, "dd/MM/yyyy HH:mm")); + } + + if(dataVendaFinal != null) { + stmt.setString("dataVendaFinal", DateUtil.getStringDate(dataVendaFinal, "dd/MM/yyyy HH:mm")); + } + + if(dataDevolucaoInicial != null) { + stmt.setString("dataDevolucaoInicial", DateUtil.getStringDate(dataDevolucaoInicial, "dd/MM/yyyy HH:mm")); + } + + if(dataDevolucaoFinal != null) { + stmt.setString("dataDevolucaoFinal", DateUtil.getStringDate(dataDevolucaoFinal, "dd/MM/yyyy HH:mm")); + } rset = stmt.executeQuery(); @@ -100,7 +117,7 @@ public class RelatorioDevolucaoBilhetesConsolidado extends Relatorio { this.setCollectionDataSource(new JRBeanCollectionDataSource(lsDev)); } - private String getSql(Integer empresaId, String puntoVentas, String estados) { + private String getSql(Integer empresaId, String puntoVentas, String estados, Date dataVendaInicial, Date dataVendaFinal, Date dataDevolucaoInicial, Date dataDevolucaoFinal) { StringBuilder sql = new StringBuilder(); sql.append("SELECT E.NOMBEMPRESA AS NOMB_EMPRESA, "); @@ -108,7 +125,7 @@ public class RelatorioDevolucaoBilhetesConsolidado extends Relatorio { sql.append(" PTV.NUMPUNTOVENTA AS NUMPUNTOVENTA, "); sql.append(" PTV.NOMBPUNTOVENTA AS NOMBPUNTOVENTA, "); sql.append(" NVL(EI.ICMS,0) AS ICMS, "); - sql.append(" TO_CHAR(B.FECHORVENTA, 'DD/MM/YYYY') AS FECHOR_VENTA, "); + sql.append(" TO_CHAR(BORI.FECHORVENTA, 'DD/MM/YYYY') AS FECHOR_VENTA, "); sql.append(" SUM(NVL(B.PRECIOBASE,0)) AS PRECIOBASE, "); sql.append(" SUM(NVL(B.PRECIOPAGADO,0)) AS PRECIOPAGADO, "); sql.append(" SUM(NVL(B.PRECIOPAGADO,0) + NVL(B.IMPORTEOUTROS,0) + NVL(B.IMPORTEPEDAGIO,0) + NVL(B.IMPORTESEGURO,0) + NVL(B.IMPORTETAXAEMBARQUE,0)) AS TOTAL, "); @@ -127,9 +144,27 @@ public class RelatorioDevolucaoBilhetesConsolidado extends Relatorio { sql.append(" AND EI.EMPRESA_ID = M.EMPRESA_ID "); sql.append(" AND EI.ACTIVO = 1 "); sql.append("LEFT JOIN AIDF AIDF ON AIDF.AIDF_ID = B.AIDF_ID "); - sql.append("WHERE B.MOTIVOCANCELACION_ID IN (32,10,99) "); + sql.append("LEFT JOIN BOLETO BORI ON BORI.BOLETO_ID = B.BOLETOORIGINAL_ID "); + sql.append("WHERE B.MOTIVOCANCELACION_ID IN (31,32,10,37,99,36) "); sql.append("AND B.INDSTATUSBOLETO = 'C' "); - sql.append("AND B.FECHORVENTA BETWEEN TO_DATE(:DATA_INICIO,'DD/MM/YYYY HH24:MI:SS') AND TO_DATE(:DATA_FINAL,'DD/MM/YYYY HH24:MI:SS') "); + sql.append("AND B.INDCANCELACION = 1 "); + + if(dataVendaInicial != null) { + sql.append("AND BORI.FECHORVENTA >= TO_DATE(:dataVendaInicial,'DD/MM/YYYY HH24:MI') "); + } + + if(dataVendaFinal != null) { + sql.append("AND BORI.FECHORVENTA <= TO_DATE(:dataVendaFinal,'DD/MM/YYYY HH24:MI') "); + } + + if(dataDevolucaoInicial != null) { + sql.append("AND B.FECHORVENTA >= TO_DATE(:dataDevolucaoInicial,'DD/MM/YYYY HH24:MI') "); + } + + if(dataDevolucaoFinal != null) { + sql.append("AND B.FECHORVENTA <= TO_DATE(:dataDevolucaoFinal,'DD/MM/YYYY HH24:MI') "); + } + sql.append("AND B.CATEGORIA_ID NOT IN (SELECT VALORCONSTANTE FROM CONSTANTE WHERE NOMBCONSTANTE = 'GRATUIDADE_CRIANCA') "); sql.append(estados == null ? "" : "AND EST.ESTADO_ID IN (" + estados + ") "); sql.append(puntoVentas == null ? "" : "AND PTV.PUNTOVENTA_ID IN (" + puntoVentas + ") "); diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDevolucaoBilhetesFinanceiro.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDevolucaoBilhetesFinanceiro.java new file mode 100644 index 000000000..303ebfa46 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDevolucaoBilhetesFinanceiro.java @@ -0,0 +1,175 @@ +package com.rjconsultores.ventaboletos.relatorios.impl; + +import java.math.BigDecimal; +import java.sql.Connection; +import java.sql.ResultSet; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; + +import org.apache.log4j.Logger; + +import com.rjconsultores.ventaboletos.entidad.Estado; +import com.rjconsultores.ventaboletos.entidad.PuntoVenta; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.DataSource; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.DevolucaoBilhetes; +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 RelatorioDevolucaoBilhetesFinanceiro extends Relatorio { + + private static Logger log = Logger.getLogger(RelatorioDevolucaoBilhetesFinanceiro.class); + + public RelatorioDevolucaoBilhetesFinanceiro(Map parametros, Connection conexao) throws Exception { + super(parametros, conexao); + + this.setCustomDataSource(new DataSource(this) { + @SuppressWarnings("unchecked") + @Override + public void initDados() throws Exception { + + Connection conexao = this.relatorio.getConexao(); + Map parametros = this.relatorio.getParametros(); + + List lsPuntoVenta = parametros.get("PUNTOVENTAS") == null ? new ArrayList() : (ArrayList) parametros.get("PUNTOVENTAS"); + List lsEstado = parametros.get("ESTADOS") == null ? new ArrayList() : (ArrayList) parametros.get("ESTADOS"); + Integer empresaId = parametros.get("EMPRESA_ID") == null ? null : (Integer) parametros.get("EMPRESA_ID"); + Date dataVendaInicial = parametros.get("dataVendaInicial") == null ? null : (Date) parametros.get("dataVendaInicial"); + Date dataVendaFinal = parametros.get("dataVendaFinal") == null ? null : (Date) parametros.get("dataVendaFinal"); + Date dataDevolucaoInicial = parametros.get("dataDevolucaoInicial") == null ? null : (Date) parametros.get("dataDevolucaoInicial"); + Date dataDevolucaoFinal = parametros.get("dataDevolucaoFinal") == null ? null : (Date) parametros.get("dataDevolucaoFinal"); + + String puntoVentas = null; + for (PuntoVenta pv : lsPuntoVenta) { + if (lsPuntoVenta.indexOf(pv) == 0) { + puntoVentas = "" + pv.getPuntoventaId(); + } else { + puntoVentas += ", " + pv.getPuntoventaId(); + } + } + + String estados = null; + for (Estado e : lsEstado) { + if (lsEstado.indexOf(e) == 0) { + estados = "" + e.getEstadoId(); + } else { + estados += ", " + e.getEstadoId(); + } + } + + String sql = getSql(empresaId, puntoVentas, estados, dataVendaInicial, dataVendaFinal, dataDevolucaoInicial, dataDevolucaoFinal); + log.debug(sql); + + NamedParameterStatement stmt = new NamedParameterStatement(conexao, sql); + ResultSet rset = null; + + if(dataVendaInicial != null) { + stmt.setString("dataVendaInicial", DateUtil.getStringDate(dataVendaInicial, "dd/MM/yyyy HH:mm")); + } + + if(dataVendaFinal != null) { + stmt.setString("dataVendaFinal", DateUtil.getStringDate(dataVendaFinal, "dd/MM/yyyy HH:mm")); + } + + if(dataDevolucaoInicial != null) { + stmt.setString("dataDevolucaoInicial", DateUtil.getStringDate(dataDevolucaoInicial, "dd/MM/yyyy HH:mm")); + } + + if(dataDevolucaoFinal != null) { + stmt.setString("dataDevolucaoFinal", DateUtil.getStringDate(dataDevolucaoFinal, "dd/MM/yyyy HH:mm")); + } + + rset = stmt.executeQuery(); + + List lsDev = new ArrayList(); + while (rset.next()) { + + DevolucaoBilhetes db = new DevolucaoBilhetes(); + db.setNumFolioSistema((String) rset.getObject("NUMFOLIOSISTEMA")); + db.setFolio((String) rset.getObject("FOLIO")); + db.setFechorVenta((String) rset.getObject("FECHOR_VENTA")); + db.setFechorDevolucao((String) rset.getObject("FECHOR_DEVOLUCAO")); + db.setEmpresaId(rset.getObject("EMPRESA_ID") == null ? null : ((BigDecimal) rset.getObject("EMPRESA_ID")).intValue()); + db.setEmpresa((String) rset.getObject("NOMB_EMPRESA")); + db.setNombpuntoventa((String) rset.getObject("NOMBPUNTOVENTA")); + db.setNombpuntoventaOrigem((String) rset.getObject("NOMBPUNTOVENTARIGEM")); + db.setDescorigem((String) rset.getObject("DESCORIGEM")); + db.setDescdestino((String) rset.getObject("DESCDESTINO")); + db.setCveusuario((String) rset.getObject("CVEUSUARIO")); + db.setTotalBilhete(rset.getBigDecimal("TOTAL")); + + lsDev.add(db); + } + + setLsDadosRelatorio(lsDev); + } + }); + + } + + public void setLsDadosRelatorio(List lsDev) { + this.setCollectionDataSource(new JRBeanCollectionDataSource(lsDev)); + } + + private String getSql(Integer empresaId, String puntoVentas, String estados, Date dataVendaInicial, Date dataVendaFinal, Date dataDevolucaoInicial, Date dataDevolucaoFinal) { + + StringBuilder sql = new StringBuilder(); + sql.append("SELECT E.NOMBEMPRESA AS NOMB_EMPRESA, "); + sql.append(" E.EMPRESA_ID AS EMPRESA_ID, "); + sql.append(" PTV.NOMBPUNTOVENTA AS NOMBPUNTOVENTA, "); + sql.append(" PTVO.NOMBPUNTOVENTA AS NOMBPUNTOVENTARIGEM, "); + sql.append(" ORI.DESCPARADA AS DESCORIGEM, "); + sql.append(" DES.DESCPARADA AS DESCDESTINO, "); + sql.append(" B.NUMFOLIOSISTEMA AS NUMFOLIOSISTEMA, "); + sql.append(" B.NUMFOLIOPREIMPRESO AS FOLIO, "); + sql.append(" U.CVEUSUARIO AS CVEUSUARIO, "); + sql.append(" TO_CHAR(B.FECHORVENTA, 'DD/MM/YYYY') AS FECHOR_DEVOLUCAO, "); + sql.append(" TO_CHAR(BORI.FECHORVENTA, 'DD/MM/YYYY') AS FECHOR_VENTA, "); + sql.append(" NVL(B.PRECIOPAGADO,0) + NVL(B.IMPORTEOUTROS,0) + NVL(B.IMPORTEPEDAGIO,0) + NVL(B.IMPORTESEGURO,0) + NVL(B.IMPORTETAXAEMBARQUE,0) AS TOTAL "); + sql.append("FROM BOLETO B "); + sql.append("INNER JOIN MARCA M ON M.MARCA_ID = B.MARCA_ID AND M.ACTIVO = 1 "); + sql.append("INNER JOIN EMPRESA E ON E.EMPRESA_ID = M.EMPRESA_ID "); + sql.append("INNER JOIN PUNTO_VENTA PTV ON PTV.PUNTOVENTA_ID = B.PUNTOVENTA_ID "); + sql.append("INNER JOIN PARADA ORI ON (B.ORIGEN_ID = ORI.PARADA_ID ) "); + sql.append("INNER JOIN PARADA DES ON (B.DESTINO_ID = DES.PARADA_ID ) "); + sql.append("LEFT JOIN PUNTO_VENTA PTVO ON PTVO.PUNTOVENTA_ID = B.PTOVTAVENTA_ID "); + sql.append("LEFT JOIN BOLETO BORI ON BORI.BOLETO_ID = B.BOLETOORIGINAL_ID "); + sql.append("JOIN USUARIO U ON U.USUARIO_ID = B.USUARIO_ID "); + sql.append("WHERE B.MOTIVOCANCELACION_ID IN (31,32,10,37,99,36) "); + sql.append("AND B.INDSTATUSBOLETO = 'C' "); + sql.append("AND B.INDCANCELACION = 1 "); + + if(dataVendaInicial != null) { + sql.append("AND BORI.FECHORVENTA >= TO_DATE(:dataVendaInicial,'DD/MM/YYYY HH24:MI') "); + } + + if(dataVendaFinal != null) { + sql.append("AND BORI.FECHORVENTA <= TO_DATE(:dataVendaFinal,'DD/MM/YYYY HH24:MI') "); + } + + if(dataDevolucaoInicial != null) { + sql.append("AND B.FECHORVENTA >= TO_DATE(:dataDevolucaoInicial,'DD/MM/YYYY HH24:MI') "); + } + + if(dataDevolucaoFinal != null) { + sql.append("AND B.FECHORVENTA <= TO_DATE(:dataDevolucaoFinal,'DD/MM/YYYY HH24:MI') "); + } + + sql.append("AND B.CATEGORIA_ID NOT IN (SELECT VALORCONSTANTE FROM CONSTANTE WHERE NOMBCONSTANTE = 'GRATUIDADE_CRIANCA') "); + sql.append(estados == null ? "" : "AND EST.ESTADO_ID IN (" + estados + ") "); + sql.append(puntoVentas == null ? "" : "AND PTV.PUNTOVENTA_ID IN (" + puntoVentas + ") "); + sql.append(empresaId == null ? "" : "AND E.EMPRESA_ID IN (" + empresaId + ") "); + sql.append("ORDER BY NOMB_EMPRESA, FECHOR_VENTA"); + + return sql.toString(); + } + + @Override + protected void processaParametros() throws Exception { + } + +} diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDevolucaoBilhetesConsolidado_es.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDevolucaoBilhetesConsolidado_es.properties index e0124ec2b..1aeded8ec 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDevolucaoBilhetesConsolidado_es.properties +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDevolucaoBilhetesConsolidado_es.properties @@ -5,6 +5,7 @@ msg.noData=N label.titulo=Relatório de Devolução de Bilhetes Consolidado label.periodo=Período: label.ate=até +label.de=de label.filtros=Fitros: label.aidf=AIDF(Bilhetes Manuais) label.serieSubs=Série/Subs.(ECF) @@ -18,4 +19,8 @@ label.total=Total label.qtdeBilhetes=Quantidade de Bilhetes label.totalBilhete=Total Bilhete label.numpuntoventa=Nº Agência -label.nombpuntoventa=Agência \ No newline at end of file +label.nombpuntoventa=Agência +label.periodoVenda=Data Venda: +label.periodoDevolucao=Data Devolução: +label.dataHora=Emitido em: +label.impressorPor=Emitido Por: \ No newline at end of file diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDevolucaoBilhetesConsolidado_pt_BR.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDevolucaoBilhetesConsolidado_pt_BR.properties index e0124ec2b..1aeded8ec 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDevolucaoBilhetesConsolidado_pt_BR.properties +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDevolucaoBilhetesConsolidado_pt_BR.properties @@ -5,6 +5,7 @@ msg.noData=N label.titulo=Relatório de Devolução de Bilhetes Consolidado label.periodo=Período: label.ate=até +label.de=de label.filtros=Fitros: label.aidf=AIDF(Bilhetes Manuais) label.serieSubs=Série/Subs.(ECF) @@ -18,4 +19,8 @@ label.total=Total label.qtdeBilhetes=Quantidade de Bilhetes label.totalBilhete=Total Bilhete label.numpuntoventa=Nº Agência -label.nombpuntoventa=Agência \ No newline at end of file +label.nombpuntoventa=Agência +label.periodoVenda=Data Venda: +label.periodoDevolucao=Data Devolução: +label.dataHora=Emitido em: +label.impressorPor=Emitido Por: \ No newline at end of file diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDevolucaoBilhetesFinanceiro_es.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDevolucaoBilhetesFinanceiro_es.properties new file mode 100644 index 000000000..9bdda4b4e --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDevolucaoBilhetesFinanceiro_es.properties @@ -0,0 +1,26 @@ +#geral +msg.noData=Não foi possivel obter dados com os parâmetros informados. + +#labels +label.titulo=Relatório de Devolução de Bilhetes - Financeiro +label.periodo=Período +label.ate=até +label.de=de +label.filtros=Fitros: +label.pagina=Página: +label.periodoVenda=Data Venda: +label.periodoDevolucao=Data Devolução: +label.dataHora=Emitido em: +label.impressorPor=Emitido Por: +label.total=Total +label.qtdeBilhetes=Quantidade de Bilhetes +label.nombpuntoventa=Ag. Emissão +label.descorigem=Origem +label.descdestino=Destino +label.fechorVenta=Dt Emissão +label.numeroBilhete=Nº Bilhete +label.numero=Número +label.totalBilhete=Total Bilhete +label.fechorDevolucao=Dt Devolução +label.nombpuntoventa=Ag. Devolução +label.cveusuario=Bilheteiro \ No newline at end of file diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDevolucaoBilhetesFinanceiro_pt_BR.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDevolucaoBilhetesFinanceiro_pt_BR.properties new file mode 100644 index 000000000..9bdda4b4e --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDevolucaoBilhetesFinanceiro_pt_BR.properties @@ -0,0 +1,26 @@ +#geral +msg.noData=Não foi possivel obter dados com os parâmetros informados. + +#labels +label.titulo=Relatório de Devolução de Bilhetes - Financeiro +label.periodo=Período +label.ate=até +label.de=de +label.filtros=Fitros: +label.pagina=Página: +label.periodoVenda=Data Venda: +label.periodoDevolucao=Data Devolução: +label.dataHora=Emitido em: +label.impressorPor=Emitido Por: +label.total=Total +label.qtdeBilhetes=Quantidade de Bilhetes +label.nombpuntoventa=Ag. Emissão +label.descorigem=Origem +label.descdestino=Destino +label.fechorVenta=Dt Emissão +label.numeroBilhete=Nº Bilhete +label.numero=Número +label.totalBilhete=Total Bilhete +label.fechorDevolucao=Dt Devolução +label.nombpuntoventa=Ag. Devolução +label.cveusuario=Bilheteiro \ No newline at end of file diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDevolucaoBilhetes_es.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDevolucaoBilhetes_es.properties index 3c8ae2ab1..9f3053065 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDevolucaoBilhetes_es.properties +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDevolucaoBilhetes_es.properties @@ -2,9 +2,10 @@ msg.noData=Não foi possivel obter dados com os parâmetros informados. #labels -label.titulo=Relatório de Devolução de Bilhetes -label.periodo=Período: +label.titulo=Relatório de Devolução de Bilhetes - Fiscal +label.periodo=Período label.ate=até +label.de=de label.filtros=Fitros: label.aidf=AIDF(Bilhetes Manuais) label.serieSubs=Série/Subs.(ECF) @@ -20,4 +21,14 @@ label.totalBilhete=Total Bilhete label.numeroBilhete=Nº Bilhete label.numpuntoventa=Nº Agência label.uf=UF -label.numpuntoventaOrigem=Nº Agência Origem \ No newline at end of file +label.numpuntoventaOrigem=Nº Agência Origem +label.periodoVenda=Data Venda: +label.periodoDevolucao=Data Devolução: +label.dataHora=Emitido em: +label.impressorPor=Emitido Por: +label.isenta=Isenta +label.outras=Outras +label.fechorDevolucao=Dt Devolução +label.impEstornarInterestadual=Imposto a Estornar Interestadual +label.impEstornarIntermunicipal=Imposto a Estornar Intermunicipal +label.impEstornarTotal=Imposto a Estornar Total \ No newline at end of file diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDevolucaoBilhetes_pt_BR.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDevolucaoBilhetes_pt_BR.properties index 3c8ae2ab1..9f3053065 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDevolucaoBilhetes_pt_BR.properties +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDevolucaoBilhetes_pt_BR.properties @@ -2,9 +2,10 @@ msg.noData=Não foi possivel obter dados com os parâmetros informados. #labels -label.titulo=Relatório de Devolução de Bilhetes -label.periodo=Período: +label.titulo=Relatório de Devolução de Bilhetes - Fiscal +label.periodo=Período label.ate=até +label.de=de label.filtros=Fitros: label.aidf=AIDF(Bilhetes Manuais) label.serieSubs=Série/Subs.(ECF) @@ -20,4 +21,14 @@ label.totalBilhete=Total Bilhete label.numeroBilhete=Nº Bilhete label.numpuntoventa=Nº Agência label.uf=UF -label.numpuntoventaOrigem=Nº Agência Origem \ No newline at end of file +label.numpuntoventaOrigem=Nº Agência Origem +label.periodoVenda=Data Venda: +label.periodoDevolucao=Data Devolução: +label.dataHora=Emitido em: +label.impressorPor=Emitido Por: +label.isenta=Isenta +label.outras=Outras +label.fechorDevolucao=Dt Devolução +label.impEstornarInterestadual=Imposto a Estornar Interestadual +label.impEstornarIntermunicipal=Imposto a Estornar Intermunicipal +label.impEstornarTotal=Imposto a Estornar Total \ No newline at end of file diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDevolucaoBilhetes.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDevolucaoBilhetes.jasper index 220bf87322dd3957e1d9718c7e8ec32014ed19e9..e05353430b8a4babab4e9039489ae273436134c7 100644 GIT binary patch literal 71883 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 BYE1wD literal 53432 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 - + - - + + + + @@ -41,7 +43,6 @@ - @@ -55,6 +56,11 @@ + + + + + @@ -76,20 +82,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -97,7 +196,7 @@ - + @@ -109,16 +208,16 @@ - - - + + + - + - - - + + + @@ -126,26 +225,40 @@ - - - + + + - - + + - - - + + + + + + + + + + + + + + + + + @@ -153,7 +266,7 @@ - + @@ -162,72 +275,133 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - + + + - - - - + + + + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -245,180 +419,224 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + @@ -429,24 +647,21 @@ - + - - - - + - + @@ -454,33 +669,47 @@ - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + @@ -488,7 +717,7 @@ - + diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDevolucaoBilhetesConsolidado.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDevolucaoBilhetesConsolidado.jasper index 2df969a1ba9e66ae10f8b9311d14f5afe6573f8e..3b7fbf4074f8cd6c21070c5fdb42d58c16fe9cf8 100644 GIT binary patch literal 54478 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 Ji#p7e{C{1?5rqH% literal 49214 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 iHehy)b+Qy27PvP)#inGtmee~$Fb`YT8r4C7 - + - + - - + + + + @@ -154,7 +156,7 @@ - + @@ -163,71 +165,132 @@ + + + - - - - - - - - - - - - - - - - - + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - + + + - - - - - - - - - - - - - - - - + diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDevolucaoBilhetesFinanceiro.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDevolucaoBilhetesFinanceiro.jasper new file mode 100644 index 0000000000000000000000000000000000000000..3df124dfe4c0122292c0dc8de4316c4c36b1699e GIT binary patch literal 51723 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%0AUi<%eidW~O5fG! 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 Q9{iY#t$_{d@J8(a0XE_KxBvhE literal 0 HcmV?d00001 diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDevolucaoBilhetesFinanceiro.jrxml b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDevolucaoBilhetesFinanceiro.jrxml new file mode 100644 index 000000000..9a2ba535f --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDevolucaoBilhetesFinanceiro.jrxml @@ -0,0 +1,468 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDevolucaoBilhetesTeste.jrxml b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDevolucaoBilhetesTeste.jrxml new file mode 100644 index 000000000..d36870bad --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDevolucaoBilhetesTeste.jrxml @@ -0,0 +1,470 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/DevolucaoBilhetes.java b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/DevolucaoBilhetes.java index 7aaaa5983..7b1807ca9 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/DevolucaoBilhetes.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/DevolucaoBilhetes.java @@ -18,9 +18,17 @@ public class DevolucaoBilhetes { private BigDecimal icms; private BigDecimal valorIcms; private String fechorVenta; + private String fechorDevolucao; private String numpuntoventa; private String numpuntoventaOrigem; private String nombpuntoventa; + private String nombpuntoventaOrigem; + private String descorigem; + private String descdestino; + private String cveusuario; + private boolean isenta; + private BigDecimal valorIsenta; + private BigDecimal valorContabil; BigDecimal porcMunicipal; BigDecimal porcEstadual; @@ -213,4 +221,72 @@ public class DevolucaoBilhetes { this.numpuntoventaOrigem = numpuntoventaOrigem; } + public String getNombpuntoventaOrigem() { + return nombpuntoventaOrigem; + } + + public void setNombpuntoventaOrigem(String nombpuntoventaOrigem) { + this.nombpuntoventaOrigem = nombpuntoventaOrigem; + } + + public String getDescorigem() { + return descorigem; + } + + public void setDescorigem(String descorigem) { + this.descorigem = descorigem; + } + + public String getDescdestino() { + return descdestino; + } + + public void setDescdestino(String descdestino) { + this.descdestino = descdestino; + } + + public String getFechorDevolucao() { + return fechorDevolucao; + } + + public void setFechorDevolucao(String fechorDevolucao) { + this.fechorDevolucao = fechorDevolucao; + } + + public String getCveusuario() { + return cveusuario; + } + + public void setCveusuario(String cveusuario) { + this.cveusuario = cveusuario; + } + + public boolean isIsenta() { + return isenta; + } + + public void setIsenta(boolean isenta) { + this.isenta = isenta; + } + + public BigDecimal getValorIsenta() { + return valorIsenta; + } + + public void setValorIsenta(BigDecimal valorIsenta) { + this.valorIsenta = valorIsenta; + } + + public BigDecimal getValorContabil() { + return valorContabil; + } + + public void setValorContabil(BigDecimal valorContabil) { + this.valorContabil = valorContabil; + } + + public BigDecimal getValorOutras() { + return valorContabil.subtract(precioPagado); + } + } diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/EditarRegionMetropolitanaController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/EditarRegionMetropolitanaController.java index b94dae851..4e0cbc48d 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/EditarRegionMetropolitanaController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/EditarRegionMetropolitanaController.java @@ -4,6 +4,7 @@ */ package com.rjconsultores.ventaboletos.web.gui.controladores.catalogos; +import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; @@ -52,7 +53,7 @@ public class EditarRegionMetropolitanaController extends MyGenericForwardCompose private MyComboboxParadaCve cmbParadaCve; private MyListbox paradaList; - private MyListbox paradaListDeletada; + private List paradaListDeletada; @Override public void doAfterCompose(Component comp) throws Exception { @@ -95,7 +96,7 @@ public class EditarRegionMetropolitanaController extends MyGenericForwardCompose try { - if (paradaList.getListModel().getSize() == 0) { + if (paradaList.getListModel() == null || paradaList.getListModel().getSize() == 0) { Messagebox.show( Labels.getLabel("editarRegionMetropolitanaController.MSG.vazio"), Labels.getLabel("editarRegionMetropolitanaController.window.title"), @@ -110,14 +111,17 @@ public class EditarRegionMetropolitanaController extends MyGenericForwardCompose regionMetropolitanaService.actualizacion(regionMetropolitana); regionMetropolitanaList.updateItem(regionMetropolitana); } - for (Object parada : paradaList.getListData()) { - paradaService.suscribirActualizar((Parada) parada); - } - if (!paradaListDeletada.getListData().isEmpty()) { - for (Object parada : paradaListDeletada.getListData()) { + + if(paradaList.getListData() != null) { + for (Object parada : paradaList.getListData()) { paradaService.suscribirActualizar((Parada) parada); } - + } + + if (paradaListDeletada != null) { + for (Parada parada : paradaListDeletada) { + paradaService.suscribirActualizar(parada); + } } Messagebox.show( @@ -170,7 +174,10 @@ public class EditarRegionMetropolitanaController extends MyGenericForwardCompose Parada parada = (Parada) paradaList.getSelected(); parada.setRegionMetropolitana(null); - paradaListDeletada.addItemNovo(parada); + if(paradaListDeletada == null) { + paradaListDeletada = new ArrayList(); + } + paradaListDeletada.add(parada); paradaList.removeItem(parada); diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioDevolucaoBilhetesController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioDevolucaoBilhetesController.java index 3db3f0c01..24ab23e08 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioDevolucaoBilhetesController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioDevolucaoBilhetesController.java @@ -4,7 +4,6 @@ */ package com.rjconsultores.ventaboletos.web.gui.controladores.relatorios; -import java.sql.Timestamp; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -32,6 +31,7 @@ import com.rjconsultores.ventaboletos.entidad.Estado; import com.rjconsultores.ventaboletos.entidad.PuntoVenta; import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioDevolucaoBilhetes; import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioDevolucaoBilhetesConsolidado; +import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioDevolucaoBilhetesFinanceiro; import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; import com.rjconsultores.ventaboletos.service.EstadoService; import com.rjconsultores.ventaboletos.utilerias.DateUtil; @@ -75,8 +75,11 @@ public class RelatorioDevolucaoBilhetesController extends MyGenericForwardCompos private Combobox cmbPuntoVenta; private Datebox datInicial; private Datebox datFinal; + private Datebox datDevolucaoInicial; + private Datebox datDevolucaoFinal; - private Radio rAnalitico; + private Radio rFiscal; + private Radio rFinanceiro; private Radio rConsolidado; private void executarPesquisa() { @@ -106,9 +109,20 @@ public class RelatorioDevolucaoBilhetesController extends MyGenericForwardCompos Map parametros = new HashMap(); StringBuilder filtro = new StringBuilder(); - parametros.put("DATA_INICIO", new Timestamp((DateUtil.inicioFecha((java.util.Date) this.datInicial.getValue()).getTime()))); - parametros.put("DATA_FINAL", new Timestamp((DateUtil.fimFecha((java.util.Date) this.datFinal.getValue()).getTime()))); - parametros.put("USUARIO", UsuarioLogado.getUsuarioLogado().getUsuarioId().toString()); + if(this.datInicial.getValue() != null) { + parametros.put("dataVendaInicial", DateUtil.inicioFecha(this.datInicial.getValue())); + } + if(this.datFinal.getValue() != null) { + parametros.put("dataVendaFinal", DateUtil.fimFecha(this.datFinal.getValue())); + } + if(this.datDevolucaoInicial.getValue() != null) { + parametros.put("dataDevolucaoInicial", DateUtil.inicioFecha(this.datDevolucaoInicial.getValue())); + } + if(this.datDevolucaoFinal.getValue() != null) { + parametros.put("dataDevolucaoFinal", DateUtil.fimFecha(this.datDevolucaoFinal.getValue())); + } + + parametros.put("USUARIO", UsuarioLogado.getUsuarioLogado().getClaveUsuario()); filtro.append("Agência(s): "); if (puntoVentaSelList.getListData().size() > 0) { @@ -121,32 +135,41 @@ public class RelatorioDevolucaoBilhetesController extends MyGenericForwardCompos filtro.append(puntoVentaSelList.getListData().size() + " selecionada(s);"); } else { parametros.put("ISNUMPUNTOVENTATODOS", "S"); - filtro.append("Todas ;"); + filtro.append("Todas"); } - filtro.append("Estados(s): "); + filtro.append("; Estado(s): "); if (estadoList.getSelectedsItens().size() > 0) { parametros.put("ESTADOS", estadoList.getSelectedsItens()); - filtro.append(estadoList.getSelectedsItens().size() + " selecionado(s);"); + StringBuilder sEstados = new StringBuilder(); + for (Object estado : estadoList.getSelectedsItens()) { + if(sEstados.length() > 0) { + sEstados.append("; "); + } + sEstados.append(((Estado)estado).getCveestado()); + } + filtro.append(sEstados.toString()); } else { - filtro.append("Todos ;"); + filtro.append("Todos"); } - filtro.append("Empresa: "); + filtro.append("; Empresa: "); Comboitem itemEmpresa = cmbEmpresa.getSelectedItem(); if (itemEmpresa != null) { Empresa empresa = (Empresa) itemEmpresa.getValue(); parametros.put("EMPRESA_ID", empresa.getEmpresaId()); filtro.append(empresa.getNombempresa()); } else { - filtro.append("Todos ;"); + filtro.append("Todos; "); } parametros.put("FILTROS", filtro.toString()); Relatorio relatorio = null; - if(rAnalitico.isChecked()) { + if(rFiscal.isChecked()) { relatorio = new RelatorioDevolucaoBilhetes(parametros, dataSourceRead.getConnection()); + } else if(rFinanceiro.isChecked()) { + relatorio = new RelatorioDevolucaoBilhetesFinanceiro(parametros, dataSourceRead.getConnection()); } else if(rConsolidado.isChecked()) { relatorio = new RelatorioDevolucaoBilhetesConsolidado(parametros, dataSourceRead.getConnection()); } @@ -155,7 +178,7 @@ public class RelatorioDevolucaoBilhetesController extends MyGenericForwardCompos args.put("relatorio", relatorio); openWindow("/component/reportView.zul", - Labels.getLabel("relatorioReceitaDiariaAgenciaController.window.title"), args, MODAL); + Labels.getLabel("relatorioDevolucaoBilhetesAgenciaController.window.title"), args, MODAL); } @Override diff --git a/web/WEB-INF/i3-label_es_MX.label b/web/WEB-INF/i3-label_es_MX.label index 2e37f85f2..f93210553 100644 --- a/web/WEB-INF/i3-label_es_MX.label +++ b/web/WEB-INF/i3-label_es_MX.label @@ -516,6 +516,33 @@ busquedaRelatorioRDIController.labelRadio.radNao = Não busquedaRelatorioRDIController.seleciona.empresa = Deve ser selecionada uma empresa busquedaRelatorioRDIController.seleciona.estado = Deve ser selecionado ao menos um estado +#Devolução de Bilhetes +relatorioDevolucaoBilhetesAgenciaController.window.title = Relatório de Devolução de Bilhetes +relatorioDevolucaoBilhetesAgenciaController.lbDataVendaIni.value = DT Venda Inicial +relatorioDevolucaoBilhetesAgenciaController.lbDataVendaFin.value = DT Venda Final +relatorioDevolucaoBilhetesAgenciaController.lbDataDevolucaoIni.value = DT Devolução Inicial +relatorioDevolucaoBilhetesAgenciaController.lbDataDevolucaoFin.value = DT Devolução Final +relatorioDevolucaoBilhetesAgenciaController.lbEstado.value = Estado +relatorioDevolucaoBilhetesAgenciaController.lbPuntoVenta.value = Agência +relatorioDevolucaoBilhetesAgenciaController.btnPesquisa.label = Pesquisar +relatorioDevolucaoBilhetesAgenciaController.btnLimpar.label = Limpar Seleção +relatorioDevolucaoBilhetesAgenciaController.puntoVentaSelList.codigo = Código +relatorioDevolucaoBilhetesAgenciaController.puntoVentaSelList.nome = Nome +relatorioDevolucaoBilhetesAgenciaController.lbEmpresa.value = Empresa +relatorioDevolucaoBilhetesAgenciaController.chkDesconsideraMes.label = Desconsiderar devoluções no mês/ano da emissão +relatorioDevolucaoBilhetesAgenciaController.rdIndDataBase.label = Periodo com base na data de: +relatorioDevolucaoBilhetesAgenciaController.rdIndDataBase.cmbItemEmissao = Emissão +relatorioDevolucaoBilhetesAgenciaController.rdIndDataBase.cmbItemDevolucao = Devolução +relatorioDevolucaoBilhetesAgenciaController.rdIndAgrupamento.label = Agrupado por: +relatorioDevolucaoBilhetesAgenciaController.rdIndAgrupamento.cmbItemData = Data +relatorioDevolucaoBilhetesAgenciaController.rdIndAgrupamento.cmbItemLocalidade = Localidade +relatorioDevolucaoBilhetesAgenciaController.rdIndTpoRelatorio.label = Tipo de Relatório: +relatorioDevolucaoBilhetesAgenciaController.rdIndTpoRelatorio.cmbItemData = Bilhetes Devolvidos +relatorioDevolucaoBilhetesAgenciaController.rdIndTpoRelatorio.cmbItemLocalidade = GAPs Devolvidos +relatorioDevolucaoBilhetesAgenciaController.tipo.lbTipo = Tipo +relatorioDevolucaoBilhetesAgenciaController.tipo.lbFiscal = Fiscal +relatorioDevolucaoBilhetesAgenciaController.tipo.lbFinanceiro = Financeiro +relatorioDevolucaoBilhetesAgenciaController.tipo.lbConsolidado = Consolidado #Reporte Acompanhamento Equivalentes relatorioAcompanhamentoEquivalentesController.window.title = Reporte de acompañamiento de equivalentes diff --git a/web/WEB-INF/i3-label_pt_BR.label b/web/WEB-INF/i3-label_pt_BR.label index d96d64d01..709459ee2 100644 --- a/web/WEB-INF/i3-label_pt_BR.label +++ b/web/WEB-INF/i3-label_pt_BR.label @@ -583,8 +583,10 @@ busquedaRelatorioRDIController.seleciona.estado = Deve ser selecionado ao menos #Devolução de Bilhetes relatorioDevolucaoBilhetesAgenciaController.window.title = Relatório de Devolução de Bilhetes -relatorioDevolucaoBilhetesAgenciaController.lbDataIni.value = Data Inicial -relatorioDevolucaoBilhetesAgenciaController.lbDataFin.value = Data Final +relatorioDevolucaoBilhetesAgenciaController.lbDataVendaIni.value = DT Venda Inicial +relatorioDevolucaoBilhetesAgenciaController.lbDataVendaFin.value = DT Venda Final +relatorioDevolucaoBilhetesAgenciaController.lbDataDevolucaoIni.value = DT Devolução Inicial +relatorioDevolucaoBilhetesAgenciaController.lbDataDevolucaoFin.value = DT Devolução Final relatorioDevolucaoBilhetesAgenciaController.lbEstado.value = Estado relatorioDevolucaoBilhetesAgenciaController.lbPuntoVenta.value = Agência relatorioDevolucaoBilhetesAgenciaController.btnPesquisa.label = Pesquisar @@ -603,7 +605,8 @@ relatorioDevolucaoBilhetesAgenciaController.rdIndTpoRelatorio.label = Tipo de Re relatorioDevolucaoBilhetesAgenciaController.rdIndTpoRelatorio.cmbItemData = Bilhetes Devolvidos relatorioDevolucaoBilhetesAgenciaController.rdIndTpoRelatorio.cmbItemLocalidade = GAPs Devolvidos relatorioDevolucaoBilhetesAgenciaController.tipo.lbTipo = Tipo -relatorioDevolucaoBilhetesAgenciaController.tipo.lbAnalitico = Analítico +relatorioDevolucaoBilhetesAgenciaController.tipo.lbFiscal = Fiscal +relatorioDevolucaoBilhetesAgenciaController.tipo.lbFinanceiro = Financeiro relatorioDevolucaoBilhetesAgenciaController.tipo.lbConsolidado = Consolidado #Relatório Acompanhamento Equivalentes diff --git a/web/gui/relatorios/filtroRelatorioDevolucaoBilhetes.zul b/web/gui/relatorios/filtroRelatorioDevolucaoBilhetes.zul index 9306e5f71..f63c44efc 100644 --- a/web/gui/relatorios/filtroRelatorioDevolucaoBilhetes.zul +++ b/web/gui/relatorios/filtroRelatorioDevolucaoBilhetes.zul @@ -18,16 +18,28 @@ + + @@ -108,9 +120,11 @@