From c8d6aac1f7d5488311c29a9a5d6d0bea5f82dd45 Mon Sep 17 00:00:00 2001 From: Fabio Date: Thu, 1 Feb 2024 08:22:44 -0300 Subject: [PATCH] =?UTF-8?q?Corre=C3=A7=C3=A3o=20no=20relatorio=20de=20reca?= =?UTF-8?q?rga=20fix=20bug#AL-3512?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 +- .../impl/RelatorioRecargaRvhub.java | 281 +++------------- .../RelatorioRecargaRvhub_pt_BR.properties | 32 ++ .../templates/RelatorioRecargaRvhub.jasper | Bin 0 -> 40159 bytes .../templates/RelatorioRecargaRvhub.jrxml | 299 ++++++++++++++++++ .../RelatorioRecargaRvhubController.java | 32 +- 6 files changed, 389 insertions(+), 259 deletions(-) create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioRecargaRvhub_pt_BR.properties create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioRecargaRvhub.jasper create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioRecargaRvhub.jrxml diff --git a/pom.xml b/pom.xml index 9d3448dfd..1304513e5 100644 --- a/pom.xml +++ b/pom.xml @@ -4,11 +4,11 @@ 4.0.0 br.com.rjconsultores ventaboletosadm - 1.47.0 + 1.47.1 war - 1.36.0 + 1.36.1 1.28.0 UTF-8 UTF-8 diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioRecargaRvhub.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioRecargaRvhub.java index 273e26418..887909b1a 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioRecargaRvhub.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioRecargaRvhub.java @@ -10,8 +10,8 @@ import java.util.Date; import java.util.HashMap; import java.util.Map; +import com.rjconsultores.ventaboletos.enums.StatusRecargaEnum; import com.rjconsultores.ventaboletos.relatorios.utilitarios.ArrayDataSource; -import com.rjconsultores.ventaboletos.relatorios.utilitarios.IndStatusBoleto; import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; import com.rjconsultores.ventaboletos.utilerias.DateUtil; import com.rjconsultores.ventaboletos.web.utilerias.NamedParameterStatement; @@ -31,251 +31,60 @@ public class RelatorioRecargaRvhub extends Relatorio { StringBuilder sql = new StringBuilder(); - if (parametros.get("IDAVOLTA").equals("1")) { - sql.append(" select "); - sql.append(" u.CVEUSUARIO CVEBILHETEIRO, "); - sql.append(" uc.CVEUSUARIO CVEBILHETEIRO_CANCELADO, "); - sql.append(" B.indstatusboleto IMPRESSAO_POSTERIOR, "); - sql.append(" B.NUMFOLIOSISTEMA NUMERO_PASSAGEM, "); - sql.append(" B.NUMSERIEPREIMPRESA SERIE, "); - sql.append(" B.NUMSERIEPREIMPRESA SUB_SERIE, "); - sql.append(" B.NUMFOLIOPREIMPRESO PRE_IMPRESSO, "); - sql.append(" p_origen.PARADA_ID COD_ORIGEM, "); - sql.append(" p_origen.DESCPARADA ORIGEM, "); - sql.append(" p_destino.PARADA_ID COD_DESTINO, "); - sql.append(" p_destino.DESCPARADA DESTINO, "); - sql.append(" pv.NUMPUNTOVENTA COD_AGENCIA, "); - sql.append(" pv.NOMBPUNTOVENTA NOME_AGENCIA, "); - sql.append(" CASE WHEN B.indstatusboleto = 'E' THEN utilizado.fechorventa_h ELSE B.fechorventa_h END DATA_VENDA, "); - sql.append(" CASE WHEN b.fechorventa is null THEN utilizado.fechorventa ELSE b.fechorventa_h END DATA_EMISSAO, "); - sql.append(" B.fechorviaje DATA_VIAGEM, "); - sql.append(" B.CORRIDA_ID SERVICO, "); - sql.append(" to_char(B.fechorviaje, 'hh24:mi:ss') HORA, "); - sql.append(" B.NUMASIENTO NUMASIENTO, "); - sql.append(" ct.DESCCATEGORIA CATEGORIA, "); - sql.append(" R.INDSENTIDOIDA SENTIDO, "); - sql.append(" R.NUMRUTA COD_LINHA, "); - sql.append(" R.DESCRUTA DESC_LINHA, "); - sql.append(" CASE WHEN b.MOTIVOCANCELACION_ID IS NULL THEN 'V' ELSE 'C' END STATUS_PASSAGEM, "); - sql.append(" B.PRECIOPAGADO TARIFA, "); - sql.append(" B.IMPORTETAXAEMBARQUE TX_EMBARQUE, "); - sql.append(" B.IMPORTEPEDAGIO PEDAGIO, "); - sql.append(" B.IMPORTESEGURO SEGURO, "); - sql.append(" u.NOMBUSUARIO BILHETEIRO, "); - sql.append(" uc.NOMBUSUARIO BILHETEIRO_CANCELAMENTO, "); - sql.append(" B.NOMBPASAJERO AS PASSAGEIRO, "); - sql.append(" B.DESCNUMDOC AS DOC, "); - sql.append(" COALESCE(b.NUMOPERACION, bo.NUMOPERACION) AS LOCALIZADOR "); - - - sql.append(" FROM caja B "); - sql.append(" LEFT JOIN boleto bo ON (bo.boleto_id = b.transacaooriginal_id AND b.indstatusboleto = 'C') "); - sql.append(" JOIN RUTA R ON R.RUTA_ID = B.RUTA_ID "); - sql.append(" JOIN PUNTO_VENTA pv on B.PUNTOVENTA_ID = pv.PUNTOVENTA_ID "); - sql.append(" JOIN USUARIO u on u.USUARIO_ID = B.USUARIO_ID "); - sql.append(" LEFT JOIN USUARIO uc ON uc.USUARIO_ID = bo.USUARIO_ID "); - sql.append(" JOIN PARADA p_origen on p_origen.PARADA_ID = B.ORIGEN_ID "); - sql.append(" JOIN PARADA p_destino on p_destino.PARADA_ID = B.DESTINO_ID "); - sql.append(" JOIN CATEGORIA ct on ct.CATEGORIA_ID = B.CATEGORIA_ID "); - sql.append(" JOIN CLASE_SERVICIO cs on cs.CLASESERVICIO_ID = B.CLASESERVICIO_ID "); - sql.append(" JOIN MARCA m on m.marca_id = b.marca_id "); - sql.append(" left join ciudad co ON co.ciudad_id = p_origen.ciudad_id "); - sql.append(" left join estado est ON est.estado_id = co.estado_id "); - sql.append(" LEFT JOIN boleto utilizado ON (utilizado.boleto_id = b.transacaooriginal_id AND b.INDSTATUSBOLETO = 'E') "); - - sql.append(" WHERE "); - sql.append(" (b.indreimpresion = 0 OR b.INDSTATUSBOLETO = 'E') "); - sql.append(" and m.EMPRESA_ID = :EMPRESA_ID "); - if (parametros.get("DATA_INICIAL") != null && parametros.get("DATA_FINAL") != null) { - if (parametros.get("TIPO_DATA") != null) { - if ((parametros.get("TIPO_DATA").toString().contains("DATA_VENDA"))) { - sql.append(" and b.FECHORVENTA_H >= :DATA_INICIAL "); - sql.append(" and b.FECHORVENTA_H <= :DATA_FINAL "); - } else { - sql.append(" and utilizado.FECHORVENTA >= :DATA_INICIAL "); - sql.append(" and utilizado.FECHORVENTA <= :DATA_FINAL "); - } - } - } - - if (parametros.get("NUMPUNTOVENTA") != null && !parametros.get("NUMPUNTOVENTA").equals("-1")) { - sql.append(" and pv.PUNTOVENTA_ID IN (" + parametros.get("NUMPUNTOVENTA").toString() + ")"); - } - - if (parametros.get("MOEDA_ID") != null) { - sql.append(" and NVL(B.MONEDA_ID, 1) = "+parametros.get("MOEDA_ID") ); - } - - if (parametros.get("ESTADO_ID") != null && !parametros.get("ESTADO_ID").equals("-1")) { - sql.append(" and est.estado_id = " + parametros.get("ESTADO_ID").toString() + ""); - } - - sql.append(" AND b.INDVIAJEREDONDO = 1 "); - } - + sql.append(" SELECT "); + sql.append(" rc.created_at as dataVenda, "); + sql.append(" pv.nombpuntoventa, "); + sql.append(" rc.area_code as ddd, "); + sql.append(" rc.cell_phone_number as telefone, "); + sql.append(" ee.impingreso as valor, "); + sql.append(" rc.status, "); + sql.append(" tee.desctipoevento as descTipoEvento, "); + sql.append(" rc.rvhub_id as rvhubId, "); + sql.append(" u.cveusuario as usuario "); + sql.append(" FROM recarga_celular rc "); + sql.append(" left join evento_extra ee on ee.eventoextra_id = rc.eventoextra_id "); + sql.append(" left join punto_venta pv on ee.puntoventa_id = pv.puntoventa_id "); + sql.append(" left join tipo_evento_extra tee on tee.tipoeventoextra_id = ee.tipoeventoextra_id "); + sql.append(" left join usuario u on rc.usuario_id = u.usuario_id "); + sql.append(" where created_at >= :datInicial "); + sql.append(" and created_at <= :datFinal "); + sql.append(" and ee.empresa_id = :empresa_id "); - if (parametros.get("STATUS").toString().contains("C")||parametros.get("STATUS").toString().contains("V")) { - if (parametros.get("IDAVOLTA").equals("1")) { - sql.append(" UNION ALL "); - } - sql.append(" select "); - sql.append(" u.CVEUSUARIO CVEBILHETEIRO, "); - sql.append(" uc.CVEUSUARIO CVEBILHETEIRO_CANCELADO, "); - sql.append(" B.indstatusboleto IMPRESSAO_POSTERIOR, "); - sql.append(" B.NUMFOLIOSISTEMA NUMERO_PASSAGEM, "); - sql.append(" B.NUMSERIEPREIMPRESA SERIE, "); - sql.append(" B.NUMSERIEPREIMPRESA SUB_SERIE, "); - sql.append(" B.NUMFOLIOPREIMPRESO PRE_IMPRESSO, "); - sql.append(" p_origen.PARADA_ID COD_ORIGEM, "); - sql.append(" p_origen.DESCPARADA ORIGEM, "); - sql.append(" p_destino.PARADA_ID COD_DESTINO, "); - sql.append(" p_destino.DESCPARADA DESTINO, "); - sql.append(" pv.NUMPUNTOVENTA COD_AGENCIA, "); - sql.append(" pv.NOMBPUNTOVENTA NOME_AGENCIA, "); - sql.append(" CASE WHEN B.indstatusboleto = 'E' THEN utilizado.fechorventa_h ELSE B.fechorventa_h END DATA_VENDA, "); - sql.append(" CASE WHEN b.fechorventa is null THEN utilizado.fechorventa ELSE b.fechorventa_h END DATA_EMISSAO, "); - sql.append(" B.fechorviaje DATA_VIAGEM, "); - sql.append(" B.CORRIDA_ID SERVICO, "); - sql.append(" to_char(B.fechorviaje, 'hh24:mi:ss') HORA, "); - sql.append(" B.NUMASIENTO NUMASIENTO, "); - sql.append(" ct.DESCCATEGORIA CATEGORIA, "); - sql.append(" R.INDSENTIDOIDA SENTIDO, "); - sql.append(" R.NUMRUTA COD_LINHA, "); - sql.append(" R.DESCRUTA DESC_LINHA, "); - sql.append(" CASE WHEN b.MOTIVOCANCELACION_ID IS NULL THEN 'V' ELSE 'C' END STATUS_PASSAGEM, "); - sql.append(" B.PRECIOPAGADO TARIFA, "); - sql.append(" B.IMPORTETAXAEMBARQUE TX_EMBARQUE, "); - sql.append(" B.IMPORTEPEDAGIO PEDAGIO, "); - sql.append(" B.IMPORTESEGURO SEGURO, "); - sql.append(" u.NOMBUSUARIO BILHETEIRO, "); - sql.append(" uc.NOMBUSUARIO BILHETEIRO_CANCELAMENTO, "); - sql.append(" B.NOMBPASAJERO AS PASSAGEIRO, "); - sql.append(" B.DESCNUMDOC AS DOC, "); - sql.append(" COALESCE(b.NUMOPERACION, bo.NUMOPERACION) AS LOCALIZADOR "); - - sql.append(" FROM caja B "); - sql.append(" LEFT JOIN boleto bo ON (bo.boleto_id = b.transacaooriginal_id AND b.indstatusboleto = 'C') "); - sql.append(" JOIN RUTA R ON R.RUTA_ID = B.RUTA_ID "); - sql.append(" JOIN PUNTO_VENTA pv on B.PUNTOVENTA_ID = pv.PUNTOVENTA_ID "); - sql.append(" JOIN USUARIO u on u.USUARIO_ID = B.USUARIO_ID "); - sql.append(" LEFT JOIN USUARIO uc ON uc.USUARIO_ID = bo.USUARIO_ID "); - sql.append(" JOIN PARADA p_origen on p_origen.PARADA_ID = B.ORIGEN_ID "); - sql.append(" JOIN PARADA p_destino on p_destino.PARADA_ID = B.DESTINO_ID "); - sql.append(" JOIN CATEGORIA ct on ct.CATEGORIA_ID = B.CATEGORIA_ID "); - sql.append(" JOIN CLASE_SERVICIO cs on cs.CLASESERVICIO_ID = B.CLASESERVICIO_ID "); - sql.append(" JOIN MARCA m on m.marca_id = b.marca_id "); - sql.append(" left join ciudad co ON co.ciudad_id = p_origen.ciudad_id "); - sql.append(" left join estado est ON est.estado_id = co.estado_id "); - sql.append(" LEFT JOIN boleto utilizado ON (utilizado.boleto_id = b.transacaooriginal_id AND b.INDSTATUSBOLETO = 'E') "); - - sql.append(" WHERE "); - sql.append(" (b.indreimpresion = 0 OR b.INDSTATUSBOLETO = 'E') "); - sql.append(" and m.EMPRESA_ID = :EMPRESA_ID "); - if (parametros.get("DATA_INICIAL") != null && parametros.get("DATA_FINAL") != null) { - if (parametros.get("TIPO_DATA") != null) { - if ((parametros.get("TIPO_DATA").toString().contains("DATA_VENDA"))) { - sql.append(" and b.FECHORVENTA_H >= :DATA_INICIAL "); - sql.append(" and b.FECHORVENTA_H <= :DATA_FINAL "); - } else { - sql.append(" and utilizado.FECHORVENTA >= :DATA_INICIAL "); - sql.append(" and utilizado.FECHORVENTA <= :DATA_FINAL "); - } - } - } - - if (parametros.get("NUMPUNTOVENTA") != null && !parametros.get("NUMPUNTOVENTA").equals("-1")) { - sql.append(" and pv.PUNTOVENTA_ID IN (" + parametros.get("NUMPUNTOVENTA").toString() + ")"); - } - - if (parametros.get("MOEDA_ID") != null) { - sql.append(" and NVL(B.MONEDA_ID, 1) = "+parametros.get("MOEDA_ID") ); - } - - if (parametros.get("ESTADO_ID") != null && !parametros.get("ESTADO_ID").equals("-1")) { - sql.append(" and est.estado_id = " + parametros.get("ESTADO_ID").toString() + ""); - } - - if ( !(parametros.get("STATUS").toString().contains("V") && parametros.get("STATUS").toString().contains("C")) ) { - if (parametros.get("STATUS").toString().contains("C")) { - sql.append(" AND b.motivocancelacion_id is not null "); - } else if (parametros.get("STATUS").toString().contains("V")) { - sql.append(" AND b.motivocancelacion_id is null "); - } - } - sql.append(" and B.ACTIVO = 1 AND b.INDVIAJEREDONDO IS NULL "); - } - sql.append(" order by "); - if (parametros.get("IDAVOLTA").equals("1")) { - sql.append(" BILHETEIRO, "); - sql.append(" DATA_EMISSAO, "); - }else { - sql.append(" DATA_EMISSAO, "); - sql.append(" BILHETEIRO, "); + if (parametros.get("NUMPUNTOVENTA") != null && !parametros.get("NUMPUNTOVENTA").equals("-1")) { + sql.append(" and ee.puntoventa_id in ( "+parametros.get("NUMPUNTOVENTA")+" ) "); } - sql.append(" COD_AGENCIA, "); - sql.append(" NOME_AGENCIA, "); - sql.append(" NUMERO_PASSAGEM, "); - sql.append(" ORIGEM, "); - sql.append(" DESTINO, "); - sql.append(" CATEGORIA, "); - sql.append(" IMPRESSAO_POSTERIOR, "); - sql.append(" SERVICO "); - + + if (parametros.get("STATUS") != null ) { + sql.append(" and rc.status in ( "+parametros.get("STATUS")+" ) "); + } + + sql.append(" order by rc.created_at, "); + sql.append(" pv.nombpuntoventa, "); + sql.append(" rc.status, "); + sql.append(" rc.area_code, "); + sql.append(" rc.cell_phone_number "); + NamedParameterStatement stmt = new NamedParameterStatement(conexao, sql.toString()); - stmt.setInt("EMPRESA_ID", Integer.valueOf(parametros.get("EMPRESA_ID").toString())); - if (parametros.get("DATA_INICIAL") != null && parametros.get("DATA_FINAL") != null){ - stmt.setTimestamp("DATA_INICIAL", new Timestamp(DateUtil.inicioFecha((Date) parametros.get("DATA_INICIAL")).getTime())); - stmt.setTimestamp("DATA_FINAL", new Timestamp(DateUtil.fimFecha((Date) parametros.get("DATA_FINAL")).getTime())); + stmt.setInt("empresa_id", Integer.valueOf(parametros.get("EMPRESA_ID").toString())); + stmt.setTimestamp("datInicial", new Timestamp(DateUtil.inicioFecha((Date) parametros.get("datInicial")).getTime())); + stmt.setTimestamp("datFinal", new Timestamp(DateUtil.fimFecha((Date) parametros.get("datFinal")).getTime())); - } ResultSet rset = stmt.executeQuery(); while (rset.next()) { Map dataResult = new HashMap(); - - dataResult.put("NUMERO_PASSAGEM", rset.getString("NUMERO_PASSAGEM")); - if (rset.getString("SERIE") != null) { - if (rset.getString("SERIE").split("-").length == 1) { - dataResult.put("SERIE", rset.getString("SERIE")); - } else { - dataResult.put("SERIE", rset.getString("SERIE").split("-")[0]); - dataResult.put("SUB_SERIE", rset.getString("SERIE").split("-")[1]); - } - } - dataResult.put("CVEBILHETEIRO", rset.getString("CVEBILHETEIRO")); - dataResult.put("CVEBILHETEIRO_CANCELADO", rset.getString("CVEBILHETEIRO_CANCELADO")); - dataResult.put("IMPRESSAO_POSTERIOR", rset.getString("IMPRESSAO_POSTERIOR")); - dataResult.put("PRE_IMPRESSO", rset.getString("PRE_IMPRESSO")); - dataResult.put("COD_ORIGEM", rset.getString("COD_ORIGEM")); - dataResult.put("ORIGEM", rset.getString("ORIGEM")); - dataResult.put("COD_DESTINO", rset.getString("COD_DESTINO")); - dataResult.put("DESTINO", rset.getString("DESTINO")); - dataResult.put("NOME_AGENCIA", rset.getString("NOME_AGENCIA")); - dataResult.put("COD_AGENCIA", rset.getString("COD_AGENCIA")); - dataResult.put("DATA_VENDA", rset.getDate("DATA_VENDA")); - dataResult.put("DATA_EMISSAO", rset.getDate("DATA_EMISSAO")); - dataResult.put("DATA_VIAGEM", rset.getDate("DATA_VIAGEM")); - dataResult.put("SERVICO", rset.getString("SERVICO")); - dataResult.put("HORA", rset.getString("HORA")); - dataResult.put("NUMASIENTO", rset.getString("NUMASIENTO")); - dataResult.put("CATEGORIA", rset.getString("CATEGORIA")); - dataResult.put("SENTIDO", rset.getInt("SENTIDO")); - dataResult.put("COD_LINHA", rset.getString("COD_LINHA")); - dataResult.put("DESC_LINHA", rset.getString("DESC_LINHA")); - if (rset.getString("STATUS_PASSAGEM") != null) { - dataResult.put("STATUS_PASSAGEM", IndStatusBoleto.valueOf(rset.getString("STATUS_PASSAGEM")).getValue()); - } - dataResult.put("TARIFA", rset.getString("TARIFA")); - dataResult.put("TX_EMBARQUE", rset.getString("TX_EMBARQUE")); - dataResult.put("PEDAGIO", rset.getString("PEDAGIO")); - dataResult.put("SEGURO", rset.getString("SEGURO")); - dataResult.put("BILHETEIRO", rset.getString("BILHETEIRO")); - dataResult.put("BILHETEIRO_CANCELAMENTO", rset.getString("BILHETEIRO_CANCELAMENTO")); - dataResult.put("PASSAGEIRO", rset.getString("PASSAGEIRO")); - dataResult.put("DOC", rset.getString("DOC")); - dataResult.put("LOCALIZADOR", rset.getString("LOCALIZADOR")); + + dataResult.put("dataVenda", rset.getDate("dataVenda")); + dataResult.put("nombPuntoVenta", rset.getString("nombpuntoventa")); + dataResult.put("ddd", rset.getString("ddd")); + dataResult.put("telefone", rset.getString("telefone")); + dataResult.put("valor", rset.getBigDecimal("valor")); + dataResult.put("descTipoEvento", rset.getString("descTipoEvento")); + dataResult.put("rvhubId", rset.getString("rvhubId")); + dataResult.put("usuario", rset.getString("usuario")); + dataResult.put("status", StatusRecargaEnum.buscarPorCodigo(rset.getString("STATUS")).name()); this.dados.add(dataResult); diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioRecargaRvhub_pt_BR.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioRecargaRvhub_pt_BR.properties new file mode 100644 index 000000000..434855248 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioRecargaRvhub_pt_BR.properties @@ -0,0 +1,32 @@ +#Generated by ResourceBundle Editor (http://essiembre.github.io/eclipse-rbe/) +#geral + +cabecalho.dataHora = Data/Hora: +cabecalho.de = de +cabecalho.empresa = Empresa: +cabecalho.filtros = Filtros: +cabecalho.impressorPor = Impressor por: +#Labels cabeçalho +cabecalho.nome = Relat\u00F3rio Recarga Rvhub +label.situacao=Situa\u00E7\u00E3o +cabecalho.pagina = P\u00E1gina +cabecalho.periodo = Per\u00EDodo: +cabecalho.periodoA = \u00E0 +cabecalho.relatorio = Relat\u00F3rio: +cabecalho.usuario = Usu\u00E1rio: +label.usuario = Usu\u00E1rio: +label.agenciaDescricao = Nome da Ag\u00EAncia +label.data = Data +label.numero = Numero +label.numeroDocumento = Num. Documento +label.tipo = Tipo Evento +label.totalAutorizado = Total Autorizado +label.totalConfirmado = Total Confirmado +label.totalCancelado = Total Cancelado +label.valor = Valor +label.ddd=DDD +label.telefone=Telefone +label.rvhubId=Transa\u00E7\u00E3o + + +msg.noData = N\u00E3o foi possivel obter dados com os par\u00E2metros informados. diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioRecargaRvhub.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioRecargaRvhub.jasper new file mode 100644 index 0000000000000000000000000000000000000000..a2b1656ea80c3c7796a80009240de32b1cd6888a GIT binary patch literal 40159 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 literal 0 HcmV?d00001 diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioRecargaRvhub.jrxml b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioRecargaRvhub.jrxml new file mode 100644 index 000000000..4f335f092 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioRecargaRvhub.jrxml @@ -0,0 +1,299 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <band splitType="Stretch"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioRecargaRvhubController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioRecargaRvhubController.java index cdb0008de..8cab3e037 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioRecargaRvhubController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioRecargaRvhubController.java @@ -1,9 +1,7 @@ package com.rjconsultores.ventaboletos.web.gui.controladores.relatorios; -import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; -import java.util.Calendar; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -29,6 +27,7 @@ import com.rjconsultores.ventaboletos.enums.StatusRecargaEnum; import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioRecargaRvhub; import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; import com.rjconsultores.ventaboletos.service.EmpresaService; +import com.rjconsultores.ventaboletos.utilerias.DateUtil; import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxEstandar; import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer; @@ -139,13 +138,12 @@ public class RelatorioRecargaRvhubController extends MyGenericForwardComposer { Map parametros = new HashMap(); StringBuilder filtro = new StringBuilder(); - SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); if (this.datInicial.getValue() != null) { - parametros.put("datInicial", sdf.format(this.datInicial.getValue())); + parametros.put("datInicial", this.datInicial.getValue()); } if (this.datFinal.getValue() != null) { - parametros.put("datFinal", sdf.format(this.datFinal.getValue())); + parametros.put("datFinal", this.datFinal.getValue()); } if (parametros.get("datInicial") == null && parametros.get("datFinal") == null) { @@ -155,20 +153,13 @@ public class RelatorioRecargaRvhubController extends MyGenericForwardComposer { return; } - filtro.append("InĂ­cio perĂ­odo: "); - Calendar cal = Calendar.getInstance(); - cal.setTime(datInicial.getValue()); - filtro.append(cal.get(Calendar.DATE) + "/"); - filtro.append((cal.get(Calendar.MONTH) + 1) + "/"); - filtro.append(cal.get(Calendar.YEAR) + "; "); + filtro.append("PerĂ­odo: "); + filtro.append( DateUtil.getStringDate(datInicial.getValue())); - filtro.append("Fim perĂ­odo: "); - cal.setTime(datFinal.getValue()); - filtro.append(cal.get(Calendar.DATE) + "/"); - filtro.append((cal.get(Calendar.MONTH) + 1) + "/"); - filtro.append(cal.get(Calendar.YEAR) + "; "); + filtro.append(" - "); + filtro.append( DateUtil.getStringDate(datFinal.getValue())); - filtro.append("Empresa: "); + filtro.append("; Empresa: "); Comboitem itemEmpresa = cmbEmpresa.getSelectedItem(); if (itemEmpresa != null) { Empresa empresa = (Empresa) itemEmpresa.getValue(); @@ -178,7 +169,7 @@ public class RelatorioRecargaRvhubController extends MyGenericForwardComposer { filtro.append(" Todas;"); } - filtro.append("AgĂȘncia: "); + filtro.append(" AgĂȘncia: "); String puntoVentaIds = ""; String puntoVentas = ""; List lsPuntoVentaSelecionados = new ArrayList(Arrays.asList(puntoVentaSelList.getData())); @@ -229,10 +220,9 @@ public class RelatorioRecargaRvhubController extends MyGenericForwardComposer { if (status.length() > 0) { status.deleteCharAt(status.length() - 1); statusDesc.deleteCharAt(statusDesc.length() - 1); - filtro.append("Status: ").append(statusDesc); + filtro.append(" Status: ").append(statusDesc); + parametros.put("STATUS", status); } - - parametros.put("STATUS", status); relatorio = new RelatorioRecargaRvhub(parametros, dataSourceRead.getConnection()); parametros.put("FILTROS", filtro.toString());