Erro - Relatório de Aproveitamento (fixes bug #6206)

Tempo: 32 horas

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@43384 d1611594-4594-4d17-8e1d-87c2c4800839
master
julio 2015-04-24 14:13:44 +00:00
parent b32bb7969c
commit 4ea9f5e5c5
8 changed files with 345 additions and 237 deletions

View File

@ -4,8 +4,8 @@
package com.rjconsultores.ventaboletos.relatorios.impl; package com.rjconsultores.ventaboletos.relatorios.impl;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.sql.Connection; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -14,6 +14,7 @@ import java.util.Map;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; 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.DataSource;
import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio;
import com.rjconsultores.ventaboletos.relatorios.utilitarios.RelatorioAproveitamentoBean; import com.rjconsultores.ventaboletos.relatorios.utilitarios.RelatorioAproveitamentoBean;
@ -36,32 +37,83 @@ public class RelatorioAproveitamento extends Relatorio {
public void initDados() throws Exception { public void initDados() throws Exception {
Connection conexao = this.relatorio.getConexao(); Connection conexao = this.relatorio.getConexao();
Map<String, Object> parametros = this.relatorio.getParametros(); Map<String, Object> parametros = this.relatorio.getParametros();
String sql = getSql(); List<AproveitamentoBean> aproveitamentoList = new ArrayList<AproveitamentoBean>();
PreparedStatement stmt = null; NamedParameterStatement stmt = new NamedParameterStatement(conexao, getSql());
ResultSet rset = null; stmt.setInt("CORRIDA_ID", Integer.valueOf((String) parametros.get("CORRIDA_ID")));
stmt = conexao.prepareStatement(sql); stmt.setDate("FECCORRIDA", (java.sql.Date) parametros.get("FECCORRIDA"));
stmt.setInt(1, Integer.valueOf((String) parametros.get("CORRIDA_ID"))); ResultSet rset = stmt.executeQuery();
stmt.setDate(2, (java.sql.Date) parametros.get("FECCORRIDA")); while (rset.next()) {
rset = stmt.executeQuery();
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)); aproveitamentoList.add(ab);
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));
} }
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()); NamedParameterStatement nps = new NamedParameterStatement(conexao, getSqlDetail());
nps.setInt("CORRIDA_ID", Integer.valueOf((String) parametros.get("CORRIDA_ID"))); nps.setInt("CORRIDA_ID", Integer.valueOf((String) parametros.get("CORRIDA_ID")));
@ -200,210 +252,156 @@ public class RelatorioAproveitamento extends Relatorio {
private String getSql() { private String getSql() {
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
sql.append("SELECT ");
sql.append(" SELECT round(NVL(TAB.TOTAL_ARRECADADO, 0), 2) TOTAL_ARRECADADO, "); sql.append(" SUM(TRECHOS_VG.PRECIOPAGADO) AS TOTAL_ARRECADADO, ");
sql.append(" round(NVL(TAB.TOTAL_ARRECADADO / TAB.KM_NOMINAL, 0), 2) ARRECADADO_KM, "); sql.append(" COUNT(TRECHOS_VG.BOLETO_ID) AS TOTAL_ASIENTOS, ");
sql.append(" round(NVL(TAB.TOTAL_NOMINAL, 0), 2) TOTAL_NOMINAL, "); sql.append(" TRECHOS_VG.ORIGEN_ID AS ORIGEN_ID, ");
sql.append(" NVL(round(TAB.TOTAL_NOMINAL / TAB.KM_NOMINAL, 2), 0) NOMINAL_KM, "); sql.append(" TRECHOS_VG.DESTINO_ID AS DESTINO_ID, ");
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(" TRECHOS_VG.GRATUITO AS GRATUITO, ");
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(" TRECHOS_VG.VENDIDOS AS VENDIDOS, ");
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(" TRECHOS_VG.CANTKMREAL AS KM_NOMINAL, ");
sql.append(" FROM (SELECT (SELECT SUM(BO.PRECIOPAGADO) "); sql.append(" TRECHOS_VG.DESCROLOPERATIVO AS TOTAL_OCUPADOS, ");
sql.append(" FROM BOLETO BO "); sql.append(" TRECHOS_VG.KM_CORRIDA AS KM_CORRIDA, ");
sql.append(" WHERE BO.CORRIDA_ID = CR.CORRIDA_ID "); sql.append(" TRECHOS_VG.TARIFA AS TARIFA ");
sql.append(" AND BO.FECCORRIDA = CR.FECCORRIDA "); sql.append("FROM ");
sql.append(" AND BO.ACTIVO = 1 "); sql.append(" ( ");
sql.append(" AND BO.INDSTATUSOPERACION = 'F' "); sql.append(" SELECT ");
sql.append(" AND (BO.MOTIVOCANCELACION_ID IS NULL OR "); sql.append(" BO.PRECIOPAGADO, ");
sql.append(" BO.MOTIVOCANCELACION_ID = 0)) TOTAL_ARRECADADO, "); sql.append(" BO.BOLETO_ID AS BOLETO_ID, ");
sql.append(" "); sql.append(" BO.ORIGEN_ID AS ORIGEN_ID, ");
sql.append(" (SELECT SUM(TR.CANTKMREAL) "); sql.append(" BO.DESTINO_ID AS DESTINO_ID, ");
sql.append(" FROM CORRIDA_TRAMO CT, "); sql.append(" CASE ");
sql.append(" TRAMO TR, "); sql.append(" WHEN BO.PRECIOBASE = 0 ");
sql.append(" ROL_OPERATIVO RO, "); sql.append(" THEN 1 ");
sql.append(" DIAGRAMA_AUTOBUS DA "); sql.append(" ELSE 0 ");
sql.append(" WHERE CT.CORRIDA_ID = CR.CORRIDA_ID "); sql.append(" END AS GRATUITO, ");
sql.append(" AND CT.FECCORRIDA = CR.FECCORRIDA "); sql.append(" CASE ");
sql.append(" AND RO.ROLOPERATIVO_ID = CR.ROLOPERATIVO_ID "); sql.append(" WHEN BO.PRECIOBASE > 0 ");
sql.append(" AND DA.DIAGRAMAAUTOBUS_ID = RO.DIAGRAMAAUTOBUS_ID "); sql.append(" THEN 1 ");
sql.append(" AND TR.TRAMO_ID = CT.TRAMO_ID "); sql.append(" ELSE 0 ");
sql.append(" AND TR.ACTIVO = 1 "); sql.append(" END AS VENDIDOS, ");
sql.append(" AND CT.ACTIVO = 1) KM_NOMINAL, "); sql.append(" TR.CANTKMREAL, ");
sql.append(" "); sql.append(" RO.DESCROLOPERATIVO, ");
sql.append(" (SELECT SUM((SELECT TR.CANTKMREAL "); sql.append(" ( ");
sql.append(" FROM BOLETO BO, "); sql.append(" SELECT ");
sql.append(" CORRIDA_TRAMO CTD, "); sql.append(" SUM(CANTKMREAL) ");
sql.append(" CORRIDA_TRAMO CTO "); sql.append(" FROM ");
sql.append(" WHERE BO.CORRIDA_ID = CR.CORRIDA_ID "); sql.append(" CORRIDA_TRAMO BO ");
sql.append(" AND BO.FECCORRIDA = CR.FECCORRIDA "); sql.append(" INNER JOIN ");
sql.append(" AND BO.NUMASIENTO = DD.ASIENTO "); sql.append(" TRAMO T ");
sql.append(" AND BO.ORIGEN_ID = CTO.ORIGEN_ID "); sql.append(" ON ");
sql.append(" AND BO.DESTINO_ID = CTD.DESTINO_ID "); sql.append(" T.TRAMO_ID = BO.TRAMO_ID ");
sql.append(" AND CTD.CORRIDA_ID = CR.CORRIDA_ID "); sql.append(" WHERE ");
sql.append(" AND CTD.FECCORRIDA = CR.FECCORRIDA "); sql.append(" BO.CORRIDA_ID = :CORRIDA_ID ");
sql.append(" AND CTO.CORRIDA_ID = CR.CORRIDA_ID "); sql.append(" AND BO.FECCORRIDA = :FECCORRIDA ");
sql.append(" AND CTO.FECCORRIDA = CR.FECCORRIDA "); sql.append(" AND BO.ACTIVO = 1) AS KM_CORRIDA, ");
sql.append(" AND CTO.ACTIVO = 1 "); sql.append(" ( ");
sql.append(" AND CTD.ACTIVO = 1 "); sql.append(" SELECT ");
sql.append(" AND CT.NUMSECUENCIA BETWEEN CTO.NUMSECUENCIA AND "); sql.append(" TF.PRECIO ");
sql.append(" CTD.NUMSECUENCIA "); sql.append(" FROM ");
sql.append(" AND BO.ACTIVO = 1 "); sql.append(" CORRIDA CR ");
sql.append(" AND BO.INDSTATUSOPERACION = 'F' "); sql.append(" INNER JOIN ");
sql.append(" AND (BO.MOTIVOCANCELACION_ID IS NULL OR "); sql.append(" TRAMO TR ");
sql.append(" BO.MOTIVOCANCELACION_ID = 0))) "); sql.append(" ON ");
sql.append(" FROM CORRIDA_TRAMO CT, "); sql.append(" TR.ORIGEN_ID = CR.ORIGEN_ID ");
sql.append(" TRAMO TR, "); sql.append(" AND TR.DESTINO_ID = CR.DESTINO_ID ");
sql.append(" ROL_OPERATIVO RO, "); sql.append(" INNER JOIN ");
sql.append(" DET_DIAGRAMA_AUTOBUS DD "); sql.append(" TARIFA TF ");
sql.append(" WHERE CR.FECCORRIDA = CT.FECCORRIDA "); sql.append(" ON ");
sql.append(" AND CR.CORRIDA_ID = CT.CORRIDA_ID "); sql.append(" TF.CLASESERVICIO_ID = CR.CLASESERVICIO_ID ");
sql.append(" AND CT.TRAMO_ID = TR.TRAMO_ID "); sql.append(" AND TF.MARCA_ID = CR.MARCA_ID ");
sql.append(" AND CR.ROLOPERATIVO_ID = RO.ROLOPERATIVO_ID "); sql.append(" AND TF.RUTA_ID = CR.RUTA_ID ");
sql.append(" AND RO.DIAGRAMAAUTOBUS_ID = DD.DIAGRAMAAUTOBUS_ID "); sql.append(" AND TF.TRAMO_ID = TR.TRAMO_ID ");
sql.append(" AND DD.VENDIBLE = 1 "); sql.append(" INNER JOIN ");
sql.append(" AND CT.ACTIVO = 1) KM_OCUPADA, "); sql.append(" VIGENCIA_TARIFA VT ");
sql.append(" "); sql.append(" ON ");
sql.append(" (SELECT SUM(TF.PRECIO) "); sql.append(" TF.VIGENCIATARIFA_ID = VT.VIGENCIATARIFA_ID ");
sql.append(" FROM TRAMO TR, "); sql.append(" WHERE ");
sql.append(" ROL_OPERATIVO RO, "); sql.append(" CR.CORRIDA_ID = :CORRIDA_ID ");
sql.append(" DET_DIAGRAMA_AUTOBUS DD, "); sql.append(" AND CR.FECCORRIDA = :FECCORRIDA ");
sql.append(" TARIFA TF, "); sql.append(" AND TF.STATUSTARIFA = 'A' ");
sql.append(" VIGENCIA_TARIFA VT "); sql.append(" AND TF.ACTIVO = 1 ");
sql.append(" WHERE RO.ROLOPERATIVO_ID = CR.ROLOPERATIVO_ID "); sql.append(" AND VT.ACTIVO = 1 ");
sql.append(" AND RO.DIAGRAMAAUTOBUS_ID = DD.DIAGRAMAAUTOBUS_ID "); sql.append(" AND CR.FECCORRIDA BETWEEN VT.FECINICIOVIGENCIA AND VT.FECFINVIGENCIA) AS TARIFA ");
sql.append(" AND TF.CLASESERVICIO_ID = CR.CLASESERVICIO_ID "); sql.append(" FROM ");
sql.append(" AND DD.VENDIBLE = 1 "); sql.append(" BOLETO BO ");
sql.append(" AND DD.ACTIVO = 1 "); sql.append(" INNER JOIN ");
sql.append(" AND TR.ORIGEN_ID = CR.ORIGEN_ID "); sql.append(" CORRIDA CR ");
sql.append(" AND TR.DESTINO_ID = CR.DESTINO_ID "); sql.append(" ON ");
sql.append(" AND TF.MARCA_ID = CR.MARCA_ID "); sql.append(" BO.CORRIDA_ID = CR.CORRIDA_ID ");
sql.append(" AND TF.RUTA_ID = CR.RUTA_ID "); sql.append(" AND BO.FECCORRIDA = CR.FECCORRIDA ");
sql.append(" AND TF.TRAMO_ID = TR.TRAMO_ID "); sql.append(" INNER JOIN ");
sql.append(" AND TF.STATUSTARIFA = 'A' "); sql.append(" CORRIDA_TRAMO CT ");
sql.append(" AND TF.ACTIVO = 1 "); sql.append(" ON ");
sql.append(" AND TF.VIGENCIATARIFA_ID = VT.VIGENCIATARIFA_ID "); sql.append(" BO.ORIGEN_ID = CT.ORIGEN_ID ");
sql.append(" AND VT.ACTIVO = 1 "); sql.append(" AND BO.DESTINO_ID = CT.DESTINO_ID ");
sql.append(" AND CR.FECCORRIDA BETWEEN VT.FECINICIOVIGENCIA AND "); sql.append(" INNER JOIN ");
sql.append(" VT.FECFINVIGENCIA) TOTAL_NOMINAL, "); sql.append(" TRAMO TR ");
sql.append(" "); sql.append(" ON ");
sql.append(" (SELECT COUNT(1) "); sql.append(" TR.TRAMO_ID = CT.TRAMO_ID ");
sql.append(" FROM CORRIDA_TRAMO CT, "); sql.append(" INNER JOIN ");
sql.append(" TRAMO TR, "); sql.append(" TARIFA TF ");
sql.append(" ROL_OPERATIVO RO, "); sql.append(" ON ");
sql.append(" DET_DIAGRAMA_AUTOBUS DD "); sql.append(" TF.CLASESERVICIO_ID = CR.CLASESERVICIO_ID ");
sql.append(" WHERE "); sql.append(" AND TF.MARCA_ID = CR.MARCA_ID ");
sql.append(" "); sql.append(" AND TF.RUTA_ID = CR.RUTA_ID ");
sql.append(" CR.FECCORRIDA = CT.FECCORRIDA "); sql.append(" INNER JOIN ");
sql.append(" AND CR.CORRIDA_ID = CT.CORRIDA_ID "); sql.append(" VIGENCIA_TARIFA VT ");
sql.append(" AND CT.TRAMO_ID = TR.TRAMO_ID "); sql.append(" ON ");
sql.append(" AND CR.ROLOPERATIVO_ID = RO.ROLOPERATIVO_ID "); sql.append(" TF.VIGENCIATARIFA_ID = VT.VIGENCIATARIFA_ID ");
sql.append(" AND RO.DIAGRAMAAUTOBUS_ID = DD.DIAGRAMAAUTOBUS_ID "); sql.append(" INNER JOIN ");
sql.append(" AND DD.VENDIBLE = 1 "); sql.append(" ROL_OPERATIVO RO ");
sql.append(" AND DD.ACTIVO = 1 "); sql.append(" ON ");
sql.append(" AND CT.ACTIVO = 1) TOTAL_ACENTOS, "); sql.append(" RO.ROLOPERATIVO_ID = CR.ROLOPERATIVO_ID, ");
sql.append(" "); sql.append(" DET_DIAGRAMA_AUTOBUS DD ");
sql.append(" (SELECT COUNT((SELECT 1 "); sql.append(" WHERE ");
sql.append(" FROM BOLETO BO, "); sql.append(" BO.CORRIDA_ID = :CORRIDA_ID ");
sql.append(" CORRIDA_TRAMO CTD, "); sql.append(" AND BO.FECCORRIDA = :FECCORRIDA ");
sql.append(" CORRIDA_TRAMO CTO "); sql.append(" AND CR.ACTIVO = 1 ");
sql.append(" WHERE BO.CORRIDA_ID = CR.CORRIDA_ID "); sql.append(" AND CT.ACTIVO = 1 ");
sql.append(" AND BO.FECCORRIDA = CR.FECCORRIDA "); sql.append(" AND BO.ACTIVO = 1 ");
sql.append(" AND BO.NUMASIENTO = DD.ASIENTO "); sql.append(" AND BO.INDSTATUSOPERACION = 'F' ");
sql.append(" AND BO.ORIGEN_ID = CTO.ORIGEN_ID "); sql.append(" AND BO.MOTIVOCANCELACION_ID IS NULL ");
sql.append(" AND BO.DESTINO_ID = CTD.DESTINO_ID "); sql.append(" AND TF.TRAMO_ID = TR.TRAMO_ID ");
sql.append(" AND CTD.CORRIDA_ID = CR.CORRIDA_ID "); sql.append(" AND TF.STATUSTARIFA = 'A' ");
sql.append(" AND CTD.FECCORRIDA = CR.FECCORRIDA "); sql.append(" AND TF.ACTIVO = 1 ");
sql.append(" AND CTO.CORRIDA_ID = CR.CORRIDA_ID "); sql.append(" AND VT.ACTIVO = 1 ");
sql.append(" AND CTO.FECCORRIDA = CR.FECCORRIDA "); sql.append(" AND CR.FECCORRIDA BETWEEN VT.FECINICIOVIGENCIA AND VT.FECFINVIGENCIA ");
sql.append(" AND CTO.ACTIVO = 1 "); sql.append(" AND RO.DIAGRAMAAUTOBUS_ID = DD.DIAGRAMAAUTOBUS_ID ");
sql.append(" AND CTD.ACTIVO = 1 "); sql.append(" AND DD.VENDIBLE = 1 ");
sql.append(" AND CT.NUMSECUENCIA BETWEEN CTO.NUMSECUENCIA AND "); sql.append(" AND DD.ACTIVO = 1 ");
sql.append(" CTD.NUMSECUENCIA "); sql.append(" GROUP BY ");
sql.append(" AND BO.ACTIVO = 1 "); sql.append(" BO.BOLETO_ID, ");
sql.append(" AND BO.INDSTATUSOPERACION = 'F' "); sql.append(" BO.ORIGEN_ID, ");
sql.append(" AND (BO.MOTIVOCANCELACION_ID IS NULL OR "); sql.append(" BO.DESTINO_ID, ");
sql.append(" BO.MOTIVOCANCELACION_ID = 0))) "); sql.append(" ( ");
sql.append(" FROM CORRIDA_TRAMO CT, "); sql.append(" CASE ");
sql.append(" TRAMO TR, "); sql.append(" WHEN BO.PRECIOBASE = 0 ");
sql.append(" ROL_OPERATIVO RO, "); sql.append(" THEN 1 ");
sql.append(" DET_DIAGRAMA_AUTOBUS DD "); sql.append(" ELSE 0 ");
sql.append(" WHERE CR.FECCORRIDA = CT.FECCORRIDA "); sql.append(" END), ");
sql.append(" AND CR.CORRIDA_ID = CT.CORRIDA_ID "); sql.append(" ( ");
sql.append(" AND CT.TRAMO_ID = TR.TRAMO_ID "); sql.append(" CASE ");
sql.append(" AND CR.ROLOPERATIVO_ID = RO.ROLOPERATIVO_ID "); sql.append(" WHEN BO.PRECIOBASE > 0 ");
sql.append(" AND RO.DIAGRAMAAUTOBUS_ID = DD.DIAGRAMAAUTOBUS_ID "); sql.append(" THEN 1 ");
sql.append(" AND DD.VENDIBLE = 1 "); sql.append(" ELSE 0 ");
sql.append(" AND DD.ACTIVO = 1 "); sql.append(" END), ");
sql.append(" AND CT.ACTIVO = 1) TOTAL_OCUPADOS, "); sql.append(" TR.CANTKMREAL, ");
sql.append(" (SELECT COUNT((SELECT 1 "); sql.append(" BO.PRECIOPAGADO, ");
sql.append(" FROM BOLETO BO, "); sql.append(" TF.PRECIO, ");
sql.append(" CORRIDA_TRAMO CTD, "); sql.append(" RO.DESCROLOPERATIVO ");
sql.append(" CORRIDA_TRAMO CTO "); sql.append(" ORDER BY ");
sql.append(" WHERE BO.CORRIDA_ID = CR.CORRIDA_ID "); sql.append(" BO.ORIGEN_ID, ");
sql.append(" AND BO.FECCORRIDA = CR.FECCORRIDA "); sql.append(" BO.DESTINO_ID ) TRECHOS_VG ");
sql.append(" AND BO.NUMASIENTO = DD.ASIENTO "); sql.append("GROUP BY ");
sql.append(" AND BO.ORIGEN_ID = CTO.ORIGEN_ID "); sql.append(" TRECHOS_VG.ORIGEN_ID, ");
sql.append(" AND BO.DESTINO_ID = CTD.DESTINO_ID "); sql.append(" TRECHOS_VG.DESTINO_ID, ");
sql.append(" AND CTD.CORRIDA_ID = CR.CORRIDA_ID "); sql.append(" TRECHOS_VG.GRATUITO, ");
sql.append(" AND CTD.FECCORRIDA = CR.FECCORRIDA "); sql.append(" TRECHOS_VG.VENDIDOS, ");
sql.append(" AND CTO.CORRIDA_ID = CR.CORRIDA_ID "); sql.append(" TRECHOS_VG.CANTKMREAL, ");
sql.append(" AND CTO.FECCORRIDA = CR.FECCORRIDA "); sql.append(" TRECHOS_VG.DESCROLOPERATIVO, ");
sql.append(" AND BO.PRECIOBASE = 0 "); sql.append(" TRECHOS_VG.KM_CORRIDA, ");
sql.append(" AND CTO.ACTIVO = 1 "); sql.append(" TRECHOS_VG.TARIFA");
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 ");
return sql.toString(); return sql.toString();
} }

View File

@ -340,7 +340,11 @@
</rectangle> </rectangle>
<rectangle radius="0"> <rectangle radius="0">
<reportElement style="Crosstab Data Text" x="0" y="0" width="20" height="8" forecolor="#000000" backcolor="#FF0000" uuid="14f27af8-ce53-48f5-ab9d-991aafbe15bb"> <reportElement style="Crosstab Data Text" x="0" y="0" width="20" height="8" forecolor="#000000" backcolor="#FF0000" uuid="14f27af8-ce53-48f5-ab9d-991aafbe15bb">
<printWhenExpression><![CDATA[$V{ocupadoMeasure}.intValue() == 5]]></printWhenExpression> <printWhenExpression><![CDATA[$V{ocupadoMeasure} == null ? $V{ocupadoOperacaoMeasure} != null: $V{ocupadoMeasure}.intValue() == 5
]]></printWhenExpression>
</reportElement> </reportElement>
</rectangle> </rectangle>
<rectangle radius="0"> <rectangle radius="0">

View File

@ -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;
}
}

