From 2129f547db03ad35301b4f21867ab53e7d32a662 Mon Sep 17 00:00:00 2001 From: celio Date: Fri, 31 Mar 2023 15:53:01 -0300 Subject: [PATCH 1/2] fixes bug#AL-2372 --- .../impl/RelatorioLinhasHorarioSimpData.java | 658 ++++++++++++ .../RelatorioLinhasHorarioSimplificado.java | 14 +- ...orioLinhasHorarioSimpData_pt_BR.properties | 61 ++ .../RelatorioLinhasHorarioSimpData.jasper | Bin 0 -> 89130 bytes .../RelatorioLinhasHorarioSimpData.jrxml | 935 ++++++++++++++++++ .../RelatorioLinhasHorarioSimplificado.jasper | Bin 89130 -> 88255 bytes .../RelatorioLinhasHorarioSimplificado.jrxml | 18 +- .../RelatorioLinhasHorarioController.java | 8 +- 8 files changed, 1666 insertions(+), 28 deletions(-) create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioLinhasHorarioSimpData.java create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioLinhasHorarioSimpData_pt_BR.properties create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioLinhasHorarioSimpData.jasper create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioLinhasHorarioSimpData.jrxml diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioLinhasHorarioSimpData.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioLinhasHorarioSimpData.java new file mode 100644 index 000000000..cac534421 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioLinhasHorarioSimpData.java @@ -0,0 +1,658 @@ +package com.rjconsultores.ventaboletos.relatorios.impl; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Timestamp; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.List; +import java.util.Map; + +import org.apache.log4j.Logger; +import org.zkoss.web.servlet.dsp.action.If; + +import com.rjconsultores.ventaboletos.entidad.Corrida; +import com.rjconsultores.ventaboletos.entidad.Empresa; +import com.rjconsultores.ventaboletos.entidad.GrupoRuta; +import com.rjconsultores.ventaboletos.entidad.Ruta; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.DataSource; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.RelatorioLinhasHorarioBean; +import com.rjconsultores.ventaboletos.service.ConstanteService; +import com.rjconsultores.ventaboletos.web.utilerias.NamedParameterStatement; +import com.rjconsultores.ventaboletos.web.utilerias.spring.AppContext; + +import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; + +@SuppressWarnings({"unused", "unchecked"}) +public class RelatorioLinhasHorarioSimpData extends Relatorio { + + private static Logger log = Logger.getLogger(RelatorioLinhasHorarioSimpData.class); + private List lsDadosRelatorio; + private static String CONSTANTE_GRATUIDADE_CRIANCA; + + public RelatorioLinhasHorarioSimpData(Map parametros, Connection conexao) throws Exception { + super(parametros, conexao); + + this.setCustomDataSource(new DataSource(this) { + @Override + public void initDados() throws Exception { + + CONSTANTE_GRATUIDADE_CRIANCA = buscarConstante("GRATUIDADE_CRIANCA"); + Connection conexao = this.relatorio.getConexao(); + Map parametros = this.relatorio.getParametros(); + + ArrayList lsNumLinha = (ArrayList) parametros.get("lsNumLinha"); + ArrayList lsNumServico = (ArrayList) parametros.get("lsNumServico"); + parametros.put("SERVICO_FILTRO", retornaFiltro(lsNumServico, null)); + parametros.put("LINHA_FILTRO", retornaFiltro(null, lsNumLinha)); + + Empresa empresa = (Empresa) parametros.get("EMPRESA"); + String corridaIds = "", rutaIds = ""; + GrupoRuta grupoRuta = (GrupoRuta) parametros.get("GRUPORUTA"); + Integer tipoServico = (Integer) parametros.get("TIPOSERVICIO_ID"); + if (lsNumServico != null && !lsNumServico.isEmpty()) { + corridaIds = retornaFiltro(lsNumServico, null); + } + if (lsNumLinha != null && !lsNumLinha.isEmpty()) { + rutaIds = retornaFiltro(null, lsNumLinha); + } + String sql = getSql(corridaIds, rutaIds, empresa, tipoServico, grupoRuta, (Boolean)parametros.get("ISSENTIDOIDA"), (Boolean)parametros.get("ISSENTIDOVOLTA")); + + NamedParameterStatement stmt = new NamedParameterStatement(conexao, sql); + ResultSet rset = null; + stmt.setString("CRIANCA_ID",CONSTANTE_GRATUIDADE_CRIANCA); + + if (empresa != null) { + stmt.setInt("EMPRESA_ID", empresa.getEmpresaId()); + } + if (parametros.get("HORA_INICIAL") == null) { + SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); + if (parametros.get("DATA_INICIO") != null) { + Date dataInicio = (Date) parametros.get("DATA_INICIO"); + stmt.setString("DATA_INICIO", sdf.format(dataInicio)); + } + + if (parametros.get("DATA_FINAL") != null) { + Date dataFinal = (Date) parametros.get("DATA_FINAL"); + stmt.setString("DATA_FINAL", sdf.format(dataFinal)); + } + }else { + setaParametroDataHora(parametros, stmt); + } + if (grupoRuta != null) { + stmt.setInt("GRUPORUTA_ID", grupoRuta.getGrupoRutaId()); + } + if (tipoServico > 0) { + stmt.setInt("TIPOSERVICIO_ID", tipoServico); + } + + rset = stmt.executeQuery(); + + lsDadosRelatorio = new ArrayList(); + + BigDecimal totalPassagens = BigDecimal.ZERO; + BigDecimal totalSeguro = BigDecimal.ZERO; + BigDecimal totalBagagens = BigDecimal.ZERO; + BigDecimal totalSeuroOpcional = BigDecimal.ZERO; + BigDecimal totalTotal = BigDecimal.ZERO; + BigDecimal totalOrdinario = BigDecimal.ZERO; + BigDecimal totalExtra = BigDecimal.ZERO; + BigDecimal totalViagem = BigDecimal.ZERO; + BigDecimal totalKmRodado = BigDecimal.ZERO; + BigDecimal totalAbsoluto = BigDecimal.ZERO; + BigDecimal totalEquivalente = BigDecimal.ZERO; + BigDecimal mediaMPA = BigDecimal.ZERO; + BigDecimal mediaMPE = BigDecimal.ZERO; + BigDecimal mediaRsPorKm = BigDecimal.ZERO; + BigDecimal totalEQ = BigDecimal.ZERO; + BigDecimal mediaRSPorViagem = BigDecimal.ZERO; + BigDecimal totalPaxKMOfertado = BigDecimal.ZERO; + BigDecimal totalPaxKMTransportado = BigDecimal.ZERO; + BigDecimal totalIAP = BigDecimal.ZERO; + + BigDecimal totalTxEmbarque = BigDecimal.ZERO; + BigDecimal totalPedagio = BigDecimal.ZERO; + + String group = null; + while (rset.next()) { + RelatorioLinhasHorarioBean horarioBean = new RelatorioLinhasHorarioBean(); + + group = ((String) rset.getObject("GRUPO_RUTA")); + horarioBean.setGrupoRuta(group); + horarioBean.setTipoLinha((String) rset.getObject("TIPO_LINHA")); + horarioBean.setHora((String) rset.getObject("HORA")); + horarioBean.setDataCorrida((String) rset.getObject("DATA_CORRIDA")); + + horarioBean.setServico((BigDecimal) rset.getObject("SERVICO")); + + if (rset.getObject("SENTIDO") != null) { + horarioBean.convetSentido((BigDecimal) rset.getObject("SENTIDO")); + } else { + horarioBean.convetSentido(null); + } + + horarioBean.setLot((BigDecimal) rset.getObject("LOT")); + horarioBean.setCla((String) rset.getObject("CLA")); + horarioBean.setExtensao((BigDecimal) rset.getObject("EXTENSAO")); +// horarioBean.setTarifa((BigDecimal) rset.getObject("TARIFA")); + horarioBean.setPassagens((BigDecimal) rset.getObject("PASSAGENS")); + horarioBean.setSeguro((BigDecimal) rset.getObject("SEGURO")); + horarioBean.setBagagens((BigDecimal) rset.getObject("BAGAGENS")); + + horarioBean.setTxEmbarque((BigDecimal) rset.getObject("TX_EMBARQUE")); + horarioBean.setPedagio((BigDecimal) rset.getObject("PEDAGIO")); + + // Substituir a coluna Seg. Opcional por Tx. Embarque + horarioBean.setSegOpc(horarioBean.getTxEmbarque()); + + horarioBean.setOrd((BigDecimal) rset.getObject("ORD")); + horarioBean.setExtra((BigDecimal) rset.getObject("EXTRA")); + horarioBean.setAbsol((BigDecimal) rset.getObject("ABSOL")); + + horarioBean.setOrigem((String) rset.getObject("ORIGEM")); + horarioBean.setDestino((String) rset.getObject("DESTINO")); + horarioBean.setSomaExtensaoTrecho((BigDecimal) rset.getObject("EXTENSAO_TRECHO")); + horarioBean.setPaxKmTransportado((BigDecimal) rset.getObject("KM_REAL")); + horarioBean.setDescRuta((String) rset.getObject("DESCRUTA")); + horarioBean = trecho(horarioBean); + + horarioBean = calcTotal(horarioBean); + horarioBean = calcMediaReceitaTotal(horarioBean); + + horarioBean = calcTotalViagem(horarioBean); + horarioBean = calcKmRodado(horarioBean); + horarioBean = calcEquivalente(horarioBean); + horarioBean = calcMpa(horarioBean); + horarioBean = calcMpe(horarioBean); + horarioBean = calcRsKm(horarioBean); + horarioBean = calcEq(horarioBean); + horarioBean = calcRsViagem(horarioBean); + horarioBean = calcPaxKmOfertado(horarioBean); + horarioBean = calcIap(horarioBean); + + lsDadosRelatorio.add(horarioBean); + + totalPassagens = totalPassagens.add(horarioBean.getPassagens() != null ? horarioBean.getPassagens() : BigDecimal.ZERO); + totalSeguro = totalSeguro.add(horarioBean.getSeguro() != null ? horarioBean.getSeguro() : BigDecimal.ZERO); + totalBagagens = totalBagagens.add(horarioBean.getBagagens() != null ? horarioBean.getBagagens() : BigDecimal.ZERO); + totalSeuroOpcional = totalSeuroOpcional.add(horarioBean.getSegOpc() != null ? horarioBean.getSegOpc() : BigDecimal.ZERO); + totalTotal = totalTotal.add(horarioBean.getTotal() != null ? horarioBean.getTotal() : BigDecimal.ZERO); + totalOrdinario = totalOrdinario.add(horarioBean.getOrd() != null ? horarioBean.getOrd() : BigDecimal.ZERO); + totalExtra = totalExtra.add(horarioBean.getExtra() != null ? horarioBean.getExtra() : BigDecimal.ZERO); + totalViagem = totalViagem.add(horarioBean.getTotalViagem() != null ? horarioBean.getTotalViagem() : BigDecimal.ZERO); + totalKmRodado = totalKmRodado.add(horarioBean.getKmRodado() != null ? horarioBean.getKmRodado() : BigDecimal.ZERO); + totalAbsoluto = totalAbsoluto.add(horarioBean.getAbsol() != null ? horarioBean.getAbsol() : BigDecimal.ZERO); + totalEquivalente = totalEquivalente.add(horarioBean.getEquivalente() != null ? horarioBean.getEquivalente() : BigDecimal.ZERO); + + totalTxEmbarque = totalTxEmbarque.add(horarioBean.getTxEmbarque() != null ? horarioBean.getTxEmbarque() : BigDecimal.ZERO); + totalPedagio = totalPedagio.add(horarioBean.getPedagio() != null ? horarioBean.getPedagio() : BigDecimal.ZERO); + + mediaMPA = mediaMPA.add(horarioBean.getMpa() != null ? horarioBean.getMpa() : BigDecimal.ZERO); + mediaMPE = mediaMPE.add(horarioBean.getMpe() != null ? horarioBean.getMpe() : BigDecimal.ZERO); + + mediaRsPorKm = mediaRsPorKm.add(horarioBean.getRsKm() != null ? horarioBean.getRsKm() : BigDecimal.ZERO); + + totalEQ = totalEQ.add(horarioBean.getEq() != null ? horarioBean.getEq() : BigDecimal.ZERO); + + mediaRSPorViagem = mediaRSPorViagem.add(horarioBean.getRsViagem() != null ? horarioBean.getRsViagem() : BigDecimal.ZERO); + + totalPaxKMOfertado = totalPaxKMOfertado.add(horarioBean.getPaxKmOfertado() != null ? horarioBean.getPaxKmOfertado() : BigDecimal.ZERO); + totalPaxKMTransportado = totalPaxKMTransportado.add(horarioBean.getPaxKmTransportado() != null ? horarioBean.getPaxKmTransportado() : BigDecimal.ZERO); + + totalIAP = totalIAP.add(horarioBean.getIap()); + + } + + BigDecimal qtdeRegistros = new BigDecimal(lsDadosRelatorio.size()); + + if (lsDadosRelatorio.size() > 0) { + + setLsDadosRelatorio(lsDadosRelatorio); + parametros.put("TOTAL_PASSAGENS", totalPassagens); + parametros.put("TOTAL_SEGURO", totalSeguro); + parametros.put("TOTAL_BAGAGENS", totalBagagens); + parametros.put("TOTAL_SEURO_OPCIONAL", totalSeuroOpcional); + parametros.put("TOTAL_TOTAL", totalTotal); + parametros.put("TOTAL_ORDINARIO", totalOrdinario); + parametros.put("TOTAL_EXTRA", totalExtra); + parametros.put("TOTAL_VIAGEM", totalViagem); + parametros.put("TOTAL_KM_RODADO", totalKmRodado); + parametros.put("TOTAL_ABSOLUTO", totalAbsoluto); + parametros.put("TOTAL_EQUIVALENTE", totalEquivalente); + parametros.put("MEDIA_MPA", mediaMPA); + parametros.put("MEDIA_MPE", mediaMPE); + parametros.put("MEDIA_RS_POR_KM", mediaRsPorKm); + parametros.put("TOTAL_EQ", totalEQ); + parametros.put("TOTAL_TX_EMBARQUE", totalTxEmbarque); + parametros.put("TOTAL_PEDAGIO", totalPedagio); + parametros.put("MEDIA_RS_POR_VIAGEM", mediaRSPorViagem); + parametros.put("TOTAL_PAX_KM_OFERTADO", totalPaxKMOfertado); + parametros.put("TOTAL_PAX_KM_TRANSPORTADO", totalPaxKMTransportado); + parametros.put("TOTAL_IAP", totalIAP); + + } + } + + private String retornaFiltro(ArrayList lsNumServico, ArrayList lsNumLinha) { + String filtro = "TODOS"; + if (lsNumServico != null && !lsNumServico.isEmpty()) { + for (Corrida corrida : lsNumServico) { + if (lsNumServico.indexOf(corrida) == 0) { + filtro = "'" + corrida.getId().getCorridaId(); + } else { + filtro += "','" + corrida.getId().getCorridaId(); + } + } + return filtro.concat("'"); + } else if (lsNumLinha != null && !lsNumLinha.isEmpty()) { + for (Ruta ruta : lsNumLinha) { + if (lsNumLinha.indexOf(ruta) == 0) { + filtro = "'" + ruta.getRutaId(); + } else { + filtro += "','" + ruta.getRutaId(); + } + } + return filtro.concat("'"); + } else { + return filtro; + } + } + + }); + + } + + private void setaParametroDataHora(Map parametros, NamedParameterStatement stmt) throws SQLException { + SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); + Calendar dataInicial = Calendar.getInstance(); + dataInicial.setTime((Date) parametros.get("DATA_INICIO")); + Calendar horaInicialCal = Calendar.getInstance(); + horaInicialCal.setTime((Date) parametros.get("HORA_INICIAL")); + mesclarDataHora(dataInicial, horaInicialCal); + stmt.setString("DATA_INICIO", sdf.format(dataInicial.getTime())); + if (parametros.get("HORA_FINAL") != null) { + Calendar dataFinal = Calendar.getInstance(); + dataFinal.setTime((Date) parametros.get("DATA_FINAL")); + Calendar horaFinalCal = Calendar.getInstance(); + horaFinalCal.setTime((Date) parametros.get("HORA_FINAL")); + mesclarDataHora(dataFinal, horaFinalCal); + stmt.setString("DATA_FINAL", sdf.format(dataFinal.getTime())); + }else { + Date dataFinal = (Date) parametros.get("DATA_FINAL"); + stmt.setString("DATA_FINAL", sdf.format(dataFinal)); + } + + } + + public List getLsDadosRelatorio() { + + return lsDadosRelatorio; + } + + public void setLsDadosRelatorio(List lsDadosRelatorio) { + this.setCollectionDataSource(new JRBeanCollectionDataSource(lsDadosRelatorio)); + this.lsDadosRelatorio = lsDadosRelatorio; + } + + private RelatorioLinhasHorarioBean trecho(RelatorioLinhasHorarioBean horarioBean) { + horarioBean.setTrecho(horarioBean.getOrigem() + " - " + horarioBean.getDestino()); + return horarioBean; + } + + private RelatorioLinhasHorarioBean calcTotal(RelatorioLinhasHorarioBean horarioBean) { + BigDecimal total = horarioBean.getPassagens(); + total = total.add(horarioBean.getSeguro()); + horarioBean.setTotal(total); + return horarioBean; + } + + private RelatorioLinhasHorarioBean calcMediaReceitaTotal(RelatorioLinhasHorarioBean horarioBean) { + BigDecimal mediaTotal = horarioBean.getPassagens(); + horarioBean.setMediaReceitaViagem(mediaTotal); + return horarioBean; + } + + private RelatorioLinhasHorarioBean calcTotalViagem(RelatorioLinhasHorarioBean horarioBean) { + BigDecimal totalViagem = horarioBean.getOrd().add(horarioBean.getExtra()); + horarioBean.setTotalViagem(totalViagem); + return horarioBean; + } + + private RelatorioLinhasHorarioBean calcKmRodado(RelatorioLinhasHorarioBean horarioBean) { + BigDecimal kmRodado = horarioBean.getTotalViagem().multiply(horarioBean.getExtensao()); + horarioBean.setKmRodado(kmRodado); + return horarioBean; + } + + private RelatorioLinhasHorarioBean calcEquivalente(RelatorioLinhasHorarioBean horarioBean) { + BigDecimal equivalente = new BigDecimal(0); + try { + equivalente = horarioBean.getSomaExtensaoTrecho().divide(horarioBean.getExtensao(), 2, RoundingMode.HALF_UP); + } catch (ArithmeticException e) { + equivalente = BigDecimal.ZERO; + } catch (NullPointerException nex) { + equivalente = BigDecimal.ZERO; + } catch (Exception ex) { + log.error("", ex); + } + horarioBean.setEquivalente(equivalente); + + return horarioBean; + } + + private RelatorioLinhasHorarioBean calcMpa(RelatorioLinhasHorarioBean horarioBean) { + BigDecimal mpa = new BigDecimal(0); + try { + mpa = horarioBean.getAbsol().divide(horarioBean.getTotalViagem(), 2, 4); + } catch (ArithmeticException e) { + mpa = BigDecimal.ZERO; + } catch (NullPointerException nex) { + mpa = BigDecimal.ZERO; + } catch (Exception ex) { + log.error("", ex); + } + horarioBean.setMpa(mpa); + return horarioBean; + } + + private RelatorioLinhasHorarioBean calcMpe(RelatorioLinhasHorarioBean horarioBean) { + BigDecimal mpe = horarioBean.getEquivalente().divide(horarioBean.getTotalViagem(), 2, 4); + horarioBean.setMpe(mpe); + return horarioBean; + } + + private RelatorioLinhasHorarioBean calcRsKm(RelatorioLinhasHorarioBean horarioBean) { + BigDecimal rsKm = horarioBean.getTotal().divide(horarioBean.getKmRodado(), 2, 4); + horarioBean.setRsKm(rsKm); + return horarioBean; + } + + private RelatorioLinhasHorarioBean calcEq(RelatorioLinhasHorarioBean horarioBean) { + BigDecimal eq = null; + try { + eq = horarioBean.getMediaReceitaViagem().divide(horarioBean.getTarifa(), 2, 4); + } catch (ArithmeticException e) { + eq = BigDecimal.ZERO; + } catch (NullPointerException nex) { + eq = BigDecimal.ZERO; + } catch (Exception ex) { + log.error("", ex); + } + horarioBean.setEq(eq); + return horarioBean; + } + + private RelatorioLinhasHorarioBean calcRsViagem(RelatorioLinhasHorarioBean horarioBean) { + BigDecimal RSViagem = horarioBean.getPassagens().divide(horarioBean.getTotalViagem(), 2, 4); + horarioBean.setRsViagem(RSViagem); + return horarioBean; + } + + private RelatorioLinhasHorarioBean calcPaxKmOfertado(RelatorioLinhasHorarioBean horarioBean) { + BigDecimal paxKmOfertado = horarioBean.getLot().multiply(horarioBean.getTotalViagem()); + paxKmOfertado = paxKmOfertado.multiply(horarioBean.getExtensao()); + horarioBean.setPaxKmOfertado(paxKmOfertado); + return horarioBean; + } + + private RelatorioLinhasHorarioBean calcIap(RelatorioLinhasHorarioBean horarioBean) { + BigDecimal iap = null; + BigDecimal CENTO = BigDecimal.TEN.multiply(BigDecimal.TEN); + try { + iap = (horarioBean.getPaxKmTransportado().multiply(CENTO)).divide(horarioBean.getPaxKmOfertado(), 2, 4); + } catch (ArithmeticException e) { + iap = BigDecimal.ZERO; + } catch (NullPointerException nex) { + iap = BigDecimal.ZERO; + } catch (Exception ex) { + log.error("", ex); + } + horarioBean.setIap(iap); + return horarioBean; + } + + private BigDecimal calcTotalIap(BigDecimal totalPaxKMTransportado, BigDecimal totalPaxKMOfertado) { + BigDecimal iap = null; + BigDecimal CENTO = BigDecimal.TEN.multiply(BigDecimal.TEN); + try { + iap = (totalPaxKMTransportado.multiply(CENTO)).divide(totalPaxKMOfertado, 2, 4); + } catch (ArithmeticException e) { + iap = BigDecimal.ZERO; + } catch (NullPointerException nex) { + iap = BigDecimal.ZERO; + } catch (Exception ex) { + log.error("", ex); + } + return iap; + } + + @Override + protected void processaParametros() throws Exception { + } + + private String getSql(String corridaIds, String rutaIds, Empresa empresa, Integer tipoServico, + GrupoRuta grupoRuta, Boolean isSentidoIda, Boolean isSentidoVolta) { + + StringBuilder sql = new StringBuilder(); + sql.append(" SELECT "); + sql.append(" GRUPO_RUTA, "); + sql.append(" HORA, "); + sql.append(" DATA_CORRIDA,"); + sql.append(" DESCRUTA, "); + sql.append(" SERVICO, "); + sql.append(" SENTIDO , "); + sql.append(" LOT, "); + sql.append(" CLA, "); + sql.append(" ORIGEM, "); + sql.append(" DESTINO, "); + sql.append(" EXTENSAO, "); + sql.append(" COALESCE(SUM(EQUIVALENTE * EXTENSAO) ,0) AS EXTENSAO_TRECHO, "); + sql.append(" COALESCE(BAGAGENS, 0) AS BAGAGENS, "); + sql.append(" COALESCE(SUM(SEGURO), 0) AS SEGURO, "); + sql.append(" COALESCE(SUM(TX_EMBARQUE), 0) AS TX_EMBARQUE, "); + sql.append(" COALESCE(SUM(PEDAGIO), 0) AS PEDAGIO, "); + sql.append(" COALESCE(SUM(PASSAGENS), 0) AS PASSAGENS, "); + sql.append(" ORD, "); + sql.append(" EXTRA, "); + sql.append(" TIPO_LINHA, "); + sql.append(" ABSOL, "); + sql.append(" COALESCE(SUM(KM_REAL), 0) AS KM_REAL "); + sql.append(" FROM "); + sql.append(" (SELECT "); + sql.append(" R.RUTA_ID, "); + sql.append(" R.DESCRUTA AS DESCRUTA, "); + sql.append(" NVL(GR.DESCGRUPO, 'Não Definido') AS GRUPO_RUTA, "); + sql.append(" TO_CHAR(C.FECHORSALIDA, 'HH24:MI') AS HORA, "); + sql.append(" TO_CHAR(C.feccorrida,'dd/mm/yyyy') AS DATA_CORRIDA, "); + sql.append(" C.CORRIDA_ID AS SERVICO, "); + sql.append(" R.INDSENTIDOIDA AS SENTIDO, "); + sql.append(" DA.CANTASIENTOS AS LOT, "); + sql.append(" NVL(CS.DESCCLASE, '') AS CLA, "); + sql.append(" MAX(NVL(TF.PRECIOORIGINAL, 0)) AS TARIFA, "); + sql.append(" ORIGEM.CVEPARADA AS ORIGEM, "); + sql.append(" DESTINO.CVEPARADA AS DESTINO, "); + sql.append(" EXTENSAO AS EXTENSAO, "); + sql.append(" CJ.EQUIVALENTE AS EQUIVALENTE, "); + sql.append(" SUM(EE.IMPINGRESO) AS BAGAGENS, "); + sql.append(" CJ.IMPORTESEGURO AS SEGURO, "); + sql.append(" CJ.IMPORTETAXAEMBARQUE AS TX_EMBARQUE, "); + sql.append(" CJ.IMPORTEPEDAGIO AS PEDAGIO, "); + sql.append(" CJ.PRECIOPAGADO AS PASSAGENS, "); + sql.append(" CJ.BOLETO_ID, "); + sql.append(" TB2.ORD, "); + sql.append(" TB2.EXTRA, "); + sql.append(" CASE WHEN CO.ESTADO_ID <> CD.ESTADO_ID THEN 'INTERESTADUAL' ELSE 'INTERMUNICIPAL' END TIPO_LINHA, "); + sql.append(" ABSOL, "); + sql.append(" CJ.KM_REAL AS KM_REAL "); + sql.append(" FROM CORRIDA C "); + sql.append(" INNER JOIN ("); + sql.append(" SELECT "); + sql.append(" C.CORRIDA_ID, "); + sql.append(" C.ruta_id as c_ruta_id, "); + sql.append(" Destino.Cveparada AS DESTINO, "); + sql.append(" ORIGEM.CVEPARADA AS ORIGEM, "); + sql.append(" C.ROLOPERATIVO_ID, "); + sql.append(" C.feccorrida, "); + sql.append(" TO_CHAR(C.FECHORSALIDA, 'HH24:MI') AS HORASALIDA, "); + sql.append(" COUNT(CASE WHEN C.TIPOSERVICIO_ID = 1 THEN 1 ELSE NULL END) AS ORD, "); + sql.append(" COUNT(CASE WHEN C.TIPOSERVICIO_ID = 2 THEN 1 ELSE NULL END) AS EXTRA "); + sql.append(" FROM CORRIDA C "); + sql.append(" INNER JOIN PARADA ORIGEM ON C.Origen_Id = ORIGEM.PARADA_ID "); + sql.append(" INNER JOIN PARADA DESTINO ON C.DESTINO_ID = DESTINO.PARADA_ID "); + + sql.append(empresa == null ? "" : " INNER JOIN MARCA M ON (C.MARCA_ID = M.MARCA_ID AND M.EMPRESA_ID= :EMPRESA_ID)"); + + sql.append(" WHERE "); + sql.append(" EXISTS (SELECT * FROM CAJA CA WHERE CA.CORRIDA_ID = C.CORRIDA_ID AND CA.FECCORRIDA = C.FECCORRIDA AND CA.MOTIVOCANCELACION_ID IS NULL) "); + sql.append(" AND C.FECCORRIDA BETWEEN TO_DATE(:DATA_INICIO, 'DD/MM/YYYY hh24:mi:ss') AND TO_DATE(:DATA_FINAL, 'DD/MM/YYYY hh24:mi:ss') "); + sql.append(" GROUP BY C.CORRIDA_ID, "); + sql.append(" C.ROLOPERATIVO_ID, "); + sql.append(" C.ruta_id, "); + sql.append(" Destino.Cveparada, "); + sql.append(" ORIGEM.CVEPARADA, "); + sql.append(" C.feccorrida, "); + sql.append(" TO_CHAR(C.FECHORSALIDA, 'HH24:MI') "); + sql.append(" ) TB2 ON ((TB2.CORRIDA_ID = C.CORRIDA_ID and tb2.c_ruta_id = c.ruta_id ) "); + sql.append(" AND TB2.ROLOPERATIVO_ID = C.ROLOPERATIVO_ID "); + sql.append(" AND TB2.feccorrida = c.feccorrida "); + sql.append(" AND TB2.HORASALIDA = TO_CHAR(C.FECHORSALIDA, 'HH24:MI')) "); + + sql.append(" INNER JOIN ("); + sql.append(" SELECT "); + sql.append(" C.CORRIDA_ID, "); + sql.append(" c.ruta_id as c_ruta_id, "); + sql.append(" C.ROLOPERATIVO_ID, "); + sql.append(" C.DESTINO_ID, "); + sql.append(" C.ORIGEN_ID, "); + sql.append(" C.feccorrida, "); + sql.append(" TO_CHAR(C.FECHORSALIDA, 'HH24:MI') AS HORASALIDA, "); + sql.append(" COUNT(b.boleto_id) AS ABSOL "); + sql.append(" FROM CORRIDA C "); + + sql.append(empresa == null ? "" : " INNER JOIN MARCA M ON (C.MARCA_ID = M.MARCA_ID AND M.EMPRESA_ID= :EMPRESA_ID)"); + + sql.append(" LEFT JOIN BOLETO B ON (B.CORRIDA_ID = C.CORRIDA_ID AND B.FECCORRIDA = C.FECCORRIDA AND B.ACTIVO = 1 AND B.MOTIVOCANCELACION_ID IS NULL "); + sql.append(" AND B.CATEGORIA_ID <> :CRIANCA_ID ) "); + sql.append(" WHERE C.ACTIVO NOT IN (0,2) "); + sql.append(" AND C.FECCORRIDA BETWEEN TO_DATE(:DATA_INICIO, 'DD/MM/YYYY hh24:mi:ss') AND TO_DATE(:DATA_FINAL, 'DD/MM/YYYY hh24:mi:ss') "); + + sql.append(corridaIds.isEmpty() ? "" : " AND B.CORRIDA_ID IN ("+corridaIds+") "); + + sql.append(" GROUP BY C.CORRIDA_ID, C.ruta_id, C.ROLOPERATIVO_ID, C.DESTINO_ID, C.feccorrida, C.ORIGEN_ID, TO_CHAR(C.FECHORSALIDA, 'HH24:MI') "); + sql.append(" ) TB4 ON ((TB4.CORRIDA_ID = C.CORRIDA_ID and tb4.c_ruta_id = c.ruta_id) "); + sql.append(" AND c.DESTINO_ID = TB4.DESTINO_ID "); + sql.append(" AND c.ORIGEN_ID = TB4.ORIGEN_ID "); + sql.append(" AND TB4.ROLOPERATIVO_ID = C.ROLOPERATIVO_ID "); + sql.append(" AND TB4.feccorrida = c.feccorrida "); + sql.append(" AND TB4.HORASALIDA = TO_CHAR(C.FECHORSALIDA, 'HH24:MI')) "); + + sql.append("LEFT JOIN "); + sql.append(" (SELECT CO.FECCORRIDA, "); + sql.append(" CO.CORRIDA_ID, "); + sql.append(" CO.ROLOPERATIVO_ID, "); + sql.append(" CO.RUTA_ID, "); + sql.append(" CO.EMPRESACORRIDA_ID, "); + sql.append(" BO.BOLETO_ID, "); + sql.append(" BO.NUMKMVIAJE * COUNT(1) AS KM_REAL, "); + sql.append(" CASE "); + sql.append(" WHEN T.CANTKMREAL<>0 AND BO.NUMKMVIAJE<>0 "); + sql.append(" THEN ROUND(BO.NUMKMVIAJE * COUNT(1) / T.CANTKMREAL, 3) "); + sql.append(" ELSE 0 "); + sql.append(" END AS EQUIVALENTE, "); + sql.append(" NVL(BO.IMPORTESEGURO, 0) AS IMPORTESEGURO, "); + sql.append(" NVL(BO.IMPORTETAXAEMBARQUE, 0) AS IMPORTETAXAEMBARQUE, "); + sql.append(" NVL(BO.IMPORTEPEDAGIO, 0) AS IMPORTEPEDAGIO, "); + sql.append(" NVL(BO.PRECIOPAGADO, 0) AS PRECIOPAGADO "); + sql.append(" FROM CORRIDA CO "); + sql.append(empresa == null ? "" : " INNER JOIN MARCA M ON (CO.MARCA_ID = M.MARCA_ID AND M.EMPRESA_ID= :EMPRESA_ID)"); + sql.append(" INNER JOIN BOLETO BO ON CO.CORRIDA_ID = BO.CORRIDA_ID AND CO.FECCORRIDA = BO.FECCORRIDA AND BO.ACTIVO = 1 "); + sql.append(" INNER JOIN RUTA_COMBINACION RC ON RC.RUTA_ID = CO.RUTA_ID "); + sql.append(" INNER JOIN TRAMO T ON RC.TRAMO_ID = T.TRAMO_ID AND T.ORIGEN_ID = BO.ORIGEN_ID AND T.DESTINO_ID = BO.DESTINO_ID "); + sql.append(" WHERE CO.ACTIVO NOT IN (0,2) "); + sql.append(" AND RC.ACTIVO = 1"); + sql.append(" AND T.ACTIVO = 1"); + sql.append(" AND BO.INDSTATUSBOLETO != 'S' AND BO.MOTIVOCANCELACION_ID IS NULL "); + sql.append(" AND BO.CATEGORIA_ID <> :CRIANCA_ID"); + sql.append(" AND BO.FECCORRIDA BETWEEN TO_DATE(:DATA_INICIO, 'DD/MM/YYYY hh24:mi:ss') AND TO_DATE(:DATA_FINAL, 'DD/MM/YYYY hh24:mi:ss') "); + + sql.append(corridaIds.isEmpty() ? "" : " AND BO.CORRIDA_ID IN ("+corridaIds+") "); + + sql.append(" GROUP BY CO.FECCORRIDA, CO.CORRIDA_ID, CO.ROLOPERATIVO_ID, CO.RUTA_ID, CO.EMPRESACORRIDA_ID, BO.NUMKMVIAJE, BO.BOLETO_ID, T.CANTKMREAL, "); + sql.append(" NVL(BO.IMPORTESEGURO, 0), NVL(BO.IMPORTETAXAEMBARQUE, 0), NVL(BO.IMPORTEPEDAGIO, 0), NVL(BO.PRECIOPAGADO, 0) "); + sql.append(" ) CJ ON (CJ.CORRIDA_ID = C.CORRIDA_ID AND CJ.FECCORRIDA = C.FECCORRIDA AND CJ.ROLOPERATIVO_ID = C.ROLOPERATIVO_ID "); + sql.append(" AND CJ.RUTA_ID = C.RUTA_ID AND CJ.EMPRESACORRIDA_ID = C.EMPRESACORRIDA_ID) "); + sql.append("INNER JOIN PARADA ORIGEM ON (C.ORIGEN_ID = ORIGEM.PARADA_ID ) "); + sql.append("INNER JOIN PARADA DESTINO ON ( C.DESTINO_ID = DESTINO.PARADA_ID ) "); + sql.append("INNER JOIN CIUDAD CO ON (CO.CIUDAD_ID = ORIGEM.CIUDAD_ID ) "); + sql.append("INNER JOIN CIUDAD CD ON (CD.CIUDAD_ID = DESTINO.CIUDAD_ID ) "); + sql.append("INNER JOIN RUTA R ON (C.RUTA_ID = R.RUTA_ID ) "); + sql.append("LEFT JOIN GRUPO_RUTA GR ON (R.GRUPORUTA_ID = GR.GRUPORUTA_ID ) "); + sql.append("LEFT JOIN ROL_OPERATIVO RO ON (C.ROLOPERATIVO_ID = RO.ROLOPERATIVO_ID ) "); + sql.append("LEFT JOIN DIAGRAMA_AUTOBUS DA ON (DA.DIAGRAMAAUTOBUS_ID = RO.DIAGRAMAAUTOBUS_ID ) "); + sql.append("LEFT JOIN CLASE_SERVICIO CS ON (CS.CLASESERVICIO_ID = C.CLASESERVICIO_ID ) "); + sql.append("LEFT JOIN EVENTO_EXTRA EE ON (EE.CORRIDA_ID = C.CORRIDA_ID AND EE.FECCORRIDA = C.FECCORRIDA AND EE.TIPOEVENTOEXTRA_ID = 1 ) "); + sql.append("LEFT JOIN TARIFA TF ON (TF.CLASESERVICIO_ID = C.CLASESERVICIO_ID AND TF.DESTINO_ID = C.DESTINO_ID AND TF.ORIGEN_ID = C.ORIGEN_ID AND TF.MARCA_ID = C.MARCA_ID AND TF.RUTA_ID = C.RUTA_ID AND R.ORGAOCONCEDENTE_ID= TF.ORGAOCONCEDENTE_ID) "); + sql.append("LEFT JOIN VIGENCIA_TARIFA VTF ON (TF.VIGENCIATARIFA_ID = VTF.VIGENCIATARIFA_ID ) "); + sql.append("INNER JOIN "); + sql.append("( "); + sql.append("SELECT RC.RUTA_ID, T.ORIGEN_ID, T.DESTINO_ID, NVL(T.CANTKMREAL,0) AS EXTENSAO "); + sql.append("FROM RUTA_COMBINACION RC "); + sql.append("INNER JOIN TRAMO T ON RC.TRAMO_ID = T.TRAMO_ID "); + sql.append("WHERE RC.ACTIVO = 1 "); + sql.append(") TB5 ON (TB5.RUTA_ID = C.RUTA_ID "); + sql.append("AND TB5.ORIGEN_ID = ORIGEM.PARADA_ID "); + sql.append("AND TB5.DESTINO_ID = DESTINO.PARADA_ID) "); + sql.append(" WHERE C.FECCORRIDA BETWEEN TO_DATE(:DATA_INICIO, 'DD/MM/YYYY hh24:mi:ss') AND TO_DATE(:DATA_FINAL, 'DD/MM/YYYY hh24:mi:ss') "); + sql.append(" AND (TF.TARIFA_ID IS NULL OR (TF.TARIFA_ID IS NOT NULL AND C.FECCORRIDA BETWEEN VTF.FECINICIOVIGENCIA AND VTF.FECFINVIGENCIA )) "); + sql.append(" "); + + sql.append(corridaIds.isEmpty() ? "" : " AND C.CORRIDA_ID IN ("+corridaIds+") "); + sql.append(grupoRuta == null ? "" : " AND R.GRUPORUTA_ID IN (:GRUPORUTA_ID) "); + sql.append(rutaIds.isEmpty() ? "" : " AND R.RUTA_ID IN ("+rutaIds+") "); + sql.append(tipoServico == 0 ? "" : " AND C.TIPOSERVICIO_ID = :TIPOSERVICIO_ID" ); + + if(Boolean.TRUE.equals(isSentidoIda)) { + sql.append(" AND R.INDSENTIDOIDA =1 "); + } + + if(Boolean.TRUE.equals(isSentidoVolta)) { + sql.append(" AND R.INDSENTIDOIDA = 0 "); + } + + sql.append(" AND C.ACTIVO <> 0 AND ORIGEM.ACTIVO = 1 AND DESTINO.ACTIVO = 1 AND TB2.ORIGEM = ORIGEM.CVEPARADA AND TB2.DESTINO = DESTINO.CVEPARADA "); + sql.append("AND R.ACTIVO = 1 AND RO.ACTIVO = 1 AND DA.ACTIVO = 1 AND CS.ACTIVO = 1 AND (cj.boleto_id is not null ) "); + sql.append("GROUP BY R.RUTA_ID, R.DESCRUTA, NVL(GR.DESCGRUPO, 'Não Definido'), TO_CHAR(C.FECHORSALIDA, 'HH24:MI'),"); + sql.append(" TO_CHAR(C.feccorrida ,'dd/mm/yyyy'), "); + sql.append(" C.CORRIDA_ID, R.INDSENTIDOIDA, "); + sql.append(" DA.CANTASIENTOS, CS.DESCCLASE, TB5.EXTENSAO, TB2.ORD, TB2.EXTRA, ABSOL, "); + sql.append(" CO.ESTADO_ID, CD.ESTADO_ID, ORIGEM.CVEPARADA, DESTINO.CVEPARADA, CJ.PRECIOPAGADO, "); + sql.append(" CJ.IMPORTESEGURO, CJ.IMPORTETAXAEMBARQUE, CJ.IMPORTEPEDAGIO, "); + sql.append(" CJ.EQUIVALENTE, CJ.KM_REAL , CJ.BOLETO_ID ) "); + sql.append("GROUP BY GRUPO_RUTA, HORA, "); + sql.append(" DATA_CORRIDA, "); + sql.append(" DESCRUTA, SERVICO, SENTIDO, LOT, CLA, ORIGEM, DESTINO, "); + sql.append(" EXTENSAO, BAGAGENS, ORD, EXTRA, TIPO_LINHA, ABSOL "); + sql.append("ORDER BY TIPO_LINHA, GRUPO_RUTA, DESCRUTA, SERVICO, ORIGEM, DESTINO "); + + return sql.toString(); + } + + + private String buscarConstante(String nomeConstante) { + ConstanteService constanteService = (ConstanteService) AppContext.getApplicationContext().getBean("constanteService"); + return constanteService.buscarPorNomeConstante(nomeConstante).getValorconstante(); + } + + protected void mesclarDataHora(Calendar pData, Calendar pHora) { + pData.set(Calendar.HOUR_OF_DAY, pHora.get(Calendar.HOUR_OF_DAY)); + pData.set(Calendar.MINUTE, pHora.get(Calendar.MINUTE)); + pData.set(Calendar.SECOND, pHora.get(Calendar.SECOND)); + + } +} diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioLinhasHorarioSimplificado.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioLinhasHorarioSimplificado.java index f01805ace..3a2494624 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioLinhasHorarioSimplificado.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioLinhasHorarioSimplificado.java @@ -56,14 +56,13 @@ public class RelatorioLinhasHorarioSimplificado extends Relatorio { String corridaIds = "", rutaIds = ""; GrupoRuta grupoRuta = (GrupoRuta) parametros.get("GRUPORUTA"); Integer tipoServico = (Integer) parametros.get("TIPOSERVICIO_ID"); - Boolean isPorData = parametros.get("ISPORDATA") == null ? false : (Boolean) parametros.get("ISPORDATA"); if (lsNumServico != null && !lsNumServico.isEmpty()) { corridaIds = retornaFiltro(lsNumServico, null); } if (lsNumLinha != null && !lsNumLinha.isEmpty()) { rutaIds = retornaFiltro(null, lsNumLinha); } - String sql = getSql(corridaIds, rutaIds, empresa, tipoServico, grupoRuta, (Boolean)parametros.get("ISSENTIDOIDA"), (Boolean)parametros.get("ISSENTIDOVOLTA"), isPorData); + String sql = getSql(corridaIds, rutaIds, empresa, tipoServico, grupoRuta, (Boolean)parametros.get("ISSENTIDOIDA"), (Boolean)parametros.get("ISSENTIDOVOLTA")); NamedParameterStatement stmt = new NamedParameterStatement(conexao, sql); ResultSet rset = null; @@ -128,9 +127,6 @@ public class RelatorioLinhasHorarioSimplificado extends Relatorio { horarioBean.setGrupoRuta(group); horarioBean.setTipoLinha((String) rset.getObject("TIPO_LINHA")); horarioBean.setHora((String) rset.getObject("HORA")); - if(isPorData) { - horarioBean.setDataCorrida((String) rset.getObject("DATA_CORRIDA")); - } horarioBean.setServico((BigDecimal) rset.getObject("SERVICO")); if (rset.getObject("SENTIDO") != null) { @@ -439,13 +435,12 @@ public class RelatorioLinhasHorarioSimplificado extends Relatorio { } private String getSql(String corridaIds, String rutaIds, Empresa empresa, Integer tipoServico, - GrupoRuta grupoRuta, Boolean isSentidoIda, Boolean isSentidoVolta, Boolean isPorData) { + GrupoRuta grupoRuta, Boolean isSentidoIda, Boolean isSentidoVolta) { StringBuilder sql = new StringBuilder(); sql.append(" SELECT "); sql.append(" GRUPO_RUTA, "); sql.append(" HORA, "); - sql.append(isPorData ? " DATA_CORRIDA," : ""); sql.append(" DESCRUTA, "); sql.append(" SERVICO, "); sql.append(" SENTIDO , "); @@ -471,7 +466,6 @@ public class RelatorioLinhasHorarioSimplificado extends Relatorio { sql.append(" R.DESCRUTA AS DESCRUTA, "); sql.append(" NVL(GR.DESCGRUPO, 'Não Definido') AS GRUPO_RUTA, "); sql.append(" TO_CHAR(C.FECHORSALIDA, 'HH24:MI') AS HORA, "); - sql.append(isPorData ? " TO_CHAR(C.feccorrida,'dd/mm/yyyy') AS DATA_CORRIDA, " : ""); sql.append(" C.CORRIDA_ID AS SERVICO, "); sql.append(" R.INDSENTIDOIDA AS SENTIDO, "); sql.append(" DA.CANTASIENTOS AS LOT, "); @@ -623,16 +617,14 @@ public class RelatorioLinhasHorarioSimplificado extends Relatorio { } sql.append(" AND C.ACTIVO <> 0 AND ORIGEM.ACTIVO = 1 AND DESTINO.ACTIVO = 1 AND TB2.ORIGEM = ORIGEM.CVEPARADA AND TB2.DESTINO = DESTINO.CVEPARADA "); - sql.append("AND R.ACTIVO = 1 AND RO.ACTIVO = 1 AND DA.ACTIVO = 1 AND CS.ACTIVO = 1 "); + sql.append("AND R.ACTIVO = 1 AND RO.ACTIVO = 1 AND DA.ACTIVO = 1 AND CS.ACTIVO = 1 AND (cj.boleto_id is not null ) "); sql.append("GROUP BY R.RUTA_ID, R.DESCRUTA, NVL(GR.DESCGRUPO, 'Não Definido'), TO_CHAR(C.FECHORSALIDA, 'HH24:MI'),"); - sql.append(isPorData ? " TO_CHAR(C.feccorrida ,'dd/mm/yyyy'), " : " "); sql.append(" C.CORRIDA_ID, R.INDSENTIDOIDA, "); sql.append(" DA.CANTASIENTOS, CS.DESCCLASE, TB5.EXTENSAO, TB2.ORD, TB2.EXTRA, ABSOL, "); sql.append(" CO.ESTADO_ID, CD.ESTADO_ID, ORIGEM.CVEPARADA, DESTINO.CVEPARADA, CJ.PRECIOPAGADO, "); sql.append(" CJ.IMPORTESEGURO, CJ.IMPORTETAXAEMBARQUE, CJ.IMPORTEPEDAGIO, "); sql.append(" CJ.EQUIVALENTE, CJ.KM_REAL , CJ.BOLETO_ID ) "); sql.append("GROUP BY GRUPO_RUTA, HORA, "); - sql.append(isPorData ? " DATA_CORRIDA, " : " " ); sql.append(" DESCRUTA, SERVICO, SENTIDO, LOT, CLA, ORIGEM, DESTINO, "); sql.append(" EXTENSAO, BAGAGENS, ORD, EXTRA, TIPO_LINHA, ABSOL "); sql.append("ORDER BY TIPO_LINHA, GRUPO_RUTA, DESCRUTA, SERVICO, ORIGEM, DESTINO "); diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioLinhasHorarioSimpData_pt_BR.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioLinhasHorarioSimpData_pt_BR.properties new file mode 100644 index 000000000..4aa58b3dc --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioLinhasHorarioSimpData_pt_BR.properties @@ -0,0 +1,61 @@ +#geral +msg.noData=Não foi possivel obter dados com os parâmetros informados. +msg.a=à + +#Labels header +header.titulo.relatorio=Resumo de Linhas por Horário - RLH +header.periodo=Per\u00EDodo\: +header.data.hora=Data/Hora\: +header.pagina=P\u00E1gina\: +header.filtro=Filtro\: +header.filtro.servico=Servi\u00E7o\: +header.filtro.linha=Linha\: +header.filtro.grupo=Grupo de Linhas\: +cabecalho.impressorPor=Impresso por + +#Labels detail + +detail.receita=RECEITA +detail.viagens=VIAGENS +detail.passageiros=PASSAGEIROS +detail.parametrosOperacionais=PARÂM. OPERACIONAIS +detail.hora=Hora +detail.data=Data +detail.servico=Serviço +detail.trecho=Trecho +detail.setido=Sentido +detail.lot=Lot. +detail.cal=Classe +detail.extensao=Extensão +detail.tarifa=Tarifa +detail.passagens=Passagens +detail.seguro=Seguro +detail.bagagens=Bagagens +detail.segOpc=Tx. Embarque +detail.total=Total +detail.ord=Ord. +detail.extra=Extra +detail.totalViagem=Total +detail.km.rodad=Km Rodad. +detail.absol=Passag.Trasnsportados +detail.equivalente=Equivalente +detail.mpa=MPA +detail.mpe=MPE +detail.rsKm=R$/Km +detail.eq=Eq. +detail.rsViagem=R$/Viagem +detail.paxOfer=Pax.Km Ofer. +detail.paxTrans=Pax.Km Transportado +detail.iap=IAP% +detail.pedagio=Pedágio +detail.linha=Linha + +#Group +ruta.total= Total Linha +group.total=Total do Grupo +sub.total=Sub Total +total.geral=Total Geral + +linhas=Linhas + + diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioLinhasHorarioSimpData.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioLinhasHorarioSimpData.jasper new file mode 100644 index 0000000000000000000000000000000000000000..e9801533f94b31bde0d04e141ff54bf0fab0281c GIT binary patch literal 89130 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 OwSD*Y8UDRvUH=I>-I*5v literal 0 HcmV?d00001 diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioLinhasHorarioSimpData.jrxml b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioLinhasHorarioSimpData.jrxml new file mode 100644 index 000000000..66bef579e --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioLinhasHorarioSimpData.jrxml @@ -0,0 +1,935 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <band splitType="Stretch"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioLinhasHorarioSimplificado.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioLinhasHorarioSimplificado.jasper index e9801533f94b31bde0d04e141ff54bf0fab0281c..b888d2c1885b321560d08488cc6c95e82328f62f 100644 GIT binary patch delta 20367 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 delta 21690 zcmeHPdwkE;|Norp`?9gIxontWhGA?(q_mjW#cqsEnq|Y-jBRd_xmGB*cUtbG@=awJ z%B>O!l}pK`d|fJ(5+W7F@7zA0eLg;K>7URKlQQ)uxVd%67grE-PjxbBRFR{#b#+2$#g)1yw2DImE2`Gd1=jHf zffdh%rT{CwQJ__2PL+y38}tX(f5QSRhBhi@SHlA0q2aB;l#0dS^?}u> zSzyJ1CcS~REF!R?eY3&9f-M5A(q&r3mWUp}8qzYbqGpR!U>%7JteDWUFR&hK9cUeV z&9Gh?UB{XmZdTN6)dE;=L!SmLq-*Xi8jj^KMX=$A}UCj@bIDB%lOR~EZ78T{?WLt-S3a;qXW)`m5 ze*{BH3QMx{)AO7+f@JL}BWvl5AxZImQ-5Gp>!K$1%=M6Rbg~mPry#gUvFG-CWZp=ops@{lJtvwtVMOsW=2ZX zW=6UL9y3w`Vn!+(uNirc&&Ue1>lx1Br`WpSyrp-G1UIer-KMZBXH$c%Bi-VBA!gKM z1+A2{04jCsaCeso5(1*-RY~zFw|hf1_qrhkhzKQh5lV?XloV}3DZndKhzNB)ZmbG5 zE6Qh-;e79vz}!qY00o*3`biH8zZM-fWuB9sz&C@I>6 zQh-;ejv^H7IYxzgsb{>EmRxSlPReoyPmZ_trIcGRC0kvYm=bSwODng=rVbHTa?O#P zoT#j79|dSq94W|2$l~OrXhTi`UgQb|x!=;tz(nit*#I_$SN7`RGld5e)g+M#sf%Dr zaZ+e`5Lh z$l)0Ci^BmpFR<6T(C1-r&}!T_*=HHQaEw8=a@jhShP@*~{LP=eO zQX&r}MVn9x@CtQEgqqgBP=%`cWW3KA9!gZFL@23?P)g*Xq-YaL0bZd_iBNi0kqWgS zE8gc99!gX{i%?P*p_Ir&Nzo>h0=z=~EJDp0kfi3r$=G|&huYbZzBk?HLvmIvD=#}h zku1xO_qoGKit2AcQtE=F5;;jJ+K^O$7s>Q}@4hjVKwE2aUO;_mC~XF~J?@+~ z)rJHFDVw|LqG&;P=#Y6JM%^v`dHimfyRS)O6w4WiO6@>B7)VqwkfIF(Wy2XL8!rZ3 z#2x56w5=G`uo^MUg8i}3ZY!Df^w3D(WcLBxI5f1y{Z|%o2M%QmPZjHGpEgwvs(X@O zscMakX>E-d=I7Ik$5Ly~%wa9XniFarALi>?cdFLNwPh8OAL%>TofThT3-bd&u1aQE zervGV+F2B8r43(Z4d_$NDl155C|_#y;qhVPc!ota#%7EqDl#lZn+z)(o?&Ifn0hQc zXp9(RSXiV2&nb)#dyWSd)pVP{5*2}^XcJi3@W9H(EAVs?c*clA6*ypIeAogWSX7ox zV2O&rQnU%IYHFbB;MLFs@(d!BvV}}8WnFv zk14nEM-Na}E{u*3+t2BWYOf7li3++>w4tkPI9+AqMR%{Ddv?r76}Vt*yw&9Ca%=E7 zC%Kd3;=|5yDx&(%hKfW56)DaHvQyW@?CRT@-T2D`G$Sy3MSi2EsN0br#3>O!Z zmK>X!l^UCzl-f%~0|S`95=T=jN~>#KpID7I)Jj8G!|>9O-p+>pvPD*6Oy8_7Nxgfz zwPig7Cxk1fadlyPnfe73C)(sY^_P z(}nf$q&l2q=A=f9nq^IjJ6Rab{9O6)IAMYCO3Xzx>GL zQ06FWawu0OPj14LHzzme%F)RURD+hHLGYBC-oauMlM`Zk#ipqqTFF!D^R^?W)NU>N zRds0g=!xN;(={dJl27tSVc^JeHP}(7Ttr^9D|nYRY*^?;h!FO7`sK znqw?PkkiUYjP2SZCMz-7oq#v$-nO!fvTbTw7P~{U;uD>@X8vnC{p(H^ZlK`=1FWbk z0h$}a2XyiCd?iq6IQ@LhN~P9}@Jc0X21nRP@>@{Mkt#A&a%|U_$361Ry&jyw^U2Jc zJI#H?l;P9o?(w+OyzqtO2Fx5MvnhBFV|IW#^8!CW zg}m4^?DRd2TzetnwHIPHdQ9v2v;BiF+_SY6F`I`NGCQdaXWxZQuEd_wn%8?+1(&l5 z_2zM$opCs17Oac2+p^a6=LAuC!n5W*RIjS)vBSYy5Yx(=6H%A#(D(u%-VkODE-Djp2i(Uys%9kBYn)P(NjGvF8>;@Ym9iXnDQ!C-4%ae#H` zrRq)i&=U1j$mj1;vpmNh+}~Lp;Y=SK=*kBfU==QC_%C?W6-`ess3G#gn%!Iw;@0f$ z;qCEqw9|0%%l9^HY8`qxGMp1vJ@c16^T?-L$LlXPj;|~|r`e)`$UKdhs-QJFFZK;2M58_aZ#z zo^$;b>x(fuyC^UFsr=k12a^2j}ZAPUFH+4^2NR-{2KxXm$hu{M!-)_PWQ%c!9CMrS_#Wt zi?sMo@oxg|Sl-I!KKE??41=~rYj?ytG!%-?%(8UEwy?*{i8xoE*MZ+R7GM45|!@1TuvFrlTNwc=Im zT(kvk`Tfd<%iaCG@+w~mLRQuK7g>EkEHdNARk7x-!or>{m5Wvd|HA@tZq<}fnHxX# zFkvGgo+zHfaIX}#7d<@qnkz-w`~#RxzwYJWL8k-fOpp$2_7wN>&_VQi-RpJ_DNkpW zlee}7-slH0vO14%WKDjf9vGsI(G_pRhUK%aQ&9~S+enX3y%NZ`vMU1OrJ=NOf1{^t zB=D5mt3D^dRyU7#KXfQRRD;D<%9nxG_SNND6Y*WWiM4V=O{?{1hBfa$BhcirBdneK z1N8~4^~54aGizjE11sjuDE0-T_{~`Hs)+JeJanQBYXLkbSWD4{wL9R!S^-|HCyIB1 zgV#I>N;$J2&Wsb7CjN26GL`F$;I%ce;*}ERuY%}&8-fB@AP7p)hM+s(K~Mo+1m_Ea z7vAc9UxGv5j%~Dxa}(7H8-fC`MwSF5NSjqQ1f>TFco0;87r_-3QSStR`?4!q8ymKT zvlG>38+H;E>64-jJ9of?odUerZ5HVpRNm*l1b-@z4f})>6xD7Uf)W)3rD#LY9q=Hi z055{O1;Nwndfk^`_WB-SUvYw>`oe~wL2~OD9BkVdSD5|SA1SKjmC`B8B z?tlkD1$Ys>$_UoC25rh@Z~1p_3Ih|=LVa^n%PJajf2q&c%DByb_wC4Yo4fjI2J4Be zsI~K80F}Bmd7Dd&`Zyq3UX|T&XRDesvJ!KCPSq$+XT|t;p9e0YwYQ}DMDb{%iWJeL zE}|)sN0XvWGzEA?V{aDOSJ9xYU0H6P+*+BNvaON6o!nD%cx!}tX(Ap|(+{9Ol z;j~26S{Q*YnvF(+##&3`GP4J{u%ld44fQ#C7W~`{C zaB8AT64azFs40i(NeVWuK=$(_qqsH^OMSCJ^M+D&qf|hR2xJvsf%Dr zAv0?`KX7W9l!=F{uxp@A%H`4cmyQX{K6!x|C5mu7D z?T7746hF7nc5~Jr3Bp3$EeI=-XJ3jogq01?{zoDq1^d(PyHx+OKi20<9#T|?L|mzh zxJu-SlA=vq1$ZUukRb8xr~U6sqTsVwpR=5Vs7?tIQWqqY$Vo`ihJ*sVNSqQRvOiC~ zFNw3C_wc#QNr>uaK|<<+gc3OkDcX=wfES6M1&I>}#=CBYyn_ioI)B?MD$N=>Frb6d zrC;}-xOxEYryvDbSHB3L(wW6a|F#G>>`=NZ+|ffR=~a0&QTfUc?!RG>KvkRAvY7-t zVoQL>uCHv^`)WMAaCojXc0RFnUqR>O;mV~l?u(T4x}1)vf^FzX)P{~b;6X}>loB|U=E5mi$gIuf;^;|_Sxk$|A1Z0Pi9y?aKiSR#u*NW1f4&=&U6jg;BQjW`GZ9lmHd$G*>{QB&~XPm=tw}&Q8xFWGhEOqIN8Fg zx}Lop3pWGB&;1?V54+~)iy28r+@|W+o&({Dcak0*6SHT3Oq}y2j>>xiYfAaAulnev zyi=l@V3T8s+H}et@aU8T#9%8Mufd+cyTcwC^D+ai%O7Z%|7zTN;p95@D^l^t7=c?> z_y1<5&*S7oHOGdWL~Y2q10LigAjl~jFLHClPgDAztz+e%>g&nq(5cMy<(!eImfA3q zs0|}`z=M$l1S4hR#b_yK1m;@@eh9WMFC^BVr;|K+^*WQ8{to9Qs<&)-Nz{gyJK(`f z0)m&a@#6KC;AL4)o-G0|s$=cBv+8Gkee`Xdk*K!VFp{VZBX_`qkpu)IW#h$Yi?~mY zoU3O2`fWGQ9CiJ!Gy92L_E#b4dpR#r?Xlq{Q5#7vnH*= z)}Ze*Jh^@PeP;Sm&Pr5AY*MxsqNYthu?tn)>Bp~{sY`psM zm*~gp)zz$?7w@9``o)Y=!-r9lmElcEq281{0C!3rfcsk&C*VmCv*3ofQx;W}|I`fB z$xd)o=PO=uZb_HIf)RQ7xm}sYID%~J+Ru%HKkfXega7%D(Rt0qv3ya-pIXtEnswT` z|Mph)i&RG>Y6Tq4Q*-mPOA3qf)PEq2ET6c3IZUdXxWs9xC; ze-IKL3STzC4b;Gd;iv&{_~wqz&L5RslADyD6XlD-;0vY$qQ+%s{6R#Mrp%U^H3N?7 zPP5qJlDq@(>4f{8j^)QE(#jIRnzG3A&E7u(k1X*FuPzWn6Sn0@0cUIC_VdPK|E0b7Z4$%@;7;(hNp*^e| zVdYy^uCQ{Ob;w|)7AuWeX~RkkD@m;M-v)PNyi4Kn#MNj-SO zm{hthA^`rf8U816HGG|kSERUziN8v54im3SaT*hENO2q!|B&KvCf=0dKqmer#lB3u zEycu$0OXM3V@!lnY|lizIZ#Ay5wX#+X)|2>A$*nb2q{|;4O*67VFtRe1?QM(O7UwZ z`bzO26RS#bHxvD(xP^(;rMQ-ffl^$>#F|okg^9JL_#zX7r8tFA_;E9Q{16sYy_In7(dXLnf~O$;usd-(mFBhs!NMx+Mlj=q0G|HrB!EI6_+JumbaXm z;|A0E{q9nKVCru!?Q7N$xU|ohX1KKXndT!jM%1y6Y1LfVt4ymQv9c;{K@_N4*10Ws zvNVJzpv5|N7XUDkRr?)$;&o-WS~tfP6zBK@#XD}HBoKs>L0!}fv`4)`N0b5HLz!S3 zdJ^nHSzr$u2o9hea2O2%Cr}EroT^b1($WVt4Zkuo;>QqtHCq7A=6C(95thS_I?JVwi}Q!?9=u9FJauQ_<`2 zS@b5Hjn=?!>^W4aK8BQ98PbGSF?5gYKZg7@;DJ(I~8=N!UPBaTPQhS4H!1b+iNrpyjw0 zT7zq&cW_-%^%{@jxp?-OWVh^J1%XThvhpA zo5ybMvdj*kZfPSy0<+rUuY5Z<$<i{~aOrZVl&Czz&Kv80nB0$(}znra|%h{!erEez1NXZHE&Qx*s z9`VlfbJ9SpGwjAz`9-`lS({5$zY*(=<98RxdIJW!8uGQ{Cl|(hQyGHy#x;aUt{o}_ zd~Bu{ zE-}lpxetNbJkxwhPi9YpHDaNKvCR4*mvwulsk}0?W=vDLWm+AkWw

