From 4d0cc7e850bd6eb9f213e2df15a2accce596223e Mon Sep 17 00:00:00 2001 From: aristides Date: Thu, 20 May 2021 12:23:22 +0000 Subject: [PATCH] fixes bug#22144 qua: dev: git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@106788 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../relatorios/impl/RelatorioTaxasLinha.java | 21 +- .../impl/RelatorioW2IAnalitico.java | 146 +++++++ .../impl/RelatorioW2ISintetico.java | 134 ++++++ .../RelatorioW2IAnalitico_pt_BR.properties | 13 + .../RelatorioW2ISintetico_pt_BR.properties | 13 + .../templates/RelatorioTaxasLinha.jasper | Bin 58470 -> 72495 bytes .../templates/RelatorioTaxasLinha.jrxml | 357 ++++++++++++---- .../templates/RelatorioW2IAnalitico.jasper | Bin 0 -> 43266 bytes .../templates/RelatorioW2IAnalitico.jrxml | 388 ++++++++++++++++++ .../templates/RelatorioW2ISintetico.jasper | Bin 0 -> 44880 bytes .../templates/RelatorioW2ISintetico.jrxml | 365 ++++++++++++++++ .../utilitarios/RelatorioTaxasLinhaBean.java | 36 ++ .../utilitarios/RelatorioW2IBean.java | 96 +++++ .../RelatorioW2ISinteticoBean.java | 65 +++ .../RelatorioTaxasLinhaController.java | 2 + .../relatorios/RelatorioW2IController.java | 278 +++++++++++++ .../ItemMenuRelatorioFinanceiroW2I.java | 25 ++ .../utilerias/menu/menu_original.properties | 1 + web/WEB-INF/i3-label_en.label | 19 + web/WEB-INF/i3-label_es_MX.label | 21 + web/WEB-INF/i3-label_pt_BR.label | 21 + .../relatorios/filtroRelatorioTaxasLinha.zul | 4 +- web/gui/relatorios/filtroRelatorioW2I.zul | 156 +++++++ 23 files changed, 2071 insertions(+), 90 deletions(-) create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioW2IAnalitico.java create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioW2ISintetico.java create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioW2IAnalitico_pt_BR.properties create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioW2ISintetico_pt_BR.properties create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioW2IAnalitico.jasper create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioW2IAnalitico.jrxml create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioW2ISintetico.jasper create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioW2ISintetico.jrxml create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioW2IBean.java create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioW2ISinteticoBean.java create mode 100644 src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioW2IController.java create mode 100644 src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/relatorios/ItemMenuRelatorioFinanceiroW2I.java create mode 100644 web/gui/relatorios/filtroRelatorioW2I.zul diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioTaxasLinha.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioTaxasLinha.java index 10d0c8ffe..1b276de4b 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioTaxasLinha.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioTaxasLinha.java @@ -49,7 +49,7 @@ public class RelatorioTaxasLinha extends Relatorio { String puntosVentaIds = (String) parametros.get("NUMPUNTOVENTA"); Boolean isTxEmbarque = (Boolean) parametros.get("IS_TX_EMBARQUE"); - Boolean isPedagio = (Boolean) parametros.get("IS_SEGURO"); + Boolean isPedagio = (Boolean) parametros.get("IS_PEDAGIO"); Boolean isSeguro = (Boolean) parametros.get("IS_SEGURO"); lsDadosRelatorio = new ArrayList(); @@ -113,6 +113,11 @@ public class RelatorioTaxasLinha extends Relatorio { BigDecimal pedagio_vendidos = rset1.getBigDecimal("PEDAGIO_VENDIDOS") == null ? BigDecimal.ZERO : rset1.getBigDecimal("PEDAGIO_VENDIDOS"); BigDecimal seguro_vendidos = rset1.getBigDecimal("SEGURO_VENDIDOS") == null ? BigDecimal.ZERO : rset1.getBigDecimal("SEGURO_VENDIDOS"); + BigDecimal qtdSeguroOpcionalCancelado = rset1.getBigDecimal("QTD_SEGUROOPCIONALCANCELADO") == null ? BigDecimal.ZERO : rset1.getBigDecimal("QTD_SEGUROOPCIONALCANCELADO"); + BigDecimal totalValorSeguroOpcionalCancelado = rset1.getBigDecimal("TOTAL_VALORSEGUROOPCIONALCANCELADO") == null ? BigDecimal.ZERO : rset1.getBigDecimal("TOTAL_VALORSEGUROOPCIONALCANCELADO"); + BigDecimal qtdSeguroOpcionalVendidos = rset1.getBigDecimal("QTD_SEGUROOPCIONALVENDIDOS") == null ? BigDecimal.ZERO : rset1.getBigDecimal("QTD_SEGUROOPCIONALVENDIDOS"); + BigDecimal totalValorseguroOpcionalVendido = rset1.getBigDecimal("TOTAL_VALORSEGUROOPCIONALVENDIDO") == null ? BigDecimal.ZERO : rset1.getBigDecimal("TOTAL_VALORSEGUROOPCIONALVENDIDO"); + RelatorioTaxasLinhaBean taxasLinha = new RelatorioTaxasLinhaBean(); @@ -182,6 +187,11 @@ public class RelatorioTaxasLinha extends Relatorio { taxasLinha.setPEDAGIO_VENDIDOS(pedagio_vendidos); taxasLinha.setSEGURO_VENDIDOS(seguro_vendidos); + taxasLinha.setQtdSeguroOpcionalCancelado(qtdSeguroOpcionalCancelado); + taxasLinha.setTotalValorSeguroOpcionalCancelado(totalValorSeguroOpcionalCancelado); + taxasLinha.setQtdSeguroOpcionalVendidos(qtdSeguroOpcionalVendidos); + taxasLinha.setTotalValorseguroOpcionalVendido(totalValorseguroOpcionalVendido); + if( importeTaxaEmbarque.doubleValue() > 0 && isTxEmbarque ) { isValidado = true; }else if( importeSeguro.doubleValue() > 0 && isSeguro ) { @@ -261,7 +271,11 @@ public class RelatorioTaxasLinha extends Relatorio { sql.append(" SUM( (case when cj.motivocancelacion_id is null then 1 else -1 end) * CJ.IMPORTETAXAEMBARQUE) TOTAL_EMBARQUE, "); sql.append(" SUM( (case when cj.motivocancelacion_id is null then 1 else -1 end) * CJ.IMPORTEPEDAGIO) TOTAL_PEDAGIO, "); sql.append(" SUM( (case when cj.motivocancelacion_id is null then 1 else -1 end) * CJ.IMPORTESEGURO) TOTAL_SEGURO, "); - sql.append(" EST.ICMS AS ICMS "); + sql.append(" EST.ICMS AS ICMS, "); + sql.append(" SUM( (case when tx.indcancelado >0 then 1 else 0.0 end)) QTD_SEGUROOPCIONALCANCELADO, "); + sql.append(" SUM( (case when tx.indcancelado >0 then tx.valortaxa else 0.0 end )) TOTAL_VALORSEGUROOPCIONALCANCELADO, "); + sql.append(" SUM( (case when tx.indcancelado =0 then 1 else 0.0 end )) QTD_SEGUROOPCIONALVENDIDOS, "); + sql.append(" SUM( (case when tx.indcancelado =0 then tx.valortaxa else 0.0 end )) TOTAL_VALORSEGUROOPCIONALVENDIDO "); sql.append("FROM CAJA CJ "); sql.append("INNER JOIN PUNTO_VENTA PV ON CJ.PUNTOVENTA_ID = PV.PUNTOVENTA_ID "); @@ -273,6 +287,7 @@ public class RelatorioTaxasLinha extends Relatorio { sql.append("INNER JOIN CIUDAD CD ON PD.CIUDAD_ID = CD.CIUDAD_ID "); sql.append("LEFT JOIN CORRIDA CR ON (CJ.CORRIDA_ID = CR.CORRIDA_ID AND CJ.FECCORRIDA = CR.FECCORRIDA) "); sql.append("LEFT JOIN RUTA RT ON RT.RUTA_ID = CJ.RUTA_ID "); + sql.append("LEFT JOIN TAXPOLV TX ON TX.BOLETO_ID =CJ.TRANSACAO_ID "); sql.append("WHERE (CJ.IMPORTETAXAEMBARQUE>0 OR CJ.IMPORTEPEDAGIO>0 OR CJ.IMPORTESEGURO>0) "); sql.append("AND CJ.INDSTATUSOPERACION = 'F' "); @@ -299,7 +314,7 @@ public class RelatorioTaxasLinha extends Relatorio { sql.append(" CJ.PUNTOVENTA_ID, "); sql.append(" PV.NOMBPUNTOVENTA, "); sql.append(" EST.ICMS "); - sql.append(" ORDER BY EM.NOMBEMPRESA, PO.DESCPARADA, PD.DESCPARADA, PV.NOMBPUNTOVENTA "); + sql.append(" ORDER BY EM.NOMBEMPRESA,PV.NOMBPUNTOVENTA ,PO.DESCPARADA, PD.DESCPARADA "); return sql.toString(); } diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioW2IAnalitico.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioW2IAnalitico.java new file mode 100644 index 000000000..519b790c5 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioW2IAnalitico.java @@ -0,0 +1,146 @@ +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; + +import org.apache.log4j.Logger; + +import com.rjconsultores.ventaboletos.relatorios.utilitarios.DataSource; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.RelatorioW2IBean; +import com.rjconsultores.ventaboletos.utilerias.DateUtil; +import com.rjconsultores.ventaboletos.web.utilerias.NamedParameterStatement; + +import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; + +public class RelatorioW2IAnalitico extends Relatorio { + + private static Logger log = Logger.getLogger(RelatorioW2IAnalitico.class); + private List lsDadosRelatorio; + + public RelatorioW2IAnalitico(Map parametros, Connection conexao) throws Exception { + super(parametros, conexao); + + this.setCustomDataSource(new DataSource(this) { + @Override + public void initDados() throws Exception { + + Connection conexao = this.relatorio.getConexao(); + Map parametros = this.relatorio.getParametros(); + String puntosVentaIds = (String) parametros.get("NUMPUNTOVENTA"); + + lsDadosRelatorio = new ArrayList(); + + String sql = getSql(puntosVentaIds); + + NamedParameterStatement stmt = new NamedParameterStatement(conexao, sql); + + ResultSet rset = null; + + stmt.setInt("TIPO_DATA", (Integer) parametros.get("TIPO_DATA")); + stmt.setTimestamp("DATA_INICIAL", new Timestamp(DateUtil.inicioFecha((Date) parametros.get("DATA_INICIAL")).getTime())); + stmt.setTimestamp("DATA_FINAL", new Timestamp(DateUtil.fimFecha((Date) parametros.get("DATA_FINAL")).getTime())); + + if (parametros.get("EMPRESA_ID") != null) + stmt.setInt("EMPRESA_ID", (Integer) parametros.get("EMPRESA_ID")); + else + stmt.setNull("EMPRESA_ID", java.sql.Types.INTEGER); + + if (parametros.get("ORIGEN_ID") != null && parametros.get("ORIGEN_ID") != "" && ((Integer) parametros.get("ORIGEN_ID") != -1)) + stmt.setInt("ORIGEN_ID", (Integer) parametros.get("ORIGEN_ID")); + else + stmt.setNull("ORIGEN_ID", java.sql.Types.INTEGER); + + if (parametros.get("DESTINO_ID") != null && parametros.get("DESTINO_ID") != "" && ((Integer) parametros.get("DESTINO_ID") != -1)) + stmt.setInt("DESTINO_ID", (Integer) parametros.get("DESTINO_ID")); + else + stmt.setNull("DESTINO_ID", java.sql.Types.INTEGER); + + rset = stmt.executeQuery(); + + RelatorioW2IBean relatorioW2IBean = null; + while (rset.next()) { + relatorioW2IBean = new RelatorioW2IBean(); + relatorioW2IBean.setEmpresaId(rset.getInt("empresaId")); + relatorioW2IBean.setEmpresa(rset.getString("empresa")); + relatorioW2IBean.setPuntoVentaId(rset.getInt("puntoVentaId")); + relatorioW2IBean.setAgencia(rset.getString("agencia")); + relatorioW2IBean.setNumBilhete(rset.getLong("numBilhete")); + relatorioW2IBean.setOrigem(rset.getString("origem")); + relatorioW2IBean.setDestino(rset.getString("destino")); + relatorioW2IBean.setDataVenda(rset.getDate("dataVenda")); + relatorioW2IBean.setDataViaje(rset.getDate("dataViaje")); + relatorioW2IBean.setPoltrona(rset.getString("poltrona")); + relatorioW2IBean.setStatus(rset.getString("status")); + relatorioW2IBean.setValorTaxa(rset.getBigDecimal("valorTaxa") == null ? BigDecimal.ZERO : rset.getBigDecimal("valorTaxa")); + + lsDadosRelatorio.add(relatorioW2IBean); + } + + if (lsDadosRelatorio.size() > 0) { + + setLsDadosRelatorio(lsDadosRelatorio); + } + } + + }); + } + + public void setLsDadosRelatorio(List lsDadosRelatorio) { + this.setCollectionDataSource(new JRBeanCollectionDataSource(lsDadosRelatorio)); + this.lsDadosRelatorio = lsDadosRelatorio; + } + + @Override + protected void processaParametros() throws Exception { + // TODO Auto-generated method stub + + } + + private String getSql(String puntosVentaIds) { + StringBuilder sql = new StringBuilder(); + sql.append("SELECT DISTINCT "); + sql.append("em.empresa_id AS empresaId, "); + sql.append("em.nombempresa AS empresa, "); + sql.append("pv.puntoventa_id AS puntoVentaId, "); + sql.append("pv.nombpuntoventa As agencia, "); + sql.append("tx.boleto_id AS numBilhete, "); + sql.append("po.descparada AS origem, "); + sql.append("pd.descparada AS destino, "); + sql.append("b.fechorviaje dataViaje, "); + sql.append("b.fechorventa dataVenda, "); + sql.append("b.numasiento AS poltrona, "); + sql.append("tx.valortaxa AS valorTaxa, "); + sql.append("CASE WHEN tx.indcancelado=0 THEN 'V' ELSE 'C' END status "); + + sql.append("FROM taxpolv tx "); + + sql.append("INNER JOIN boleto b on b.boleto_id=tx.boleto_id "); + sql.append("INNER JOIN punto_venta pv ON pv.PUNTOVENTA_ID = b.PUNTOVENTA_ID "); + sql.append("INNER JOIN empresa em ON em.empresa_id=b.empresacorrida_id "); + sql.append("INNER JOIN parada po ON po.parada_id=b.origen_id "); + sql.append("INNER JOIN parada pd ON pd.parada_id=b.destino_id "); + sql.append("INNER JOIN CIUDAD co ON co.ciudad_id=po.ciudad_id "); + sql.append("INNER JOIN CIUDAD cd ON cd.ciudad_id=pd.ciudad_id "); + + sql.append("WHERE DECODE(:TIPO_DATA, 1, b.FECHORVENTA, 2, b.FECCORRIDA) BETWEEN :DATA_INICIAL AND :DATA_FINAL "); + sql.append("AND em.empresa_id = COALESCE(:EMPRESA_ID, em.empresa_id) "); + sql.append("AND po.parada_id = COALESCE(:ORIGEN_ID, po.parada_id) "); + sql.append("AND pd.parada_id = COALESCE(:DESTINO_ID, pd.parada_id) "); + + if (!puntosVentaIds.equals("Todas")) { + sql.append(" AND pv.puntoventa_id IN (").append(puntosVentaIds).append(") "); + } + + sql.append("ORDER BY b.fechorventa ASC "); + + return sql.toString(); + }; + +} diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioW2ISintetico.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioW2ISintetico.java new file mode 100644 index 000000000..73f6cea14 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioW2ISintetico.java @@ -0,0 +1,134 @@ +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; + +import org.apache.log4j.Logger; + +import com.rjconsultores.ventaboletos.relatorios.utilitarios.DataSource; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.RelatorioW2ISinteticoBean; +import com.rjconsultores.ventaboletos.utilerias.DateUtil; +import com.rjconsultores.ventaboletos.web.utilerias.NamedParameterStatement; + +import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; + +public class RelatorioW2ISintetico extends Relatorio { + + private static Logger log = Logger.getLogger(RelatorioW2ISintetico.class); + private List lsDadosRelatorio; + + public RelatorioW2ISintetico(Map parametros, Connection conexao) throws Exception { + super(parametros, conexao); + + this.setCustomDataSource(new DataSource(this) { + @Override + public void initDados() throws Exception { + Connection conexao = this.relatorio.getConexao(); + Map parametros = this.relatorio.getParametros(); + + lsDadosRelatorio = new ArrayList(); + + String sql = getSql(parametros); + + NamedParameterStatement stmt = new NamedParameterStatement(conexao, sql); + ResultSet rset = null; + + stmt.setInt("TIPO_DATA", (Integer) parametros.get("TIPO_DATA")); + stmt.setTimestamp("DATA_INICIAL", new Timestamp(DateUtil.inicioFecha((Date) parametros.get("DATA_INICIAL")).getTime())); + stmt.setTimestamp("DATA_FINAL", new Timestamp(DateUtil.fimFecha((Date) parametros.get("DATA_FINAL")).getTime())); + + if (parametros.get("EMPRESA_ID") != null) + stmt.setInt("EMPRESA_ID", (Integer) parametros.get("EMPRESA_ID")); + + if (parametros.get("ORIGEN_ID") != null && parametros.get("ORIGEN_ID") != "" && ((Integer) parametros.get("ORIGEN_ID") != -1)) + stmt.setInt("ORIGEN_ID", (Integer) parametros.get("ORIGEN_ID")); + + if (parametros.get("DESTINO_ID") != null && parametros.get("DESTINO_ID") != "" && ((Integer) parametros.get("DESTINO_ID") != -1)) + stmt.setInt("DESTINO_ID", (Integer) parametros.get("DESTINO_ID")); + + rset = stmt.executeQuery(); + + RelatorioW2ISinteticoBean relatorioW2ISinteticoBean = null; + while (rset.next()) { + relatorioW2ISinteticoBean = new RelatorioW2ISinteticoBean(); + relatorioW2ISinteticoBean.setEmpresaId(rset.getInt("empresaId")); + relatorioW2ISinteticoBean.setEmpresa(rset.getString("empresa")); + relatorioW2ISinteticoBean.setPuntoVentaId(rset.getInt("puntoVentaId")); + relatorioW2ISinteticoBean.setAgencia(rset.getString("agencia")); + relatorioW2ISinteticoBean.setQtdSeguroOpcionalCancelado(rset.getBigDecimal("qtdSeguroOpcionalCancelado") == null ? BigDecimal.ZERO : rset.getBigDecimal("qtdSeguroOpcionalCancelado")); + relatorioW2ISinteticoBean.setTotalValorSeguroOpcionalCancelado(rset.getBigDecimal("totalValorSeguroOpcionalCancelado") == null ? BigDecimal.ZERO : rset.getBigDecimal("totalValorSeguroOpcionalCancelado")); + relatorioW2ISinteticoBean.setQtdSeguroOpcionalVendidos(rset.getBigDecimal("qtdSeguroOpcionalVendidos") == null ? BigDecimal.ZERO : rset.getBigDecimal("qtdSeguroOpcionalVendidos")); + relatorioW2ISinteticoBean.setTotalValorseguroOpcionalVendido(rset.getBigDecimal("totalValorSeguroOpcionalVendido") == null ? BigDecimal.ZERO : rset.getBigDecimal("totalValorSeguroOpcionalVendido")); + lsDadosRelatorio.add(relatorioW2ISinteticoBean); + + } + + if (lsDadosRelatorio.size() > 0) { + + setLsDadosRelatorio(lsDadosRelatorio); + } + } + + }); + } + + public void setLsDadosRelatorio(List lsDadosRelatorio) { + this.setCollectionDataSource(new JRBeanCollectionDataSource(lsDadosRelatorio)); + this.lsDadosRelatorio = lsDadosRelatorio; + } + + @Override + protected void processaParametros() throws Exception { + // TODO Auto-generated method stub + + } + + private String getSql(Map parametros) { + String puntosVentaIds = (String) parametros.get("NUMPUNTOVENTA"); + + StringBuilder sql = new StringBuilder(); + sql.append("SELECT DISTINCT "); + sql.append("em.empresa_id AS empresaId, "); + sql.append("em.nombempresa AS empresa, "); + sql.append("pv.puntoventa_id AS puntoVentaId, "); + sql.append("pv.nombpuntoventa As agencia, "); + sql.append(" SUM( (case when tx.indcancelado >0 then 1 else 0.0 end)) qtdSeguroOpcionalCancelado, "); + sql.append(" SUM( (case when tx.indcancelado >0 then tx.valortaxa else 0.0 end )) totalValorSeguroOpcionalCancelado, "); + sql.append(" SUM( (case when tx.indcancelado =0 then 1 else 0.0 end )) qtdSeguroOpcionalVendidos, "); + sql.append(" SUM( (case when tx.indcancelado =0 then tx.valortaxa else 0.0 end )) totalValorSeguroOpcionalVendido "); + sql.append("FROM taxpolv tx "); + + sql.append("INNER JOIN boleto b on b.boleto_id=tx.boleto_id "); + sql.append("INNER JOIN punto_venta pv ON pv.PUNTOVENTA_ID = b.PUNTOVENTA_ID "); + sql.append("INNER JOIN empresa em ON em.empresa_id=b.empresacorrida_id "); + sql.append("INNER JOIN parada po ON po.parada_id=b.origen_id "); + sql.append("INNER JOIN parada pd ON pd.parada_id=b.destino_id "); + sql.append("INNER JOIN CIUDAD co ON co.ciudad_id=po.ciudad_id "); + sql.append("INNER JOIN CIUDAD cd ON cd.ciudad_id=pd.ciudad_id "); + + sql.append("WHERE DECODE(:TIPO_DATA, 1, b.FECHORVENTA, 2, b.FECCORRIDA) BETWEEN :DATA_INICIAL AND :DATA_FINAL "); + if (parametros.get("EMPRESA_ID") != null) { + sql.append("AND em.empresa_id = COALESCE(:EMPRESA_ID, em.empresa_id) "); + } + if (parametros.get("ORIGEN_ID") != null && parametros.get("ORIGEN_ID") != "" && ((Integer) parametros.get("ORIGEN_ID") != -1)) { + sql.append("AND po.parada_id = COALESCE(:ORIGEN_ID, po.parada_id) "); + } + if (parametros.get("DESTINO_ID") != null && parametros.get("DESTINO_ID") != "" && ((Integer) parametros.get("DESTINO_ID") != -1)) { + sql.append("AND pd.parada_id = COALESCE(:DESTINO_ID, pd.parada_id) "); + } + if (!puntosVentaIds.equals("Todas")) { + sql.append(" AND pv.puntoventa_id IN (").append(puntosVentaIds).append(") "); + } + sql.append("GROUP BY em.empresa_id, em.nombempresa,pv.puntoventa_id,pv.nombpuntoventa "); + + return sql.toString(); + } + +} diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioW2IAnalitico_pt_BR.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioW2IAnalitico_pt_BR.properties new file mode 100644 index 000000000..01f6ecc2b --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioW2IAnalitico_pt_BR.properties @@ -0,0 +1,13 @@ +#geral +msg.noData=Não foi possivel obter dados com os parâmetros informados. + + +#Labels cabeçalho +cabecalho.relatorio=Relatório: +cabecalho.periodo=Período: +cabecalho.periodoA=à +cabecalho.dataHora=Data/Hora: +cabecalho.impressorPor=Impressor por: +cabecalho.pagina=Página +cabecalho.de=de +cabecalho.filtros=Filtros: \ No newline at end of file diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioW2ISintetico_pt_BR.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioW2ISintetico_pt_BR.properties new file mode 100644 index 000000000..01f6ecc2b --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioW2ISintetico_pt_BR.properties @@ -0,0 +1,13 @@ +#geral +msg.noData=Não foi possivel obter dados com os parâmetros informados. + + +#Labels cabeçalho +cabecalho.relatorio=Relatório: +cabecalho.periodo=Período: +cabecalho.periodoA=à +cabecalho.dataHora=Data/Hora: +cabecalho.impressorPor=Impressor por: +cabecalho.pagina=Página +cabecalho.de=de +cabecalho.filtros=Filtros: \ No newline at end of file diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioTaxasLinha.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioTaxasLinha.jasper index e81a21a59a692f62ade834b52488a3bcc005c9a3..41f7165b21f289e86d5bfb7d0fb0b2c82126f08b 100644 GIT binary patch literal 72495 zcmeHw2Y6IP_xH^0gatweMd=+0T?7S_5Fn675;__~vPo9b*lcJjiWTf#z=i^XiVXxT zpkRL$v0}##DvA{aUsS$xW@hi+*}d7_0DjN&KF>dJXYb6JcF%9-%$%7s_paMd^cp|u zQRxlzttshyZedNe*YEdMSNQ`qeZ7^XzDjT3aV#*G1rqkx{R4%l8KhxRRYkS0+ⅈ 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 R^#;Uo@cNA+@fJh>{{y(cV1fVu literal 58470 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 diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioTaxasLinha.jrxml b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioTaxasLinha.jrxml index f2db41f9d..79fb98080 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioTaxasLinha.jrxml +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioTaxasLinha.jrxml @@ -1,8 +1,8 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioW2ISintetico.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioW2ISintetico.jasper new file mode 100644 index 0000000000000000000000000000000000000000..0dda572f32f17564f348034fd669657ffd61db47 GIT binary patch literal 44880 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioTaxasLinhaBean.java b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioTaxasLinhaBean.java index 21feef9a3..0aa872f23 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioTaxasLinhaBean.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioTaxasLinhaBean.java @@ -37,6 +37,14 @@ public class RelatorioTaxasLinhaBean { protected BigDecimal EMBARQUE_VENDIDOS; protected BigDecimal PEDAGIO_VENDIDOS; protected BigDecimal SEGURO_VENDIDOS; + + protected BigDecimal qtdSeguroOpcionalCancelado; + protected BigDecimal totalValorSeguroOpcionalCancelado; + protected BigDecimal qtdSeguroOpcionalVendidos; + protected BigDecimal totalValorseguroOpcionalVendido; + + + public BigDecimal getIMPORTETAXAEMBARQUE() { return IMPORTETAXAEMBARQUE; } @@ -205,4 +213,32 @@ public class RelatorioTaxasLinhaBean { public void setNumfoliopreimpreso(Integer numfoliopreimpreso) { this.numfoliopreimpreso = numfoliopreimpreso; } + public BigDecimal getQtdSeguroOpcionalCancelado() { + return qtdSeguroOpcionalCancelado; + } + public void setQtdSeguroOpcionalCancelado(BigDecimal qtdSeguroOpcionalCancelado) { + this.qtdSeguroOpcionalCancelado = qtdSeguroOpcionalCancelado; + } + public BigDecimal getTotalValorSeguroOpcionalCancelado() { + return totalValorSeguroOpcionalCancelado; + } + public void setTotalValorSeguroOpcionalCancelado(BigDecimal totalValorSeguroOpcionalCancelado) { + this.totalValorSeguroOpcionalCancelado = totalValorSeguroOpcionalCancelado; + } + public BigDecimal getQtdSeguroOpcionalVendidos() { + return qtdSeguroOpcionalVendidos; + } + public void setQtdSeguroOpcionalVendidos(BigDecimal qtdSeguroOpcionalVendidos) { + this.qtdSeguroOpcionalVendidos = qtdSeguroOpcionalVendidos; + } + public BigDecimal getTotalValorseguroOpcionalVendido() { + return totalValorseguroOpcionalVendido; + } + public void setTotalValorseguroOpcionalVendido(BigDecimal totalValorseguroOpcionalVendido) { + this.totalValorseguroOpcionalVendido = totalValorseguroOpcionalVendido; + } + + + + } diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioW2IBean.java b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioW2IBean.java new file mode 100644 index 000000000..505ae1c00 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioW2IBean.java @@ -0,0 +1,96 @@ +package com.rjconsultores.ventaboletos.relatorios.utilitarios; + +import java.math.BigDecimal; +import java.sql.Date; + +public class RelatorioW2IBean { + private Integer empresaId; + private String empresa; + private Integer puntoVentaId; + private String agencia; + private Date dataVenda; + private Long numBilhete; + private String origem; + private String destino; + private Date dataViaje; + private String poltrona; + private BigDecimal valorTaxa; + private String status; + + public Integer getEmpresaId() { + return empresaId; + } + public void setEmpresaId(Integer empresaId) { + this.empresaId = empresaId; + } + public String getEmpresa() { + return empresa; + } + public void setEmpresa(String empresa) { + this.empresa = empresa; + } + public Integer getPuntoVentaId() { + return puntoVentaId; + } + public void setPuntoVentaId(Integer puntoVentaId) { + this.puntoVentaId = puntoVentaId; + } + public String getAgencia() { + return agencia; + } + public void setAgencia(String agencia) { + this.agencia = agencia; + } + public Date getDataVenda() { + return dataVenda; + } + public void setDataVenda(Date dataVenda) { + this.dataVenda = dataVenda; + } + public Long getNumBilhete() { + return numBilhete; + } + public void setNumBilhete(Long numBilhete) { + this.numBilhete = numBilhete; + } + public String getOrigem() { + return origem; + } + public void setOrigem(String origem) { + this.origem = origem; + } + public String getDestino() { + return destino; + } + public void setDestino(String destino) { + this.destino = destino; + } + public Date getDataViaje() { + return dataViaje; + } + public void setDataViaje(Date dataViaje) { + this.dataViaje = dataViaje; + } + public BigDecimal getValorTaxa() { + return valorTaxa; + } + + + public String getPoltrona() { + return poltrona; + } + public void setPoltrona(String poltrona) { + this.poltrona = poltrona; + } + public void setValorTaxa(BigDecimal valorTaxa) { + this.valorTaxa = valorTaxa; + } + public String getStatus() { + return status; + } + public void setStatus(String status) { + this.status = status; + } + + +} diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioW2ISinteticoBean.java b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioW2ISinteticoBean.java new file mode 100644 index 000000000..f09003772 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioW2ISinteticoBean.java @@ -0,0 +1,65 @@ +package com.rjconsultores.ventaboletos.relatorios.utilitarios; + +import java.math.BigDecimal; + +public class RelatorioW2ISinteticoBean { + private Integer empresaId; + private String empresa; + private Integer puntoVentaId; + private String agencia; + private BigDecimal qtdSeguroOpcionalCancelado; + private BigDecimal totalValorSeguroOpcionalCancelado; + private BigDecimal qtdSeguroOpcionalVendidos; + private BigDecimal totalValorseguroOpcionalVendido; + public Integer getEmpresaId() { + return empresaId; + } + public void setEmpresaId(Integer empresaId) { + this.empresaId = empresaId; + } + public String getEmpresa() { + return empresa; + } + public void setEmpresa(String empresa) { + this.empresa = empresa; + } + public Integer getPuntoVentaId() { + return puntoVentaId; + } + public void setPuntoVentaId(Integer puntoVentaId) { + this.puntoVentaId = puntoVentaId; + } + public String getAgencia() { + return agencia; + } + public void setAgencia(String agencia) { + this.agencia = agencia; + } + public BigDecimal getQtdSeguroOpcionalCancelado() { + return qtdSeguroOpcionalCancelado; + } + public void setQtdSeguroOpcionalCancelado(BigDecimal qtdSeguroOpcionalCancelado) { + this.qtdSeguroOpcionalCancelado = qtdSeguroOpcionalCancelado; + } + public BigDecimal getTotalValorSeguroOpcionalCancelado() { + return totalValorSeguroOpcionalCancelado; + } + public void setTotalValorSeguroOpcionalCancelado(BigDecimal totalValorSeguroOpcionalCancelado) { + this.totalValorSeguroOpcionalCancelado = totalValorSeguroOpcionalCancelado; + } + public BigDecimal getQtdSeguroOpcionalVendidos() { + return qtdSeguroOpcionalVendidos; + } + public void setQtdSeguroOpcionalVendidos(BigDecimal qtdSeguroOpcionalVendidos) { + this.qtdSeguroOpcionalVendidos = qtdSeguroOpcionalVendidos; + } + public BigDecimal getTotalValorseguroOpcionalVendido() { + return totalValorseguroOpcionalVendido; + } + public void setTotalValorseguroOpcionalVendido(BigDecimal totalValorseguroOpcionalVendido) { + this.totalValorseguroOpcionalVendido = totalValorseguroOpcionalVendido; + } + + + +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioTaxasLinhaController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioTaxasLinhaController.java index 10c808793..fff081def 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioTaxasLinhaController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioTaxasLinhaController.java @@ -98,6 +98,7 @@ public class RelatorioTaxasLinhaController extends MyGenericForwardComposer { private Checkbox chkTaxaEmbarque; private Checkbox chkTaxaPedagio; private Checkbox chkTaxaSeguro; + private Checkbox chkTaxaSeguroOpcional; @Autowired private ParadaService paradaService; @@ -221,6 +222,7 @@ public class RelatorioTaxasLinhaController extends MyGenericForwardComposer { parametros.put("IS_TX_EMBARQUE", ((Boolean) (chkTaxaEmbarque.isChecked()))); parametros.put("IS_PEDAGIO", (Boolean) chkTaxaPedagio.isChecked()); parametros.put("IS_SEGURO", chkTaxaSeguro.isChecked()); + parametros.put("IS_SEGUROOPCIONAL", chkTaxaSeguroOpcional.isChecked()); filtro.append(" Tipo de Data: " + (rdGroupTipoData.getSelectedItem().getValue().equals(1) ? " Origem;" : "Destino;")); filtro.append(" Subtrair ICMS: " + (chkSubtrairIcms.isChecked() ? " Sim;" : "Não;")); filtro.append(" Empresa: "); diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioW2IController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioW2IController.java new file mode 100644 index 000000000..19629f9c0 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioW2IController.java @@ -0,0 +1,278 @@ +package com.rjconsultores.ventaboletos.web.gui.controladores.relatorios; + +import java.sql.Connection; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.sql.DataSource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Controller; +import org.zkoss.util.resource.Labels; +import org.zkoss.zhtml.Messagebox; +import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.event.Event; +import org.zkoss.zul.Bandbox; +import org.zkoss.zul.Comboitem; +import org.zkoss.zul.ComboitemRenderer; +import org.zkoss.zul.Paging; +import org.zkoss.zul.Radiogroup; + +import com.rjconsultores.ventaboletos.entidad.Empresa; +import com.rjconsultores.ventaboletos.entidad.Parada; +import com.rjconsultores.ventaboletos.entidad.PuntoVenta; +import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioW2IAnalitico; +import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioW2ISintetico; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; +import com.rjconsultores.ventaboletos.service.EmpresaService; +import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; +import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxEstandar; +import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxParada; +import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxParadaCve; +import com.rjconsultores.ventaboletos.web.utilerias.MyDatebox; +import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer; +import com.rjconsultores.ventaboletos.web.utilerias.MyListbox; +import com.rjconsultores.ventaboletos.web.utilerias.MyTextbox; +import com.rjconsultores.ventaboletos.web.utilerias.paginacion.HibernateSearchObject; +import com.rjconsultores.ventaboletos.web.utilerias.paginacion.PagedListWrapper; +import com.rjconsultores.ventaboletos.web.utilerias.render.RenderRelatorioTaxasLinhaPuntoVenta; +import com.rjconsultores.ventaboletos.web.utilerias.render.RenderRelatorioTaxasLinhaPuntoVentaSelecionados; + +@Controller("relatorioW2IController") +@Scope("prototype") +public class RelatorioW2IController extends MyGenericForwardComposer { + + /** + * + */ + private static final long serialVersionUID = 1L; + @Autowired + private transient PagedListWrapper plwPuntoVenta; + @Autowired + private DataSource dataSourceRead; + @Autowired + private EmpresaService empresaService; + private List lsEmpresa; + private MyComboboxParada cmbParadaOrigem; + private MyComboboxParadaCve cmbParadaOrigemCve; + private MyComboboxParada cmbParadaDestino; + private MyComboboxParadaCve cmbParadaDestinoCve; + private MyDatebox datInicial; + private MyDatebox datFinal; + private MyTextbox txtNombrePuntoVenta; + private Radiogroup rdGroupTipoData; + private Radiogroup rdGroupTipoRelatorio; + private MyComboboxEstandar cmbEmpresa; + private Bandbox bbPesquisaPuntoVenta; + private MyListbox puntoVentaList; + private MyListbox puntoVentaSelList; + private Paging pagingPuntoVenta; + + @Override + public void doAfterCompose(Component comp) throws Exception { + lsEmpresa = empresaService.obtenerTodos(); + + super.doAfterCompose(comp); + + cmbParadaOrigemCve.setItemRenderer(new ComboitemRenderer() { + @Override + public void render(Comboitem cmbtm, Object o) throws Exception { + Parada parada = (Parada) o; + + cmbtm.setLabel(parada.getCveparada()); + cmbtm.setValue(parada); + } + }); + + cmbParadaDestinoCve.setItemRenderer(new ComboitemRenderer() { + @Override + public void render(Comboitem cmbtm, Object o) throws Exception { + Parada parada = (Parada) o; + + cmbtm.setLabel(parada.getCveparada()); + cmbtm.setValue(parada); + } + }); + + puntoVentaList.setItemRenderer(new RenderRelatorioTaxasLinhaPuntoVenta()); + puntoVentaSelList.setItemRenderer(new RenderRelatorioTaxasLinhaPuntoVentaSelecionados()); + } + + private void executarPesquisa() { + HibernateSearchObject puntoVentaBusqueda = new HibernateSearchObject(PuntoVenta.class, pagingPuntoVenta.getPageSize()); + + puntoVentaBusqueda.addFilterILike("nombpuntoventa", "%" + txtNombrePuntoVenta.getValue() + "%"); + puntoVentaBusqueda.addFilterEqual("activo", Boolean.TRUE); + + puntoVentaBusqueda.addSortAsc("nombpuntoventa"); + + puntoVentaBusqueda.addFilterEqual("activo", Boolean.TRUE); + + plwPuntoVenta.init(puntoVentaBusqueda, puntoVentaList, pagingPuntoVenta); + + if (puntoVentaList.getData().length == 0) { + try { + Messagebox.show(Labels.getLabel("MSG.ningunRegistro"), + Labels.getLabel("relatorioW2IController.window.title"), + Messagebox.OK, Messagebox.INFORMATION); + } catch (InterruptedException ex) { + } + } + } + + public void onClick$btnPesquisa(Event ev) { + executarPesquisa(); + } + + public void onDoubleClick$puntoVentaSelList(Event ev) { + PuntoVenta puntoVenta = (PuntoVenta) puntoVentaSelList.getSelected(); + puntoVentaSelList.removeItem(puntoVenta); + } + + public void onDoubleClick$puntoVentaList(Event ev) { + PuntoVenta puntoVenta = (PuntoVenta) puntoVentaList.getSelected(); + puntoVentaSelList.addItemNovo(puntoVenta); + } + + public void onClick$btnLimpar(Event ev) { + puntoVentaList.setData(new ArrayList()); + + bbPesquisaPuntoVenta.setText(""); + } + + public void onClick$btnExecutarRelatorio(Event ev) throws Exception { + executarRelatorio(); + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + private void executarRelatorio() throws Exception { + Relatorio relatorio; + Map parametros = new HashMap(); + StringBuilder filtro = new StringBuilder(); + + filtro.append("Agência: "); + String puntoVentaIds = ""; + String puntoVentas = ""; + List lsPuntoVentaSelecionados = new ArrayList(Arrays.asList(puntoVentaSelList.getData())); + if (lsPuntoVentaSelecionados.isEmpty()) { + puntoVentas = "Todas"; + puntoVentaIds = "Todas"; + } else { + for (int i = 0; i < lsPuntoVentaSelecionados.size(); i++) { + PuntoVenta puntoVenta = lsPuntoVentaSelecionados.get(i); + puntoVentas = puntoVentas + puntoVenta.getNombpuntoventa() + ","; + + puntoVentaIds = puntoVentaIds + puntoVenta.getPuntoventaId() + ","; + } + + // removendo ultima virgula + puntoVentaIds = puntoVentaIds.substring(0, puntoVentaIds.length() - 1); + puntoVentas = puntoVentas.substring(0, puntoVentas.length() - 1); + } + filtro.append(puntoVentas).append(";"); + + parametros.put("DATA_INICIAL", (java.util.Date) this.datInicial.getValue()); + parametros.put("DATA_FINAL", (java.util.Date) this.datFinal.getValue()); + parametros.put("NOME_RELATORIO", Labels.getLabel("relatorioW2IController.window.title")); + parametros.put("USUARIO", UsuarioLogado.getUsuarioLogado().getUsuarioId().toString()); + parametros.put("TIPO_DATA", Integer.parseInt(rdGroupTipoData.getSelectedItem().getValue())); + parametros.put("NUMPUNTOVENTA", puntoVentaIds); + filtro.append(" Tipo de Data: " + (rdGroupTipoData.getSelectedItem().getValue().equals(1) ? " Origem;" : "Destino;")); + filtro.append(" Empresa: "); + + Comboitem itemEmpresa = cmbEmpresa.getSelectedItem(); + if (itemEmpresa != null) { + Empresa empresa = (Empresa) itemEmpresa.getValue(); + parametros.put("EMPRESA_ID", empresa.getEmpresaId()); + parametros.put("EMPRESA", empresa.getNombempresa()); + filtro.append(empresa.getNombempresa() + ";"); + } else { + filtro.append("Todas;"); + } + + filtro.append(" Origem: "); + Comboitem cbiOrigem = cmbParadaOrigem.getSelectedItem(); + if (cbiOrigem != null) { + Parada origem = (Parada) cbiOrigem.getValue(); + parametros.put("ORIGEN_ID", origem.getParadaId()); + filtro.append(origem.getCveparada() + ";"); + } else { + filtro.append("Todas;"); + } + + filtro.append(" Destino: "); + Comboitem cbiDestino = cmbParadaDestino.getSelectedItem(); + if (cbiDestino != null) { + Parada destino = (Parada) cbiDestino.getValue(); + parametros.put("DESTINO_ID", destino.getParadaId()); + filtro.append(destino.getCveparada() + ";"); + } else { + filtro.append("Todos;"); + } + + Connection connection = dataSourceRead.getConnection(); + try { + + parametros.put("FILTROS", filtro.toString()); + if (Integer.parseInt(rdGroupTipoRelatorio.getSelectedItem().getValue()) == 1) { + relatorio = new RelatorioW2IAnalitico(parametros, connection); + } else { + relatorio = new RelatorioW2ISintetico(parametros, connection); + } + + Map args = new HashMap(); + args.put("relatorio", relatorio); + + openWindow("/component/reportView.zul", + Labels.getLabel("relatorioW2IController.window.title"), args, MODAL); + } finally { + if ((connection != null) && !connection.isClosed()) { + connection.close(); + } + } + } + + public void onSelect$cmbParadaOrigemCve(Event ev) { + if (cmbParadaOrigemCve.getSelectedItem() != null) { + cmbParadaOrigem.setComboItemByParada((Parada) cmbParadaOrigemCve.getSelectedItem().getValue()); + } + } + + public void onSelect$cmbParadaOrigem(Event ev) { + if (cmbParadaOrigem.getSelectedItem() != null) + cmbParadaOrigemCve.setComboItemByParada((Parada) cmbParadaOrigem.getSelectedItem().getValue()); + } + + public void onSelect$cmbParadaDestinoCve(Event ev) { + if (cmbParadaDestinoCve.getSelectedItem() != null) { + cmbParadaDestino.setComboItemByParada((Parada) cmbParadaDestinoCve.getSelectedItem().getValue()); + } + } + + public void onSelect$cmbParadaDestino(Event ev) { + if (cmbParadaDestino.getSelectedItem() != null) { + cmbParadaDestinoCve.setComboItemByParada((Parada) cmbParadaDestino.getSelectedItem().getValue()); + } + } + + public List getLsEmpresa() { + return lsEmpresa; + } + + public void setLsEmpresa(List lsEmpresa) { + this.lsEmpresa = lsEmpresa; + } + + public Radiogroup getRdGroupTipoRelatorio() { + return rdGroupTipoRelatorio; + } + + public void setRdGroupTipoRelatorio(Radiogroup rdGroupTipoRelatorio) { + this.rdGroupTipoRelatorio = rdGroupTipoRelatorio; + } + +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/relatorios/ItemMenuRelatorioFinanceiroW2I.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/relatorios/ItemMenuRelatorioFinanceiroW2I.java new file mode 100644 index 000000000..2ffa74d38 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/relatorios/ItemMenuRelatorioFinanceiroW2I.java @@ -0,0 +1,25 @@ +package com.rjconsultores.ventaboletos.web.utilerias.menu.item.relatorios; + + +import org.zkoss.util.resource.Labels; + +import com.rjconsultores.ventaboletos.web.utilerias.PantallaUtileria; +import com.rjconsultores.ventaboletos.web.utilerias.menu.DefaultItemMenuSistema; + +public class ItemMenuRelatorioFinanceiroW2I extends DefaultItemMenuSistema { + + public ItemMenuRelatorioFinanceiroW2I() { + super("indexController.mniRelatorioW2I.label"); + } + + @Override + public String getClaveMenu() { + return "COM.RJCONSULTORES.ADMINISTRACION.GUI.RELATORIOS.MENU.RELATORIOW2I"; + } + + @Override + public void ejecutar() { + PantallaUtileria.openWindow("/gui/relatorios/filtroRelatorioW2I.zul", + Labels.getLabel("relatorioW2IController.window.title"), getArgs() ,desktop); + } +} \ No newline at end of file diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/menu_original.properties b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/menu_original.properties index bd0ddce10..bd9d0efee 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/menu_original.properties +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/menu_original.properties @@ -226,6 +226,7 @@ analitico.gerenciais.financeiro.vendasRequisicao=com.rjconsultores.ventaboletos. analitico.gerenciais.financeiro.aproveitamentoFinanceiro=com.rjconsultores.ventaboletos.web.utilerias.menu.item.relatorios.ItemMenuRelatorioAproveitamentoFinanceiro analitico.gerenciais.financeiro.relatorioOperacionalFinanceiro=com.rjconsultores.ventaboletos.web.utilerias.menu.item.relatorios.ItemMenuRelatorioCaixaOrgaoConcedente analitico.gerenciais.financeiro.relatorioResumoVendaOrgaoConcedente=com.rjconsultores.ventaboletos.web.utilerias.menu.item.relatorios.ItemMenuRelatorioResumoVendaOrgaoConcedente +analitico.gerenciais.financeiro.relatorioW2I=com.rjconsultores.ventaboletos.web.utilerias.menu.item.relatorios.ItemMenuRelatorioFinanceiroW2I analitico.gerenciais.financeiro.relatorioVendasConexaoRuta=com.rjconsultores.ventaboletos.web.utilerias.menu.item.relatorios.ItemMenuRelatorioVendasConexaoRuta analitico.gerenciais.pacote=com.rjconsultores.ventaboletos.web.utilerias.menu.item.analitico.gerenciais.pacote.SubMenuRelatorioPacote analitico.gerenciais.pacote.boletos=com.rjconsultores.ventaboletos.web.utilerias.menu.item.relatorios.ItemMenuRelatorioVendasPacotesBoletos diff --git a/web/WEB-INF/i3-label_en.label b/web/WEB-INF/i3-label_en.label index 1a5bd5b1f..5051df1be 100644 --- a/web/WEB-INF/i3-label_en.label +++ b/web/WEB-INF/i3-label_en.label @@ -365,6 +365,7 @@ indexController.mniRelatorioHistoricoCompras.label=Relatório Histórico de indexController.mniRelatorioPosicaoVendaBilheteIdoso.label=Relatório Posição de Venda do Bilhete Idoso indexController.mniRelatorioVendaEmbarcada.label=Onboard Sales indexController.mniRelatorioCaixaOrgaoConcedente.label = Relatório Caixa por Órgão Concedente +indexController.mniRelatorioW2I.label = Relatório W2I indexController.mnSubMenuImpressaoFiscal.label=Impressão Fiscal indexController.mnSubMenuRelatorioImpressaoFiscal.label=Importação Fiscal @@ -783,6 +784,24 @@ relatorioTaxasLinhaController.lbChkTaxaEmbarque.value=Taxa de Embarque relatorioTaxasLinhaController.lbChkTaxaPedagio.value=Pedagio relatorioTaxasLinhaController.lbChkTaxaSeguro.value=Seguro relatorioTaxasLinhaController.lbChkDownloadTxt.value=Exportar .txt +relatorioTaxasLinhaController.lbChkTaxaSeguroOpcional.value= Seguro Opcional + +#Relatório W2I +relatorioW2IController.window.title = Relatório W2I +relatorioW2IController.lbEmpresa.value = Empresa +relatorioW2IController.lbNumero.value = Número Agência +relatorioW2IController.lbAte.value = até +relatorioW2IController.lbDatInicial.value = Data Inicial +relatorioW2IController.lbDatFinal.value = Data Final +relatorioW2IController.lbTipoData.value = Tipo de Data +relatorioW2IController.lbTipoData.venda.value = Data Venda +relatorioW2IController.lbTipoData.servico.value = Data Serviço +relatorioW2IController.lbPuntoVenta.value = N. Agência +relatorioW2IController.lbCidadaOrigem.value = Localidade Origem +relatorioW2IController.lbCidadeDestino.value = Localidade Destino +relatorioW2IController.lbPuntoVenta.value = Agência +relatorioW2IController.lbTipoRelatorio.analitico.value=Analitico +relatorioW2IController.lbTipoRelatorio.sintetico.value=Sintético #Relatorio de Receita por servico relatorioReceitaServicoController.window.title=Relatório de Receita por Serviço diff --git a/web/WEB-INF/i3-label_es_MX.label b/web/WEB-INF/i3-label_es_MX.label index a5f2a5c54..e2f9a5a40 100644 --- a/web/WEB-INF/i3-label_es_MX.label +++ b/web/WEB-INF/i3-label_es_MX.label @@ -357,6 +357,7 @@ indexController.mniRelatorioVendaEmbarcada.label = Venda Embarcada indexController.mniRelatorioRemessaCNAB.label = Remessa de Lote (CNAB 400) indexController.mniRelatorioCaixaOrgaoConcedente.label = Relatório Caixa por Órgão Concedente indexController.mniRelatorioVendaConexaoLinha.label = Relatório Vendas de Conexão por Linha +indexController.mniRelatorioW2I.label = Relatório W2I indexController.mnSubMenuImpressaoFiscal.label=Impresión fiscal indexController.mnSubMenuRelatorioImpressaoFiscal.label=Importación fiscal @@ -750,6 +751,26 @@ relatorioTaxasLinhaController.lbCidadaOrigem.value = Parada origen relatorioTaxasLinhaController.lbCidadeDestino.value = Parada destino relatorioTaxasLinhaController.lbPuntoVenta.value = Punto de venta relatorioTaxasLinhaController.lbChkDownloadTxt.value = Exportar .txt +relatorioTaxasLinhaController.lbChkTaxaSeguroOpcional.value= Seguro Opcional + + +#Relatório W2I +relatorioW2IController.window.title = Relatório W2I +relatorioW2IController.lbEmpresa.value = Empresa +relatorioW2IController.lbNumero.value = Número Agência +relatorioW2IController.lbAte.value = até +relatorioW2IController.lbDatInicial.value = Data Inicial +relatorioW2IController.lbDatFinal.value = Data Final +relatorioW2IController.lbTipoData.value = Tipo de Data +relatorioW2IController.lbTipoData.venda.value = Data Venda +relatorioW2IController.lbTipoData.servico.value = Data Serviço +relatorioW2IController.lbPuntoVenta.value = N. Agência +relatorioW2IController.lbCidadaOrigem.value = Localidade Origem +relatorioW2IController.lbCidadeDestino.value = Localidade Destino +relatorioW2IController.lbPuntoVenta.value = Agência +relatorioW2IController.lbTipoRelatorio.analitico.value=Analitico +relatorioW2IController.lbTipoRelatorio.sintetico.value=Sintético + #Relatorio de Receita por servico relatorioReceitaServicoController.window.title = Reporte de ingreso por servicio diff --git a/web/WEB-INF/i3-label_pt_BR.label b/web/WEB-INF/i3-label_pt_BR.label index da31bc06e..1cddc0a17 100644 --- a/web/WEB-INF/i3-label_pt_BR.label +++ b/web/WEB-INF/i3-label_pt_BR.label @@ -376,6 +376,7 @@ indexController.mniRelatorioHistoricoCompras.label = Relatório Histórico de Co indexController.mniRelatorioPosicaoVendaBilheteIdoso.label = Relatório Posição de Venda do Bilhete Idoso indexController.mniRelatorioVendaEmbarcada.label = Venda Embarcada indexController.mniRelatorioCaixaOrgaoConcedente.label = Relatório Caixa por Órgão Concedente +indexController.mniRelatorioW2I.label = Relatório W2I indexController.mnSubMenuImpressaoFiscal.label=Impressão Fiscal indexController.mnSubMenuRelatorioImpressaoFiscal.label=Importação Fiscal @@ -829,8 +830,28 @@ relatorioTaxasLinhaController.lbPuntoVenta.value = Agência relatorioTaxasLinhaController.lbChkTaxaEmbarque.value = Taxa de Embarque relatorioTaxasLinhaController.lbChkTaxaPedagio.value = Pedagio relatorioTaxasLinhaController.lbChkTaxaSeguro.value = Seguro +relatorioTaxasLinhaController.lbChkTaxaSeguroOpcional.value= Seguro Opcional relatorioTaxasLinhaController.lbChkDownloadTxt.value = Exportar .txt + + +#Relatório W2I +relatorioW2IController.window.title = Relatório W2I +relatorioW2IController.lbEmpresa.value = Empresa +relatorioW2IController.lbNumero.value = Número Agência +relatorioW2IController.lbAte.value = até +relatorioW2IController.lbDatInicial.value = Data Inicial +relatorioW2IController.lbDatFinal.value = Data Final +relatorioW2IController.lbTipoData.value = Tipo de Data +relatorioW2IController.lbTipoData.venda.value = Data Venda +relatorioW2IController.lbTipoData.servico.value = Data Serviço +relatorioW2IController.lbPuntoVenta.value = N. Agência +relatorioW2IController.lbCidadaOrigem.value = Localidade Origem +relatorioW2IController.lbCidadeDestino.value = Localidade Destino +relatorioW2IController.lbPuntoVenta.value = Agência +relatorioW2IController.lbTipoRelatorio.analitico.value=Analitico +relatorioW2IController.lbTipoRelatorio.sintetico.value=Sintético + #Relatorio de Receita por servico relatorioReceitaServicoController.window.title = Relatório de Receita por Serviço relatorioReceitaServicoController.lbDePeriodoViagem.value = Período de Viagem diff --git a/web/gui/relatorios/filtroRelatorioTaxasLinha.zul b/web/gui/relatorios/filtroRelatorioTaxasLinha.zul index 7437abb7b..d57b665c6 100644 --- a/web/gui/relatorios/filtroRelatorioTaxasLinha.zul +++ b/web/gui/relatorios/filtroRelatorioTaxasLinha.zul @@ -77,12 +77,14 @@ diff --git a/web/gui/relatorios/filtroRelatorioW2I.zul b/web/gui/relatorios/filtroRelatorioW2I.zul new file mode 100644 index 000000000..9ef62fdf6 --- /dev/null +++ b/web/gui/relatorios/filtroRelatorioW2I.zul @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +