From 20d7f81c8892a3616ea6d2e90e16f9e1bd6f1378 Mon Sep 17 00:00:00 2001 From: "wallace.novo" Date: Tue, 22 Nov 2022 17:44:49 +0000 Subject: [PATCH] Conforme solicitado pelo cliente, o campo Km Rodado foi ajustado. Pedir o cliente pra validar e apontar a divergencia de valores, se houver. Informando qual o valor seria o esperado. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit o IRK é calculado da seguinte forma : Valor Gerado Através (Total/Km) onde Total é o somatório do valor das passagens do serviço incluído venda embarcada. e Km é a extensão do km rodado do serviço durante período pesquisado . Total: Total das Receita daquele horário Passagem + Pedágio + seguro + Taxa de Embarque KM: Quilometragem daquela linha (Cadastro Sequência de linha). IRK Mínimo: Valor estipulado pela empresa (definido na configuração de empresa) Receita mínima: Valor gerado através (IRK mínimo x KM da Linha) Diferença de Receitas: Valor Gerado Através (Total da Receita daquele horário - a Receita mínima) Total de Grupo IRK: Total de Grupo "Total" / Total de Grupo "KM" Total de Grupo Total: Somar toda Receita Total de Grupo Km: Somar todos Km Total de Grupo IRK Mínimo: Somente Repetir o Valor Total de Grupo Receita Mínima: Somar Toda Receita Total de Grupo Diferença de Receitas: Total de Grupo "Total" - Total de Grupo "Receita mínima" fixes bug#1743 qua: dev: git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@115598 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../relatorios/impl/RelatorioIndiceIRK.java | 93 ++++++++++++------- 1 file changed, 61 insertions(+), 32 deletions(-) diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioIndiceIRK.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioIndiceIRK.java index 9d13e10ee..fbe647c63 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioIndiceIRK.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioIndiceIRK.java @@ -12,6 +12,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Date; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -53,7 +54,7 @@ public class RelatorioIndiceIRK extends Relatorio { String rutaIds = parametros.get("LINHA_FILTRO") != null ? (parametros.get("LINHA_FILTRO").toString()) : null; String corridasIds = parametros.get("SERVICO_FILTRO") != null ? (parametros.get("SERVICO_FILTRO").toString()) : null; - // Executa query relatório e preenche objeto relatório + // Executa query relat�rio e preenche objeto relat�rio lsDadosRelatorio= preencheAgrupaRelatorioBean(preparaExecutaQuery(parametros, conexao, rutaId, empresa, grupoRutaId, rutaIds, corridasIds), parametros); // Ordena pela Desc Linha @@ -67,7 +68,7 @@ public class RelatorioIndiceIRK extends Relatorio { parametros.put("RELATORIOLIST", lsDadosRelatorio); setLsDadosRelatorio(lsDadosRelatorio); } catch (Exception e) { - log.error("Erro ao executar relatório", e); + log.error("Erro ao executar relat�rio", e); } } @@ -120,22 +121,25 @@ public class RelatorioIndiceIRK extends Relatorio { StringBuilder sb = new StringBuilder(); - sb.append("SELECT sum(extensao) as extensao,"); + sb.append("SELECT sum(extensao) AS extensao,"); sb.append(" servico,"); sb.append(" rutaid,"); sb.append(" descruta,"); - sb.append(" CASE WHEN sentido = 1 THEN 'Ida' WHEN sentido = 0 THEN 'Volta' END AS sentido, "); + sb.append(" CASE"); + sb.append(" WHEN sentido = 1 THEN 'Ida'"); + sb.append(" WHEN sentido = 0 THEN 'Volta'"); + sb.append(" END AS sentido,"); sb.append(" gruporuta,"); sb.append(" indiceirkminimo,"); sb.append(" hora,"); sb.append(" SUM(seguro) AS seguro,"); sb.append(" SUM(txembarque) AS txembarque,"); sb.append(" SUM(pedagio) AS pedagio,"); - sb.append(" SUM(passagens) AS passagens,"); - sb.append(" SUM(totalhorario) as totalhorario,"); - sb.append(" sum(irk) AS irk ,"); + sb.append(" SUM(passagens) AS passagens,"); + sb.append(" SUM(totalhorario) AS totalhorario,"); + sb.append(" sum(irk) AS irk,"); sb.append(" sum(receitaminima) AS receitaminima,"); - sb.append(" sum(diferencareceita) AS diferencareceita, "); + sb.append(" sum(diferencareceita) AS diferencareceita,"); sb.append(" prefixo "); sb.append("FROM"); sb.append(" (SELECT DISTINCT servico,"); @@ -145,15 +149,15 @@ public class RelatorioIndiceIRK extends Relatorio { sb.append(" gruporuta,"); sb.append(" indiceirkminimo,"); sb.append(" hora,"); - sb.append(" (extensao) AS extensao,"); + sb.append(" (extensao * qtdCorrida) AS extensao,"); sb.append(" SUM(seguro) AS seguro,"); sb.append(" SUM(txembarque) AS txembarque,"); sb.append(" SUM(pedagio) AS pedagio,"); sb.append(" SUM(passagens) AS passagens,"); sb.append(" (SUM(passagens) + SUM(pedagio) + SUM(txembarque) + SUM(seguro)) AS totalhorario,"); - sb.append(" round(((SUM(passagens) + SUM(pedagio) + SUM(txembarque) + SUM(seguro)) / extensao), 2) AS irk,"); - sb.append(" indiceirkminimo * extensao AS receitaminima,"); - sb.append(" (SUM(passagens) + SUM(pedagio) + SUM(txembarque) + SUM(seguro)) - (indiceirkminimo * extensao) AS diferencareceita,"); + sb.append(" round(((SUM(passagens) + SUM(pedagio) + SUM(txembarque) + SUM(seguro)) / extensao ), 2) AS irk,"); + sb.append(" indiceirkminimo * extensao * qtdCorrida AS receitaminima,"); + sb.append(" (SUM(passagens) + SUM(pedagio) + SUM(txembarque) + SUM(seguro)) - (indiceirkminimo * extensao * qtdCorrida) AS diferencareceita,"); sb.append(" prefixo"); sb.append(" FROM"); sb.append(" (SELECT cj.caja_id AS cajaId,"); @@ -162,14 +166,28 @@ public class RelatorioIndiceIRK extends Relatorio { sb.append(" r.descruta AS descruta,"); sb.append(" r.indsentidoida AS sentido,"); sb.append(" nvl(e.indiceirk, 0) AS indiceirkminimo,"); - sb.append(" nvl(gr.descgrupo, 'Não Definido') AS gruporuta,"); + sb.append(" nvl(gr.descgrupo, 'Nao Definido') AS gruporuta,"); sb.append(" to_char(co.fechorsalida, 'HH24:MI') AS hora,"); sb.append(" sum(tr.cantkmreal) AS extensao,"); sb.append(" cj.importeseguro AS seguro,"); sb.append(" cj.importetaxaembarque AS txembarque,"); sb.append(" cj.importepedagio AS pedagio,"); sb.append(" cj.preciopagado AS passagens,"); - sb.append(" r.prefixo AS prefixo"); + sb.append(" r.prefixo AS prefixo,"); + sb.append(" (SELECT count(*)"); + sb.append(" FROM"); + sb.append(" (SELECT (cjj.feccorrida)"); + sb.append(" FROM caja cjj"); + sb.append(" WHERE cjj.activo = 1"); + sb.append(" AND cjj.motivocancelacion_id IS NULL"); + sb.append(" AND cjj.indstatusboleto = 'V'"); + sb.append(" and cjj.feccorrida BETWEEN TO_DATE(:DATA_INICIO, 'DD/MM/YY hh24:mi:ss') AND TO_DATE(:DATA_FINAL, 'DD/MM/YY hh24:mi:ss') "); + sb.append(rutaIds == null ||TODOS.equals(rutaIds) ? "" : " AND r.ruta_id IN ( " + rutaIds + " ) "); + sb.append(corridasIds == null || TODOS.equals(corridasIds) ? "" : " AND cj.corrida_id IN ( " + corridasIds + " ) "); + sb.append(grupoRutaId == null || TODOS.equals(grupoRutaId) ? "" : " AND R.GRUPORUTA_ID IN ( " + grupoRutaId + " ) "); + sb.append(" AND cjj.empresacorrida_id =:empresaId "); + sb.append(" AND cjj.corrida_id IN (cj.corrida_id)"); + sb.append(" GROUP BY cjj.feccorrida))AS qtdCorrida"); sb.append(" FROM caja cj"); sb.append(" INNER JOIN ruta r ON (cj.ruta_id = r.ruta_id)"); sb.append(" LEFT JOIN grupo_ruta gr ON (r.gruporuta_id = gr.gruporuta_id)"); @@ -188,7 +206,8 @@ public class RelatorioIndiceIRK extends Relatorio { sb.append(" INNER JOIN parada origen ON (origen.parada_id = tr.origen_id)"); sb.append(" INNER JOIN parada destino ON (destino.parada_id = tr.destino_id)"); sb.append(" WHERE cj.activo = 1"); - sb.append(" AND cj.motivocancelacion_id IS NULL and cj.indstatusboleto = 'V' "); + sb.append(" AND cj.motivocancelacion_id IS NULL"); + sb.append(" AND cj.indstatusboleto = 'V'"); sb.append(" and cj.feccorrida BETWEEN TO_DATE(:DATA_INICIO, 'DD/MM/YY hh24:mi:ss') AND TO_DATE(:DATA_FINAL, 'DD/MM/YY hh24:mi:ss') "); sb.append(rutaIds == null ||TODOS.equals(rutaIds) ? "" : " AND r.ruta_id IN ( " + rutaIds + " ) "); sb.append(corridasIds == null || TODOS.equals(corridasIds) ? "" : " AND cj.corrida_id IN ( " + corridasIds + " ) "); @@ -200,12 +219,12 @@ public class RelatorioIndiceIRK extends Relatorio { sb.append(" r.indsentidoida,"); sb.append(" e.indiceirk,"); sb.append(" gr.descgrupo,"); - sb.append(" co.fechorsalida, "); - sb.append(" cj.importeseguro,"); - sb.append(" cj.importetaxaembarque,"); - sb.append(" cj.importepedagio,"); - sb.append(" cj.preciopagado,"); - sb.append(" r.prefixo"); + sb.append(" co.fechorsalida,"); + sb.append(" cj.importeseguro,"); + sb.append(" cj.importetaxaembarque,"); + sb.append(" cj.importepedagio,"); + sb.append(" cj.preciopagado,"); + sb.append(" r.prefixo"); sb.append(" ORDER BY r.descruta) dados_sem_agrupamento"); sb.append(" GROUP BY servico,"); sb.append(" rutaid,"); @@ -215,8 +234,10 @@ public class RelatorioIndiceIRK extends Relatorio { sb.append(" indiceirkminimo,"); sb.append(" hora,"); sb.append(" extensao,"); - sb.append(" prefixo"); - sb.append(" ORDER BY descruta, hora )tabela "); + sb.append(" prefixo,"); + sb.append(" qtdCorrida"); + sb.append(" ORDER BY descruta, "); + sb.append(" hora)tabela "); sb.append("GROUP BY servico,"); sb.append(" rutaid,"); sb.append(" descruta,"); @@ -224,8 +245,11 @@ public class RelatorioIndiceIRK extends Relatorio { sb.append(" gruporuta,"); sb.append(" indiceirkminimo,"); sb.append(" hora,"); - sb.append(" prefixo"); - sb.append(" ORDER BY descruta, sentido, hora "); + sb.append(" prefixo "); + sb.append("ORDER BY descruta,"); + sb.append(" sentido,"); + sb.append(" hora"); + return sb.toString(); @@ -237,7 +261,7 @@ public class RelatorioIndiceIRK extends Relatorio { Date dataInicio = (Date) parametros.get("DATA_INICIO"); Date dataFinal = (Date) parametros.get("DATA_FINAL"); - int diferenciaDeDiasFiltroData = calcularQuantidadeDeDiasFiltroData(dataInicio, dataFinal); + while (rset.next()) { RelatorioIndiceIRKBean relatorioIndiceIRK = new RelatorioIndiceIRKBean(); @@ -249,7 +273,7 @@ public class RelatorioIndiceIRK extends Relatorio { relatorioIndiceIRK.setIrkMinimo((BigDecimal) rset.getObject("indiceirkminimo")); relatorioIndiceIRK.setHora((String) rset.getObject("hora")); relatorioIndiceIRK.setExtensao((BigDecimal) rset.getObject("extensao")); - relatorioIndiceIRK.setKmRodado(((BigDecimal) rset.getObject("extensao")).multiply(new BigDecimal(diferenciaDeDiasFiltroData))); + relatorioIndiceIRK.setKmRodado(((BigDecimal) rset.getObject("extensao"))); relatorioIndiceIRK.setSeguro((BigDecimal) rset.getObject("seguro")); relatorioIndiceIRK.setTxEmbarque((BigDecimal) rset.getObject("txembarque")); relatorioIndiceIRK.setPedagio((BigDecimal) rset.getObject("pedagio")); @@ -263,16 +287,21 @@ public class RelatorioIndiceIRK extends Relatorio { lsDadosRelatorio.add(relatorioIndiceIRK); } + + calcularQuantidadeDeDiasFiltroData(lsDadosRelatorio); return lsDadosRelatorio; } - private int calcularQuantidadeDeDiasFiltroData(Date dataInicial, Date dataFInal) { + private void calcularQuantidadeDeDiasFiltroData(List lsDadosRelatorio) { - if (dataInicial != null && dataFInal != null) { - int diferencaDias = DateUtil.diferencaEntreDatasEmdias(dataInicial, dataFInal)+1; - return diferencaDias; + Map qtdDias = new HashMap(); + + for (RelatorioIndiceIRKBean relatorioIndiceIRKBean : lsDadosRelatorio) { +// if(qtdDias.get(relatorioIndiceIRKBean.gets)) { +// +// } } - return 1; + } }