From ee00563bc961febb3c0eccb3dc516520afc9a3dd Mon Sep 17 00:00:00 2001 From: Fabio Date: Thu, 8 Feb 2024 19:54:42 -0300 Subject: [PATCH] Novo layout relatorio forma pagamento feat bug #AL-3565 --- pom.xml | 2 +- .../RelatorioFormaPagamentoAgenciaNovo.java | 116 ++++ ...rioFormaPagamentoAgenciaNovo_es.properties | 31 + ...FormaPagamentoAgenciaNovo_pt_BR.properties | 31 + ...orioFormaPagamentoAgencia_pt_BR.properties | 2 +- .../RelatorioFormaPagamentoAgenciaNovo.jasper | Bin 0 -> 57344 bytes .../RelatorioFormaPagamentoAgenciaNovo.jrxml | 582 ++++++++++++++++++ .../FormaPagamentoAgenciaController.java | 102 ++- web/WEB-INF/i3-label_en.label | 3 +- web/WEB-INF/i3-label_es_MX.label | 3 +- web/WEB-INF/i3-label_pt_BR.label | 6 +- .../formaPagamentoAgencia.zul | 139 ++--- 12 files changed, 907 insertions(+), 110 deletions(-) create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioFormaPagamentoAgenciaNovo.java create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioFormaPagamentoAgenciaNovo_es.properties create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioFormaPagamentoAgenciaNovo_pt_BR.properties create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioFormaPagamentoAgenciaNovo.jasper create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioFormaPagamentoAgenciaNovo.jrxml diff --git a/pom.xml b/pom.xml index af16e7115..344344f64 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 br.com.rjconsultores ventaboletosadm - 1.48.6 + 1.49.0 war diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioFormaPagamentoAgenciaNovo.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioFormaPagamentoAgenciaNovo.java new file mode 100644 index 000000000..e564ca370 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioFormaPagamentoAgenciaNovo.java @@ -0,0 +1,116 @@ +/** + * + */ +package com.rjconsultores.ventaboletos.relatorios.impl; + +import java.sql.Connection; +import java.sql.ResultSet; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +import com.rjconsultores.ventaboletos.relatorios.utilitarios.ArrayDataSource; +import com.rjconsultores.ventaboletos.web.utilerias.NamedParameterStatement; + +public class RelatorioFormaPagamentoAgenciaNovo extends RelatorioDemandas { + public RelatorioFormaPagamentoAgenciaNovo(Map parametros, Connection conexao) throws Exception { + super(parametros, conexao); + this.setCustomDataSource(new ArrayDataSource(this) { + @Override + public void initDados() throws Exception { + + Connection conexao = this.relatorio.getConexao(); + Map parametros = this.relatorio.getParametros(); + + Date dataInicial = (Date) parametros.get("DATA_INICIAL"); + Date dataFinal = (Date) parametros.get("DATA_FINAL"); + Integer empresa = (Integer) parametros.get("EMPRESA"); + Integer agencia = (Integer) parametros.get("AGENCIA"); + Short formaPagoId = (Short) parametros.get("FORMA_PAGO"); + + StringBuilder sql = new StringBuilder(); + sql.append(" SELECT " ); + sql.append(" c.fechorventa AS data, " ); + sql.append(" c.numfoliosistema AS bilhete, " ); + sql.append(" pv.nombpuntoventa AS agencia, " ); + sql.append(" p_origen.CVEPARADA AS origem , " ); + sql.append(" p_destino.CVEPARADA AS destino, " ); + sql.append(" fp.descpago AS forma_pagamento, " ); + sql.append(" coalesce(c.preciopagado, 0) AS tarifa, " ); + sql.append(" coalesce(c.importepedagio, 0) AS pedagio, " ); + sql.append(" coalesce(c.importeseguro, 0) AS seguro, " ); + sql.append(" coalesce(c.importetaxaembarque, 0) AS taxa, " ); + sql.append(" coalesce(cfp.importe, 0) AS valor, " ); + sql.append(" coalesce(seg.valor, 0) AS seg_opcional " ); + sql.append(" FROM " ); + sql.append(" caja c " ); + sql.append(" JOIN caja_formapago cfp ON c.caja_id = cfp.caja_id " ); + sql.append(" JOIN forma_pago fp ON cfp.formapago_id = fp.formapago_id " ); + sql.append(" JOIN punto_venta pv ON pv.puntoventa_id = c.puntoventa_id " ); + sql.append(" JOIN marca m ON m.marca_id = c.marca_id AND m.activo = 1 " ); + sql.append(" JOIN parada p_origen ON p_origen.parada_id = c.origen_id " ); + sql.append(" JOIN parada p_destino ON p_destino.parada_id = c.destino_id " ); + sql.append(" LEFT JOIN segpolv seg ON c.transacao_id = seg.boleto_id " ); + sql.append(" WHERE " ); + sql.append(" c.activo = 1 " ); + sql.append(" AND c.indreimpresion = 0 " ); + sql.append(" AND c.fechorventa >= :dataInicial " ); + sql.append(" AND c.fechorventa <= :dataFinal " ); + + if (empresa != null) { + sql.append(" AND c.empresa_id = :empresaId "); + } + + if (agencia != null) { + sql.append(" AND c.puntoventa_id = :agenciaId "); + } + + if (formaPagoId != null) { + sql.append(" AND cfp.FORMAPAGO_ID = :formaPagoId "); + } + + sql.append(" ORDER BY data, agencia, bilhete " ); + + NamedParameterStatement stmt = new NamedParameterStatement(conexao, sql.toString()); + + stmt.setDate("dataInicial", new java.sql.Date(dataInicial.getTime())); + stmt.setDate("dataFinal", new java.sql.Date(dataFinal.getTime())); + + if (empresa != null) { + stmt.setInt("empresaId", empresa); + } + + if (agencia != null) { + stmt.setInt("agenciaId", agencia); + } + + if (formaPagoId != null ) { + stmt.setInt("formapagoId", formaPagoId); + } + + ResultSet rset = stmt.executeQuery(); + + while (rset.next()) { + Map dataResult = new HashMap(); + + dataResult.put("DATA", rset.getDate("data")); + dataResult.put("BILHETE", rset.getString("bilhete")); + dataResult.put("ORIGEM", rset.getString("ORIGEM")); + dataResult.put("DESTINO", rset.getString("DESTINO")); + dataResult.put("AGENCIA", rset.getString("agencia")); + dataResult.put("FORMA_PAGAMENTO", rset.getString("forma_pagamento")); + dataResult.put("TARIFA", rset.getBigDecimal("tarifa")); + dataResult.put("PEDAGIO", rset.getBigDecimal("PEDAGIO")); + dataResult.put("SEGURO", rset.getBigDecimal("SEGURO")); + dataResult.put("SEG_OPCIONAL", rset.getBigDecimal("seg_opcional")); + dataResult.put("TAXA", rset.getBigDecimal("taxa")); + dataResult.put("VALOR", rset.getBigDecimal("valor")); + + this.dados.add(dataResult); + } + + this.resultSet = rset; + } + }); + } +} diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioFormaPagamentoAgenciaNovo_es.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioFormaPagamentoAgenciaNovo_es.properties new file mode 100644 index 000000000..f97abf049 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioFormaPagamentoAgenciaNovo_es.properties @@ -0,0 +1,31 @@ +TITULO = Relatório de Forma de Pagamento por Agência +PERIODO = PERÍODO +header.data.hora=Data/Hora\: +cabecalho.impressorPor=Impresso por + +DATA = DATA +AGENCIA = AGÊNCIA: +FORMA_PAG = FORMA DE PAG. +VALOR = TARIFA +PEDAGIO = PEDÁGIO +SEGURO = SEGURO +SEGURO_OPCIONAL = SEG. OPCI. +TAXAS = TAXAS +TOTAL = TOTAL +BILHETE = BILHETE +ORIGEM = ORIGEM +DESTINO = DESTINO +TOTAL_GERAL = Total Geral: +TOTAL_PV = Total Agência: + +#Labels cabeçalho +cabecalho.relatorio=Relatório: +cabecalho.periodo=Período: +cabecalho.periodoA=à +cabecalho.dataHora=Data/Hora: +cabecalho.impressorPor=Impresso por: +cabecalho.pagina=Página +cabecalho.de=de +cabecalho.filtros=Filtros: + +msg.noData=Não foi possivel obter dados com os parâmetros informados. \ No newline at end of file diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioFormaPagamentoAgenciaNovo_pt_BR.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioFormaPagamentoAgenciaNovo_pt_BR.properties new file mode 100644 index 000000000..f97abf049 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioFormaPagamentoAgenciaNovo_pt_BR.properties @@ -0,0 +1,31 @@ +TITULO = Relatório de Forma de Pagamento por Agência +PERIODO = PERÍODO +header.data.hora=Data/Hora\: +cabecalho.impressorPor=Impresso por + +DATA = DATA +AGENCIA = AGÊNCIA: +FORMA_PAG = FORMA DE PAG. +VALOR = TARIFA +PEDAGIO = PEDÁGIO +SEGURO = SEGURO +SEGURO_OPCIONAL = SEG. OPCI. +TAXAS = TAXAS +TOTAL = TOTAL +BILHETE = BILHETE +ORIGEM = ORIGEM +DESTINO = DESTINO +TOTAL_GERAL = Total Geral: +TOTAL_PV = Total Agência: + +#Labels cabeçalho +cabecalho.relatorio=Relatório: +cabecalho.periodo=Período: +cabecalho.periodoA=à +cabecalho.dataHora=Data/Hora: +cabecalho.impressorPor=Impresso por: +cabecalho.pagina=Página +cabecalho.de=de +cabecalho.filtros=Filtros: + +msg.noData=Não foi possivel obter dados com os parâmetros informados. \ No newline at end of file diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioFormaPagamentoAgencia_pt_BR.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioFormaPagamentoAgencia_pt_BR.properties index f0f1a5f0c..900a7b6fd 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioFormaPagamentoAgencia_pt_BR.properties +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioFormaPagamentoAgencia_pt_BR.properties @@ -9,7 +9,7 @@ FORMA_PAG = FORMA DE PAG. VALOR = TARIFA PEDAGIO = PEDÁGIO SEGURO = SEGURO -SEGURO_OPCIONAL = SEGURO OPCIONAL +SEGURO_OPCIONAL = SEG. OPCIO. TAXAS = TAXAS TOTAL = TOTAL QTDE = QTDE diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioFormaPagamentoAgenciaNovo.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioFormaPagamentoAgenciaNovo.jasper new file mode 100644 index 0000000000000000000000000000000000000000..2a9431ac8011a9e31e5df1c93c47fdaf2e230c8b GIT binary patch literal 57344 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 P6W_YXj!1{vYM1 + + + + + + + + + +