View File

@ -41,6 +41,8 @@ import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
@Scope("prototype") @Scope("prototype")
public class RelatorioResumoLinhasController extends MyGenericForwardComposer { public class RelatorioResumoLinhasController extends MyGenericForwardComposer {
private static final long serialVersionUID = 1L;
@Autowired @Autowired
private DataSource dataSourceRead; private DataSource dataSourceRead;
@Autowired @Autowired
@ -69,6 +71,7 @@ public class RelatorioResumoLinhasController extends MyGenericForwardComposer {
* @throws Exception * @throws Exception
* *
*/ */
@SuppressWarnings({ "rawtypes", "unchecked" })
private void executarRelatorio() throws Exception { private void executarRelatorio() throws Exception {
Relatorio relatorio; Relatorio relatorio;
@ -86,12 +89,11 @@ public class RelatorioResumoLinhasController extends MyGenericForwardComposer {
if (itemRuta != null) { if (itemRuta != null) {
Ruta ruta = (Ruta) itemRuta.getValue(); Ruta ruta = (Ruta) itemRuta.getValue();
parametros.put("RUTA_ID", ruta.getRutaId()); parametros.put("RUTA_ID", ruta.getRutaId());
filtro.append(ruta.getDescruta()+";"); filtro.append(ruta.getDescruta() + ";");
} }
else else
filtro.append("Todas;"); filtro.append("Todas;");
Comboitem itemGrupoRuta = cmbGrupoRuta.getSelectedItem(); Comboitem itemGrupoRuta = cmbGrupoRuta.getSelectedItem();
filtro.append("Grupo de Linha: "); filtro.append("Grupo de Linha: ");
@ -103,7 +105,6 @@ public class RelatorioResumoLinhasController extends MyGenericForwardComposer {
else else
filtro.append("Todos;"); filtro.append("Todos;");
Comboitem itemEmpresa = cmbEmpresa.getSelectedItem(); Comboitem itemEmpresa = cmbEmpresa.getSelectedItem();
if (itemEmpresa != null) { if (itemEmpresa != null) {
Empresa empresa = (Empresa) itemEmpresa.getValue(); Empresa empresa = (Empresa) itemEmpresa.getValue();

View File

@ -3,6 +3,7 @@
*/ */
package com.rjconsultores.ventaboletos.web.utilerias; package com.rjconsultores.ventaboletos.web.utilerias;
import java.math.BigDecimal;
import java.text.NumberFormat; import java.text.NumberFormat;
import java.util.Locale; import java.util.Locale;
@ -13,19 +14,25 @@ import java.util.Locale;
public final class CurrencyUtil { public final class CurrencyUtil {
public static String getCurrencyStrFromStr(String value, Locale locale) { public static String getCurrencyStrFromStr(String value, Locale locale) {
NumberFormat moedaFormat = NumberFormat.getCurrencyInstance(locale);
NumberFormat moedaFormat =
NumberFormat.getCurrencyInstance(locale);
return moedaFormat.format(Double.parseDouble(value)); return moedaFormat.format(Double.parseDouble(value));
}
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) { public static String getPercentStrFromStr(String value, Locale locale) {
NumberFormat percentFormat = NumberFormat.getPercentInstance(locale); NumberFormat percentFormat = NumberFormat.getPercentInstance(locale);
percentFormat.setMinimumFractionDigits(2); percentFormat.setMinimumFractionDigits(2);
return percentFormat.format(Double.parseDouble(value)); 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());
} }

View File

@ -7,7 +7,7 @@
<zk xmlns="http://www.zkoss.org/2005/zul"> <zk xmlns="http://www.zkoss.org/2005/zul">
<window id="winFiltroRelatorioAproveitamento" <window id="winFiltroRelatorioAproveitamento"
apply="${relatorioAproveitamentoController}" apply="${relatorioAproveitamentoController}"
contentStyle="overflow:auto" height="540px" width="750px" contentStyle="overflow:auto" height="340px" width="750px"
border="normal"> border="normal">
<grid fixedLayout="true"> <grid fixedLayout="true">
<columns> <columns>

View File

@ -7,7 +7,7 @@
<zk xmlns="http://www.zkoss.org/2005/zul"> <zk xmlns="http://www.zkoss.org/2005/zul">
<window id="winFiltroRelatorioResumoLinhas" <window id="winFiltroRelatorioResumoLinhas"
apply="${relatorioResumoLinhasController}" apply="${relatorioResumoLinhasController}"
contentStyle="overflow:auto" height="215px" width="480px" contentStyle="overflow:auto" width="480px"
border="normal"> border="normal">
<grid fixedLayout="true"> <grid fixedLayout="true">
<columns> <columns>