Fs;8+19zB~ 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 KD0{OnsQG^!=uzqb diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioLinhasHorarioSimplificado.jrxml b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioLinhasHorarioSimplificado.jrxml index 66bef579e..04e35ef9d 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioLinhasHorarioSimplificado.jrxml +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioLinhasHorarioSimplificado.jrxml @@ -618,7 +618,7 @@ - + @@ -705,13 +705,6 @@ - - - - - - - @@ -769,7 +762,7 @@ - + @@ -831,13 +824,6 @@ - - - - - - - diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioLinhasHorarioController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioLinhasHorarioController.java index cb237ff43..be1534a96 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioLinhasHorarioController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioLinhasHorarioController.java @@ -30,6 +30,7 @@ import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.entidad.GrupoRuta; import com.rjconsultores.ventaboletos.entidad.Ruta; import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioLinhasHorario; +import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioLinhasHorarioSimpData; import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioLinhasHorarioSimplificado; import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; import com.rjconsultores.ventaboletos.service.CorridaService; @@ -175,7 +176,12 @@ public class RelatorioLinhasHorarioController extends MyGenericForwardComposer { parametros.put("ISSENTIDOIDA", chkIndSentidoIda.isChecked()); parametros.put("ISSENTIDOVOLTA", chkIndSentidoVolta.isChecked() ); parametros.put("ISPORDATA",chkSimplificadoPorData.isChecked() ); - relatorio = new RelatorioLinhasHorarioSimplificado(parametros, dataSourceRead.getConnection()); + if (!chkSimplificadoPorData.isChecked()) { + relatorio = new RelatorioLinhasHorarioSimplificado(parametros, dataSourceRead.getConnection()); + } else { + relatorio = new RelatorioLinhasHorarioSimpData(parametros, dataSourceRead.getConnection()); + } + tituloRelatorio = "relatorioLinhasHorarioSimplificadoController.window.title"; } From 5bbec563bbf5733d4cfacc63d8b14ffda471532b Mon Sep 17 00:00:00 2001 From: celio Date: Fri, 31 Mar 2023 15:54:20 -0300 Subject: [PATCH 2/2] =?UTF-8?q?Altera=C3=A7=C3=A3o=20do=20pom.xml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f8a145437..a14b6d272 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 br.com.rjconsultores ventaboletosadm - 1.0.88 + 1.0.89 war