diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioOrigemDestino.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioOrigemDestino.java index da4e56e51..6ff801f74 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioOrigemDestino.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioOrigemDestino.java @@ -31,45 +31,109 @@ public class RelatorioOrigemDestino extends Relatorio { String sql = getSQL(empresaIds, corridasIds, dataDe, dataAte, bilhetesGratuitos, trechosSemMovimento); - List lsPesoOperacionalRelatorio = getPesoOperacional(corridasIds, dataDe, dataAte, bilhetesGratuitos); + List lsPesoOperacionalRelatorio = getPesoOperacional(corridasIds, dataDe, dataAte, bilhetesGratuitos, empresaIds, trechosSemMovimento); getParametros().put("lsPesoOperacionalRelatorio", lsPesoOperacionalRelatorio); getParametros().put("SQL", sql); } private List getPesoOperacional(String corridasIds, String dataDe, String dataAte, - Boolean bilhetesGratuitos) throws SQLException { + Boolean bilhetesGratuitos, String empresaIds, Boolean mostratTrechosSemMovimento) throws SQLException { StringBuilder sql = new StringBuilder(); - sql.append(" SELECT "); - sql.append(" CA.CORRIDA_ID CORRIDA_ID, "); - sql.append(" CA.FECCORRIDA FECCORRIDA, "); - sql.append(" O.CVEPARADA CVE_ORIGEM, "); - sql.append(" O.DESCPARADA ORIGEM, "); - sql.append(" D.CVEPARADA CVE_DESTINO, "); - sql.append(" D.DESCPARADA DESTINO, "); - sql.append(" SUM(CA.PRECIOPAGADO) RECEITA "); - sql.append(" FROM CAJA CA "); - sql.append(" INNER JOIN PARADA O ON O.PARADA_ID = CA.ORIGEN_ID "); - sql.append(" INNER JOIN PARADA D ON D.PARADA_ID = CA.DESTINO_ID "); - sql.append(" WHERE CA.ACTIVO = 1 "); - sql.append(" AND ca.indreimpresion = 0 "); - sql.append(" AND CA.PRECIOBASE IS NOT NULL "); - if (bilhetesGratuitos) { - sql.append(" AND CA.PRECIOBASE >= 0 "); + + if (mostratTrechosSemMovimento) { + sql.append(" SELECT TRAMOS.*, NVL(SOMA.RECEITA, 0) RECEITA "); + sql.append(" FROM "); + sql.append(" ( "); + sql.append(" SELECT "); + sql.append(" CA.CORRIDA_ID CORRIDA_ID, "); + sql.append(" CA.FECCORRIDA FECCORRIDA, "); + sql.append(" O.CVEPARADA CVE_ORIGEM, "); + sql.append(" O.DESCPARADA ORIGEM, "); + sql.append(" D.CVEPARADA CVE_DESTINO, "); + sql.append(" D.DESCPARADA DESTINO, "); + sql.append(" SUM(CA.PRECIOPAGADO) RECEITA "); + sql.append(" FROM CAJA CA "); + sql.append(" INNER JOIN PARADA O ON O.PARADA_ID = CA.ORIGEN_ID "); + sql.append(" INNER JOIN PARADA D ON D.PARADA_ID = CA.DESTINO_ID "); + sql.append(" WHERE CA.ACTIVO = 1 "); + sql.append(" AND ca.indreimpresion = 0 "); + sql.append(" AND CA.PRECIOBASE IS NOT NULL "); + if (bilhetesGratuitos) { + sql.append(" AND CA.PRECIOBASE >= 0 "); + } else { + sql.append(" AND CA.PRECIOBASE > 0 "); + } + if (!corridasIds.equals("Todas")) { + sql.append(" AND CA.CORRIDA_ID IN (").append(corridasIds).append(")"); + } + sql.append(" AND CA.FECCORRIDA BETWEEN TO_DATE('").append(dataDe).append("','DD/MM/YYYY HH24:MI:SS') AND TO_DATE('").append(dataAte).append("','DD/MM/YYYY HH24:MI:SS') "); + sql.append(" AND CA.EMPRESACORRIDA_ID IN (").append(empresaIds).append(") "); + sql.append(" GROUP BY "); + sql.append(" CA.CORRIDA_ID, "); + sql.append(" CA.FECCORRIDA, "); + sql.append(" O.CVEPARADA, "); + sql.append(" O.DESCPARADA, "); + sql.append(" D.CVEPARADA, "); + sql.append(" D.DESCPARADA "); + sql.append(" ) SOMA "); + sql.append(" RIGHT JOIN "); + sql.append(" ( "); + sql.append(" SELECT "); + sql.append(" CO.CORRIDA_ID CORRIDA_ID, "); + sql.append(" CO.FECCORRIDA FECCORRIDA, "); + sql.append(" O.CVEPARADA CVE_ORIGEM, "); + sql.append(" O.DESCPARADA ORIGEM, "); + sql.append(" D.CVEPARADA CVE_DESTINO, "); + sql.append(" D.DESCPARADA DESTINO "); + sql.append(" FROM CORRIDA CO "); + sql.append(" INNER JOIN RUTA R ON R.RUTA_ID=CO.RUTA_ID "); + sql.append(" INNER JOIN RUTA_COMBINACION RC ON RC.RUTA_ID=R.RUTA_ID "); + sql.append(" INNER JOIN TRAMO TR ON TR.TRAMO_ID=RC.TRAMO_ID "); + sql.append(" INNER JOIN PARADA O ON O.PARADA_ID = TR.ORIGEN_ID "); + sql.append(" INNER JOIN PARADA D ON D.PARADA_ID = TR.DESTINO_ID "); + sql.append(" WHERE R.ACTIVO = 1 AND RC.ACTIVO = 1 AND TR.ACTIVO = 1 "); + if (!corridasIds.equals("Todas")) { + sql.append(" AND CO.CORRIDA_ID IN (").append(corridasIds).append(")"); + } + sql.append(" AND CO.FECCORRIDA BETWEEN TO_DATE('").append(dataDe).append("','DD/MM/YYYY HH24:MI:SS') AND TO_DATE('").append(dataAte).append("','DD/MM/YYYY HH24:MI:SS') "); + sql.append(" AND CO.EMPRESACORRIDA_ID IN (").append(empresaIds).append(") "); + sql.append(" )TRAMOS "); + sql.append(" ON (TRAMOS.CORRIDA_ID=SOMA.CORRIDA_ID AND TRAMOS.FECCORRIDA=SOMA.FECCORRIDA AND TRAMOS.CVE_ORIGEM=SOMA.CVE_ORIGEM AND TRAMOS.CVE_DESTINO=SOMA.CVE_DESTINO) "); + sql.append(" ORDER BY TRAMOS.CORRIDA_ID "); } else { - sql.append(" AND CA.PRECIOBASE > 0 "); + sql.append(" SELECT "); + sql.append(" CA.CORRIDA_ID CORRIDA_ID, "); + sql.append(" CA.FECCORRIDA FECCORRIDA, "); + sql.append(" O.CVEPARADA CVE_ORIGEM, "); + sql.append(" O.DESCPARADA ORIGEM, "); + sql.append(" D.CVEPARADA CVE_DESTINO, "); + sql.append(" D.DESCPARADA DESTINO, "); + sql.append(" SUM(CA.PRECIOPAGADO) RECEITA "); + sql.append(" FROM CAJA CA "); + sql.append(" INNER JOIN PARADA O ON O.PARADA_ID = CA.ORIGEN_ID "); + sql.append(" INNER JOIN PARADA D ON D.PARADA_ID = CA.DESTINO_ID "); + sql.append(" WHERE CA.ACTIVO = 1 "); + sql.append(" AND ca.indreimpresion = 0 "); + sql.append(" AND CA.PRECIOBASE IS NOT NULL "); + if (bilhetesGratuitos) { + sql.append(" AND CA.PRECIOBASE >= 0 "); + } else { + sql.append(" AND CA.PRECIOBASE > 0 "); + } + if (!corridasIds.equals("Todas")) { + sql.append(" AND CA.CORRIDA_ID IN (").append(corridasIds).append(")"); + } + sql.append(" AND CA.FECCORRIDA BETWEEN TO_DATE('").append(dataDe).append("','DD/MM/YYYY HH24:MI:SS') AND TO_DATE('").append(dataAte).append("','DD/MM/YYYY HH24:MI:SS') "); + sql.append(" AND CA.EMPRESACORRIDA_ID IN (").append(empresaIds).append(") "); + sql.append(" GROUP BY "); + sql.append(" CA.CORRIDA_ID, "); + sql.append(" CA.FECCORRIDA, "); + sql.append(" O.CVEPARADA, "); + sql.append(" O.DESCPARADA, "); + sql.append(" D.CVEPARADA, "); + sql.append(" D.DESCPARADA "); + sql.append(" ORDER BY CA.CORRIDA_ID "); } - if (!corridasIds.equals("Todas")) { - sql.append(" AND CA.CORRIDA_ID IN (").append(corridasIds).append(")"); - } - sql.append(" AND CA.FECCORRIDA BETWEEN TO_DATE('").append(dataDe).append("','DD/MM/YYYY HH24:MI:SS') AND TO_DATE('").append(dataAte).append("','DD/MM/YYYY HH24:MI:SS') "); - sql.append(" GROUP BY "); - sql.append(" CA.CORRIDA_ID, "); - sql.append(" CA.FECCORRIDA, "); - sql.append(" O.CVEPARADA, "); - sql.append(" O.DESCPARADA, "); - sql.append(" D.CVEPARADA, "); - sql.append(" D.DESCPARADA "); - sql.append(" ORDER BY CA.CORRIDA_ID "); Connection conexao = getConexao(); @@ -159,7 +223,6 @@ public class RelatorioOrigemDestino extends Relatorio { PesoOperacional pesoOperacional = new PesoOperacional(); pesoOperacional.setCorridaId(idCorrida); - // pesoOperacional.setFecCorrida(id.getFeccorrida()); pesoOperacional.setLocalidade(parada); pesoOperacional.setReceitaSaida(receitaSaida); pesoOperacional.setReceitaChegada(receitaChegada); @@ -180,6 +243,15 @@ public class RelatorioOrigemDestino extends Relatorio { sql.append(" SELECT "); sql.append(" resultado.*, "); sql.append(" SUM(TR.CANTKMREAL) KM_CORRIDA, "); + sql.append(" ( "); + sql.append(" SELECT MAX(DA.CANTASIENTOS) "); + sql.append(" FROM CORRIDA CO "); + sql.append(" INNER JOIN ROL_OPERATIVO ROL ON ROL.ROLOPERATIVO_ID=CO.ROLOPERATIVO_ID "); + sql.append(" INNER JOIN DIAGRAMA_AUTOBUS DA ON DA.DIAGRAMAAUTOBUS_ID = ROL.DIAGRAMAAUTOBUS_ID "); + sql.append(" WHERE CO.CORRIDA_ID=RESULTADO.CORRIDA_ID "); + sql.append(" AND CO.FECCORRIDA BETWEEN to_date('").append(dataDe).append("','dd/mm/yyyy HH24:mi:ss') AND to_date('").append(dataAte).append("','dd/mm/yyyy HH24:mi:ss') "); + sql.append(" GROUP BY DA.DIAGRAMAAUTOBUS_ID "); + sql.append(" ) DISPONIBILIDADE, "); sql.append(" ( SELECT COUNT(*) "); sql.append(" FROM caja ca "); sql.append(" INNER JOIN CORRIDA CO ON (CO.CORRIDA_ID = CA.CORRIDA_ID AND CO.FECCORRIDA = CA.FECCORRIDA) "); @@ -189,7 +261,6 @@ public class RelatorioOrigemDestino extends Relatorio { sql.append(" AND CA.FECCORRIDA BETWEEN to_date('").append(dataDe).append("','dd/mm/yyyy HH24:mi:ss') AND to_date('").append(dataAte).append("','dd/mm/yyyy HH24:mi:ss') "); sql.append(" AND ca.indreimpresion = 0 "); sql.append(" AND CA.PRECIOBASE IS NOT NULL "); - sql.append(" AND CO.ACTIVO = 1 "); if (bilhetesGratuitos) { sql.append(" AND CA.PRECIOBASE >= 0 "); } else { @@ -207,7 +278,6 @@ public class RelatorioOrigemDestino extends Relatorio { sql.append(" AND CA.FECCORRIDA BETWEEN to_date('").append(dataDe).append("','dd/mm/yyyy HH24:mi:ss') AND to_date('").append(dataAte).append("','dd/mm/yyyy HH24:mi:ss') "); sql.append(" AND ca.indreimpresion = 0 "); sql.append(" AND CA.PRECIOBASE IS NOT NULL "); - sql.append(" AND CO.ACTIVO = 1 "); if (bilhetesGratuitos) { sql.append(" AND CA.PRECIOBASE >= 0 "); } else { @@ -237,7 +307,6 @@ public class RelatorioOrigemDestino extends Relatorio { sql.append(" INNER JOIN EMPRESA EM ON EM.EMPRESA_ID = CO.EMPRESACORRIDA_ID "); sql.append(" INNER JOIN RUTA RU ON RU.RUTA_ID = CO.RUTA_ID "); sql.append(" WHERE CA.ACTIVO = 1 "); - sql.append(" AND CO.ACTIVO = 1 "); sql.append(" AND RU.ACTIVO = 1 "); sql.append(" AND EM.ACTIVO = 1 "); sql.append(" AND ORI.ACTIVO = 1 "); diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOrigemDestino.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOrigemDestino.jasper index e1c3f69ad..7aed6321d 100644 Binary files a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOrigemDestino.jasper and b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOrigemDestino.jasper differ diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOrigemDestino.jrxml b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOrigemDestino.jrxml index c5c85938e..e4a84bfab 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOrigemDestino.jrxml +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOrigemDestino.jrxml @@ -35,6 +35,7 @@ + @@ -83,6 +84,9 @@ + + + @@ -248,7 +252,7 @@ - + @@ -397,45 +401,45 @@ - + - + - + - + - + - + - + @@ -483,7 +487,7 @@ - + @@ -500,9 +504,26 @@ - + - + + + + + + + + + + + + + + + + + + diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioOrigemDestinoController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioOrigemDestinoController.java index 55c1d0714..7b6c767e1 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioOrigemDestinoController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioOrigemDestinoController.java @@ -98,7 +98,7 @@ public class RelatorioOrigemDestinoController extends MyGenericForwardComposer { if (corridaList.getData().length == 0) { try { Messagebox.show(Labels.getLabel("MSG.ningunRegistro"), - Labels.getLabel("relatorioLinhaOperacionalController.window.title"), + Labels.getLabel("relatorioOrigemDestinoController.window.title"), Messagebox.OK, Messagebox.INFORMATION); } catch (InterruptedException ex) { } @@ -133,50 +133,57 @@ public class RelatorioOrigemDestinoController extends MyGenericForwardComposer { Date dataDe = datInicial.getValue(); Date dataAte = datFinal.getValue(); - Map parametros = new HashMap(); - parametros.put("BILHETES_GRATUITOS", chkBilhetesGratuitos.isChecked()); - parametros.put("TRECHOS_SEM_MOVIMENTO", chkTrechoSemMovimento.isChecked()); - parametros.put("DATA_DE", sdf.format(dataDe)); - parametros.put("DATA_ATE", sdf.format(dataAte)); - parametros.put("DATA_DE_WHERE", sdf.format(dataDe) + " 00:00:00"); - parametros.put("DATA_ATE_WHERE", sdf.format(dataAte) + " 23:59:59"); - - Comboitem cbiEmpresa = cmbEmpresa.getSelectedItem(); - String empresaId; - String empresas; - if (cbiEmpresa != null) { - Empresa empresa = (Empresa) cbiEmpresa.getValue(); - empresaId = empresa.getEmpresaId().toString(); - empresas = empresa.getNombempresa(); + Boolean trechoSemMovimento = chkTrechoSemMovimento.isChecked(); + if ((trechoSemMovimento) && (lsCorridasSelecionadas.isEmpty())) { + Messagebox.show(Labels.getLabel("relatorioOrigemDestinoController.MSG.trechoSemMovimento"), + Labels.getLabel("relatorioOrigemDestinoController.window.title"), + Messagebox.OK, Messagebox.INFORMATION); } else { - empresaId = "0"; - empresas = ""; - for (int i = 0; i < lsEmpresa.size(); i++) { - Empresa empresa = lsEmpresa.get(i); - empresaId = empresaId + ", " + empresa.getEmpresaId(); - empresas = empresas + ", " + empresa.getNombempresa(); + Map parametros = new HashMap(); + parametros.put("BILHETES_GRATUITOS", chkBilhetesGratuitos.isChecked()); + parametros.put("TRECHOS_SEM_MOVIMENTO", chkTrechoSemMovimento.isChecked()); + parametros.put("DATA_DE", sdf.format(dataDe)); + parametros.put("DATA_ATE", sdf.format(dataAte)); + parametros.put("DATA_DE_WHERE", sdf.format(dataDe) + " 00:00:00"); + parametros.put("DATA_ATE_WHERE", sdf.format(dataAte) + " 23:59:59"); + + Comboitem cbiEmpresa = cmbEmpresa.getSelectedItem(); + String empresaId; + String empresas; + if (cbiEmpresa != null) { + Empresa empresa = (Empresa) cbiEmpresa.getValue(); + empresaId = empresa.getEmpresaId().toString(); + empresas = empresa.getNombempresa(); + } else { + empresaId = "0"; + empresas = ""; + for (int i = 0; i < lsEmpresa.size(); i++) { + Empresa empresa = lsEmpresa.get(i); + empresaId = empresaId + ", " + empresa.getEmpresaId(); + empresas = empresas + ", " + empresa.getNombempresa(); + } } - } - parametros.put("EMPRESA_IDS", empresaId); - parametros.put("EMPRESAS", empresas); + parametros.put("EMPRESA_IDS", empresaId); + parametros.put("EMPRESAS", empresas); - String corridaIds = ""; - if (!lsCorridasSelecionadas.isEmpty()) { - for (int i = 0; i < lsCorridasSelecionadas.size(); i++) { - Corrida corrida = lsCorridasSelecionadas.get(i); - corridaIds = corridaIds + ", " + corrida.getId().getCorridaId(); + String corridaIds = ""; + if (!lsCorridasSelecionadas.isEmpty()) { + for (int i = 0; i < lsCorridasSelecionadas.size(); i++) { + Corrida corrida = lsCorridasSelecionadas.get(i); + corridaIds = corridaIds + ", " + corrida.getId().getCorridaId(); + } + } else { + corridaIds = "TTodas"; } - } else { - corridaIds = "TTodas"; - } - parametros.put("CORRIDAS_SELECIONADAS", corridaIds.substring(1, corridaIds.length())); + parametros.put("CORRIDAS_SELECIONADAS", corridaIds.substring(1, corridaIds.length())); - Relatorio relatorio = new RelatorioOrigemDestino(parametros, dataSource.getConnection()); + Relatorio relatorio = new RelatorioOrigemDestino(parametros, dataSource.getConnection()); - Map args = new HashMap(); - args.put("relatorio", relatorio); + Map args = new HashMap(); + args.put("relatorio", relatorio); - openWindow("/component/reportView.zul", + openWindow("/component/reportView.zul", Labels.getLabel("relatorioOrigemDestinoController.window.title"), args, MODAL); + } } } diff --git a/web/WEB-INF/i3-label_pt_BR.label b/web/WEB-INF/i3-label_pt_BR.label index 433cff9fb..32435c1ad 100644 --- a/web/WEB-INF/i3-label_pt_BR.label +++ b/web/WEB-INF/i3-label_pt_BR.label @@ -4447,6 +4447,6 @@ relatorioOrigemDestinoController.descRuta.label = Linha relatorioOrigemDestinoController.MSG.selecionarCorridas = Selecione algum serviço para gerar o relatório. relatorioOrigemDestinoController.chkBilhetesGratuitos.value = Considerar bilhetes gratuitos relatorioOrigemDestinoController.chkTrechoSemMovimento.value = Exibir trechos sem movimento - +relatorioOrigemDestinoController.MSG.trechoSemMovimento = Para exibir trechos sem movimento é necessário selecionar quais são os serviços desejados.