From 1a64429c956be955def3bd674c02faeac6cfcf2b Mon Sep 17 00:00:00 2001 From: fabio Date: Thu, 18 Jan 2018 18:28:22 +0000 Subject: [PATCH] Fixes bug #10346 git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@78143 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../impl/RelatorioGratuidadeANTT.java | 133 +++++++++ .../RelatorioGratuidadeANTT_es.properties | 56 ++++ .../RelatorioGratuidadeANTT_pt_BR.properties | 56 ++++ .../templates/RelatorioGratuidadeANTT.jasper | Bin 0 -> 45793 bytes .../templates/RelatorioGratuidadeANTT.jrxml | 251 +++++++++++++++++ .../RelatorioGratuidadeANTTBean.java | 56 ++++ .../RelatorioGratuidadeANTTController.java | 254 ++++++++++++++++++ .../RelatorioGratuidadeController.java | 6 - .../RelatorioLinhasHorarioController.java | 1 + .../ItemMenuRelatorioGratuidadeANTT.java | 25 ++ .../utilerias/menu/menu_original.properties | 3 +- web/WEB-INF/i3-label_es_MX.label | 19 ++ web/WEB-INF/i3-label_pt_BR.label | 19 ++ .../filtroRelatorioGratuidadeANTT.zul | 148 ++++++++++ 14 files changed, 1020 insertions(+), 7 deletions(-) create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioGratuidadeANTT.java create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioGratuidadeANTT_es.properties create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioGratuidadeANTT_pt_BR.properties create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioGratuidadeANTT.jasper create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioGratuidadeANTT.jrxml create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioGratuidadeANTTBean.java create mode 100644 src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioGratuidadeANTTController.java create mode 100644 src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/relatorios/ItemMenuRelatorioGratuidadeANTT.java create mode 100644 web/gui/relatorios/filtroRelatorioGratuidadeANTT.zul diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioGratuidadeANTT.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioGratuidadeANTT.java new file mode 100644 index 000000000..214e2e16f --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioGratuidadeANTT.java @@ -0,0 +1,133 @@ +package com.rjconsultores.ventaboletos.relatorios.impl; + +import java.sql.Connection; +import java.sql.ResultSet; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import com.rjconsultores.ventaboletos.relatorios.utilitarios.DataSource; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.RelatorioGratuidadeANTTBean; +import com.rjconsultores.ventaboletos.web.utilerias.NamedParameterStatement; + +import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; + +public class RelatorioGratuidadeANTT extends Relatorio { + + private Integer orgaoConcedenteId; + + private List lsDadosRelatorio; + + public RelatorioGratuidadeANTT(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 fecInicioVenda = null; + if (parametros.get("fecInicioVenda") != null) { + fecInicioVenda = parametros.get("fecInicioVenda").toString() + " 00:00:00"; + } + String fecFinalVenda = null; + if (parametros.get("fecFinalVenda") != null) { + fecFinalVenda = parametros.get("fecFinalVenda").toString() + " 23:59:59"; + } + + String tipGratuIds = parametros.get("tipGratuIds").toString(); + String linhaIds = parametros.get("linhaIds").toString(); + + String sql = getSql(fecInicioVenda, fecFinalVenda, linhaIds, tipGratuIds); + + SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss"); + NamedParameterStatement stmt = new NamedParameterStatement(conexao, sql); + + if (fecInicioVenda != null) { + stmt.setTimestamp("fecInicioVenda", new java.sql.Timestamp(sdf.parse(fecInicioVenda).getTime())); + } + if (fecFinalVenda != null) { + stmt.setTimestamp("fecFinalVenda", new java.sql.Timestamp(sdf.parse(fecFinalVenda).getTime())); + } + + if(orgaoConcedenteId != null){ + stmt.setInt("orgao_concedente_id", orgaoConcedenteId); + } + + ResultSet rset = null; + + rset = stmt.executeQuery(); + + lsDadosRelatorio = new ArrayList(); + + while (rset.next()) { + RelatorioGratuidadeANTTBean gratuidadeBean = new RelatorioGratuidadeANTTBean(); + + gratuidadeBean.setCategoria(rset.getString("categoria")); + + gratuidadeBean.setDescOrigem(rset.getString("descOrigem")); + gratuidadeBean.setDescDestino(rset.getString("descDestino")); + gratuidadeBean.setCodOrigem(rset.getString("codOrigem")); + gratuidadeBean.setCodDestino(rset.getString("codDestino")); + gratuidadeBean.setTotIda(rset.getInt("totalIda")); + gratuidadeBean.setTotVolta(rset.getInt("totalVolta")); + + + lsDadosRelatorio.add(gratuidadeBean); + } + + 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 { + } + + private String getSql(String fecInicioVenda, String fecFinalVenda, String linha, String tipoGratu ) { + + StringBuilder sql = new StringBuilder(); + + sql.append(" select "); + sql.append(" ca.DESCCATEGORIA AS categoria, "); + sql.append(" ori.CVEPARADA AS codOrigem, "); + sql.append(" ori.DESCPARADA AS descOrigem, "); + sql.append(" des.CVEPARADA AS codDestino, "); + sql.append(" des.DESCPARADA AS descDestino, "); + sql.append(" sum(case when (R.INDSENTIDOIDA = 1 ) then 1 else 0 end) as totalIda, "); + sql.append(" sum(case when (R.INDSENTIDOIDA = 0 ) then 1 else 0 end) as totalVolta "); + sql.append(" from BOLETO b "); + sql.append(" JOIN categoria ca ON b.categoria_id = ca.categoria_id "); + sql.append(" JOIN parada ori ON ori.parada_id = b.origen_id "); + sql.append(" JOIN parada des ON des.parada_id = b.destino_id "); + sql.append(" JOIN ruta r ON r.ruta_id = b.ruta_id "); + sql.append(" WHERE b.fechorventa BETWEEN :fecInicioVenda AND :fecFinalVenda "); + + if( tipoGratu != null ) { + sql.append(" AND b.CATEGORIA_ID in (").append(tipoGratu).append(") "); + } + + if( linha != null && !linha.equals("Todas")) { + sql.append(" AND r.ruta_id in (").append(linha).append(") "); + } + + sql.append(" group by ca.DESCCATEGORIA, ori.CVEPARADA, ori.DESCPARADA, des.CVEPARADA, des.DESCPARADA "); + sql.append(" ORDER BY descOrigem, descDestino, categoria "); + + return sql.toString(); + } +} \ No newline at end of file diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioGratuidadeANTT_es.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioGratuidadeANTT_es.properties new file mode 100644 index 000000000..c35d69e0f --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioGratuidadeANTT_es.properties @@ -0,0 +1,56 @@ +#geral +msg.noData=Não foi possivel obter dados com os parâmetros informados. +msg.a=à + +#Labels header +header.periodo=Período: +header.data.hora=Data/Hora\: +header.pagina=Página\: +header.filtro=Filtro\: +header.filtro.servico=Serviço\: +header.filtro.linha=Linha\: +header.filtro.grupo=Grupo de Linhas\: +header.empresa=Empresa\: +header.periodo.viagem=Período Viagem +header.periodo.venda=Período Venda + +#Labels detail + +detail.data=Data +detail.dataServico=Data Servi. +detail.origen=Origem +detail.destino=Destino +detail.km=Km +detail.linha=Linha +detail.servicio=Serviço +detail.hora=Hora +detail.tipobilhete=Tipo Venda +detail.tipopassagem=Tipo Passagem +detail.pasajero=Passageiro +detail.documento=Doc +detail.precio=Preço +detail.desconto=Desc.(%) +detail.valorCobrado=Vlr.Cobrado +detail.tarifa=Tarifa +detail.bilheteiro=Bilheteiro +detail.agencia=Agência +detail.dataMD=Data MD +detail.empresa=Empresa +detail.tipo=Tipo +detail.tipoDoc=Tipo Doc. +detail.tarifa=Tarifa +detail.seguro=Seguro +detail.utr=UTR +detail.tpp=TPP +detail.pedagio=Pedágio +detail.rg=RG +detail.status=Status +detail.codOrigem=Cod. Origem +detail.codDestino=Cod. Destino +detail.total=Total +detail.ccf=CCf + +linhas=Linhas + +detail.numfoliosistema=Bilhete +detail.numasiento=Poltrona diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioGratuidadeANTT_pt_BR.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioGratuidadeANTT_pt_BR.properties new file mode 100644 index 000000000..c35d69e0f --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioGratuidadeANTT_pt_BR.properties @@ -0,0 +1,56 @@ +#geral +msg.noData=Não foi possivel obter dados com os parâmetros informados. +msg.a=à + +#Labels header +header.periodo=Período: +header.data.hora=Data/Hora\: +header.pagina=Página\: +header.filtro=Filtro\: +header.filtro.servico=Serviço\: +header.filtro.linha=Linha\: +header.filtro.grupo=Grupo de Linhas\: +header.empresa=Empresa\: +header.periodo.viagem=Período Viagem +header.periodo.venda=Período Venda + +#Labels detail + +detail.data=Data +detail.dataServico=Data Servi. +detail.origen=Origem +detail.destino=Destino +detail.km=Km +detail.linha=Linha +detail.servicio=Serviço +detail.hora=Hora +detail.tipobilhete=Tipo Venda +detail.tipopassagem=Tipo Passagem +detail.pasajero=Passageiro +detail.documento=Doc +detail.precio=Preço +detail.desconto=Desc.(%) +detail.valorCobrado=Vlr.Cobrado +detail.tarifa=Tarifa +detail.bilheteiro=Bilheteiro +detail.agencia=Agência +detail.dataMD=Data MD +detail.empresa=Empresa +detail.tipo=Tipo +detail.tipoDoc=Tipo Doc. +detail.tarifa=Tarifa +detail.seguro=Seguro +detail.utr=UTR +detail.tpp=TPP +detail.pedagio=Pedágio +detail.rg=RG +detail.status=Status +detail.codOrigem=Cod. Origem +detail.codDestino=Cod. Destino +detail.total=Total +detail.ccf=CCf + +linhas=Linhas + +detail.numfoliosistema=Bilhete +detail.numasiento=Poltrona diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioGratuidadeANTT.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioGratuidadeANTT.jasper new file mode 100644 index 0000000000000000000000000000000000000000..3cd12d058c273e236aa36e90e50e6041c1c94013 GIT binary patch literal 45793 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 + + + + + + + + +