From 9aac43b27fa36b5170f5b81827ee3878064a4c68 Mon Sep 17 00:00:00 2001 From: emerson Date: Wed, 31 Oct 2018 18:48:31 +0000 Subject: [PATCH] fixes bug#0011951 dev: thiago qua: wallysson MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Implementação efetuada conforme evidência. git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@86665 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../impl/RelatorioHistoricoCompras.java | 167 +++++----- ...PosicaoVendaBilheteIdosoPorPassageiro.java | 85 +++++ ...orioPosicaoVendaBilheteIdosoPorTrecho.java | 98 ++++++ ...ndaBilheteIdosoPorPassageiro_es.properties | 14 + ...ndaBilheteIdosoPorPassageiro_pt.properties | 16 + ...aoVendaBilheteIdosoPorTrecho_es.properties | 14 + ...aoVendaBilheteIdosoPorTrecho_pt.properties | 16 + .../render/RenderRelatorioJasper.java | 2 - ...sicaoVendaBilheteIdosoPorPassageiro.jasper | Bin 0 -> 33293 bytes ...osicaoVendaBilheteIdosoPorPassageiro.jrxml | 253 +++++++++++++++ ...ioPosicaoVendaBilheteIdosoPorTrecho.jasper | Bin 0 -> 37801 bytes ...rioPosicaoVendaBilheteIdosoPorTrecho.jrxml | 295 ++++++++++++++++++ .../ArrayCustomDataSourceRelatorio.java | 42 +++ .../relatorios/EspecializaLista.java | 1 + .../EventListenerBtnLimparPesquisa.java | 25 ++ .../eventos/EventListenerBtnPesquisar.java | 74 +++++ .../EventListenerValidarInclusaoListBox.java | 25 ++ ...iodoRelatorioPosicaoVendaBilheteIdoso.java | 31 ++ .../ETipoRelatorioVendaBilheteIdoso.java | 65 ++++ .../EventListenerBtnPesquisarLinha.java | 55 ++++ ...EventListenerBtnPesquisarTipoPassagem.java | 29 ++ ...nerExecutarRelatorioVendaBilheteIdoso.java | 98 ++++++ .../EventListenerRemoverItemListBox.java | 22 ++ ...rioPosicaoVendaBilheteIdosoController.java | 239 ++++++++++++++ .../vendabilheteidoso/RenderCategoria.java | 29 ++ .../vendabilheteidoso/ValidaForm.java | 6 + .../ValidaFormRelatorioVendaBilheteIdoso.java | 74 +++++ .../ModificacionMasivaTarifasController.java | 5 +- .../tarifas/TarifaOficialExcelController.java | 5 +- .../EventListenerExecutarRelatorio.java | 41 +++ .../web/utilerias/MyComboboxEstandar.java | 18 +- ...MenuRelatorioPosicaoVendaBilheteIdoso.java | 26 ++ .../utilerias/menu/menu_original.properties | 1 + .../web/utilerias/render/RenderCategoria.java | 31 -- .../utilerias/render/RenderPersonalizado.java | 9 +- web/WEB-INF/i3-label_es_MX.label | 33 ++ web/WEB-INF/i3-label_pt_BR.label | 33 ++ ...iltroRelatorioPosicaoVendaBilheteIdoso.zul | 216 +++++++++++++ 38 files changed, 2050 insertions(+), 143 deletions(-) create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioPosicaoVendaBilheteIdosoPorPassageiro.java create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioPosicaoVendaBilheteIdosoPorTrecho.java create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioPosicaoVendaBilheteIdosoPorPassageiro_es.properties create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioPosicaoVendaBilheteIdosoPorPassageiro_pt.properties create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioPosicaoVendaBilheteIdosoPorTrecho_es.properties create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioPosicaoVendaBilheteIdosoPorTrecho_pt.properties create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioPosicaoVendaBilheteIdosoPorPassageiro.jasper create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioPosicaoVendaBilheteIdosoPorPassageiro.jrxml create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioPosicaoVendaBilheteIdosoPorTrecho.jasper create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioPosicaoVendaBilheteIdosoPorTrecho.jrxml create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/ArrayCustomDataSourceRelatorio.java create mode 100644 src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/eventos/EventListenerBtnLimparPesquisa.java create mode 100644 src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/eventos/EventListenerBtnPesquisar.java create mode 100644 src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/eventos/EventListenerValidarInclusaoListBox.java create mode 100644 src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/ETipoPeriodoRelatorioPosicaoVendaBilheteIdoso.java create mode 100644 src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/ETipoRelatorioVendaBilheteIdoso.java create mode 100644 src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/EventListenerBtnPesquisarLinha.java create mode 100644 src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/EventListenerBtnPesquisarTipoPassagem.java create mode 100644 src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/EventListenerExecutarRelatorioVendaBilheteIdoso.java create mode 100644 src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/EventListenerRemoverItemListBox.java create mode 100644 src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/RelatorioPosicaoVendaBilheteIdosoController.java create mode 100644 src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/RenderCategoria.java create mode 100644 src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/ValidaForm.java create mode 100644 src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/ValidaFormRelatorioVendaBilheteIdoso.java create mode 100644 src/java/com/rjconsultores/ventaboletos/web/utilerias/EventListenerExecutarRelatorio.java create mode 100644 src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/relatorios/ItemMenuRelatorioPosicaoVendaBilheteIdoso.java delete mode 100644 src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderCategoria.java create mode 100644 web/gui/relatorios/filtroRelatorioPosicaoVendaBilheteIdoso.zul diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioHistoricoCompras.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioHistoricoCompras.java index 2c2c30b7e..988f51bfc 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioHistoricoCompras.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioHistoricoCompras.java @@ -5,10 +5,9 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Timestamp; import java.util.Date; -import java.util.HashMap; import java.util.Map; -import com.rjconsultores.ventaboletos.relatorios.utilitarios.ArrayDataSource; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.ArrayCustomDataSourceRelatorio; import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; import com.rjconsultores.ventaboletos.utilerias.DateUtil; import com.rjconsultores.ventaboletos.utils.FormataUtil; @@ -25,51 +24,86 @@ public class RelatorioHistoricoCompras extends Relatorio { setCustomDataSource(new ArrayCustomDataSource(this)); } - private final class ArrayCustomDataSource extends ArrayDataSource { + private final class ArrayCustomDataSource extends ArrayCustomDataSourceRelatorio { private ArrayCustomDataSource(Relatorio relatorio) throws Exception { super(relatorio); } @Override - public void initDados() throws Exception { - Connection conexao = this.relatorio.getConexao(); - Map parametros = this.relatorio.getParametros(); + protected void getSql(StringBuilder instrucaoSql, Map parametros) { + instrucaoSql.append(" SELECT "); + instrucaoSql.append(" ca.fechorventa_h venda, "); + instrucaoSql.append(" ca.numfoliosistema bilhete, "); + instrucaoSql.append(" ca.corrida_id servico, "); + instrucaoSql.append(" o.descparada origem, "); + instrucaoSql.append(" d.descparada destino, "); + instrucaoSql.append(" u.cveusuario operador, "); + instrucaoSql.append(" ca.preciopagado + ca.importeoutros + ca.importepedagio + ca.importeseguro + ca.importetaxaembarque valor, "); + instrucaoSql.append(" ca.fechorviaje viagem, "); + instrucaoSql.append(" ca.numasiento poltrona, "); + instrucaoSql.append(" pv.numpuntoventa||'-'||pv.nombpuntoventa agencia, "); + instrucaoSql.append(" cli.numtelefonodos celular, "); + instrucaoSql.append(" cli.numtelefono telefone, "); + instrucaoSql.append(" cli.numfax comercial, "); + instrucaoSql.append(" cli.nombcliente nome, "); + instrucaoSql.append(" CASE "); + instrucaoSql.append(" WHEN cli.tipoidentificauno_id = 2 THEN cli.numidentificauno "); + instrucaoSql.append(" WHEN cli.tipoidentificados_id = 2 THEN cli.numidentificados "); + instrucaoSql.append(" ELSE NULL "); + instrucaoSql.append(" END "); + instrucaoSql.append(" cpf "); + instrucaoSql.append(" FROM "); + instrucaoSql.append(" caja ca "); + instrucaoSql.append(" INNER JOIN cliente cli ON ca.clientecomprador_id = cli.cliente_id "); + instrucaoSql.append(" INNER JOIN usuario u ON ca.usuario_id = u.usuario_id "); + instrucaoSql.append(" INNER JOIN punto_venta pv ON ca.puntoventa_id = pv.puntoventa_id "); + instrucaoSql.append(" INNER JOIN ruta r on ca.ruta_id = r.ruta_id "); + instrucaoSql.append(" LEFT JOIN parada o ON ca.origen_id = o.parada_id "); + instrucaoSql.append(" LEFT JOIN parada d ON ca.destino_id = d.parada_id "); - String sql = getSql(parametros); - - NamedParameterStatement stmt = new NamedParameterStatement(conexao, sql); - - setParametrosConsultaSql(parametros, stmt); - - ResultSet rset = stmt.executeQuery(); - - while (rset.next()) { - - Map dataResult = new HashMap(); - - dataResult.put("venda", FormataUtil.formataDataToString((Date)rset.getTimestamp("venda"), "", "dd/MM/yyyy hh:mm")); - dataResult.put("bilhete", rset.getString("bilhete")); - dataResult.put("servico", rset.getString("servico")); - dataResult.put("origem", rset.getString("origem")); - dataResult.put("destino", rset.getString("destino")); - dataResult.put("operador", rset.getString("operador")); - dataResult.put("valor", rset.getBigDecimal("valor")); - dataResult.put("viagem", FormataUtil.formataDataToString((Date)rset.getTimestamp("viagem"), "", "dd/MM/yyyy hh:mm")); - dataResult.put("poltrona", rset.getString("poltrona")); - dataResult.put("agencia", rset.getString("agencia")); - dataResult.put("celular", rset.getString("celular")); - dataResult.put("telefone", rset.getString("telefone")); - dataResult.put("comercial", rset.getString("comercial")); - dataResult.put("nome", rset.getString("nome")); - dataResult.put("cpf", rset.getString("cpf")); - - this.dados.add(dataResult); + if (parametros.get("dtVendaInicial") != null + && parametros.get("dtEmbarqueInicial") != null) { + instrucaoSql.append(" WHERE ca.fechorventa_h BETWEEN :dt_venda_inicio and :dt_venda_fim "); + instrucaoSql.append(" and ca.fechorviaje BETWEEN :dt_embarque_inicio and :dt_embarque_fim "); + } else if (parametros.get("dtVendaInicial") != null) { + instrucaoSql.append(" WHERE ca.fechorventa_h BETWEEN :dt_venda_inicio and :dt_venda_fim "); + } else { + instrucaoSql.append(" WHERE ca.fechorviaje BETWEEN :dt_embarque_inicio and :dt_embarque_fim "); } - - this.resultSet = rset; + + if (parametros.get("puntoVentaId") != null) { + instrucaoSql.append(" and pv.puntoventa_id in("+parametros.get("puntoVentaId")+") "); + } + if (parametros.get("numRuta") != null) { + instrucaoSql.append(" and r.numruta in ("+obtemIdsParametrizadosParaString(parametros.get("numRuta").toString())+ ") "); + } + if (parametros.get("clienteId") != null) { + instrucaoSql.append(" and cli.cliente_id in("+parametros.get("clienteId")+") "); + } + instrucaoSql.append("order by ca.fechorventa_h"); } - private void setParametrosConsultaSql(Map parametros, NamedParameterStatement stmt) throws SQLException { + @Override + protected void populaValoresDataResult(Map dataResult, ResultSet resultSet) throws SQLException { + dataResult.put("venda", FormataUtil.formataDataToString((Date)resultSet.getTimestamp("venda"), "", "dd/MM/yyyy hh:mm")); + dataResult.put("bilhete", resultSet.getString("bilhete")); + dataResult.put("servico", resultSet.getString("servico")); + dataResult.put("origem", resultSet.getString("origem")); + dataResult.put("destino", resultSet.getString("destino")); + dataResult.put("operador", resultSet.getString("operador")); + dataResult.put("valor", resultSet.getBigDecimal("valor")); + dataResult.put("viagem", FormataUtil.formataDataToString((Date)resultSet.getTimestamp("viagem"), "", "dd/MM/yyyy hh:mm")); + dataResult.put("poltrona", resultSet.getString("poltrona")); + dataResult.put("agencia", resultSet.getString("agencia")); + dataResult.put("celular", resultSet.getString("celular")); + dataResult.put("telefone", resultSet.getString("telefone")); + dataResult.put("comercial", resultSet.getString("comercial")); + dataResult.put("nome", resultSet.getString("nome")); + dataResult.put("cpf", resultSet.getString("cpf")); + } + + @Override + protected void configuraParametrosConsultaSql(Map parametros, NamedParameterStatement stmt) throws SQLException { if (parametros.get("dtVendaInicial") != null) { stmt.setTimestamp("dt_venda_inicio", new Timestamp(DateUtil.inicioFecha((Date) parametros.get("dtVendaInicial")).getTime())); stmt.setTimestamp("dt_venda_fim", new Timestamp(DateUtil.fimFecha((Date) parametros.get("dtVendaFinal")).getTime())); @@ -79,64 +113,8 @@ public class RelatorioHistoricoCompras extends Relatorio { stmt.setTimestamp("dt_embarque_inicio", new Timestamp(DateUtil.inicioFecha((Date) parametros.get("dtEmbarqueInicial")).getTime())); stmt.setTimestamp("dt_embarque_fim", new Timestamp(DateUtil.fimFecha((Date) parametros.get("dtEmbarqueFinal")).getTime())); } - } - private String getSql(Map parametros) { - StringBuilder sql = new StringBuilder(); - sql.append(" SELECT "); - sql.append(" ca.fechorventa_h venda, "); - sql.append(" ca.numfoliosistema bilhete, "); - sql.append(" ca.corrida_id servico, "); - sql.append(" o.descparada origem, "); - sql.append(" d.descparada destino, "); - sql.append(" u.cveusuario operador, "); - sql.append(" ca.preciopagado + ca.importeoutros + ca.importepedagio + ca.importeseguro + ca.importetaxaembarque valor, "); - sql.append(" ca.fechorviaje viagem, "); - sql.append(" ca.numasiento poltrona, "); - sql.append(" pv.numpuntoventa||'-'||pv.nombpuntoventa agencia, "); - sql.append(" cli.numtelefonodos celular, "); - sql.append(" cli.numtelefono telefone, "); - sql.append(" cli.numfax comercial, "); - sql.append(" cli.nombcliente nome, "); - sql.append(" CASE "); - sql.append(" WHEN cli.tipoidentificauno_id = 2 THEN cli.numidentificauno "); - sql.append(" WHEN cli.tipoidentificados_id = 2 THEN cli.numidentificados "); - sql.append(" ELSE NULL "); - sql.append(" END "); - sql.append(" cpf "); - sql.append(" FROM "); - sql.append(" caja ca "); - sql.append(" INNER JOIN cliente cli ON ca.clientecomprador_id = cli.cliente_id "); - sql.append(" INNER JOIN usuario u ON ca.usuario_id = u.usuario_id "); - sql.append(" INNER JOIN punto_venta pv ON ca.puntoventa_id = pv.puntoventa_id "); - sql.append(" INNER JOIN ruta r on ca.ruta_id = r.ruta_id "); - sql.append(" LEFT JOIN parada o ON ca.origen_id = o.parada_id "); - sql.append(" LEFT JOIN parada d ON ca.destino_id = d.parada_id "); - - if (parametros.get("dtVendaInicial") != null - && parametros.get("dtEmbarqueInicial") != null) { - sql.append(" WHERE ca.fechorventa_h BETWEEN :dt_venda_inicio and :dt_venda_fim "); - sql.append(" and ca.fechorviaje BETWEEN :dt_embarque_inicio and :dt_embarque_fim "); - } else if (parametros.get("dtVendaInicial") != null) { - sql.append(" WHERE ca.fechorventa_h BETWEEN :dt_venda_inicio and :dt_venda_fim "); - } else { - sql.append(" WHERE ca.fechorviaje BETWEEN :dt_embarque_inicio and :dt_embarque_fim "); - } - - if (parametros.get("puntoVentaId") != null) { - sql.append(" and pv.puntoventa_id in("+parametros.get("puntoVentaId")+") "); - } - if (parametros.get("numRuta") != null) { - sql.append(" and r.numruta in ("+obtemIdsParametrizadosParaString(parametros.get("numRuta").toString())+ ") "); - } - if (parametros.get("clienteId") != null) { - sql.append(" and cli.cliente_id in("+parametros.get("clienteId")+") "); - } - sql.append("order by ca.fechorventa_h"); - return sql.toString(); - } - public String obtemIdsParametrizadosParaString(String parametro) { String[] ids = parametro.split(", "); StringBuilder retorno = new StringBuilder(); @@ -154,6 +132,7 @@ public class RelatorioHistoricoCompras extends Relatorio { private boolean isIntermediario(String[] ids, int i) { return (i > 0) && (i != ids.length); } + } } diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioPosicaoVendaBilheteIdosoPorPassageiro.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioPosicaoVendaBilheteIdosoPorPassageiro.java new file mode 100644 index 000000000..20948cb54 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioPosicaoVendaBilheteIdosoPorPassageiro.java @@ -0,0 +1,85 @@ +package com.rjconsultores.ventaboletos.relatorios.impl; + +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Timestamp; +import java.util.Date; +import java.util.Map; + +import com.rjconsultores.ventaboletos.relatorios.utilitarios.ArrayCustomDataSourceRelatorio; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; +import com.rjconsultores.ventaboletos.utilerias.DateUtil; +import com.rjconsultores.ventaboletos.utils.FormataUtil; +import com.rjconsultores.ventaboletos.web.gui.controladores.relatorios.vendabilheteidoso.ETipoPeriodoRelatorioPosicaoVendaBilheteIdoso; +import com.rjconsultores.ventaboletos.web.gui.controladores.relatorios.vendabilheteidoso.RelatorioPosicaoVendaBilheteIdosoController; +import com.rjconsultores.ventaboletos.web.utilerias.NamedParameterStatement; + +public class RelatorioPosicaoVendaBilheteIdosoPorPassageiro extends Relatorio { + + public RelatorioPosicaoVendaBilheteIdosoPorPassageiro(Map parametros, Connection conexao) { + super(parametros, conexao); + } + + @Override + protected void processaParametros() throws Exception { + setCustomDataSource(new ArrayCustomDataSource(this)); + } + + private final class ArrayCustomDataSource extends ArrayCustomDataSourceRelatorio { + + public ArrayCustomDataSource(Relatorio relatorio) throws Exception { + super(relatorio); + } + + @Override + protected void getSql(StringBuilder instrucaoSql, Map parametros) { + instrucaoSql.append("SELECT R.DESCRUTA, CAT.DESCCATEGORIA, "); + instrucaoSql.append("ORIGEM.DESCPARADA ORIGEM, "); + instrucaoSql.append("DESTINO.DESCPARADA DESTINO, "); + instrucaoSql.append("C.FECHORVENTA_H DATA_VENDA, "); + instrucaoSql.append("C.FECCORRIDA DATA_VIAGEM, "); + instrucaoSql.append("C.NOMBPASAJERO NOME_PASSAGEIRO, "); + instrucaoSql.append("C.DESCNUMDOC DOCUMENTO "); + instrucaoSql.append("FROM CAJA C "); + instrucaoSql.append("INNER JOIN RUTA R ON C.RUTA_ID = R.RUTA_ID "); + instrucaoSql.append("INNER JOIN CATEGORIA CAT ON C.CATEGORIA_ID = CAT.CATEGORIA_ID "); + instrucaoSql.append("INNER JOIN PARADA ORIGEM ON ORIGEM.PARADA_ID = C.ORIGEN_ID "); + instrucaoSql.append("INNER JOIN PARADA DESTINO ON DESTINO.PARADA_ID = C.DESTINO_ID "); + instrucaoSql.append("WHERE "); + if (ETipoPeriodoRelatorioPosicaoVendaBilheteIdoso.VENDA.equals( + (ETipoPeriodoRelatorioPosicaoVendaBilheteIdoso)parametros.get("tpData"))) { + instrucaoSql.append("C.FECHORVENTA_H BETWEEN :dtInicial AND :dtFinal "); + } else { + instrucaoSql.append("C.FECCORRIDA BETWEEN :dtInicial AND :dtFinal "); + } + instrucaoSql.append("AND C.EMPRESACORRIDA_ID = :empresaId "); + instrucaoSql.append("AND C.CATEGORIA_ID IN ("+parametros.get("categoriaId").toString()+") "); + if (!RelatorioPosicaoVendaBilheteIdosoController.LISTAR_TODAS.equals(parametros.get("rutaId"))) { + instrucaoSql.append("AND C.RUTA_ID IN ("+parametros.get("rutaId").toString()+") "); + } + instrucaoSql.append("ORDER BY R.DESCRUTA, CAT.DESCCATEGORIA "); + } + + @Override + protected void populaValoresDataResult(Map dataResult, ResultSet resultSet) throws SQLException { + dataResult.put("origem", resultSet.getString("origem")); + dataResult.put("destino", resultSet.getString("destino")); + dataResult.put("data_venda", FormataUtil.formataDataToString((Date)resultSet.getTimestamp("data_venda"), "", "dd/MM/yyyy")); + dataResult.put("data_viagem", FormataUtil.formataDataToString((Date)resultSet.getTimestamp("data_viagem"), "", "dd/MM/yyyy hh:mm")); + dataResult.put("nome_passageiro", resultSet.getString("nome_passageiro")); + dataResult.put("documento", resultSet.getString("documento")); + dataResult.put("descRuta", resultSet.getString("descruta")); + dataResult.put("descCategoria", resultSet.getString("desccategoria")); + } + + @Override + protected void configuraParametrosConsultaSql(Map parametros, NamedParameterStatement stmt) throws SQLException { + stmt.setTimestamp("dtInicial", new Timestamp(DateUtil.inicioFecha((Date) parametros.get("dtInicial")).getTime())); + stmt.setTimestamp("dtFinal", new Timestamp(DateUtil.fimFecha((Date) parametros.get("dtFinal")).getTime())); + stmt.setObject("empresaId", parametros.get("empresaId")); + } + + } + +} diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioPosicaoVendaBilheteIdosoPorTrecho.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioPosicaoVendaBilheteIdosoPorTrecho.java new file mode 100644 index 000000000..ec4f9d4f3 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioPosicaoVendaBilheteIdosoPorTrecho.java @@ -0,0 +1,98 @@ +package com.rjconsultores.ventaboletos.relatorios.impl; + +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Timestamp; +import java.util.Date; +import java.util.Map; + +import com.rjconsultores.ventaboletos.relatorios.utilitarios.ArrayCustomDataSourceRelatorio; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; +import com.rjconsultores.ventaboletos.utilerias.DateUtil; +import com.rjconsultores.ventaboletos.web.gui.controladores.relatorios.vendabilheteidoso.ETipoPeriodoRelatorioPosicaoVendaBilheteIdoso; +import com.rjconsultores.ventaboletos.web.gui.controladores.relatorios.vendabilheteidoso.RelatorioPosicaoVendaBilheteIdosoController; +import com.rjconsultores.ventaboletos.web.utilerias.NamedParameterStatement; + +public class RelatorioPosicaoVendaBilheteIdosoPorTrecho extends Relatorio { + + public RelatorioPosicaoVendaBilheteIdosoPorTrecho(Map parametros, Connection conexao) { + super(parametros, conexao); + } + + @Override + protected void processaParametros() throws Exception { + setCustomDataSource(new ArrayCustomDataSource(this)); + } + + private final class ArrayCustomDataSource extends ArrayCustomDataSourceRelatorio { + + public ArrayCustomDataSource(Relatorio relatorio) throws Exception { + super(relatorio); + } + + @Override + protected void getSql(StringBuilder instrucaoSql, Map parametros) { + instrucaoSql.append("SELECT R.DESCRUTA, CAT.DESCCATEGORIA, "); + instrucaoSql.append("ORIGEM.DESCPARADA ORIGEM, "); + instrucaoSql.append("DESTINO.DESCPARADA DESTINO, "); + instrucaoSql.append("COUNT(C.CAJA_ID) QTDE, "); + instrucaoSql.append("COALESCE(C.IMPORTETAXAEMBARQUE, 0) TAXA_EMBARQUE, "); + instrucaoSql.append("COALESCE(C.PRECIOPAGADO, 0) + COALESCE(C.IMPORTEOUTROS, 0) + "); + instrucaoSql.append("COALESCE(C.IMPORTEPEDAGIO, 0) + COALESCE(C.IMPORTESEGURO, 0) + "); + instrucaoSql.append("COALESCE(C.IMPORTETAXAEMBARQUE, 0) FACIAL "); + instrucaoSql.append("FROM CAJA C "); + instrucaoSql.append("INNER JOIN RUTA R ON C.RUTA_ID = R.RUTA_ID "); + instrucaoSql.append("INNER JOIN CATEGORIA CAT ON C.CATEGORIA_ID = CAT.CATEGORIA_ID "); + instrucaoSql.append("INNER JOIN PARADA ORIGEM ON ORIGEM.PARADA_ID = C.ORIGEN_ID "); + instrucaoSql.append("INNER JOIN PARADA DESTINO ON DESTINO.PARADA_ID = C.DESTINO_ID "); + instrucaoSql.append("INNER JOIN TARIFA TAR ON (TAR.RUTA_ID = C.RUTA_ID "); + instrucaoSql.append(" AND TAR.MARCA_ID = C.MARCA_ID "); + instrucaoSql.append(" AND TAR.CLASESERVICIO_ID = C.CLASESERVICIO_ID "); + instrucaoSql.append(" AND TAR.ORIGEN_ID = C.ORIGEN_ID "); + instrucaoSql.append(" AND TAR.DESTINO_ID = C.DESTINO_ID AND TAR.ACTIVO = 1) "); + instrucaoSql.append("INNER JOIN VIGENCIA_TARIFA VT ON TAR.VIGENCIATARIFA_ID = VT.VIGENCIATARIFA_ID "); + instrucaoSql.append("WHERE "); + if (ETipoPeriodoRelatorioPosicaoVendaBilheteIdoso.VENDA.equals( + (ETipoPeriodoRelatorioPosicaoVendaBilheteIdoso)parametros.get("tpData"))) { + instrucaoSql.append("C.FECHORVENTA_H BETWEEN :dtInicial AND :dtFinal "); + } else { + instrucaoSql.append("C.FECCORRIDA BETWEEN :dtInicial AND :dtFinal "); + } + instrucaoSql.append("AND C.EMPRESACORRIDA_ID = :empresaId "); + instrucaoSql.append("AND C.CATEGORIA_ID IN ("+parametros.get("categoriaId").toString()+") "); + if (!RelatorioPosicaoVendaBilheteIdosoController.LISTAR_TODAS.equals(parametros.get("rutaId"))) { + instrucaoSql.append("AND C.RUTA_ID IN ("+parametros.get("rutaId").toString()+") "); + } + instrucaoSql.append("GROUP BY R.DESCRUTA, "); + instrucaoSql.append("CAT.DESCCATEGORIA, "); + instrucaoSql.append("ORIGEM.DESCPARADA, "); + instrucaoSql.append("DESTINO.DESCPARADA, "); + instrucaoSql.append("COALESCE(C.IMPORTETAXAEMBARQUE, 0), "); + instrucaoSql.append("COALESCE(C.PRECIOPAGADO, 0) + COALESCE(C.IMPORTEOUTROS, 0) + "); + instrucaoSql.append("COALESCE(C.IMPORTEPEDAGIO, 0) + COALESCE(C.IMPORTESEGURO, 0) + "); + instrucaoSql.append("COALESCE(C.IMPORTETAXAEMBARQUE, 0) "); + instrucaoSql.append("ORDER BY R.DESCRUTA, CAT.DESCCATEGORIA "); + } + + @Override + protected void populaValoresDataResult(Map dataResult, ResultSet resultSet) throws SQLException { + dataResult.put("origem", resultSet.getString("origem")); + dataResult.put("destino", resultSet.getString("destino")); + dataResult.put("total", resultSet.getBigDecimal("taxa_embarque")); + dataResult.put("qtde", resultSet.getInt("qtde")); + dataResult.put("facial", resultSet.getBigDecimal("facial")); + dataResult.put("descRuta", resultSet.getString("descruta")); + dataResult.put("descCategoria", resultSet.getString("desccategoria")); + } + + @Override + protected void configuraParametrosConsultaSql(Map parametros, NamedParameterStatement stmt) throws SQLException { + stmt.setTimestamp("dtInicial", new Timestamp(DateUtil.inicioFecha((Date) parametros.get("dtInicial")).getTime())); + stmt.setTimestamp("dtFinal", new Timestamp(DateUtil.fimFecha((Date) parametros.get("dtFinal")).getTime())); + stmt.setObject("empresaId", parametros.get("empresaId")); + } + + } + +} diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioPosicaoVendaBilheteIdosoPorPassageiro_es.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioPosicaoVendaBilheteIdosoPorPassageiro_es.properties new file mode 100644 index 000000000..9937a2b21 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioPosicaoVendaBilheteIdosoPorPassageiro_es.properties @@ -0,0 +1,14 @@ +#geral +msg.noData = No se pudo obtener datos con los par\u00E1metros reportados. + +#Labels cabealho +cabecalho.relatorio=Relatrio: +cabecalho.periodo=Perodo: +cabecalho.periodoA= +cabecalho.dataHora=Data/Hora: +cabecalho.impressorPor=Impresso por: +cabecalho.pagina=Pgina +cabecalho.de=de +cabecalho.filtros=Filtros: +cabecalho.empresa=Empresa: +cabecalho.linhas=Linha: \ No newline at end of file diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioPosicaoVendaBilheteIdosoPorPassageiro_pt.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioPosicaoVendaBilheteIdosoPorPassageiro_pt.properties new file mode 100644 index 000000000..201e1ecf6 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioPosicaoVendaBilheteIdosoPorPassageiro_pt.properties @@ -0,0 +1,16 @@ +#geral +msg.noData=No foi possivel obter dados com os parmetros informados. + +#Labels header +cabecalho.relatorio=Relatrio: +cabecalho.periodo=Perodo: +cabecalho.periodoA= +cabecalho.dataHora=Data/Hora: +cabecalho.impressorPor=Impresso por: +cabecalho.pagina=Pgina +cabecalho.de=de +cabecalho.filtros=Filtros: +cabecalho.empresa=Empresa: +cabecalho.linhas=Linha: +cabecalho.tipoData=Tipo de Data: +cabecalho.orgao=Orgo Concedente: \ No newline at end of file diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioPosicaoVendaBilheteIdosoPorTrecho_es.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioPosicaoVendaBilheteIdosoPorTrecho_es.properties new file mode 100644 index 000000000..9937a2b21 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioPosicaoVendaBilheteIdosoPorTrecho_es.properties @@ -0,0 +1,14 @@ +#geral +msg.noData = No se pudo obtener datos con los par\u00E1metros reportados. + +#Labels cabealho +cabecalho.relatorio=Relatrio: +cabecalho.periodo=Perodo: +cabecalho.periodoA= +cabecalho.dataHora=Data/Hora: +cabecalho.impressorPor=Impresso por: +cabecalho.pagina=Pgina +cabecalho.de=de +cabecalho.filtros=Filtros: +cabecalho.empresa=Empresa: +cabecalho.linhas=Linha: \ No newline at end of file diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioPosicaoVendaBilheteIdosoPorTrecho_pt.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioPosicaoVendaBilheteIdosoPorTrecho_pt.properties new file mode 100644 index 000000000..201e1ecf6 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioPosicaoVendaBilheteIdosoPorTrecho_pt.properties @@ -0,0 +1,16 @@ +#geral +msg.noData=No foi possivel obter dados com os parmetros informados. + +#Labels header +cabecalho.relatorio=Relatrio: +cabecalho.periodo=Perodo: +cabecalho.periodoA= +cabecalho.dataHora=Data/Hora: +cabecalho.impressorPor=Impresso por: +cabecalho.pagina=Pgina +cabecalho.de=de +cabecalho.filtros=Filtros: +cabecalho.empresa=Empresa: +cabecalho.linhas=Linha: +cabecalho.tipoData=Tipo de Data: +cabecalho.orgao=Orgo Concedente: \ No newline at end of file diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/render/RenderRelatorioJasper.java b/src/java/com/rjconsultores/ventaboletos/relatorios/render/RenderRelatorioJasper.java index f09bf75c9..5c2e77861 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/render/RenderRelatorioJasper.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/render/RenderRelatorioJasper.java @@ -140,8 +140,6 @@ public class RenderRelatorioJasper { } - } catch (Exception e) { - throw new Exception(); } finally { if (!StringUtils.isBlank(this.relatorio.getNome()) && this.relatorio.getNome().equalsIgnoreCase("RelatorioGratuidade")) { JRProperties.setProperty(JRParagraph.DEFAULT_TAB_STOP_WIDTH, "40"); diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioPosicaoVendaBilheteIdosoPorPassageiro.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioPosicaoVendaBilheteIdosoPorPassageiro.jasper new file mode 100644 index 0000000000000000000000000000000000000000..ef0124f563ee317788af76b5e41823b2aa1592f1 GIT binary patch literal 33293 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∋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 literal 0 HcmV?d00001 diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioPosicaoVendaBilheteIdosoPorPassageiro.jrxml b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioPosicaoVendaBilheteIdosoPorPassageiro.jrxml new file mode 100644 index 000000000..c7e542f16 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioPosicaoVendaBilheteIdosoPorPassageiro.jrxml @@ -0,0 +1,253 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioPosicaoVendaBilheteIdosoPorTrecho.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioPosicaoVendaBilheteIdosoPorTrecho.jasper new file mode 100644 index 0000000000000000000000000000000000000000..00abcc46abb8bf2ed72e123bf94d7abdd18648ce GIT binary patch literal 37801 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 literal 0 HcmV?d00001 diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioPosicaoVendaBilheteIdosoPorTrecho.jrxml b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioPosicaoVendaBilheteIdosoPorTrecho.jrxml new file mode 100644 index 000000000..6038b34d2 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioPosicaoVendaBilheteIdosoPorTrecho.jrxml @@ -0,0 +1,295 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/ArrayCustomDataSourceRelatorio.java b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/ArrayCustomDataSourceRelatorio.java new file mode 100644 index 000000000..c09fd01f4 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/ArrayCustomDataSourceRelatorio.java @@ -0,0 +1,42 @@ +package com.rjconsultores.ventaboletos.relatorios.utilitarios; + +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.Map; + +import com.rjconsultores.ventaboletos.web.utilerias.NamedParameterStatement; + +public abstract class ArrayCustomDataSourceRelatorio extends ArrayDataSource { + + public ArrayCustomDataSourceRelatorio(Relatorio relatorio) throws Exception { + super(relatorio); + } + + @Override + public void initDados() throws Exception { + Connection conexao = this.relatorio.getConexao(); + Map parametros = this.relatorio.getParametros(); + StringBuilder instrucaoSql = new StringBuilder(); + + getSql(instrucaoSql, parametros); + + NamedParameterStatement stmt = new NamedParameterStatement(conexao, instrucaoSql.toString()); + + configuraParametrosConsultaSql(parametros, stmt); + + ResultSet rset = stmt.executeQuery(); + + while (rset.next()) { + Map dataResult = new HashMap(); + populaValoresDataResult(dataResult, rset); + dados.add(dataResult); + } + resultSet = rset; + } + + protected abstract void getSql(StringBuilder instrucaoSql, Map parametros); + protected abstract void populaValoresDataResult(Map dataResult, ResultSet resultSet) throws SQLException; + protected abstract void configuraParametrosConsultaSql(Map parametros, NamedParameterStatement stmt) throws SQLException; +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/EspecializaLista.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/EspecializaLista.java index e083b2917..0d63ed16a 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/EspecializaLista.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/EspecializaLista.java @@ -18,6 +18,7 @@ public class EspecializaLista { this.nomeMetodoPk = nomeMetodoPk; } + @SuppressWarnings("unchecked") public List getLista() { return (List)(Object)Arrays.asList(listBox.getData()); } diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/eventos/EventListenerBtnLimparPesquisa.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/eventos/EventListenerBtnLimparPesquisa.java new file mode 100644 index 000000000..f17d384f5 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/eventos/EventListenerBtnLimparPesquisa.java @@ -0,0 +1,25 @@ +package com.rjconsultores.ventaboletos.web.gui.controladores.relatorios.eventos; + +import org.zkoss.zk.ui.event.Event; +import org.zkoss.zk.ui.event.EventListener; + +import com.rjconsultores.ventaboletos.relatorios.utilitarios.PagedListGenerico; +import com.rjconsultores.ventaboletos.web.utilerias.MyListbox; +import com.rjconsultores.ventaboletos.web.utilerias.MyTextbox; + +public class EventListenerBtnLimparPesquisa implements EventListener { + + private MyListbox listBox; + private MyTextbox txtPesquisa; + + public EventListenerBtnLimparPesquisa(MyListbox listBox, MyTextbox txtPesquisa) { + this.listBox = listBox; + this.txtPesquisa = txtPesquisa; + } + + @Override + public void onEvent(Event arg0) throws Exception { + PagedListGenerico.limparPesquisaListBox(listBox, txtPesquisa); + } + +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/eventos/EventListenerBtnPesquisar.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/eventos/EventListenerBtnPesquisar.java new file mode 100644 index 000000000..d04ffa47d --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/eventos/EventListenerBtnPesquisar.java @@ -0,0 +1,74 @@ +package com.rjconsultores.ventaboletos.web.gui.controladores.relatorios.eventos; + +import java.util.List; + +import org.zkoss.zk.ui.event.Event; +import org.zkoss.zk.ui.event.EventListener; +import org.zkoss.zkplus.spring.SpringUtil; + +import com.rjconsultores.ventaboletos.relatorios.utilitarios.PagedListGenerico; +import com.rjconsultores.ventaboletos.web.utilerias.MyListbox; +import com.rjconsultores.ventaboletos.web.utilerias.MyTextbox; + +public abstract class EventListenerBtnPesquisar implements EventListener { + + private T service; + private MyTextbox textoDePesquisa; + private MyListbox listBox; + private String tituloRelatorio; + private Boolean possuiOpcaoTodos; + + @SuppressWarnings("unchecked") + public EventListenerBtnPesquisar(String beanService, MyListbox listBox, MyTextbox textoDePesquisa, + String tituloRelatorio) { + service = (T)SpringUtil.getBean(beanService); + this.textoDePesquisa = textoDePesquisa; + this.listBox = listBox; + this.tituloRelatorio = tituloRelatorio; + this.possuiOpcaoTodos = false; + } + + @Override + public void onEvent(Event arg0) throws Exception { + listBox.setData(obtemRegistrosPesquisa(service, textoDePesquisa.getText())); + PagedListGenerico.validarPagedListSemRegistro(listBox, tituloRelatorio); + } + + protected List obtemRegistrosPesquisa(T service, String valorAPesquisar) { + List retorno = buscaRegistros(service, valorAPesquisar); + if (possuiOpcaoTodos && "TODOS".contains(valorAPesquisar.toUpperCase())) { + retorno.add(incluiTodos(-1, "TODOS")); + } + return retorno; + } + + protected abstract U incluiTodos(int valorPk, String valorDescricao); + + protected abstract List buscaRegistros(T service, String valorAPesquisar); + + public T getService() { + return service; + } + + public MyTextbox getTextoDePesquisa() { + return textoDePesquisa; + } + + public MyListbox getListBox() { + return listBox; + } + + public String getTituloRelatorio() { + return tituloRelatorio; + } + + public Boolean possuiOpcaoTodos() { + return possuiOpcaoTodos; + } + + public EventListenerBtnPesquisar comIncluiOpcaoTodos(Boolean possuiOpcaoTodos) { + this.possuiOpcaoTodos = possuiOpcaoTodos; + return this; + } + +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/eventos/EventListenerValidarInclusaoListBox.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/eventos/EventListenerValidarInclusaoListBox.java new file mode 100644 index 000000000..7816c516c --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/eventos/EventListenerValidarInclusaoListBox.java @@ -0,0 +1,25 @@ +package com.rjconsultores.ventaboletos.web.gui.controladores.relatorios.eventos; + +import org.zkoss.zk.ui.event.Event; +import org.zkoss.zk.ui.event.EventListener; + +import com.rjconsultores.ventaboletos.relatorios.utilitarios.PagedListGenerico; +import com.rjconsultores.ventaboletos.web.utilerias.MyListbox; + +public class EventListenerValidarInclusaoListBox implements EventListener { + + private MyListbox listbox; + private MyListbox listBoxAIncluir; + + public EventListenerValidarInclusaoListBox(MyListbox listBox, MyListbox listBoxAIncluir) { + this.listbox = listBox; + this.listBoxAIncluir = listBoxAIncluir; + } + + @SuppressWarnings("unchecked") + @Override + public void onEvent(Event arg0) throws Exception { + PagedListGenerico.validarInclusaoLista((T) listBoxAIncluir.getSelected(), listbox); + } + +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/ETipoPeriodoRelatorioPosicaoVendaBilheteIdoso.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/ETipoPeriodoRelatorioPosicaoVendaBilheteIdoso.java new file mode 100644 index 000000000..bfd0d6161 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/ETipoPeriodoRelatorioPosicaoVendaBilheteIdoso.java @@ -0,0 +1,31 @@ +package com.rjconsultores.ventaboletos.web.gui.controladores.relatorios.vendabilheteidoso; + +public enum ETipoPeriodoRelatorioPosicaoVendaBilheteIdoso { + + VENDA(0, "Venda"), VIAGEM(1, "Viagem"); + + private Integer id; + private String nome; + + private ETipoPeriodoRelatorioPosicaoVendaBilheteIdoso(Integer id, String nome) { + this.id = id; + this.nome = nome; + } + + public Integer getId() { + return id; + } + + public String getNome() { + return nome; + } + + public static ETipoPeriodoRelatorioPosicaoVendaBilheteIdoso getEnumById(Integer id) { + for (ETipoPeriodoRelatorioPosicaoVendaBilheteIdoso itemEnum : ETipoPeriodoRelatorioPosicaoVendaBilheteIdoso.values()) { + if (itemEnum.getId() == id) { + return itemEnum; + } + } + throw new IllegalArgumentException("Id no encontrado."); + } +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/ETipoRelatorioVendaBilheteIdoso.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/ETipoRelatorioVendaBilheteIdoso.java new file mode 100644 index 000000000..eceb7cfd1 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/ETipoRelatorioVendaBilheteIdoso.java @@ -0,0 +1,65 @@ +package com.rjconsultores.ventaboletos.web.gui.controladores.relatorios.vendabilheteidoso; + +import java.lang.reflect.InvocationTargetException; +import java.sql.Connection; +import java.util.Map; + +import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; + +public enum ETipoRelatorioVendaBilheteIdoso { + + TRECHO(0, "relatorioPosicaoVendaBilheteIdosoController.window.porTrecho.title", "com.rjconsultores.ventaboletos.relatorios.impl.RelatorioPosicaoVendaBilheteIdosoPorTrecho"), + PASSAGEIRO(1, "relatorioPosicaoVendaBilheteIdosoController.window.porPassageiro.title", "com.rjconsultores.ventaboletos.relatorios.impl.RelatorioPosicaoVendaBilheteIdosoPorPassageiro"); + + private Integer id; + private String tituloRelatorio; + private String classeRelatorio; + + private ETipoRelatorioVendaBilheteIdoso(Integer id, String tituloRelatorio, String classeRelatorio) { + this.id = id; + this.tituloRelatorio = tituloRelatorio; + this.classeRelatorio = classeRelatorio; + } + + public Integer getId() { + return id; + } + + public String getTituloRelatorio() { + return tituloRelatorio; + } + + public Class getClasseRelatorio() throws ClassNotFoundException { + return Class.forName(classeRelatorio); + } + + public Relatorio getInstance(Map parametros, Connection conexao) { + try { + return (Relatorio) getClasseRelatorio().getConstructor(Map.class, Connection.class).newInstance(parametros, conexao); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } catch (SecurityException e) { + e.printStackTrace(); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } + return null; + } + + public static ETipoRelatorioVendaBilheteIdoso getEnumById(Integer id) { + for (ETipoRelatorioVendaBilheteIdoso itemEnum : ETipoRelatorioVendaBilheteIdoso.values()) { + if (itemEnum.getId() == id) { + return itemEnum; + } + } + throw new IllegalArgumentException("Id no encontrado."); + } +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/EventListenerBtnPesquisarLinha.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/EventListenerBtnPesquisarLinha.java new file mode 100644 index 000000000..1e33d6e3f --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/EventListenerBtnPesquisarLinha.java @@ -0,0 +1,55 @@ +package com.rjconsultores.ventaboletos.web.gui.controladores.relatorios.vendabilheteidoso; + +import static com.rjconsultores.ventaboletos.web.gui.controladores.relatorios.vendabilheteidoso.RelatorioPosicaoVendaBilheteIdosoController.TITULO_RELATORIO; + +import java.util.List; + +import org.zkoss.zk.ui.event.Event; + +import com.rjconsultores.ventaboletos.entidad.OrgaoConcedente; +import com.rjconsultores.ventaboletos.entidad.Ruta; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.PagedListGenerico; +import com.rjconsultores.ventaboletos.service.RutaService; +import com.rjconsultores.ventaboletos.web.gui.controladores.relatorios.eventos.EventListenerBtnPesquisar; +import com.rjconsultores.ventaboletos.web.utilerias.MensagensUtils; +import com.rjconsultores.ventaboletos.web.utilerias.MyListbox; +import com.rjconsultores.ventaboletos.web.utilerias.MyTextbox; + +public class EventListenerBtnPesquisarLinha extends EventListenerBtnPesquisar { + + private static final String MSG_INFORMAR_ORGAO_CONCEDENTE = "relatorioPosicaoVendaBilheteIdosoController.MSG.informarOrgaoConcedente"; + private RelatorioPosicaoVendaBilheteIdosoController controller; + + public EventListenerBtnPesquisarLinha(String beanService, MyListbox listBox, + MyTextbox textoDePesquisa, RelatorioPosicaoVendaBilheteIdosoController controller) { + super(beanService, listBox, textoDePesquisa, TITULO_RELATORIO); + this.controller = controller; + comIncluiOpcaoTodos(true); + } + + @Override + public void onEvent(Event arg0) throws Exception { + if (getOrgaoConcedenteSelecionado() != null) { + getListBox().setData(obtemRegistrosPesquisa(getService(), getTextoDePesquisa().getText())); + PagedListGenerico.validarPagedListSemRegistro(getListBox(), TITULO_RELATORIO); + } else { + MensagensUtils.showMessageInformation(MSG_INFORMAR_ORGAO_CONCEDENTE, TITULO_RELATORIO); + } + } + + private OrgaoConcedente getOrgaoConcedenteSelecionado() { + return controller.getCmbOrgaoConcedente().getSelectedItem() != null + ? (OrgaoConcedente) controller.getCmbOrgaoConcedente().getSelectedItem().getValue() : null; + } + + @Override + protected Ruta incluiTodos(int valorPk, String valorDescricao) { + return new Ruta(valorPk, valorDescricao); + } + + @Override + protected List buscaRegistros(RutaService service, String valorAPesquisar) { + return service.buscaRuta(valorAPesquisar, getOrgaoConcedenteSelecionado()); + } + +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/EventListenerBtnPesquisarTipoPassagem.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/EventListenerBtnPesquisarTipoPassagem.java new file mode 100644 index 000000000..b6dc61beb --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/EventListenerBtnPesquisarTipoPassagem.java @@ -0,0 +1,29 @@ +package com.rjconsultores.ventaboletos.web.gui.controladores.relatorios.vendabilheteidoso; + +import java.util.List; + +import com.rjconsultores.ventaboletos.entidad.Categoria; +import com.rjconsultores.ventaboletos.service.CategoriaService; +import com.rjconsultores.ventaboletos.web.gui.controladores.relatorios.eventos.EventListenerBtnPesquisar; +import com.rjconsultores.ventaboletos.web.utilerias.MyListbox; +import com.rjconsultores.ventaboletos.web.utilerias.MyTextbox; + +public class EventListenerBtnPesquisarTipoPassagem extends EventListenerBtnPesquisar { + + public EventListenerBtnPesquisarTipoPassagem(String beanService, MyListbox listBox, MyTextbox textoDePesquisa, + String tituloRelatorio) { + super(beanService, listBox, textoDePesquisa, tituloRelatorio); + } + + @Override + protected Categoria incluiTodos(int valorPk, String valorDescricao) { + Categoria categoria = new Categoria(valorPk); + categoria.setDesccategoria(valorDescricao); + return categoria; + } + + @Override + protected List buscaRegistros(CategoriaService service, String valorAPesquisar) { + return service.buscarCategoriaPesquisada(valorAPesquisar); + } +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/EventListenerExecutarRelatorioVendaBilheteIdoso.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/EventListenerExecutarRelatorioVendaBilheteIdoso.java new file mode 100644 index 000000000..3bf7d260b --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/EventListenerExecutarRelatorioVendaBilheteIdoso.java @@ -0,0 +1,98 @@ +package com.rjconsultores.ventaboletos.web.gui.controladores.relatorios.vendabilheteidoso; + +import static com.rjconsultores.ventaboletos.web.gui.controladores.relatorios.vendabilheteidoso.RelatorioPosicaoVendaBilheteIdosoController.LISTAR_TODAS; + +import java.sql.SQLException; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +import org.zkoss.util.resource.Labels; + +import com.rjconsultores.ventaboletos.entidad.Categoria; +import com.rjconsultores.ventaboletos.entidad.OrgaoConcedente; +import com.rjconsultores.ventaboletos.entidad.Ruta; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; +import com.rjconsultores.ventaboletos.utils.FormataUtil; +import com.rjconsultores.ventaboletos.web.gui.controladores.relatorios.EspecializaLista; +import com.rjconsultores.ventaboletos.web.utilerias.EventListenerExecutarRelatorio; + +public class EventListenerExecutarRelatorioVendaBilheteIdoso extends EventListenerExecutarRelatorio { + + private static final String MASCARA_DATA_COMPLETA = "dd/MM/yyyy hh:mm:ss"; + + public EventListenerExecutarRelatorioVendaBilheteIdoso(RelatorioPosicaoVendaBilheteIdosoController controller) { + super(controller); + } + + @Override + protected boolean filtrosValidos(RelatorioPosicaoVendaBilheteIdosoController controller) { + return new ValidaFormRelatorioVendaBilheteIdoso(controller).isValido(); + } + + @Override + protected Relatorio configuraRelatorio(RelatorioPosicaoVendaBilheteIdosoController controller) throws SQLException { + return getTipoRelatorio().getInstance(getParametros(), controller.getDataSource().getConnection()); + } + + @Override + protected String getTituloRelatorio() { + return getTipoRelatorio().getTituloRelatorio(); + } + + private ETipoRelatorioVendaBilheteIdoso getTipoRelatorio() { + return ETipoRelatorioVendaBilheteIdoso.getEnumById(Integer.valueOf( + (getController().getTipoRelatorio().getSelectedItem()).getValue())); + } + + private ETipoPeriodoRelatorioPosicaoVendaBilheteIdoso getTipoDataSelecionada() { + return ETipoPeriodoRelatorioPosicaoVendaBilheteIdoso.getEnumById(Integer.valueOf( + (getController().getTipoData().getSelectedItem()).getValue())); + } + + private Map getParametros() { + Map parametros = new HashMap(); + + parametros.put("NOME_RELATORIO", Labels.getLabel(getTituloRelatorio())); + parametros.put("dtInicial", getController().getDtInicial().getValue()); + parametros.put("dtFinal", getController().getDtFinal().getValue()); + parametros.put("periodo", obtemPeriodo()); + parametros.put("tpData", getTipoDataSelecionada()); + parametros.put("empresaId", getController().getEmpresaSelecionada().getEmpresaId()); + parametros.put("empresa", getController().getEmpresaSelecionada().getNombempresa()); + configuraParametrosLinha(parametros); + getParametroTipoPassagem(parametros); + parametros.put("tipoData", getTipoDataSelecionada().getNome()); + parametros.put("orgao", ((OrgaoConcedente)getController().getCmbOrgaoConcedente().getSelectedItem().getValue()).getDescOrgao()); + + return parametros; + } + + private String obtemPeriodo() { + return FormataUtil.formataDataToString((Date)getController().getDtInicial().getValue(), "", MASCARA_DATA_COMPLETA) + +" at "+FormataUtil.formataDataToString((Date)getController().getDtFinal().getValue(), "", MASCARA_DATA_COMPLETA); + } + + private void getParametroTipoPassagem(Map parametros) { + EspecializaLista especializaLista = new EspecializaLista(Categoria.class, getController().getTpPassagemSelList(), "getCategoriaId"); + if (!especializaLista.getLista().isEmpty()) { + parametros.put("categoriaId", especializaLista.obtemIds()); + } + } + + private void configuraParametrosLinha(Map parametros) { + EspecializaLista especializaLista = new EspecializaLista(Ruta.class, getController().getLinhaSelList(), "getRutaId"); + parametros.put("rutaId", especializaLista.getLista().contains(new Ruta(LISTAR_TODAS)) ? + LISTAR_TODAS : especializaLista.obtemIds()); + if (LISTAR_TODAS.equals(parametros.get("rutaId"))) { + parametros.put("linha", "TODAS"); + } else { + StringBuilder linhas = new StringBuilder(); + for (Ruta linha : especializaLista.getLista()) { + linhas.append(linha.getDescruta()); + linhas.append(", "); + } + parametros.put("linha", linhas.substring(0, linhas.length()-2)); + } + } +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/EventListenerRemoverItemListBox.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/EventListenerRemoverItemListBox.java new file mode 100644 index 000000000..e623d2e3d --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/EventListenerRemoverItemListBox.java @@ -0,0 +1,22 @@ +package com.rjconsultores.ventaboletos.web.gui.controladores.relatorios.vendabilheteidoso; + +import org.zkoss.zk.ui.event.Event; +import org.zkoss.zk.ui.event.EventListener; + +import com.rjconsultores.ventaboletos.web.utilerias.MyListbox; + +public class EventListenerRemoverItemListBox implements EventListener { + + private MyListbox listBoxARemover; + + public EventListenerRemoverItemListBox(MyListbox listBoxARemover) { + this.listBoxARemover = listBoxARemover; + } + + @SuppressWarnings("unchecked") + @Override + public void onEvent(Event arg0) throws Exception { + listBoxARemover.removeItem((T) listBoxARemover.getSelected()); + } + +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/RelatorioPosicaoVendaBilheteIdosoController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/RelatorioPosicaoVendaBilheteIdosoController.java new file mode 100644 index 000000000..b31b8cc45 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/RelatorioPosicaoVendaBilheteIdosoController.java @@ -0,0 +1,239 @@ +package com.rjconsultores.ventaboletos.web.gui.controladores.relatorios.vendabilheteidoso; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +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.zk.ui.Component; +import org.zkoss.zk.ui.event.Event; +import org.zkoss.zk.ui.event.EventListener; +import org.zkoss.zul.Button; +import org.zkoss.zul.Combobox; +import org.zkoss.zul.Datebox; +import org.zkoss.zul.Radiogroup; + +import com.rjconsultores.ventaboletos.entidad.Categoria; +import com.rjconsultores.ventaboletos.entidad.Empresa; +import com.rjconsultores.ventaboletos.entidad.OrgaoConcedente; +import com.rjconsultores.ventaboletos.entidad.Ruta; +import com.rjconsultores.ventaboletos.enums.TypeEventListener; +import com.rjconsultores.ventaboletos.service.EmpresaService; +import com.rjconsultores.ventaboletos.service.OrgaoConcedenteService; +import com.rjconsultores.ventaboletos.web.gui.controladores.relatorios.eventos.EventListenerBtnLimparPesquisa; +import com.rjconsultores.ventaboletos.web.gui.controladores.relatorios.eventos.EventListenerValidarInclusaoListBox; +import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxEstandar; +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.render.RenderRutaPersonalizado; + +@Controller("relatorioPosicaoVendaBilheteIdosoController") +@Scope("prototype") +public class RelatorioPosicaoVendaBilheteIdosoController extends MyGenericForwardComposer { + + public static final String TITULO_RELATORIO = "indexController.mniRelatorioPosicaoVendaBilheteIdoso.label"; + public static final Integer LISTAR_TODAS = -1; + + private static final long serialVersionUID = 1L; + + private Datebox dtInicial; + private Datebox dtFinal; + private Radiogroup tipoData; + private Radiogroup tipoRelatorio; + + @Autowired + private EmpresaService empresaService; + private List lsEmpresa; + private Combobox cmbEmpresa; + + private MyListbox linhaList; + private MyListbox linhaSelList; + private MyTextbox txtPalavraPesquisaLinha; + + @Autowired + private OrgaoConcedenteService orgaoConcedenteService; + private List lsOrgaoConcedente; + private Combobox cmbOrgaoConcedente; + + private MyListbox tpPassagemList; + private MyListbox tpPassagemSelList; + private MyTextbox txtPalavraPesquisaTpPassagem; + private Button btnPesquisaLinha; + private Button btnLimparLinha; + private Button btnPesquisaTpPassagem; + private Button btnLimparTpPassagem; + private Button btnExecutarRelatorio; + + @Autowired + private DataSource dataSource; + + @Override + public void doAfterCompose(Component comp) throws Exception { + lsEmpresa = empresaService.obtenerTodos(); + lsOrgaoConcedente = orgaoConcedenteService.obtenerTodosExceto(-1); + super.doAfterCompose(comp); + configuraRenders(); + configuraEventosComboOrgaoConcedente(); + configuraEventosPesquisaLinha(); + configuraEventosPesquisaTipoPassagem(); + configuraEventosExecucaoRelatorio(); + } + + private void configuraRenders() { + List colunasLinhaRender = Arrays.asList("numRuta", "prefixo", "descruta"); + linhaList.setItemRenderer(new RenderRutaPersonalizado(colunasLinhaRender)); + linhaSelList.setItemRenderer(new RenderRutaPersonalizado(colunasLinhaRender).comBotaoExcluir()); + tpPassagemList.setItemRenderer(new RenderCategoria()); + tpPassagemSelList.setItemRenderer(new RenderCategoria().comBotaoExcluir()); + } + + private void configuraEventosComboOrgaoConcedente() { + cmbOrgaoConcedente.addEventListener(TypeEventListener.ON_CTRL_KEY.getEvent(), + new EventListenerOnCtrlKeyComboOrgao()); + cmbOrgaoConcedente.addEventListener(TypeEventListener.ON_CHANGE.getEvent(), + new EventListenerOnChangeComboOrgao()); + } + + private void configuraEventosPesquisaLinha() { + btnPesquisaLinha.addEventListener(TypeEventListener.ON_CLICK.getEvent(), + new EventListenerBtnPesquisarLinha("rutaService", linhaList, + txtPalavraPesquisaLinha, this)); + btnLimparLinha.addEventListener(TypeEventListener.ON_CLICK.getEvent(), + new EventListenerBtnLimparPesquisa(getLinhaList(), txtPalavraPesquisaLinha)); + linhaSelList.addEventListener(TypeEventListener.ON_DOUBLE_CLICK.getEvent(), + new EventListenerRemoverItemListBox(linhaSelList)); + linhaList.addEventListener(TypeEventListener.ON_DOUBLE_CLICK.getEvent(), + new EventListenerValidarInclusaoListBox(linhaSelList, linhaList)); + } + + private void configuraEventosPesquisaTipoPassagem() { + btnPesquisaTpPassagem.addEventListener(TypeEventListener.ON_CLICK.getEvent(), + new EventListenerBtnPesquisarTipoPassagem("categoriaService", tpPassagemList, txtPalavraPesquisaTpPassagem, TITULO_RELATORIO)); + btnLimparTpPassagem.addEventListener(TypeEventListener.ON_CLICK.getEvent(), + new EventListenerBtnLimparPesquisa(tpPassagemList, txtPalavraPesquisaTpPassagem)); + tpPassagemSelList.addEventListener(TypeEventListener.ON_DOUBLE_CLICK.getEvent(), + new EventListenerRemoverItemListBox(tpPassagemSelList)); + tpPassagemList.addEventListener(TypeEventListener.ON_DOUBLE_CLICK.getEvent(), + new EventListenerValidarInclusaoListBox(tpPassagemSelList, tpPassagemList)); + } + + private void configuraEventosExecucaoRelatorio() { + btnExecutarRelatorio.addEventListener(TypeEventListener.ON_CLICK.getEvent(), + new EventListenerExecutarRelatorioVendaBilheteIdoso(this)); + } + + public List getLsEmpresa() { + return lsEmpresa; + } + + public List getLsOrgaoConcedente() { + return lsOrgaoConcedente; + } + + public Empresa getEmpresaSelecionada() { + return cmbEmpresa.getSelectedItem() != null + ? (Empresa) cmbEmpresa.getSelectedItem().getValue() : null; + } + + private void limparValoresLinhasSelecionadas(Event ev) throws Exception { + (new EventListenerBtnLimparPesquisa(linhaList, txtPalavraPesquisaTpPassagem)).onEvent(ev); + linhaSelList.setData(new ArrayList()); + } + + public Datebox getDtInicial() { + return dtInicial; + } + + public Datebox getDtFinal() { + return dtFinal; + } + + public Boolean possuiLinhaSelecionada() { + return linhaSelList.getSize() > 0; + } + + public Boolean possuiTipoPassagemSelecionado() { + return tpPassagemSelList.getSize() > 0; + } + + public MyListbox getLinhaList() { + return linhaList; + } + + public Radiogroup getTipoData() { + return tipoData; + } + + public Radiogroup getTipoRelatorio() { + return tipoRelatorio; + } + + public EmpresaService getEmpresaService() { + return empresaService; + } + + public MyListbox getLinhaSelList() { + return linhaSelList; + } + + public MyTextbox getTxtPalavraPesquisaLinha() { + return txtPalavraPesquisaLinha; + } + + public OrgaoConcedenteService getOrgaoConcedenteService() { + return orgaoConcedenteService; + } + + public MyListbox getTpPassagemList() { + return tpPassagemList; + } + + public MyListbox getTpPassagemSelList() { + return tpPassagemSelList; + } + + public MyTextbox getTxtPalavraPesquisaTpPassagem() { + return txtPalavraPesquisaTpPassagem; + } + + public Button getBtnPesquisaLinha() { + return btnPesquisaLinha; + } + + public Button getBtnLimparLinha() { + return btnLimparLinha; + } + + public DataSource getDataSource() { + return dataSource; + } + + public Combobox getCmbOrgaoConcedente() { + return cmbOrgaoConcedente; + } + + public Combobox getCmbEmpresa() { + return cmbEmpresa; + } + + private final class EventListenerOnChangeComboOrgao implements EventListener { + @Override + public void onEvent(Event ev) throws Exception { + limparValoresLinhasSelecionadas(ev); + } + } + + private final class EventListenerOnCtrlKeyComboOrgao implements EventListener { + @Override + public void onEvent(Event ev) throws Exception { + ((MyComboboxEstandar) cmbOrgaoConcedente).setSelectedItem(null); + ((MyComboboxEstandar) cmbOrgaoConcedente).close(); + limparValoresLinhasSelecionadas(ev); + } + } +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/RenderCategoria.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/RenderCategoria.java new file mode 100644 index 000000000..10c7b5698 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/RenderCategoria.java @@ -0,0 +1,29 @@ +package com.rjconsultores.ventaboletos.web.gui.controladores.relatorios.vendabilheteidoso; + +import java.lang.reflect.InvocationTargetException; +import java.util.Arrays; + +import org.zkoss.zul.Listcell; +import org.zkoss.zul.Listitem; + +import com.rjconsultores.ventaboletos.entidad.Categoria; +import com.rjconsultores.ventaboletos.web.utilerias.render.RenderPersonalizado; + +public class RenderCategoria extends RenderPersonalizado { + + public RenderCategoria() { + super(Arrays.asList("desccategoria", "cvecategoria")); + } + + @Override + protected void incluirColunasRender(Listitem item, Object objeto) throws IllegalAccessException, InvocationTargetException { + super.incluirColunasRender(item, objeto); + Listcell lc; + try { + lc = new Listcell(((Categoria)objeto).getGrupoCategoria().getDescGrupo()); + } catch (NullPointerException e) { + lc = new Listcell(" - "); + } + lc.setParent(item); + } +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/ValidaForm.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/ValidaForm.java new file mode 100644 index 000000000..1bcc9cf5a --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/ValidaForm.java @@ -0,0 +1,6 @@ +package com.rjconsultores.ventaboletos.web.gui.controladores.relatorios.vendabilheteidoso; + +public interface ValidaForm { + + public boolean isValido(); +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/ValidaFormRelatorioVendaBilheteIdoso.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/ValidaFormRelatorioVendaBilheteIdoso.java new file mode 100644 index 000000000..062e5ed11 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/vendabilheteidoso/ValidaFormRelatorioVendaBilheteIdoso.java @@ -0,0 +1,74 @@ +package com.rjconsultores.ventaboletos.web.gui.controladores.relatorios.vendabilheteidoso; + +import static com.rjconsultores.ventaboletos.web.gui.controladores.relatorios.vendabilheteidoso.RelatorioPosicaoVendaBilheteIdosoController.TITULO_RELATORIO; + +import com.rjconsultores.ventaboletos.relatorios.utilitarios.ValidarDatas; +import com.rjconsultores.ventaboletos.web.utilerias.MensagensUtils; + +public class ValidaFormRelatorioVendaBilheteIdoso implements ValidaForm { + + private static final String MSG_PERIODO_NAO_INFORMADO = "relatorioPosicaoVendaBilheteIdosoController.MSG.informarFiltroData"; + private static final String MSG_PERIODO_INCOMPLETO = "relatorioPosicaoVendaBilheteIdosoController.MSG.informarData"; + private static final String MSG_DATA_INICIAL_MAIOR_FINAL = "relatorioPosicaoVendaBilheteIdosoController.MSG.dataInicialMaiorFinal"; + private static final String MSG_EMPRESA_NAO_INFORMADO = "relatorioPosicaoVendaBilheteIdosoController.MSG.informarEmpresa"; + private static final String MSG_LINHA_NAO_INFORMADO = "relatorioPosicaoVendaBilheteIdosoController.MSG.informarLinha"; + private static final String MSG_TP_PASSAGEM_NAO_INFORMADO = "relatorioPosicaoVendaBilheteIdosoController.MSG.informarTpPassagem"; + + private RelatorioPosicaoVendaBilheteIdosoController controller; + + public ValidaFormRelatorioVendaBilheteIdoso(RelatorioPosicaoVendaBilheteIdosoController controller) { + this.controller = controller; + } + + @Override + public boolean isValido() { + return isDatasValidas() + && isFiltrosValidos(); + } + + private boolean isFiltrosValidos() { + return possuiEmpresaSelecionada() + && possuiLinhaSelecionada() + && possuiTipoPassagemSelecionado(); + } + + private Boolean possuiTipoPassagemSelecionado() { + if (!controller.possuiTipoPassagemSelecionado()) { + MensagensUtils.showMessageInformation(MSG_TP_PASSAGEM_NAO_INFORMADO, TITULO_RELATORIO); + return false; + } + return true; + } + + private Boolean possuiLinhaSelecionada() { + if (!controller.possuiLinhaSelecionada()) { + MensagensUtils.showMessageInformation(MSG_LINHA_NAO_INFORMADO, TITULO_RELATORIO); + return false; + } + return true; + } + + private boolean possuiEmpresaSelecionada() { + if (controller.getEmpresaSelecionada() == null) { + MensagensUtils.showMessageInformation(MSG_EMPRESA_NAO_INFORMADO, TITULO_RELATORIO); + return false; + } + return true; + } + + private boolean isDatasValidas() { + ValidarDatas validadorData = new ValidarDatas(controller.getDtInicial(), controller.getDtFinal()); + + if (validadorData.isPeriodoNaoInformado()) { + MensagensUtils.showMessageInformation(MSG_PERIODO_NAO_INFORMADO, TITULO_RELATORIO); + return false; + } + + if (validadorData.isPeriodoParcialmenteInformado()) { + MensagensUtils.showMessageInformation(MSG_PERIODO_INCOMPLETO, TITULO_RELATORIO); + return false; + } + + return !validadorData.validarDataInicioMaiorQueTermino(MSG_DATA_INICIAL_MAIOR_FINAL, TITULO_RELATORIO); + } +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/tarifas/ModificacionMasivaTarifasController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/tarifas/ModificacionMasivaTarifasController.java index 715b57494..4922609f9 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/tarifas/ModificacionMasivaTarifasController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/tarifas/ModificacionMasivaTarifasController.java @@ -15,6 +15,7 @@ import java.math.RoundingMode; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Arrays; import java.util.Calendar; import java.util.Date; import java.util.HashMap; @@ -77,12 +78,12 @@ import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer; import com.rjconsultores.ventaboletos.web.utilerias.MyListbox; import com.rjconsultores.ventaboletos.web.utilerias.render.RenderCatalogoDeRutas; -import com.rjconsultores.ventaboletos.web.utilerias.render.RenderCategoria; import com.rjconsultores.ventaboletos.web.utilerias.render.RenderClaseServicio; import com.rjconsultores.ventaboletos.web.utilerias.render.RenderEmpresaModificacionMassivaTarifa; import com.rjconsultores.ventaboletos.web.utilerias.render.RenderMarca; import com.rjconsultores.ventaboletos.web.utilerias.render.RenderMoneda; import com.rjconsultores.ventaboletos.web.utilerias.render.RenderOrgaoConcedenteModifMassPreco; +import com.rjconsultores.ventaboletos.web.utilerias.render.RenderPersonalizado; import com.rjconsultores.ventaboletos.web.utilerias.render.RenderTipoPuntoVenta; import com.rjconsultores.ventaboletos.web.utilerias.render.RenderVigenciaTarifaModificacionMassivaTarifa; @@ -289,7 +290,7 @@ public class ModificacionMasivaTarifasController extends MyGenericForwardCompose rutaList.setItemRenderer(new RenderCatalogoDeRutas()); orgaoConcedenteList.setItemRenderer(new RenderOrgaoConcedenteModifMassPreco()); tipoPuntoVentaList.setItemRenderer(new RenderTipoPuntoVenta()); - categoriaList.setItemRenderer(new RenderCategoria()); + categoriaList.setItemRenderer(new RenderPersonalizado(Arrays.asList("categoriaId", "desccategoria"))); vigenciaTarifaList.setItemRenderer(new RenderVigenciaTarifaModificacionMassivaTarifa()); diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/tarifas/TarifaOficialExcelController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/tarifas/TarifaOficialExcelController.java index 6624de2b4..fdd06f152 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/tarifas/TarifaOficialExcelController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/tarifas/TarifaOficialExcelController.java @@ -11,6 +11,7 @@ import java.io.InputStream; import java.math.BigDecimal; import java.math.BigInteger; import java.util.ArrayList; +import java.util.Arrays; import java.util.Calendar; import java.util.List; @@ -56,11 +57,11 @@ import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer; import com.rjconsultores.ventaboletos.web.utilerias.MyListbox; import com.rjconsultores.ventaboletos.web.utilerias.render.RenderCatalogoDeRutas; -import com.rjconsultores.ventaboletos.web.utilerias.render.RenderCategoria; import com.rjconsultores.ventaboletos.web.utilerias.render.RenderClaseServicio; import com.rjconsultores.ventaboletos.web.utilerias.render.RenderEmpresaModificacionMassivaTarifa; import com.rjconsultores.ventaboletos.web.utilerias.render.RenderMarca; import com.rjconsultores.ventaboletos.web.utilerias.render.RenderMoneda; +import com.rjconsultores.ventaboletos.web.utilerias.render.RenderPersonalizado; import com.rjconsultores.ventaboletos.web.utilerias.render.RenderTipoPuntoVenta; /** @@ -258,7 +259,7 @@ public class TarifaOficialExcelController extends MyGenericForwardComposer { empresaList.setItemRenderer(new RenderEmpresaModificacionMassivaTarifa()); rutaList.setItemRenderer(new RenderCatalogoDeRutas()); tipoPuntoVentaList.setItemRenderer(new RenderTipoPuntoVenta()); - categoriaList.setItemRenderer(new RenderCategoria()); + categoriaList.setItemRenderer(new RenderPersonalizado(Arrays.asList("categoriaId", "desccategoria"))); lsAddRmvMarcas = new ArrayList(); lsAddRmvClaseServico = new ArrayList(); diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/EventListenerExecutarRelatorio.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/EventListenerExecutarRelatorio.java new file mode 100644 index 000000000..f640fd7aa --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/EventListenerExecutarRelatorio.java @@ -0,0 +1,41 @@ +package com.rjconsultores.ventaboletos.web.utilerias; + +import java.sql.SQLException; +import java.util.HashMap; +import java.util.Map; + +import org.zkoss.util.resource.Labels; +import org.zkoss.zk.ui.event.Event; +import org.zkoss.zk.ui.event.EventListener; + +import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; + +public abstract class EventListenerExecutarRelatorio implements EventListener { + + private T controller; + + public EventListenerExecutarRelatorio(T controller) { + this.controller = controller; + } + + @Override + public void onEvent(Event arg0) throws Exception { + if (filtrosValidos(controller)) { + Relatorio relatorio = configuraRelatorio(controller); + Map args = new HashMap(); + args.put("relatorio", relatorio); + + (controller).openWindow("/component/reportView.zul", + Labels.getLabel(getTituloRelatorio()), args, MyGenericForwardComposer.MODAL); + } + } + + protected abstract boolean filtrosValidos(T controller); + protected abstract Relatorio configuraRelatorio(T controller) throws SQLException; + protected abstract String getTituloRelatorio(); + + public T getController() { + return controller; + } + +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/MyComboboxEstandar.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/MyComboboxEstandar.java index 2bcc8011e..c4b664e86 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/utilerias/MyComboboxEstandar.java +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/MyComboboxEstandar.java @@ -24,14 +24,7 @@ public class MyComboboxEstandar extends Combobox { this.setReadonly(true); this.setCtrlKeys("#del"); - this.addEventListener("onCtrlKey", new EventListener() { - - @Override - public void onEvent(Event event) throws Exception { - MyComboboxEstandar.this.setSelectedItem(null); - MyComboboxEstandar.this.close(); - } - }); + this.addEventListener("onCtrlKey", new EventListenerOnCtrlKey()); } public T getSelecteObject(Class cType) { @@ -40,4 +33,13 @@ public class MyComboboxEstandar extends Combobox { } return null; } + + private final class EventListenerOnCtrlKey implements EventListener { + @Override + public void onEvent(Event event) throws Exception { + MyComboboxEstandar.this.setSelectedItem(null); + MyComboboxEstandar.this.close(); + } + } + } diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/relatorios/ItemMenuRelatorioPosicaoVendaBilheteIdoso.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/relatorios/ItemMenuRelatorioPosicaoVendaBilheteIdoso.java new file mode 100644 index 000000000..b0a1a8642 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/relatorios/ItemMenuRelatorioPosicaoVendaBilheteIdoso.java @@ -0,0 +1,26 @@ +package com.rjconsultores.ventaboletos.web.utilerias.menu.item.relatorios; + +import org.zkoss.util.resource.Labels; + +import com.rjconsultores.ventaboletos.constantes.ConstantesFuncionSistema; +import com.rjconsultores.ventaboletos.web.utilerias.PantallaUtileria; +import com.rjconsultores.ventaboletos.web.utilerias.menu.DefaultItemMenuSistema; + +public class ItemMenuRelatorioPosicaoVendaBilheteIdoso extends DefaultItemMenuSistema { + + public ItemMenuRelatorioPosicaoVendaBilheteIdoso() { + super("indexController.mniRelatorioPosicaoVendaBilheteIdoso.label"); + } + + @Override + public String getClaveMenu() { + return ConstantesFuncionSistema.CLAVE_POSICAO_VENDA_BILHETE_IDOSO; + } + + @Override + public void ejecutar() { + PantallaUtileria.openWindow("/gui/relatorios/filtroRelatorioPosicaoVendaBilheteIdoso.zul", + Labels.getLabel("indexController.mniRelatorioPosicaoVendaBilheteIdoso.label"), getArgs(), desktop); + + } +} 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 9ad80e03a..3b11ce1e7 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 @@ -142,6 +142,7 @@ analitico.gerenciais.tabPreco=com.rjconsultores.ventaboletos.web.utilerias.menu. analitico.gerenciais.trip=com.rjconsultores.ventaboletos.web.utilerias.menu.item.relatorios.ItemRelatorioTripulacao analitico.gerenciais.relatorioImpressaoPosterior=com.rjconsultores.ventaboletos.web.utilerias.menu.item.relatorios.ItemMenuRelatorioImpressaoPosterior analitico.gerenciais.relatorioHistoricoCompras=com.rjconsultores.ventaboletos.web.utilerias.menu.item.relatorios.ItemMenuRelatorioHistoricoCompras +analitico.gerenciais.relatorioHistoricoCompras=com.rjconsultores.ventaboletos.web.utilerias.menu.item.relatorios.ItemMenuRelatorioPosicaoVendaBilheteIdoso analitico.gerenciais.operacionais=com.rjconsultores.ventaboletos.web.utilerias.menu.item.analitico.gerenciais.operacionais.SubMenuRelatorioOperacionais analitico.gerenciais.operacionais.aproveitamento=com.rjconsultores.ventaboletos.web.utilerias.menu.item.relatorios.ItemMenuRelatorioAproveitamento analitico.gerenciais.operacionais.resumoLinhas=com.rjconsultores.ventaboletos.web.utilerias.menu.item.relatorios.ItemMenuRelatorioResumoLinhas diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderCategoria.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderCategoria.java deleted file mode 100644 index 2531395f0..000000000 --- a/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderCategoria.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ -package com.rjconsultores.ventaboletos.web.utilerias.render; - -import com.rjconsultores.ventaboletos.entidad.Categoria; -import org.zkoss.zul.Listcell; -import org.zkoss.zul.Listitem; -import org.zkoss.zul.ListitemRenderer; - -/** - * - * @author Administrador - */ -public class RenderCategoria implements ListitemRenderer { - - public void render(Listitem lstm, Object o) throws Exception { - Categoria categoria = (Categoria) o; - - Listcell lc = new Listcell(); - - lc = new Listcell(categoria.getCategoriaId().toString()); - lc.setParent(lstm); - - lc = new Listcell(categoria.getDesccategoria()); - lc.setParent(lstm); - - lstm.setAttribute("data", categoria); - } -} diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderPersonalizado.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderPersonalizado.java index bc5e64028..58eff4acd 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderPersonalizado.java +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderPersonalizado.java @@ -58,13 +58,14 @@ public class RenderPersonalizado implements ListitemRenderer { String nomeMetodo = obtemMetodoGet(coluna); for (Method method : methods) { if (method.getName().equals(nomeMetodo)) { + Listcell lc; try { - Listcell lc = new Listcell(method.invoke((T)objeto).toString()); - lc.setParent(item); - break; + lc = new Listcell(method.invoke((T)objeto).toString()); } catch (NullPointerException e) { - e.getMessage(); + lc = new Listcell(" - "); } + lc.setParent(item); + break; } } } diff --git a/web/WEB-INF/i3-label_es_MX.label b/web/WEB-INF/i3-label_es_MX.label index 4d4df4c38..c2a9f8e6b 100644 --- a/web/WEB-INF/i3-label_es_MX.label +++ b/web/WEB-INF/i3-label_es_MX.label @@ -308,6 +308,7 @@ indexController.mniRelatorioServicoBloqueadoVendaInternet.label = Corrida bloque indexController.mniRelatorioDocumentosFiscais.label = Report Documentos Fiscais indexController.mniRelatorioVendasConexao.label = Reporte Ventas Conexion indexController.mniRelatorioHistoricoCompras.label = Reporte Histórico de Compras +indexController.mniRelatorioPosicaoVendaBilheteIdoso.label = Reporte Posición de Venta del Billete Anciano indexController.mniRelatorioRemessaCNAB.label = Remessa de Lote (CNAB 400) @@ -846,6 +847,38 @@ relatorioHistoricoComprasController.MSG.dataInicialEmbarqueMaiorFinal = Data ini relatorioHistoricoComprasController.btnPesquisa.label = Pesquisar relatorioHistoricoComprasController.btnLimpar.label = Limpar +#Relatorio Posição Venda Bilhetes Idoso +relatorioPosicaoVendaBilheteIdosoController.window.porPassageiro.title = POSIÇÃO DE VENDA DO BILHETE IDOSO POR LINHA ANALÍTICO (POR PASSAGEIRO) +relatorioPosicaoVendaBilheteIdosoController.window.porTrecho.title = POSIÇÃO DE VENDA DO BILHETE IDOSO POR LINHA ANALÍTICO (POR TRECHO) +relatorioPosicaoVendaBilheteIdosoController.lblDataIni.value = Período Inicial +relatorioPosicaoVendaBilheteIdosoController.lblDataFin.value = Período Final +relatorioPosicaoVendaBilheteIdosoController.MSG.informarFiltroData = Favor informar o filtro de data. +relatorioPosicaoVendaBilheteIdosoController.MSG.dataInicialMaiorFinal = Período inicial maior que período final. +relatorioPosicaoVendaBilheteIdosoController.MSG.informarData = Favor informar o período completo. +relatorioPosicaoVendaBilheteIdosoController.PorData.value = Por Data +relatorioPosicaoVendaBilheteIdosoController.lbPorDataVenda.label = Venda +relatorioPosicaoVendaBilheteIdosoController.lbPorDataViagem.label = Viagem +relatorioPosicaoVendaBilheteIdosoController.lblEmpresa.value = Empresa +relatorioPosicaoVendaBilheteIdosoController.MSG.informarEmpresa = Favor informar o filtro de empresa. +relatorioPosicaoVendaBilheteIdosoController.lblOrgao.value = Órgão Concedente +relatorioPosicaoVendaBilheteIdosoController.lbLinha.value = Linha +relatorioPosicaoVendaBilheteIdosoController.MSG.informarLinha = Favor informar ao menos uma linha. +relatorioPosicaoVendaBilheteIdosoController.btnPesquisa.label = Pesquisar +relatorioPosicaoVendaBilheteIdosoController.btnLimpar.label = Limpar +relatorioPosicaoVendaBilheteIdosoController.lbLinha.label = Linha +relatorioPosicaoVendaBilheteIdosoController.lbNumRuta.label = Num. Linha +relatorioPosicaoVendaBilheteIdosoController.lbPrefixo.label = Prefixo +relatorioPosicaoVendaBilheteIdosoController.lbOrgao.label = Orgão Concedente +relatorioPosicaoVendaBilheteIdosoController.MSG.informarOrgaoConcedente = Favor informar o orgão concedente. +relatorioPosicaoVendaBilheteIdosoController.lbTpPassagem.value = Tipo de Passagem +relatorioPosicaoVendaBilheteIdosoController.MSG.informarTpPassagem = Favor informar ao menos um tipo de passagem. +relatorioPosicaoVendaBilheteIdosoController.lbDescCategoria.label = Descrição +relatorioPosicaoVendaBilheteIdosoController.lbSigla.label = Sigla +relatorioPosicaoVendaBilheteIdosoController.lbGrupoCategoria.label = Grupo de Categoria +relatorioPosicaoVendaBilheteIdosoController.TpRelatorio.value = Tipo de Relatório +relatorioPosicaoVendaBilheteIdosoController.tpTrecho.label = Trecho +relatorioPosicaoVendaBilheteIdosoController.tpPassageiro.label = Passageiro + #Relatório Documentos Fiscais relatorioDocumentosFiscaisController.window.title = Reporte Documentos Fiscais relatorioDocumentosFiscaisController.lbDatInicial.value = Fecha Inicial diff --git a/web/WEB-INF/i3-label_pt_BR.label b/web/WEB-INF/i3-label_pt_BR.label index 2822b05b2..d56395ecd 100644 --- a/web/WEB-INF/i3-label_pt_BR.label +++ b/web/WEB-INF/i3-label_pt_BR.label @@ -327,6 +327,7 @@ indexController.mniRelatorioServicoBloqueadoVendaInternet.label = Serviço Bloqu indexController.mniRelatorioDocumentosFiscais.label = Relatório Documentos Fiscais indexController.mniRelatorioVendasConexao.label = Relatório Vendas de Conexão indexController.mniRelatorioHistoricoCompras.label = Relatório Histórico de Compras +indexController.mniRelatorioPosicaoVendaBilheteIdoso.label = Relatório Posição de Venda do Bilhete Idoso indexController.mnSubMenuImpressaoFiscal.label=Impressão Fiscal indexController.mnSubMenuRelatorioImpressaoFiscal.label=Importação Fiscal @@ -957,6 +958,38 @@ relatorioHistoricoComprasController.MSG.dataInicialEmbarqueMaiorFinal = Data ini relatorioHistoricoComprasController.btnPesquisa.label = Pesquisar relatorioHistoricoComprasController.btnLimpar.label = Limpar +#Relatorio Posição Venda Bilhetes Idoso +relatorioPosicaoVendaBilheteIdosoController.window.porPassageiro.title = POSIÇÃO DE VENDA DO BILHETE IDOSO POR LINHA ANALÍTICO (POR PASSAGEIRO) +relatorioPosicaoVendaBilheteIdosoController.window.porTrecho.title = POSIÇÃO DE VENDA DO BILHETE IDOSO POR LINHA ANALÍTICO (POR TRECHO) +relatorioPosicaoVendaBilheteIdosoController.lblDataIni.value = Período Inicial +relatorioPosicaoVendaBilheteIdosoController.lblDataFin.value = Período Final +relatorioPosicaoVendaBilheteIdosoController.MSG.informarFiltroData = Favor informar o filtro de data. +relatorioPosicaoVendaBilheteIdosoController.MSG.dataInicialMaiorFinal = Período inicial maior que período final. +relatorioPosicaoVendaBilheteIdosoController.MSG.informarData = Favor informar o período completo. +relatorioPosicaoVendaBilheteIdosoController.PorData.value = Por Data +relatorioPosicaoVendaBilheteIdosoController.lbPorDataVenda.label = Venda +relatorioPosicaoVendaBilheteIdosoController.lbPorDataViagem.label = Viagem +relatorioPosicaoVendaBilheteIdosoController.lblEmpresa.value = Empresa +relatorioPosicaoVendaBilheteIdosoController.MSG.informarEmpresa = Favor informar o filtro de empresa. +relatorioPosicaoVendaBilheteIdosoController.lblOrgao.value = Órgão Concedente +relatorioPosicaoVendaBilheteIdosoController.lbLinha.value = Linha +relatorioPosicaoVendaBilheteIdosoController.MSG.informarLinha = Favor informar ao menos uma linha. +relatorioPosicaoVendaBilheteIdosoController.btnPesquisa.label = Pesquisar +relatorioPosicaoVendaBilheteIdosoController.btnLimpar.label = Limpar +relatorioPosicaoVendaBilheteIdosoController.lbLinha.label = Linha +relatorioPosicaoVendaBilheteIdosoController.lbNumRuta.label = Num. Linha +relatorioPosicaoVendaBilheteIdosoController.lbPrefixo.label = Prefixo +relatorioPosicaoVendaBilheteIdosoController.lbOrgao.label = Orgão Concedente +relatorioPosicaoVendaBilheteIdosoController.MSG.informarOrgaoConcedente = Favor informar o orgão concedente. +relatorioPosicaoVendaBilheteIdosoController.lbTpPassagem.value = Tipo de Passagem +relatorioPosicaoVendaBilheteIdosoController.MSG.informarTpPassagem = Favor informar ao menos um tipo de passagem. +relatorioPosicaoVendaBilheteIdosoController.lbDescCategoria.label = Descrição +relatorioPosicaoVendaBilheteIdosoController.lbSigla.label = Sigla +relatorioPosicaoVendaBilheteIdosoController.lbGrupoCategoria.label = Grupo de Categoria +relatorioPosicaoVendaBilheteIdosoController.TpRelatorio.value = Tipo de Relatório +relatorioPosicaoVendaBilheteIdosoController.tpTrecho.label = Trecho +relatorioPosicaoVendaBilheteIdosoController.tpPassageiro.label = Passageiro + # Pantalla Editar Classe editarClaseServicioController.window.title = Tipo de Classe editarClaseServicioController.btnApagar.tooltiptext = Eliminar diff --git a/web/gui/relatorios/filtroRelatorioPosicaoVendaBilheteIdoso.zul b/web/gui/relatorios/filtroRelatorioPosicaoVendaBilheteIdoso.zul new file mode 100644 index 000000000..9775e5f86 --- /dev/null +++ b/web/gui/relatorios/filtroRelatorioPosicaoVendaBilheteIdoso.zul @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +