From 4ea9f5e5c5e5315d7ada5e76ffdf4d9893261dab Mon Sep 17 00:00:00 2001 From: julio Date: Fri, 24 Apr 2015 14:13:44 +0000 Subject: [PATCH] =?UTF-8?q?Erro=20-=20Relat=C3=B3rio=20de=20Aproveitamento?= =?UTF-8?q?=20(fixes=20bug=20#6206)=20Tempo:=2032=20horas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@43384 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../impl/RelatorioAproveitamento.java | 442 +++++++++--------- .../templates/RelatorioAproveitamento.jasper | Bin 52341 -> 52480 bytes .../templates/RelatorioAproveitamento.jrxml | 6 +- .../utilitarios/AproveitamentoBean.java | 98 ++++ .../RelatorioResumoLinhasController.java | 11 +- .../web/utilerias/CurrencyUtil.java | 21 +- .../filtroRelatorioAproveitamento.zul | 2 +- .../filtroRelatorioResumoLinhas.zul | 2 +- 8 files changed, 345 insertions(+), 237 deletions(-) create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/AproveitamentoBean.java diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioAproveitamento.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioAproveitamento.java index 31ba8cc57..0c7383de8 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioAproveitamento.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioAproveitamento.java @@ -4,8 +4,8 @@ package com.rjconsultores.ventaboletos.relatorios.impl; import java.math.BigDecimal; +import java.math.RoundingMode; import java.sql.Connection; -import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import java.util.List; @@ -14,6 +14,7 @@ import java.util.Map; import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.AproveitamentoBean; import com.rjconsultores.ventaboletos.relatorios.utilitarios.DataSource; import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; import com.rjconsultores.ventaboletos.relatorios.utilitarios.RelatorioAproveitamentoBean; @@ -36,32 +37,83 @@ public class RelatorioAproveitamento extends Relatorio { public void initDados() throws Exception { Connection conexao = this.relatorio.getConexao(); - Map parametros = this.relatorio.getParametros(); - String sql = getSql(); + List aproveitamentoList = new ArrayList(); - PreparedStatement stmt = null; - ResultSet rset = null; - stmt = conexao.prepareStatement(sql); + NamedParameterStatement stmt = new NamedParameterStatement(conexao, getSql()); + stmt.setInt("CORRIDA_ID", Integer.valueOf((String) parametros.get("CORRIDA_ID"))); + stmt.setDate("FECCORRIDA", (java.sql.Date) parametros.get("FECCORRIDA")); - stmt.setInt(1, Integer.valueOf((String) parametros.get("CORRIDA_ID"))); - stmt.setDate(2, (java.sql.Date) parametros.get("FECCORRIDA")); - rset = stmt.executeQuery(); + ResultSet rset = stmt.executeQuery(); + while (rset.next()) { - if (rset.next()) { + AproveitamentoBean ab = new AproveitamentoBean(); + ab.setTrechoArrecadado((BigDecimal) rset.getObject("TOTAL_ARRECADADO")); + ab.setTotalAsientos((BigDecimal) rset.getObject("TOTAL_ASIENTOS")); + ab.setOrigenId((BigDecimal) rset.getObject("ORIGEN_ID") == null ? null : ((BigDecimal) rset.getObject("ORIGEN_ID")).intValue()); + ab.setDestinoId((BigDecimal) rset.getObject("DESTINO_ID") == null ? null : ((BigDecimal) rset.getObject("DESTINO_ID")).intValue()); + ab.setKmNominal((BigDecimal) rset.getObject("KM_NOMINAL")); + ab.setTotalOcupados((String) rset.getObject("TOTAL_OCUPADOS") == null ? null : new BigDecimal((String) rset.getObject("TOTAL_OCUPADOS"))); + ab.setKmCorrida((BigDecimal) rset.getObject("KM_CORRIDA")); + ab.setTarifa((BigDecimal) rset.getObject("TARIFA")); - Locale locale = new Locale("pt", "BR"); + BigDecimal gratuido = (BigDecimal) rset.getObject("GRATUITO") == null ? null : ((BigDecimal) rset.getObject("GRATUITO")); + ab.setGratuito(gratuido == BigDecimal.ZERO ? false : true); + BigDecimal vendidos = (BigDecimal) rset.getObject("VENDIDOS") == null ? null : ((BigDecimal) rset.getObject("VENDIDOS")); + ab.setVendidos(vendidos == BigDecimal.ZERO ? false : true); - parametros.put("P_NOMINAL_KM", CurrencyUtil.getCurrencyStrFromStr(rset.getString("NOMINAL_KM"), locale)); - parametros.put("P_TOTAL_ARRECADADO", CurrencyUtil.getCurrencyStrFromStr(rset.getString("TOTAL_ARRECADADO"), locale)); - parametros.put("P_ARRECADO_KM", CurrencyUtil.getCurrencyStrFromStr(rset.getString("ARRECADADO_KM"), locale)); - parametros.put("P_OCUPACAO", CurrencyUtil.getPercentStrFromStr(rset.getString("OCUPACAO"), locale)); - parametros.put("P_OCUPACAO_ARRECADACAO", CurrencyUtil.getPercentStrFromStr(rset.getString("OCUPACAO_ARRECADACAO"), locale)); - parametros.put("P_TOTAL_NOMINAL", CurrencyUtil.getCurrencyStrFromStr(rset.getString("TOTAL_NOMINAL"), locale)); - parametros.put("P_OCUPACAO_S_ARRECADACAO", CurrencyUtil.getPercentStrFromStr(rset.getString("OCUPACAO_S_ARRECADACAO"), locale)); + aproveitamentoList.add(ab); } + BigDecimal totalArrecadado = BigDecimal.ZERO; + BigDecimal totalNominal = BigDecimal.ZERO; + BigDecimal kmCorrida = BigDecimal.ZERO; + BigDecimal totalOcupados = BigDecimal.ZERO; + + BigDecimal ocupacao = BigDecimal.ONE; + BigDecimal ocupacaoArrecadacao = BigDecimal.ONE; + BigDecimal ocupacaoSemArrecadacao = BigDecimal.ONE; + BigDecimal tarifa = BigDecimal.ONE; + + for (AproveitamentoBean ab : aproveitamentoList) { + + totalOcupados = ab.getTotalOcupados(); + kmCorrida = ab.getKmCorrida(); + tarifa = ab.getTarifa(); + + totalArrecadado = totalArrecadado.add(ab.getTrechoArrecadado()); + ocupacao = ocupacao.add(ab.getTotalAsientos().multiply(ab.getKmNominal())); + + if (ab.getGratuito()) { + ocupacaoSemArrecadacao = ocupacaoSemArrecadacao.add(ab.getTotalAsientos().multiply(ab.getKmNominal())); + } else { + ocupacaoArrecadacao = ocupacaoArrecadacao.add(ab.getTotalAsientos().multiply(ab.getKmNominal())); + } + } + + totalNominal = tarifa.multiply(totalOcupados); + + BigDecimal arrecadadoKm = BigDecimal.ONE; + arrecadadoKm = totalArrecadado.divide(kmCorrida, 4, RoundingMode.HALF_EVEN); + BigDecimal nominalKmFinal = BigDecimal.ONE; + nominalKmFinal = totalNominal.divide(kmCorrida, 4, RoundingMode.HALF_EVEN); + + ocupacao = ocupacao.divide(totalOcupados.multiply(kmCorrida), 4, RoundingMode.HALF_EVEN); + ocupacaoSemArrecadacao = ocupacaoSemArrecadacao.divide(totalOcupados.multiply(kmCorrida), 4, RoundingMode.HALF_EVEN); + ocupacaoArrecadacao = ocupacaoArrecadacao.divide(totalOcupados.multiply(kmCorrida), 4, RoundingMode.HALF_EVEN); + + Locale locale = new Locale("pt", "BR"); + parametros.put("P_TOTAL_ARRECADADO", CurrencyUtil.getCurrencyBigDecimalFromStr(totalArrecadado, locale)); + parametros.put("P_TOTAL_NOMINAL", CurrencyUtil.getCurrencyBigDecimalFromStr(totalNominal, locale)); + + parametros.put("P_ARRECADO_KM", CurrencyUtil.getCurrencyBigDecimalFromStr(arrecadadoKm, locale)); + parametros.put("P_NOMINAL_KM", CurrencyUtil.getCurrencyBigDecimalFromStr(nominalKmFinal, locale)); + + parametros.put("P_OCUPACAO", CurrencyUtil.getPercentBigDecimalFromStr(ocupacao, locale)); + parametros.put("P_OCUPACAO_ARRECADACAO", CurrencyUtil.getPercentBigDecimalFromStr(ocupacaoArrecadacao, locale)); + parametros.put("P_OCUPACAO_S_ARRECADACAO", CurrencyUtil.getPercentBigDecimalFromStr(ocupacaoSemArrecadacao, locale)); + NamedParameterStatement nps = new NamedParameterStatement(conexao, getSqlDetail()); nps.setInt("CORRIDA_ID", Integer.valueOf((String) parametros.get("CORRIDA_ID"))); @@ -200,210 +252,156 @@ public class RelatorioAproveitamento extends Relatorio { private String getSql() { StringBuilder sql = new StringBuilder(); - - sql.append(" SELECT round(NVL(TAB.TOTAL_ARRECADADO, 0), 2) TOTAL_ARRECADADO, "); - sql.append(" round(NVL(TAB.TOTAL_ARRECADADO / TAB.KM_NOMINAL, 0), 2) ARRECADADO_KM, "); - sql.append(" round(NVL(TAB.TOTAL_NOMINAL, 0), 2) TOTAL_NOMINAL, "); - sql.append(" NVL(round(TAB.TOTAL_NOMINAL / TAB.KM_NOMINAL, 2), 0) NOMINAL_KM, "); - sql.append(" ((TAB.TOTAL_OCUPADOS + TAB.TOTAL_OCUPADOS_OPERACAO) / (CASE TAB.TOTAL_ACENTOS WHEN 0 THEN 1 ELSE TAB.TOTAL_ACENTOS END) ) OCUPACAO, "); - sql.append(" ((TAB.TOTAL_OCUPADOS - TAB.TOTAL_OCUPADOS_GRATUIDADE) / (CASE TAB.TOTAL_ACENTOS WHEN 0 THEN 1 ELSE TAB.TOTAL_ACENTOS END) ) OCUPACAO_ARRECADACAO, "); - sql.append(" ((TAB.TOTAL_OCUPADOS_GRATUIDADE + TAB.TOTAL_OCUPADOS_OPERACAO) / (CASE TAB.TOTAL_ACENTOS WHEN 0 THEN 1 ELSE TAB.TOTAL_ACENTOS END) ) OCUPACAO_S_ARRECADACAO "); - sql.append(" FROM (SELECT (SELECT SUM(BO.PRECIOPAGADO) "); - sql.append(" FROM BOLETO BO "); - sql.append(" WHERE BO.CORRIDA_ID = CR.CORRIDA_ID "); - sql.append(" AND BO.FECCORRIDA = CR.FECCORRIDA "); - sql.append(" AND BO.ACTIVO = 1 "); - sql.append(" AND BO.INDSTATUSOPERACION = 'F' "); - sql.append(" AND (BO.MOTIVOCANCELACION_ID IS NULL OR "); - sql.append(" BO.MOTIVOCANCELACION_ID = 0)) TOTAL_ARRECADADO, "); - sql.append(" "); - sql.append(" (SELECT SUM(TR.CANTKMREAL) "); - sql.append(" FROM CORRIDA_TRAMO CT, "); - sql.append(" TRAMO TR, "); - sql.append(" ROL_OPERATIVO RO, "); - sql.append(" DIAGRAMA_AUTOBUS DA "); - sql.append(" WHERE CT.CORRIDA_ID = CR.CORRIDA_ID "); - sql.append(" AND CT.FECCORRIDA = CR.FECCORRIDA "); - sql.append(" AND RO.ROLOPERATIVO_ID = CR.ROLOPERATIVO_ID "); - sql.append(" AND DA.DIAGRAMAAUTOBUS_ID = RO.DIAGRAMAAUTOBUS_ID "); - sql.append(" AND TR.TRAMO_ID = CT.TRAMO_ID "); - sql.append(" AND TR.ACTIVO = 1 "); - sql.append(" AND CT.ACTIVO = 1) KM_NOMINAL, "); - sql.append(" "); - sql.append(" (SELECT SUM((SELECT TR.CANTKMREAL "); - sql.append(" FROM BOLETO BO, "); - sql.append(" CORRIDA_TRAMO CTD, "); - sql.append(" CORRIDA_TRAMO CTO "); - sql.append(" WHERE BO.CORRIDA_ID = CR.CORRIDA_ID "); - sql.append(" AND BO.FECCORRIDA = CR.FECCORRIDA "); - sql.append(" AND BO.NUMASIENTO = DD.ASIENTO "); - sql.append(" AND BO.ORIGEN_ID = CTO.ORIGEN_ID "); - sql.append(" AND BO.DESTINO_ID = CTD.DESTINO_ID "); - sql.append(" AND CTD.CORRIDA_ID = CR.CORRIDA_ID "); - sql.append(" AND CTD.FECCORRIDA = CR.FECCORRIDA "); - sql.append(" AND CTO.CORRIDA_ID = CR.CORRIDA_ID "); - sql.append(" AND CTO.FECCORRIDA = CR.FECCORRIDA "); - sql.append(" AND CTO.ACTIVO = 1 "); - sql.append(" AND CTD.ACTIVO = 1 "); - sql.append(" AND CT.NUMSECUENCIA BETWEEN CTO.NUMSECUENCIA AND "); - sql.append(" CTD.NUMSECUENCIA "); - sql.append(" AND BO.ACTIVO = 1 "); - sql.append(" AND BO.INDSTATUSOPERACION = 'F' "); - sql.append(" AND (BO.MOTIVOCANCELACION_ID IS NULL OR "); - sql.append(" BO.MOTIVOCANCELACION_ID = 0))) "); - sql.append(" FROM CORRIDA_TRAMO CT, "); - sql.append(" TRAMO TR, "); - sql.append(" ROL_OPERATIVO RO, "); - sql.append(" DET_DIAGRAMA_AUTOBUS DD "); - sql.append(" WHERE CR.FECCORRIDA = CT.FECCORRIDA "); - sql.append(" AND CR.CORRIDA_ID = CT.CORRIDA_ID "); - sql.append(" AND CT.TRAMO_ID = TR.TRAMO_ID "); - sql.append(" AND CR.ROLOPERATIVO_ID = RO.ROLOPERATIVO_ID "); - sql.append(" AND RO.DIAGRAMAAUTOBUS_ID = DD.DIAGRAMAAUTOBUS_ID "); - sql.append(" AND DD.VENDIBLE = 1 "); - sql.append(" AND CT.ACTIVO = 1) KM_OCUPADA, "); - sql.append(" "); - sql.append(" (SELECT SUM(TF.PRECIO) "); - sql.append(" FROM TRAMO TR, "); - sql.append(" ROL_OPERATIVO RO, "); - sql.append(" DET_DIAGRAMA_AUTOBUS DD, "); - sql.append(" TARIFA TF, "); - sql.append(" VIGENCIA_TARIFA VT "); - sql.append(" WHERE RO.ROLOPERATIVO_ID = CR.ROLOPERATIVO_ID "); - sql.append(" AND RO.DIAGRAMAAUTOBUS_ID = DD.DIAGRAMAAUTOBUS_ID "); - sql.append(" AND TF.CLASESERVICIO_ID = CR.CLASESERVICIO_ID "); - sql.append(" AND DD.VENDIBLE = 1 "); - sql.append(" AND DD.ACTIVO = 1 "); - sql.append(" AND TR.ORIGEN_ID = CR.ORIGEN_ID "); - sql.append(" AND TR.DESTINO_ID = CR.DESTINO_ID "); - sql.append(" AND TF.MARCA_ID = CR.MARCA_ID "); - sql.append(" AND TF.RUTA_ID = CR.RUTA_ID "); - sql.append(" AND TF.TRAMO_ID = TR.TRAMO_ID "); - sql.append(" AND TF.STATUSTARIFA = 'A' "); - sql.append(" AND TF.ACTIVO = 1 "); - sql.append(" AND TF.VIGENCIATARIFA_ID = VT.VIGENCIATARIFA_ID "); - sql.append(" AND VT.ACTIVO = 1 "); - sql.append(" AND CR.FECCORRIDA BETWEEN VT.FECINICIOVIGENCIA AND "); - sql.append(" VT.FECFINVIGENCIA) TOTAL_NOMINAL, "); - sql.append(" "); - sql.append(" (SELECT COUNT(1) "); - sql.append(" FROM CORRIDA_TRAMO CT, "); - sql.append(" TRAMO TR, "); - sql.append(" ROL_OPERATIVO RO, "); - sql.append(" DET_DIAGRAMA_AUTOBUS DD "); - sql.append(" WHERE "); - sql.append(" "); - sql.append(" CR.FECCORRIDA = CT.FECCORRIDA "); - sql.append(" AND CR.CORRIDA_ID = CT.CORRIDA_ID "); - sql.append(" AND CT.TRAMO_ID = TR.TRAMO_ID "); - sql.append(" AND CR.ROLOPERATIVO_ID = RO.ROLOPERATIVO_ID "); - sql.append(" AND RO.DIAGRAMAAUTOBUS_ID = DD.DIAGRAMAAUTOBUS_ID "); - sql.append(" AND DD.VENDIBLE = 1 "); - sql.append(" AND DD.ACTIVO = 1 "); - sql.append(" AND CT.ACTIVO = 1) TOTAL_ACENTOS, "); - sql.append(" "); - sql.append(" (SELECT COUNT((SELECT 1 "); - sql.append(" FROM BOLETO BO, "); - sql.append(" CORRIDA_TRAMO CTD, "); - sql.append(" CORRIDA_TRAMO CTO "); - sql.append(" WHERE BO.CORRIDA_ID = CR.CORRIDA_ID "); - sql.append(" AND BO.FECCORRIDA = CR.FECCORRIDA "); - sql.append(" AND BO.NUMASIENTO = DD.ASIENTO "); - sql.append(" AND BO.ORIGEN_ID = CTO.ORIGEN_ID "); - sql.append(" AND BO.DESTINO_ID = CTD.DESTINO_ID "); - sql.append(" AND CTD.CORRIDA_ID = CR.CORRIDA_ID "); - sql.append(" AND CTD.FECCORRIDA = CR.FECCORRIDA "); - sql.append(" AND CTO.CORRIDA_ID = CR.CORRIDA_ID "); - sql.append(" AND CTO.FECCORRIDA = CR.FECCORRIDA "); - sql.append(" AND CTO.ACTIVO = 1 "); - sql.append(" AND CTD.ACTIVO = 1 "); - sql.append(" AND CT.NUMSECUENCIA BETWEEN CTO.NUMSECUENCIA AND "); - sql.append(" CTD.NUMSECUENCIA "); - sql.append(" AND BO.ACTIVO = 1 "); - sql.append(" AND BO.INDSTATUSOPERACION = 'F' "); - sql.append(" AND (BO.MOTIVOCANCELACION_ID IS NULL OR "); - sql.append(" BO.MOTIVOCANCELACION_ID = 0))) "); - sql.append(" FROM CORRIDA_TRAMO CT, "); - sql.append(" TRAMO TR, "); - sql.append(" ROL_OPERATIVO RO, "); - sql.append(" DET_DIAGRAMA_AUTOBUS DD "); - sql.append(" WHERE CR.FECCORRIDA = CT.FECCORRIDA "); - sql.append(" AND CR.CORRIDA_ID = CT.CORRIDA_ID "); - sql.append(" AND CT.TRAMO_ID = TR.TRAMO_ID "); - sql.append(" AND CR.ROLOPERATIVO_ID = RO.ROLOPERATIVO_ID "); - sql.append(" AND RO.DIAGRAMAAUTOBUS_ID = DD.DIAGRAMAAUTOBUS_ID "); - sql.append(" AND DD.VENDIBLE = 1 "); - sql.append(" AND DD.ACTIVO = 1 "); - sql.append(" AND CT.ACTIVO = 1) TOTAL_OCUPADOS, "); - sql.append(" (SELECT COUNT((SELECT 1 "); - sql.append(" FROM BOLETO BO, "); - sql.append(" CORRIDA_TRAMO CTD, "); - sql.append(" CORRIDA_TRAMO CTO "); - sql.append(" WHERE BO.CORRIDA_ID = CR.CORRIDA_ID "); - sql.append(" AND BO.FECCORRIDA = CR.FECCORRIDA "); - sql.append(" AND BO.NUMASIENTO = DD.ASIENTO "); - sql.append(" AND BO.ORIGEN_ID = CTO.ORIGEN_ID "); - sql.append(" AND BO.DESTINO_ID = CTD.DESTINO_ID "); - sql.append(" AND CTD.CORRIDA_ID = CR.CORRIDA_ID "); - sql.append(" AND CTD.FECCORRIDA = CR.FECCORRIDA "); - sql.append(" AND CTO.CORRIDA_ID = CR.CORRIDA_ID "); - sql.append(" AND CTO.FECCORRIDA = CR.FECCORRIDA "); - sql.append(" AND BO.PRECIOBASE = 0 "); - sql.append(" AND CTO.ACTIVO = 1 "); - sql.append(" AND CTD.ACTIVO = 1 "); - sql.append(" AND CT.NUMSECUENCIA BETWEEN CTO.NUMSECUENCIA AND "); - sql.append(" CTD.NUMSECUENCIA "); - sql.append(" AND BO.ACTIVO = 1 "); - sql.append(" AND BO.INDSTATUSOPERACION = 'F' "); - sql.append(" AND (BO.MOTIVOCANCELACION_ID IS NULL OR "); - sql.append(" BO.MOTIVOCANCELACION_ID = 0))) "); - sql.append(" FROM CORRIDA_TRAMO CT, "); - sql.append(" TRAMO TR, "); - sql.append(" ROL_OPERATIVO RO, "); - sql.append(" DET_DIAGRAMA_AUTOBUS DD "); - sql.append(" WHERE CR.FECCORRIDA = CT.FECCORRIDA "); - sql.append(" AND CR.CORRIDA_ID = CT.CORRIDA_ID "); - sql.append(" AND CT.TRAMO_ID = TR.TRAMO_ID "); - sql.append(" AND CR.ROLOPERATIVO_ID = RO.ROLOPERATIVO_ID "); - sql.append(" AND RO.DIAGRAMAAUTOBUS_ID = DD.DIAGRAMAAUTOBUS_ID "); - sql.append(" AND DD.VENDIBLE = 1 "); - sql.append(" AND DD.ACTIVO = 1 "); - sql.append(" AND CT.ACTIVO = 1) TOTAL_OCUPADOS_GRATUIDADE, "); - sql.append(" "); - sql.append(" (SELECT COUNT((SELECT 1 "); - sql.append(" FROM ASIENTO_EXCLUSIVO AE, "); - sql.append(" CORRIDA_TRAMO CTD, "); - sql.append(" CORRIDA_TRAMO CTO "); - sql.append(" WHERE AE.CORRIDA_ID = CR.CORRIDA_ID "); - sql.append(" AND AE.FECCORRIDA = CR.FECCORRIDA "); - sql.append(" AND AE.NUMASIENTO = DD.ASIENTO "); - sql.append(" AND AE.PARADA_ID = CTO.ORIGEN_ID "); - sql.append(" AND NVL(AE.DESTINO_ID, CR.DESTINO_ID) = "); - sql.append(" CTD.DESTINO_ID "); - sql.append(" AND CTD.CORRIDA_ID = CR.CORRIDA_ID "); - sql.append(" AND CTD.FECCORRIDA = CR.FECCORRIDA "); - sql.append(" AND CTO.CORRIDA_ID = CR.CORRIDA_ID "); - sql.append(" AND CTO.FECCORRIDA = CR.FECCORRIDA "); - sql.append(" AND CTO.ACTIVO = 1 "); - sql.append(" AND CTD.ACTIVO = 1 "); - sql.append(" AND CT.NUMSECUENCIA BETWEEN CTO.NUMSECUENCIA AND "); - sql.append(" CTD.NUMSECUENCIA "); - sql.append(" AND AE.ACTIVO = 1)) "); - sql.append(" FROM CORRIDA_TRAMO CT, "); - sql.append(" TRAMO TR, "); - sql.append(" ROL_OPERATIVO RO, "); - sql.append(" DET_DIAGRAMA_AUTOBUS DD "); - sql.append(" WHERE CR.FECCORRIDA = CT.FECCORRIDA "); - sql.append(" AND CR.CORRIDA_ID = CT.CORRIDA_ID "); - sql.append(" AND CT.TRAMO_ID = TR.TRAMO_ID "); - sql.append(" AND CR.ROLOPERATIVO_ID = RO.ROLOPERATIVO_ID "); - sql.append(" AND RO.DIAGRAMAAUTOBUS_ID = DD.DIAGRAMAAUTOBUS_ID "); - sql.append(" AND DD.VENDIBLE = 1 "); - sql.append(" AND DD.ACTIVO = 1 "); - sql.append(" AND CT.ACTIVO = 1) TOTAL_OCUPADOS_OPERACAO "); - sql.append(" FROM CORRIDA CR "); - sql.append(" WHERE CR.CORRIDA_ID = ? "); - sql.append(" AND CR.FECCORRIDA = ? ) TAB "); + sql.append("SELECT "); + sql.append(" SUM(TRECHOS_VG.PRECIOPAGADO) AS TOTAL_ARRECADADO, "); + sql.append(" COUNT(TRECHOS_VG.BOLETO_ID) AS TOTAL_ASIENTOS, "); + sql.append(" TRECHOS_VG.ORIGEN_ID AS ORIGEN_ID, "); + sql.append(" TRECHOS_VG.DESTINO_ID AS DESTINO_ID, "); + sql.append(" TRECHOS_VG.GRATUITO AS GRATUITO, "); + sql.append(" TRECHOS_VG.VENDIDOS AS VENDIDOS, "); + sql.append(" TRECHOS_VG.CANTKMREAL AS KM_NOMINAL, "); + sql.append(" TRECHOS_VG.DESCROLOPERATIVO AS TOTAL_OCUPADOS, "); + sql.append(" TRECHOS_VG.KM_CORRIDA AS KM_CORRIDA, "); + sql.append(" TRECHOS_VG.TARIFA AS TARIFA "); + sql.append("FROM "); + sql.append(" ( "); + sql.append(" SELECT "); + sql.append(" BO.PRECIOPAGADO, "); + sql.append(" BO.BOLETO_ID AS BOLETO_ID, "); + sql.append(" BO.ORIGEN_ID AS ORIGEN_ID, "); + sql.append(" BO.DESTINO_ID AS DESTINO_ID, "); + sql.append(" CASE "); + sql.append(" WHEN BO.PRECIOBASE = 0 "); + sql.append(" THEN 1 "); + sql.append(" ELSE 0 "); + sql.append(" END AS GRATUITO, "); + sql.append(" CASE "); + sql.append(" WHEN BO.PRECIOBASE > 0 "); + sql.append(" THEN 1 "); + sql.append(" ELSE 0 "); + sql.append(" END AS VENDIDOS, "); + sql.append(" TR.CANTKMREAL, "); + sql.append(" RO.DESCROLOPERATIVO, "); + sql.append(" ( "); + sql.append(" SELECT "); + sql.append(" SUM(CANTKMREAL) "); + sql.append(" FROM "); + sql.append(" CORRIDA_TRAMO BO "); + sql.append(" INNER JOIN "); + sql.append(" TRAMO T "); + sql.append(" ON "); + sql.append(" T.TRAMO_ID = BO.TRAMO_ID "); + sql.append(" WHERE "); + sql.append(" BO.CORRIDA_ID = :CORRIDA_ID "); + sql.append(" AND BO.FECCORRIDA = :FECCORRIDA "); + sql.append(" AND BO.ACTIVO = 1) AS KM_CORRIDA, "); + sql.append(" ( "); + sql.append(" SELECT "); + sql.append(" TF.PRECIO "); + sql.append(" FROM "); + sql.append(" CORRIDA CR "); + sql.append(" INNER JOIN "); + sql.append(" TRAMO TR "); + sql.append(" ON "); + sql.append(" TR.ORIGEN_ID = CR.ORIGEN_ID "); + sql.append(" AND TR.DESTINO_ID = CR.DESTINO_ID "); + sql.append(" INNER JOIN "); + sql.append(" TARIFA TF "); + sql.append(" ON "); + sql.append(" TF.CLASESERVICIO_ID = CR.CLASESERVICIO_ID "); + sql.append(" AND TF.MARCA_ID = CR.MARCA_ID "); + sql.append(" AND TF.RUTA_ID = CR.RUTA_ID "); + sql.append(" AND TF.TRAMO_ID = TR.TRAMO_ID "); + sql.append(" INNER JOIN "); + sql.append(" VIGENCIA_TARIFA VT "); + sql.append(" ON "); + sql.append(" TF.VIGENCIATARIFA_ID = VT.VIGENCIATARIFA_ID "); + sql.append(" WHERE "); + sql.append(" CR.CORRIDA_ID = :CORRIDA_ID "); + sql.append(" AND CR.FECCORRIDA = :FECCORRIDA "); + sql.append(" AND TF.STATUSTARIFA = 'A' "); + sql.append(" AND TF.ACTIVO = 1 "); + sql.append(" AND VT.ACTIVO = 1 "); + sql.append(" AND CR.FECCORRIDA BETWEEN VT.FECINICIOVIGENCIA AND VT.FECFINVIGENCIA) AS TARIFA "); + sql.append(" FROM "); + sql.append(" BOLETO BO "); + sql.append(" INNER JOIN "); + sql.append(" CORRIDA CR "); + sql.append(" ON "); + sql.append(" BO.CORRIDA_ID = CR.CORRIDA_ID "); + sql.append(" AND BO.FECCORRIDA = CR.FECCORRIDA "); + sql.append(" INNER JOIN "); + sql.append(" CORRIDA_TRAMO CT "); + sql.append(" ON "); + sql.append(" BO.ORIGEN_ID = CT.ORIGEN_ID "); + sql.append(" AND BO.DESTINO_ID = CT.DESTINO_ID "); + sql.append(" INNER JOIN "); + sql.append(" TRAMO TR "); + sql.append(" ON "); + sql.append(" TR.TRAMO_ID = CT.TRAMO_ID "); + sql.append(" INNER JOIN "); + sql.append(" TARIFA TF "); + sql.append(" ON "); + sql.append(" TF.CLASESERVICIO_ID = CR.CLASESERVICIO_ID "); + sql.append(" AND TF.MARCA_ID = CR.MARCA_ID "); + sql.append(" AND TF.RUTA_ID = CR.RUTA_ID "); + sql.append(" INNER JOIN "); + sql.append(" VIGENCIA_TARIFA VT "); + sql.append(" ON "); + sql.append(" TF.VIGENCIATARIFA_ID = VT.VIGENCIATARIFA_ID "); + sql.append(" INNER JOIN "); + sql.append(" ROL_OPERATIVO RO "); + sql.append(" ON "); + sql.append(" RO.ROLOPERATIVO_ID = CR.ROLOPERATIVO_ID, "); + sql.append(" DET_DIAGRAMA_AUTOBUS DD "); + sql.append(" WHERE "); + sql.append(" BO.CORRIDA_ID = :CORRIDA_ID "); + sql.append(" AND BO.FECCORRIDA = :FECCORRIDA "); + sql.append(" AND CR.ACTIVO = 1 "); + sql.append(" AND CT.ACTIVO = 1 "); + sql.append(" AND BO.ACTIVO = 1 "); + sql.append(" AND BO.INDSTATUSOPERACION = 'F' "); + sql.append(" AND BO.MOTIVOCANCELACION_ID IS NULL "); + sql.append(" AND TF.TRAMO_ID = TR.TRAMO_ID "); + sql.append(" AND TF.STATUSTARIFA = 'A' "); + sql.append(" AND TF.ACTIVO = 1 "); + sql.append(" AND VT.ACTIVO = 1 "); + sql.append(" AND CR.FECCORRIDA BETWEEN VT.FECINICIOVIGENCIA AND VT.FECFINVIGENCIA "); + sql.append(" AND RO.DIAGRAMAAUTOBUS_ID = DD.DIAGRAMAAUTOBUS_ID "); + sql.append(" AND DD.VENDIBLE = 1 "); + sql.append(" AND DD.ACTIVO = 1 "); + sql.append(" GROUP BY "); + sql.append(" BO.BOLETO_ID, "); + sql.append(" BO.ORIGEN_ID, "); + sql.append(" BO.DESTINO_ID, "); + sql.append(" ( "); + sql.append(" CASE "); + sql.append(" WHEN BO.PRECIOBASE = 0 "); + sql.append(" THEN 1 "); + sql.append(" ELSE 0 "); + sql.append(" END), "); + sql.append(" ( "); + sql.append(" CASE "); + sql.append(" WHEN BO.PRECIOBASE > 0 "); + sql.append(" THEN 1 "); + sql.append(" ELSE 0 "); + sql.append(" END), "); + sql.append(" TR.CANTKMREAL, "); + sql.append(" BO.PRECIOPAGADO, "); + sql.append(" TF.PRECIO, "); + sql.append(" RO.DESCROLOPERATIVO "); + sql.append(" ORDER BY "); + sql.append(" BO.ORIGEN_ID, "); + sql.append(" BO.DESTINO_ID ) TRECHOS_VG "); + sql.append("GROUP BY "); + sql.append(" TRECHOS_VG.ORIGEN_ID, "); + sql.append(" TRECHOS_VG.DESTINO_ID, "); + sql.append(" TRECHOS_VG.GRATUITO, "); + sql.append(" TRECHOS_VG.VENDIDOS, "); + sql.append(" TRECHOS_VG.CANTKMREAL, "); + sql.append(" TRECHOS_VG.DESCROLOPERATIVO, "); + sql.append(" TRECHOS_VG.KM_CORRIDA, "); + sql.append(" TRECHOS_VG.TARIFA"); return sql.toString(); } diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAproveitamento.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAproveitamento.jasper index da359b8235fea40fe91e13812c774d20c6a5c105..214e3b63490cc6a214128af8e006d5f7ca738383 100644 GIT binary patch delta 4948 zcmZ{n4Nz3q702)0-LlO-NOTqzv@A;nMTiP0%t`@cJ86uGqu|ykqAQ|FB^y{ls9>Zb zN;H0DOpx@=+(#)R;7FhIV?-Irrgv*%zJn z-*fhydw=Jgci%4i`62h_KKIa@^JNlDdnhZ}2$q)z8(N~#;OrpWteRr@f?51VX%G|A z)26L$SiiV7+Oj5h3g#B4`1pVPzw^gQZ*FXz=#aPJ;=Fs|fdwbLGe-P;$XR$IrGotp znDrj489r68_B7HtX2LZYtG||IkH<)YZ z!L5Dc<%3XAnGV0IIuB*xyIihn9{a*-wJ;S@!qbgLL3^p1g}%W9K*=~ns>wG&cm z>c_U>T@W}s*Jd)&+6KF8w#h-5vp)cZ%jX(#e3N8|N@L%lG!D?Mw&vJM(}9FrJp^yp zPlenSYmHYCM>0rbX8-HPtfM$)HXX*Sb21`JjW=;~lHX7->^thI}$cLlwd&=vjEaxk=2TyK(XRzW9Qb2c_{27K9@IKn1byP!I>Opd4$C ztsoAxG>I9@9@dyt*s|&axdmPcJPg06%Tw0%x>HJfR?n6laBcPbxgXrA_a<>&f90yN zvg^%C#Zh&pv*FfiKm2n|vHS=oJzC#>fA#P>$W`d=_ihJ|$D>EPCtb8u+BSNyfsy7JrES#Bp&>ItSL`&iXFt0CaZv z)Ai!7o<;Xqbrug8Ifx=jMN|^|cn*tjGQ73^ALNA&kb30D0a$~9Qnm<_j|$b)BNSy0h1nO?ga za_IGHLlM1ZHct26#7$hcp+A-hR~xhODs;UzF?PZ|_7rRtPO(_ABh4UyE) z;MjKWR(11KS#~u{nV3B-31< zChG}zdHr(T=j@h%iEKwC$p%8Q?|`%hY)B3e(lixv10lcD${mh}p;koJmQPG}Z$~6a zHzEV^mT>0UMG7gfvZsyh6z99p>|~UlT|%<&fV2i|NDdIvG!^n)LN45F zcKOcc5#-+yN%A2f*>^x%12!ZF2x*!M`5_|XZ*}^ln(Sa#9=N)4lh}tFJN=n#a=q5F^ctw_ z@u%yYuRg>c7msDz5>0%4Tfp0b-w_@UT-yF^!;dD(Xu`5jST-H7ItQ^jCjmQ}u)pkH zp|M3z*|9;yk^~6LK4IB(!0H^t>YM~@fUvpSmul>h?RM-`#FFF_mVLsq>44Qah}Ag> z*nGn7-+`Z$Z||A_o~JWxLoP)uNrYL>SLtqBciOvs0I?+Z z6PA6#vgv@;If&Ic3E2Ay8{M^=S!VLOkw?-+JobslrUOssAW!Ec@Ve-Sei`KJ$!-Dc5N~A<0!j7|kbMHO z=>XI@3YetL&h_J5o;@_o_5+V;$nXIZ@)LxR93cq%1Yy$wqH_?UO@bUjNc^*dEmBT{ z`rZQn%%WML(2Q9Hp~8ZaNT_7yjKbph$=<)*Gy14-3AYe(Sk9j?pkBX#zGIUjGN{Z7 zb=9b=U0uEEI-{=F)OAf=e^b}Td1plVOJd-nI5Gd2JgmGqrbK;x|#vt?fx8x!yQ(6K`k59;!>38xki!|jdpv5o0K?^h7$3%L(^>~F`qAGh< zP883n>V78Yh~uil7i2`7R8Y*I z%Nyc~{8(I-pNMPnOYuh`#d)Y0m@02T=|G{p3DJQmatNLo$a9(-ob3H>e9X_&vK)i= HT`m4UPQ7jm delta 5199 zcmZvgeNfd^8pqGM7a@fy=qiT7Rr9LIW?ilZYF!cfqarm$65moI#C*ehK@@>_@dY&V z1s+Syn(R#woU(5AHcq(fHe*&!Ou1V-(^@t)lg@5!vs<(6j?;NwF7o3ZW`588p8I`% z=kuI%e&_Imrf1y$IpjWhem2}+7|?e{%I6H%dNe#gCjciOJfZ(!R5t9LdqU?#?wU7Q z`wGLV!9}4URAsa-SL$qW$o%vfg%B?FJiv*ZvpP11jkOlTbVVIkL^~~jHW&&O?eRJv z66as^Ek+WBB1;MEQVA?ACG?yVY{U;cEP)R%)O7%0FUG;rTT7ZwbaSCu;Hjv`Wn4tsjnS-ps?Qp zWfx~-DoYEczu} z_a}r>IAejbiz6;zX`%Et927C4JK`{;gfe`H>$$!zuY_nFlp3OFFFsdQsiwg<4+SD0 zt=Ou4pI|x${Z~tM?9y|>(o$W2!%-a@k<+Eaw62Bsy|chumK9e!OJzW~EDctcf%*Es zWqEoNOk4S#_wUzhzDyX`MXnqx`~vPSFVbJbzVe);AFd}}f!^}o#(!!}=Zq?*`&6!( z5Ob4Sz(C%~3*6YM;;TzWXZ&`Wv11Z(_gkI-tgxP&=@LdZ*to&~I}3TL=1l zfb!l32TKg- zZScf%50Jmklg1Kr90#-eM%r(y)~@npAdW(k1;;M#w_(nck8jB!o+KGwyvW7tN`jf# zF@^D#j@h-0gAM9er0F+V(q*tN+C|9-7}xipxf7ve{a=!AH{ZIBU^s{2TeIIr!P1H> zbMhyLMngx%1W`X$j1%?Mh8rNbfip5;|Aq+(m$6sZRl4`94FR}NF$VmhJLt11G>JYh zgr?Ky#Bi>@0*{1?bRlF{j(`i{@yXG-nn}MU+_NCA@;0((4z%V%vsfeGT;+Yi5(9Qq z;Em#3eReIg#s$;Vwfyg;L9^v1{S8L41+; zG>H7E`4(MDNPqRigd7RSt23g=N<>nSr?mfj2^*CbB;Q6zk%$zD$Pgi4-V_~W+GZSO zO06&0ghUDrmO-*>A+kY4kvPec9y7@egiowlAd_5Q=o)Mu_toqQno7Na3u7 z$gYLR1`$OfQ6v)267l{<-X|mAkBw2{XGo;bYaz00A+kY4kw_GY#9ku4+Y}w+jOHlu z8zfS=WFfL^A+kY4kw_GY#7jtw7SR8IpSStQ%Yyvv znMuE}kLCOuM%N98Ydda8%EL2SCF7TT@V>Vl3;%Mve}?-SeoNsuOXciZDrbW#7ilU_ zlk}Jk{u@u+j)n4Y+}7evSdT@y{}1z8ZcR)yGLFJv$bQl@ircYR&Pjw9_Iu(v2mZCk zlP2i{v2lY5du!`5gKch|>OkItND8Th zEMd8A!LmVEk%*P_80=WW{%=?G1YP%p6B|G*1wUcAZNaiZSdoa8^cbw4u%)|8Wwe)e zJF$6)r4S@6w=GyU2rCk?k{*K%687SgWr8i<1M7vUW_+}eJCQ`8g-G1C zkk~-dAd>LNQj0N&S?1(^Pp%zogzZmArd1<{e}8eX>}St?3$#%gb%v1%^xzqc1_fsFs3`pHeZot-HXShS|)O%3P5&3 JI$ZfU^>^H>r%M0; diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAproveitamento.jrxml b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAproveitamento.jrxml index cebfabbd1..d882edfdf 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAproveitamento.jrxml +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAproveitamento.jrxml @@ -340,7 +340,11 @@ - + diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/AproveitamentoBean.java b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/AproveitamentoBean.java new file mode 100644 index 000000000..251666aa9 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/AproveitamentoBean.java @@ -0,0 +1,98 @@ +package com.rjconsultores.ventaboletos.relatorios.utilitarios; + +import java.math.BigDecimal; + +public class AproveitamentoBean { + + private BigDecimal trechoArrecadado; + private BigDecimal totalAsientos; + private Integer origenId; + private Integer destinoId; + private Boolean gratuito; + private Boolean vendidos; + private BigDecimal kmNominal; + private BigDecimal kmCorrida; + private BigDecimal totalOcupados; + private BigDecimal tarifa; + + public BigDecimal getTotalAsientos() { + return totalAsientos; + } + + public void setTotalAsientos(BigDecimal totalAsientos) { + this.totalAsientos = totalAsientos; + } + + public Integer getOrigenId() { + return origenId; + } + + public void setOrigenId(Integer origenId) { + this.origenId = origenId; + } + + public Integer getDestinoId() { + return destinoId; + } + + public void setDestinoId(Integer destinoId) { + this.destinoId = destinoId; + } + + public Boolean getGratuito() { + return gratuito; + } + + public void setGratuito(Boolean gratuito) { + this.gratuito = gratuito; + } + + public Boolean getVendidos() { + return vendidos; + } + + public void setVendidos(Boolean vendidos) { + this.vendidos = vendidos; + } + + public BigDecimal getKmNominal() { + return kmNominal; + } + + public void setKmNominal(BigDecimal kmNominal) { + this.kmNominal = kmNominal; + } + + public BigDecimal getTotalOcupados() { + return totalOcupados; + } + + public void setTotalOcupados(BigDecimal totalOcupados) { + this.totalOcupados = totalOcupados; + } + + public BigDecimal getTrechoArrecadado() { + return trechoArrecadado; + } + + public void setTrechoArrecadado(BigDecimal trechoArrecadado) { + this.trechoArrecadado = trechoArrecadado; + } + + public BigDecimal getKmCorrida() { + return kmCorrida; + } + + public void setKmCorrida(BigDecimal kmCorrida) { + this.kmCorrida = kmCorrida; + } + + public BigDecimal getTarifa() { + return tarifa; + } + + public void setTarifa(BigDecimal tarifa) { + this.tarifa = tarifa; + } + +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioResumoLinhasController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioResumoLinhasController.java index 4cc4d493a..c409fd89e 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioResumoLinhasController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioResumoLinhasController.java @@ -41,6 +41,8 @@ import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer; @Scope("prototype") public class RelatorioResumoLinhasController extends MyGenericForwardComposer { + private static final long serialVersionUID = 1L; + @Autowired private DataSource dataSourceRead; @Autowired @@ -69,6 +71,7 @@ public class RelatorioResumoLinhasController extends MyGenericForwardComposer { * @throws Exception * */ + @SuppressWarnings({ "rawtypes", "unchecked" }) private void executarRelatorio() throws Exception { Relatorio relatorio; @@ -86,12 +89,11 @@ public class RelatorioResumoLinhasController extends MyGenericForwardComposer { if (itemRuta != null) { Ruta ruta = (Ruta) itemRuta.getValue(); parametros.put("RUTA_ID", ruta.getRutaId()); - filtro.append(ruta.getDescruta()+";"); + filtro.append(ruta.getDescruta() + ";"); } else filtro.append("Todas;"); - - + Comboitem itemGrupoRuta = cmbGrupoRuta.getSelectedItem(); filtro.append("Grupo de Linha: "); @@ -102,7 +104,6 @@ public class RelatorioResumoLinhasController extends MyGenericForwardComposer { } else filtro.append("Todos;"); - Comboitem itemEmpresa = cmbEmpresa.getSelectedItem(); if (itemEmpresa != null) { @@ -110,7 +111,7 @@ public class RelatorioResumoLinhasController extends MyGenericForwardComposer { parametros.put("EMPRESA_ID", empresa.getEmpresaId()); parametros.put("EMPRESA", empresa.getNombempresa()); } - + parametros.put("FILTROS", filtro.toString()); if (rd1.isChecked()) diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/CurrencyUtil.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/CurrencyUtil.java index 7b2762fe6..92fa7668b 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/utilerias/CurrencyUtil.java +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/CurrencyUtil.java @@ -3,6 +3,7 @@ */ package com.rjconsultores.ventaboletos.web.utilerias; +import java.math.BigDecimal; import java.text.NumberFormat; import java.util.Locale; @@ -13,19 +14,25 @@ import java.util.Locale; public final class CurrencyUtil { public static String getCurrencyStrFromStr(String value, Locale locale) { - - NumberFormat moedaFormat = - NumberFormat.getCurrencyInstance(locale); + NumberFormat moedaFormat = NumberFormat.getCurrencyInstance(locale); return moedaFormat.format(Double.parseDouble(value)); - } - - public static String getPercentStrFromStr(String value, Locale locale) { + public static String getCurrencyBigDecimalFromStr(BigDecimal value, Locale locale) { + NumberFormat moedaFormat = NumberFormat.getCurrencyInstance(locale); + return moedaFormat.format(value.doubleValue()); + } + + public static String getPercentStrFromStr(String value, Locale locale) { NumberFormat percentFormat = NumberFormat.getPercentInstance(locale); percentFormat.setMinimumFractionDigits(2); - return percentFormat.format(Double.parseDouble(value)); + } + + public static String getPercentBigDecimalFromStr(BigDecimal value, Locale locale) { + NumberFormat percentFormat = NumberFormat.getPercentInstance(locale); + percentFormat.setMinimumFractionDigits(2); + return percentFormat.format(value.doubleValue()); } diff --git a/web/gui/relatorios/filtroRelatorioAproveitamento.zul b/web/gui/relatorios/filtroRelatorioAproveitamento.zul index 566abde40..5f1978204 100644 --- a/web/gui/relatorios/filtroRelatorioAproveitamento.zul +++ b/web/gui/relatorios/filtroRelatorioAproveitamento.zul @@ -7,7 +7,7 @@ diff --git a/web/gui/relatorios/filtroRelatorioResumoLinhas.zul b/web/gui/relatorios/filtroRelatorioResumoLinhas.zul index 26feb651a..01d86654a 100644 --- a/web/gui/relatorios/filtroRelatorioResumoLinhas.zul +++ b/web/gui/relatorios/filtroRelatorioResumoLinhas.zul @@ -7,7 +7,7 @@