From 6b3fcf3ef5c64b8fa81b6c251006088440f65d77 Mon Sep 17 00:00:00 2001 From: valdevir Date: Fri, 17 Dec 2021 17:17:01 +0000 Subject: [PATCH] fixes bug#23717 qua: dev:Valdir git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@110065 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../relatorios/impl/RelatorioCheckin.java | 22 +-- .../impl/RelatorioCheckinAberto.java | 160 +++++++++++++++++ .../RelatorioCheckinAberto_es.properties | 18 ++ .../RelatorioCheckinAberto_pt_BR.properties | 18 ++ .../RelatorioCheckin_es.properties | 2 +- .../RelatorioCheckin_pt_BR.properties | 8 +- .../templates/RelatorioCheckin.jasper | Bin 28818 -> 35002 bytes .../templates/RelatorioCheckin.jrxml | 149 +++++++++++----- .../templates/RelatorioCheckinAberto.jasper | Bin 0 -> 28313 bytes .../templates/RelatorioCheckinAberto.jrxml | 168 ++++++++++++++++++ .../RelatorioCheckinAbertoBean.java | 59 ++++++ .../RelatorioCheckinController.java | 14 +- ...CheckinEnacerramentoAbertoController.java} | 25 ++- web/WEB-INF/i3-label_es_MX.label | 2 + web/WEB-INF/i3-label_pt_BR.label | 5 +- web/gui/relatorios/filtroRelatorioCheckin.zul | 19 -- .../filtroRelatorioEncerramentoCheckin.zul | 21 ++- 17 files changed, 594 insertions(+), 96 deletions(-) create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioCheckinAberto.java create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioCheckinAberto_es.properties create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioCheckinAberto_pt_BR.properties create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioCheckinAberto.jasper create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioCheckinAberto.jrxml create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioCheckinAbertoBean.java rename src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/{RelatorioEncerramentoCheckinController.java => RelatorioCheckinEnacerramentoAbertoController.java} (80%) diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioCheckin.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioCheckin.java index 22846df3d..1c122c7b8 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioCheckin.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioCheckin.java @@ -34,9 +34,7 @@ public class RelatorioCheckin extends Relatorio { Date fecFinal = (Date) getParametros().get("DATA_FINAL"); fecInicio = DateUtil.inicioFecha(fecInicio); fecFinal = DateUtil.fimFecha(fecFinal); - Boolean isCheckinEncerrado = (Boolean) getParametros().get("IS_CHECKIN_ENCERRADO"); - Boolean isCheckinAberto = (Boolean) getParametros().get("IS_CHECKIN_ABERTO"); - + if (StringUtils.isNotBlank(idsBilheteiros)) { String []ls = idsBilheteiros.split(","); @@ -46,7 +44,7 @@ public class RelatorioCheckin extends Relatorio { } } - String sql = getSql(corridaId, origenId, idsBilheteiros, isCheckinEncerrado, isCheckinAberto); + String sql = getSql(corridaId, origenId, idsBilheteiros); PreparedStatement pstmt = getConexao().prepareStatement(sql); @@ -95,7 +93,7 @@ public class RelatorioCheckin extends Relatorio { this.setCollectionDataSource(new JRBeanCollectionDataSource(checkins)); } - private String getSql(Integer corridaId, Integer origenId, String idsBilheteiros, Boolean indCheckinEncerrado, Boolean indCheckinAberto) { + private String getSql(Integer corridaId, Integer origenId, String idsBilheteiros) { StringBuffer sql = new StringBuffer(); sql.append("select b.boleto_id, o.descparada, b.corrida_id, "); @@ -106,24 +104,14 @@ public class RelatorioCheckin extends Relatorio { sql.append("inner join boleto_checkin bc on b.boleto_id = bc.boletooriginal_id "); sql.append("inner join parada o on b.origen_id = o.parada_id "); sql.append("inner join usuario u on bc.usuario_id = u.usuario_id "); - //Se a corrida_id e feccorrida existe na tabela checkin_cerrado = checkin encerrado - if(indCheckinEncerrado) { - sql.append("inner join checkin_cerrado cc on (b.corrida_id = cc.corrida_id and b.feccorrida=cc.feccorrida )"); - }else { - //Se a corrida_id e feccorrida não existe na tabela checkin_cerrado = checkin aberto - if(indCheckinAberto) { - sql.append(" left join checkin_cerrado cc on (b.corrida_id = cc.corrida_id and b.feccorrida=cc.feccorrida ) "); - } - } + sql.append(" where b.activo = 1 "); sql.append("and bc.FECMODIF between ? and ? "); sql.append(corridaId == null ? "" : " and b.corrida_id = ? "); sql.append(origenId == null ? "" : " and b.origen_id = ? "); sql.append((lsInt == null || lsInt.size() == 0) ? "" : " and u.USUARIO_ID in ( "+ createIn(lsInt.size()) + ") "); - if(indCheckinAberto) { - sql.append(" and cc.corrida_id is null "); - } + sql.append(" order by bc.datacancelado desc"); return sql.toString(); diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioCheckinAberto.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioCheckinAberto.java new file mode 100644 index 000000000..4f67eab8c --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioCheckinAberto.java @@ -0,0 +1,160 @@ +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.RelatorioCheckinAbertoBean; +import com.rjconsultores.ventaboletos.web.utilerias.NamedParameterStatement; + +import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; + +public class RelatorioCheckinAberto extends Relatorio { + + public static final String DATA_INICIO_SERVICO = "DATA_INICIO_SERVICO"; + public static final String DATA_FIM_SERVICO = "DATA_FIM_SERVICO"; + public static final String DATA_INICIO_ENCERRAMENTO = "DATA_INICIO_ENCERRAMENTO"; + public static final String DATA_FIM_ENCERRAMENTO = "DATA_FIM_ENCERRAMENTO"; + private List lsDadosRelatorio; + + public RelatorioCheckinAberto(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 dataInicioServico = null; + if (parametros.containsKey(DATA_INICIO_SERVICO)) { + dataInicioServico = parametros.get(DATA_INICIO_SERVICO).toString() + " 00:00"; + } + + String dataFimServico = null; + if (parametros.containsKey(DATA_FIM_SERVICO)) { + dataFimServico = parametros.get(DATA_FIM_SERVICO).toString() + " 23:59"; + } + + String dataInicioEncerramento = null; + if (parametros.containsKey(DATA_INICIO_ENCERRAMENTO)) { + dataInicioEncerramento = parametros.get(DATA_INICIO_ENCERRAMENTO).toString() + " 00:00"; + } + + String dataFimEncerramento = null; + if (parametros.containsKey(DATA_FIM_ENCERRAMENTO)) { + dataFimEncerramento = parametros.get(DATA_FIM_ENCERRAMENTO).toString() + " 23:59"; + } + + Integer empresa_id = (Integer) parametros.get("empresa_id"); + Integer localidade_id = (Integer) parametros.get("localidade_id"); + + String sql = getSql(dataInicioServico, dataFimServico, dataInicioEncerramento, dataFimEncerramento, empresa_id, localidade_id); + + NamedParameterStatement stmt = new NamedParameterStatement(conexao, sql); + + if (dataInicioServico != null && dataFimServico != null) { + stmt.setString("dataInicioServico", dataInicioServico); + stmt.setString("dataFimServico", dataFimServico); + } + + if (dataInicioEncerramento != null && dataFimEncerramento != null) { + stmt.setString("dataInicioEncerramento", dataInicioEncerramento); + stmt.setString("dataFimEncerramento", dataFimEncerramento); + } + + if (empresa_id != null) { + stmt.setInt("empresa_id", empresa_id); + } + + if (localidade_id != null) { + stmt.setInt("localidade_id", localidade_id); + } + + ResultSet rs = stmt.executeQuery(); + + lsDadosRelatorio = new ArrayList(); + + SimpleDateFormat formatadorData = new SimpleDateFormat("dd/MM/yyyy"); + SimpleDateFormat formatadorDataHora = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); + + while (rs.next()) { + RelatorioCheckinAbertoBean bean = new RelatorioCheckinAbertoBean(); + bean.setServico(rs.getInt("servico")); + bean.setDataServico(formatadorData.format(rs.getDate("data_servico"))); + bean.setLocalidade(rs.getString("localidade")); + //bean.setUsuario(rs.getString("usuario")); + + lsDadosRelatorio.add(bean); + } + + if (lsDadosRelatorio.size() > 0) { + setLsDadosRelatorio(lsDadosRelatorio); + } + } + }); + } + + @Override + protected void processaParametros() throws Exception { + if (parametros.containsKey(DATA_INICIO_SERVICO) && parametros.containsKey(DATA_FIM_SERVICO)) { + this.parametros.put("PERIODO_SERVICO", parametros.get(DATA_INICIO_SERVICO) + " à " + parametros.get(DATA_FIM_SERVICO)); + } + + if (parametros.containsKey(DATA_INICIO_ENCERRAMENTO) && parametros.containsKey(DATA_FIM_ENCERRAMENTO)) { + this.parametros.put("PERIODO_ENCERRAMENTO", parametros.get(DATA_INICIO_ENCERRAMENTO) + " à " + parametros.get(DATA_FIM_ENCERRAMENTO)); + } + } + + private void setLsDadosRelatorio(List lsDadosRelatorio) { + this.setCollectionDataSource(new JRBeanCollectionDataSource(lsDadosRelatorio)); + this.lsDadosRelatorio = lsDadosRelatorio; + } + + private String getSql(String dataInicioServico, String dataFimServico, String dataInicioEncerramento, String dataFimEncerramento, Integer empresa_id, Integer localidade_id) { + StringBuilder sb = new StringBuilder(); + sb.append("select c.corrida_id as servico, "); + sb.append("c.feccorrida as data_servico, "); + sb.append("p.cveparada || ' - ' || p.descparada as localidade, "); + sb.append("cc.fechorcerrado as data_encerramento "); + sb.append("from corrida c "); + sb.append("join parada p on p.parada_id = c.origen_id "); + sb.append("left join checkin_cerrado cc on (c.corrida_id = cc.corrida_id and c.feccorrida=cc.feccorrida ) "); + + + if (empresa_id!=null) { + sb.append("join marca m on m.marca_id = c.marca_id "); + } + + sb.append("where c.activo = 1 "); + + sb.append(" and cc.corrida_id is null "); + + if (dataInicioServico != null && dataFimServico != null) { + sb.append("and c.feccorrida between to_date(:dataInicioServico, 'dd/mm/yyyy hh24:mi') and to_date(:dataFimServico, 'dd/mm/yyyy hh24:mi') "); + } + + if (dataInicioEncerramento != null && dataFimEncerramento != null) { + sb.append("and c.feccorrida between to_date(:dataInicioEncerramento, 'dd/mm/yyyy hh24:mi') and to_date(:dataFimEncerramento, 'dd/mm/yyyy hh24:mi') "); + } + + if (empresa_id != null) { + sb.append("and m.empresa_id = :empresa_id "); + } + + if (localidade_id != null) { + sb.append("and p.parada_id = :localidade_id "); + } + + sb.append("order by 2, 1, 4, 3"); + + return sb.toString(); + } +} \ No newline at end of file diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioCheckinAberto_es.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioCheckinAberto_es.properties new file mode 100644 index 000000000..7073dc9ff --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioCheckinAberto_es.properties @@ -0,0 +1,18 @@ +#geral +msg.noData=Não foi possivel obter dados com os parâmetros informados. +msg.a=à + +#Labels header +header.data.hora=Data/Hora\: +header.pagina=Página\: +header.periodo.servico=Período Serviço\: +header.periodo.encerramento=Período Encerramento\: +header.empresa=Empresa\: + +#Labels detail +detail.servico=Serviço +detail.data.servico=Data Serviço +detail.localidade=Localidade +detail.data.encerramento=Data Encerramento +detail.usuario.operacao=Usuário da Operação +detail.imei=Dispositivo \ No newline at end of file diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioCheckinAberto_pt_BR.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioCheckinAberto_pt_BR.properties new file mode 100644 index 000000000..f9703c45a --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioCheckinAberto_pt_BR.properties @@ -0,0 +1,18 @@ +#geral +msg.noData=Não foi possivel obter dados com os parâmetros informados. +msg.a=à + +#Labels header +header.data.hora=Data/Hora\: +header.pagina=Página\: +header.periodo.servico=Período Serviço\: +header.periodo.encerramento=Período Encerramento\: +header.empresa=Empresa\: + +#Labels detail +detail.servico=Serviço +detail.data.servico=Data Serviço +detail.localidade=Origem do Serviço +detail.data.encerramento=Data Encerramento +detail.usuario.operacao=Usuário da Operação +detail.imei=Dispositivo \ No newline at end of file diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioCheckin_es.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioCheckin_es.properties index ff33acdc6..5bbfc7511 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioCheckin_es.properties +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioCheckin_es.properties @@ -13,7 +13,7 @@ cabecalho.filtros=Filtros: #Labels datail datail.voucher=Nº Bilhete / Voucher -datail.origen=Origem +datail.origen=Origem do Serviço datail.servicio=Serviço datail.data.servicio=Data do Serviço datail.data.checkin=Data Checkin diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioCheckin_pt_BR.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioCheckin_pt_BR.properties index ff33acdc6..2dc8cdbd8 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioCheckin_pt_BR.properties +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioCheckin_pt_BR.properties @@ -10,10 +10,16 @@ cabecalho.impressorPor=Impressor por: cabecalho.pagina=Página cabecalho.de=de cabecalho.filtros=Filtros: +#Labels header +cabecalho.pagina=Página\: +cabecalho.empresa=Empresa\: +cabecalho.bilheteiro = Bilheteiro(s)\: +cabecalho.usuario = Usuário\: + #Labels datail datail.voucher=Nº Bilhete / Voucher -datail.origen=Origem +datail.origen=Origem do Serviço datail.servicio=Serviço datail.data.servicio=Data do Serviço datail.data.checkin=Data Checkin diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioCheckin.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioCheckin.jasper index 71fdfc0f53ea54f74b8cc31a932d1044e2d5314b..9221236bb03512896db91fb45d7dfbbce43ac178 100644 GIT binary patch literal 35002 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 - + @@ -9,6 +9,9 @@ + + + @@ -26,18 +29,74 @@ - <band height="21" splitType="Stretch"> - <textField pattern="" isBlankWhenNull="false"> - <reportElement uuid="5ee43799-932b-4ce1-8056-df380a9050a8" mode="Transparent" x="0" y="0" width="338" height="20" forecolor="#000000" backcolor="#FFFFFF"/> - <textElement textAlignment="Left" verticalAlignment="Top" rotation="None" markup="none"> - <font fontName="SansSerif" size="12" isBold="true" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfEncoding="Cp1252" isPdfEmbedded="false"/> - <paragraph lineSpacing="Single"/> + <band height="83" splitType="Stretch"> + <line> + <reportElement x="0" y="80" width="619" height="1" uuid="b28df970-c219-4853-afeb-6821e0a44f04"/> + </line> + <textField> + <reportElement mode="Opaque" x="0" y="0" width="476" height="30" backcolor="#D7D7D7" uuid="50c553a9-7292-44df-8b24-24eb14e98841"/> + <textElement markup="styled"> + <font size="16" isBold="true"/> </textElement> <textFieldExpression><![CDATA[$P{NOME_RELATORIO}]]></textFieldExpression> </textField> - <line> - <reportElement uuid="b28df970-c219-4853-afeb-6821e0a44f04" x="0" y="20" width="619" height="1"/> - </line> + <textField> + <reportElement x="0" y="31" width="130" height="16" uuid="3cbad5ad-ea6f-4718-b7e5-a98dc6be0188"/> + <textElement> + <font isBold="true"/> + </textElement> + <textFieldExpression><![CDATA[$R{cabecalho.periodo}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="130" y="31" width="505" height="16" uuid="6c12f1b5-cae1-4ea9-b674-703d0f3d2bdc"/> + <textFieldExpression><![CDATA[($P{DATA_INICIAL} != null ? new java.text.SimpleDateFormat("dd/MM/yyyy").format($P{DATA_INICIAL}) : "") + +" à " + +($P{DATA_FINAL} != null ? new java.text.SimpleDateFormat("dd/MM/yyyy").format($P{DATA_FINAL}) : "")]]></textFieldExpression> + </textField> + <textField> + <reportElement x="131" y="49" width="504" height="16" isRemoveLineWhenBlank="true" uuid="64d65c79-be80-4596-b84e-e2c3c3ddaa8a"/> + <textFieldExpression><![CDATA[$P{nombUsuario}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="0" y="49" width="130" height="16" isRemoveLineWhenBlank="true" uuid="cdd0af8e-575e-4afa-b68f-6d0812032d4b"/> + <textElement> + <font isBold="true"/> + </textElement> + <textFieldExpression><![CDATA[$R{cabecalho.usuario}]]></textFieldExpression> + </textField> + <textField> + <reportElement mode="Opaque" x="577" y="15" width="29" height="15" backcolor="#D7D7D7" uuid="17fabb43-59cc-4375-86a8-793ff7a67f50"/> + <textElement textAlignment="Right"/> + <textFieldExpression><![CDATA[$V{PAGE_NUMBER}+" de"]]></textFieldExpression> + </textField> + <textField> + <reportElement mode="Opaque" x="476" y="15" width="62" height="15" backcolor="#D7D7D7" uuid="e0a35762-56d1-4da2-a945-8ae4d5348bb7"/> + <textElement> + <font isBold="true"/> + </textElement> + <textFieldExpression><![CDATA[$R{cabecalho.pagina}]]></textFieldExpression> + </textField> + <textField pattern="dd/MM/yyyy HH:mm"> + <reportElement mode="Opaque" x="538" y="0" width="97" height="15" backcolor="#D7D7D7" uuid="54f55cc3-21cb-482f-a58b-fca885e48517"/> + <textElement textAlignment="Left"/> + <textFieldExpression><![CDATA[new java.util.Date()]]></textFieldExpression> + </textField> + <textField evaluationTime="Report"> + <reportElement mode="Opaque" x="606" y="15" width="29" height="15" backcolor="#D7D7D7" uuid="d0201aca-580e-4359-9503-c579a43dcccd"/> + <textElement textAlignment="Left"/> + <textFieldExpression><![CDATA[" " + $V{PAGE_NUMBER}]]></textFieldExpression> + </textField> + <textField> + <reportElement mode="Opaque" x="476" y="0" width="62" height="15" backcolor="#D7D7D7" uuid="1ac071ee-3dcd-427a-909f-9d39e40c6708"/> + <textElement> + <font isBold="true"/> + </textElement> + <textFieldExpression><![CDATA[$R{cabecalho.dataHora}]]></textFieldExpression> + </textField> + <textField isBlankWhenNull="true"> + <reportElement mode="Opaque" x="538" y="15" width="39" height="15" backcolor="#D7D7D7" uuid="fb1a5b0c-1e7e-443e-b0ff-db26c4ed289d"/> + <textElement textAlignment="Right"/> + </textField> </band> @@ -45,125 +104,125 @@ - - + + - - + + - - + + - - - - - - - - + - + - + - + - + + + + + + + + - - + + - + - - + + - - - - - - - - + - + - + - + + + + + + + + @@ -178,7 +237,7 @@ - + diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioCheckinAberto.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioCheckinAberto.jasper new file mode 100644 index 0000000000000000000000000000000000000000..a64c25ecd27ad6be7ced2eff2a4ef06900e8d7ec GIT binary patch literal 28313 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 W#AhIbUKg>?Y&T#VxKE#~=Knu{WBok< literal 0 HcmV?d00001 diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioCheckinAberto.jrxml b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioCheckinAberto.jrxml new file mode 100644 index 000000000..72802b783 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioCheckinAberto.jrxml @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + <band splitType="Stretch"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioCheckinAbertoBean.java b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioCheckinAbertoBean.java new file mode 100644 index 000000000..50cf66c03 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioCheckinAbertoBean.java @@ -0,0 +1,59 @@ +package com.rjconsultores.ventaboletos.relatorios.utilitarios; + +public class RelatorioCheckinAbertoBean { + + private Integer servico; + private String dataServico; + private String localidade; + private String dataEncerramento; + private String usuario; + private String imei; + + public Integer getServico() { + return servico; + } + + public void setServico(Integer servico) { + this.servico = servico; + } + + public String getDataServico() { + return dataServico; + } + + public void setDataServico(String dataServico) { + this.dataServico = dataServico; + } + + public String getLocalidade() { + return localidade; + } + + public void setLocalidade(String localidade) { + this.localidade = localidade; + } + + public String getDataEncerramento() { + return dataEncerramento; + } + + public void setDataEncerramento(String dataEncerramento) { + this.dataEncerramento = dataEncerramento; + } + + public String getUsuario() { + return usuario; + } + + public void setUsuario(String usuario) { + this.usuario = usuario; + } + + public String getImei() { + return imei; + } + + public void setImei(String imei) { + this.imei = imei; + } +} \ No newline at end of file diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioCheckinController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioCheckinController.java index 6cce9952a..1d26ea234 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioCheckinController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioCheckinController.java @@ -16,7 +16,6 @@ import org.zkoss.zhtml.Messagebox; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.event.Event; import org.zkoss.zul.Bandbox; -import org.zkoss.zul.Checkbox; import org.zkoss.zul.Comboitem; import org.zkoss.zul.ComboitemRenderer; import org.zkoss.zul.Datebox; @@ -28,6 +27,7 @@ import com.rjconsultores.ventaboletos.entidad.Parada; import com.rjconsultores.ventaboletos.entidad.Usuario; import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioCheckin; import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; +import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxParada; import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxParadaCve; import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer; @@ -55,8 +55,7 @@ public class RelatorioCheckinController extends MyGenericForwardComposer { private MyListbox usuarioSelList; private MyComboboxParada cmbParadaOrigem; private MyComboboxParadaCve cmbParadaOrigemCve; - private Checkbox chcEncerrado; - private Checkbox chcAberto; + @Autowired @@ -79,7 +78,7 @@ public class RelatorioCheckinController extends MyGenericForwardComposer { usuarioList.setItemRenderer(new RenderRelatorioCheckinUsuario()); usuarioSelList.setItemRenderer(new RenderRelatorioCheckinUsuariosSelecionados()); - + } public void onClick$btnPesquisa(Event ev) { @@ -136,9 +135,10 @@ public class RelatorioCheckinController extends MyGenericForwardComposer { parametros.put("DATA_FINAL", datFinal.getValue()); parametros.put("ORIGEN_ID", origenId); parametros.put("ORIGEN", origen); - parametros.put("IS_CHECKIN_ENCERRADO", chcEncerrado.isChecked()); - parametros.put("IS_CHECKIN_ABERTO", chcAberto.isChecked()); - parametros.put("NOME_RELATORIO", Labels.getLabel("indexController.mniRelatorioCheckin.label")); + parametros.put("nombUsuario", UsuarioLogado.getUsuarioLogado().getNombusuario().toString()); + String nomeRelatorio = Labels.getLabel("indexController.mniRelatorioCheckin.label"); + + parametros.put("NOME_RELATORIO", nomeRelatorio); String usuariosIds = ""; for (int i = 0; i < lsUsuariosSelecionados.size(); i++) { diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioEncerramentoCheckinController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioCheckinEnacerramentoAbertoController.java similarity index 80% rename from src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioEncerramentoCheckinController.java rename to src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioCheckinEnacerramentoAbertoController.java index ad5bf9ca5..e1b7f066a 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioEncerramentoCheckinController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioCheckinEnacerramentoAbertoController.java @@ -14,10 +14,12 @@ import org.springframework.stereotype.Controller; import org.zkoss.util.resource.Labels; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.event.Event; +import org.zkoss.zul.Checkbox; import org.zkoss.zul.Datebox; import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.entidad.Parada; +import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioCheckinAberto; import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioEncerramentoCheckin; import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; import com.rjconsultores.ventaboletos.service.EmpresaService; @@ -31,7 +33,7 @@ import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer; @Controller("relatorioEncerramentoCheckinController") @Scope("prototype") @SuppressWarnings("serial") -public class RelatorioEncerramentoCheckinController extends MyGenericForwardComposer { +public class RelatorioCheckinEnacerramentoAbertoController extends MyGenericForwardComposer { @Autowired private DataSource dataSourceRead; @@ -46,11 +48,14 @@ public class RelatorioEncerramentoCheckinController extends MyGenericForwardComp private MyComboboxEstandar cmbEmpresa; private MyComboboxParada cmbLocalidade; private List lsEmpresas; + private Checkbox chcEncerrado; + private Checkbox chcAberto; @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); lsEmpresas = empresaService.obtenerTodos(); + chcEncerrado.setChecked(Boolean.TRUE); } public void onClick$btnExecutarRelatorio(Event ev) throws Exception { @@ -59,7 +64,6 @@ public class RelatorioEncerramentoCheckinController extends MyGenericForwardComp private void executarRelatorio() throws Exception { Map parametros = new HashMap(); - parametros.put("TITULO", Labels.getLabel("relatorioEncerramentoCheckinController.window.title")); // Datas putParametrosDate(parametros, RelatorioEncerramentoCheckin.DATA_INICIO_SERVICO, this.dataInicioServico.getValue()); @@ -97,12 +101,25 @@ public class RelatorioEncerramentoCheckinController extends MyGenericForwardComp parametros.put("localidade_id", ((Parada) cmbLocalidade.getSelectedItem().getValue()).getParadaId()); } - Relatorio relatorio = new RelatorioEncerramentoCheckin(parametros, dataSourceRead.getConnection()); + Relatorio relatorio = null; + if(chcEncerrado.isChecked()) { + parametros.put("TITULO", Labels.getLabel("relatorioEncerramentoCheckinController.window.title")); + relatorio = new RelatorioEncerramentoCheckin(parametros, dataSourceRead.getConnection()); + }else { + parametros.put("TITULO", Labels.getLabel("relatorioCheckinAbertoController.window.title")); + relatorio = new RelatorioCheckinAberto(parametros, dataSourceRead.getConnection()); + } + Map args = new HashMap(); args.put("relatorio", relatorio); - openWindow("/component/reportView.zul", Labels.getLabel("relatorioEncerramentoCheckinController.window.title"), args, MODAL); + if(chcEncerrado.isChecked()) { + openWindow("/component/reportView.zul", Labels.getLabel("relatorioEncerramentoCheckinController.window.title"), args, MODAL); + }else { + openWindow("/component/reportView.zul", Labels.getLabel("relatorioCheckinAbertoController.window.title"), args, MODAL); + } + } private void putParametrosDate(Map parametros, String nomeParametro, Date data) { diff --git a/web/WEB-INF/i3-label_es_MX.label b/web/WEB-INF/i3-label_es_MX.label index be9a9c359..c7fbe79e0 100644 --- a/web/WEB-INF/i3-label_es_MX.label +++ b/web/WEB-INF/i3-label_es_MX.label @@ -328,6 +328,8 @@ indexController.mniRelatorioVendasBilheteiroSintetico.label = Ventas por agentes indexController.mniRelatorioAgenciasNaoImportadas.label = Reporte puntos venta no importados indexController.mniRelatorioIntegracaoAntiFraude.label = Relatório de Integração com Antifraude indexController.mniRelatorioCheckin.label = Checkin's +indexController.mniRelatorioCheckinAberto.label = Relatório Checkin's Abertos +indexController.mniRelatorioCheckinEncerrado.label = Relatório Checkin's Encerrados indexController.mniFechamentoParamgeral.label = Cierre cuenta indexController.mniFechamentoParamptovta.label = Cierre cuenta contábil punto de venta indexController.mniRelatorioCorridas.label = Reporte de corridas diff --git a/web/WEB-INF/i3-label_pt_BR.label b/web/WEB-INF/i3-label_pt_BR.label index 2f2caba9b..a8713f8f3 100644 --- a/web/WEB-INF/i3-label_pt_BR.label +++ b/web/WEB-INF/i3-label_pt_BR.label @@ -347,7 +347,9 @@ indexController.mniRelatorioVendasBilheteiroSintetico.label = Vendas por Bilhete indexController.mniRelatorioCancelamentoAutomaticoECF.label = Relatório de Cancelamento Automatico ECF indexController.mniRelatorioAgenciasNaoImportadas.label = Relatório de Agências não Importadas indexController.mniRelatorioIntegracaoAntiFraude.label = Relatório de Integração com Antifraude -indexController.mniRelatorioCheckin.label = Checkin's +indexController.mniRelatorioCheckin.label = Relatório Checkin's +indexController.mniRelatorioCheckinAberto.label = Relatório Checkin's Abertos +indexController.mniRelatorioCheckinEncerrado.label = Relatório Checkin's Encerrados indexController.mniFechamentoParamgeral.label = Configuração de Boleto indexController.mniFechamentoParamptovta.label = Fechamento Conta Corrente Agência indexController.mniRelatorioCorridas.label = Relatório de Serviços @@ -9794,6 +9796,7 @@ relatorioMovimentacaoBilheteController.lbAdicionarLinha.value = Adicionar Linha # Relatório Encerramento do Checkin relatorioEncerramentoCheckinController.window.title = Relatório Encerramento do Checkin +relatorioCheckinAbertoController.window.title = Relatório de Checkin em Aberto (Não Encerrados) relatorioEncerramentoCheckinController.data.servico.obrigatoria = É necessário preencher a data inicial e final do serviço relatorioEncerramentoCheckinController.data.encerramento.obrigatoria = É necessário preencher a data inicial e final do encerramento relatorioEncerramentoCheckinController.data.obrigatoria = Data do Serviço ou Data do Encerramento são obrigatórias diff --git a/web/gui/relatorios/filtroRelatorioCheckin.zul b/web/gui/relatorios/filtroRelatorioCheckin.zul index 9592c35b7..6b2285f89 100644 --- a/web/gui/relatorios/filtroRelatorioCheckin.zul +++ b/web/gui/relatorios/filtroRelatorioCheckin.zul @@ -55,25 +55,6 @@ - - diff --git a/web/gui/relatorios/filtroRelatorioEncerramentoCheckin.zul b/web/gui/relatorios/filtroRelatorioEncerramentoCheckin.zul index 9b9887fd7..51668c8b2 100644 --- a/web/gui/relatorios/filtroRelatorioEncerramentoCheckin.zul +++ b/web/gui/relatorios/filtroRelatorioEncerramentoCheckin.zul @@ -8,7 +8,7 @@ + height="265px" width="560px" border="normal"> @@ -70,6 +70,25 @@ mold="rounded" buttonVisible="true" use="com.rjconsultores.ventaboletos.web.utilerias.MyComboboxParada" /> + +