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.

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
master
wallace.novo 2022-11-22 17:44:49 +00:00
parent 2de205cc46
commit 20d7f81c88
1 changed files with 61 additions and 32 deletions

View File

@ -12,6 +12,7 @@ import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
import java.util.Date; import java.util.Date;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; 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 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; 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<EFBFBD>rio e preenche objeto relat<61>rio
lsDadosRelatorio= preencheAgrupaRelatorioBean(preparaExecutaQuery(parametros, conexao, rutaId, empresa, grupoRutaId, rutaIds, corridasIds), parametros); lsDadosRelatorio= preencheAgrupaRelatorioBean(preparaExecutaQuery(parametros, conexao, rutaId, empresa, grupoRutaId, rutaIds, corridasIds), parametros);
// Ordena pela Desc Linha // Ordena pela Desc Linha
@ -67,7 +68,7 @@ public class RelatorioIndiceIRK extends Relatorio {
parametros.put("RELATORIOLIST", lsDadosRelatorio); parametros.put("RELATORIOLIST", lsDadosRelatorio);
setLsDadosRelatorio(lsDadosRelatorio); setLsDadosRelatorio(lsDadosRelatorio);
} catch (Exception e) { } catch (Exception e) {
log.error("Erro ao executar relatório", e); log.error("Erro ao executar relat<EFBFBD>rio", e);
} }
} }
@ -120,11 +121,14 @@ public class RelatorioIndiceIRK extends Relatorio {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("SELECT sum(extensao) as extensao,"); sb.append("SELECT sum(extensao) AS extensao,");
sb.append(" servico,"); sb.append(" servico,");
sb.append(" rutaid,"); sb.append(" rutaid,");
sb.append(" descruta,"); 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(" gruporuta,");
sb.append(" indiceirkminimo,"); sb.append(" indiceirkminimo,");
sb.append(" hora,"); sb.append(" hora,");
@ -132,10 +136,10 @@ public class RelatorioIndiceIRK extends Relatorio {
sb.append(" SUM(txembarque) AS txembarque,"); sb.append(" SUM(txembarque) AS txembarque,");
sb.append(" SUM(pedagio) AS pedagio,"); sb.append(" SUM(pedagio) AS pedagio,");
sb.append(" SUM(passagens) AS passagens,"); sb.append(" SUM(passagens) AS passagens,");
sb.append(" SUM(totalhorario) as totalhorario,"); sb.append(" SUM(totalhorario) AS totalhorario,");
sb.append(" sum(irk) AS irk ,"); sb.append(" sum(irk) AS irk,");
sb.append(" sum(receitaminima) AS receitaminima,"); sb.append(" sum(receitaminima) AS receitaminima,");
sb.append(" sum(diferencareceita) AS diferencareceita, "); sb.append(" sum(diferencareceita) AS diferencareceita,");
sb.append(" prefixo "); sb.append(" prefixo ");
sb.append("FROM"); sb.append("FROM");
sb.append(" (SELECT DISTINCT servico,"); sb.append(" (SELECT DISTINCT servico,");
@ -145,15 +149,15 @@ public class RelatorioIndiceIRK extends Relatorio {
sb.append(" gruporuta,"); sb.append(" gruporuta,");
sb.append(" indiceirkminimo,"); sb.append(" indiceirkminimo,");
sb.append(" hora,"); sb.append(" hora,");
sb.append(" (extensao) AS extensao,"); sb.append(" (extensao * qtdCorrida) AS extensao,");
sb.append(" SUM(seguro) AS seguro,"); sb.append(" SUM(seguro) AS seguro,");
sb.append(" SUM(txembarque) AS txembarque,"); sb.append(" SUM(txembarque) AS txembarque,");
sb.append(" SUM(pedagio) AS pedagio,"); sb.append(" SUM(pedagio) AS pedagio,");
sb.append(" SUM(passagens) AS passagens,"); sb.append(" SUM(passagens) AS passagens,");
sb.append(" (SUM(passagens) + SUM(pedagio) + SUM(txembarque) + SUM(seguro)) AS totalhorario,"); 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(" round(((SUM(passagens) + SUM(pedagio) + SUM(txembarque) + SUM(seguro)) / extensao ), 2) AS irk,");
sb.append(" indiceirkminimo * extensao AS receitaminima,"); sb.append(" indiceirkminimo * extensao * qtdCorrida AS receitaminima,");
sb.append(" (SUM(passagens) + SUM(pedagio) + SUM(txembarque) + SUM(seguro)) - (indiceirkminimo * extensao) AS diferencareceita,"); sb.append(" (SUM(passagens) + SUM(pedagio) + SUM(txembarque) + SUM(seguro)) - (indiceirkminimo * extensao * qtdCorrida) AS diferencareceita,");
sb.append(" prefixo"); sb.append(" prefixo");
sb.append(" FROM"); sb.append(" FROM");
sb.append(" (SELECT cj.caja_id AS cajaId,"); 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.descruta AS descruta,");
sb.append(" r.indsentidoida AS sentido,"); sb.append(" r.indsentidoida AS sentido,");
sb.append(" nvl(e.indiceirk, 0) AS indiceirkminimo,"); 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(" to_char(co.fechorsalida, 'HH24:MI') AS hora,");
sb.append(" sum(tr.cantkmreal) AS extensao,"); sb.append(" sum(tr.cantkmreal) AS extensao,");
sb.append(" cj.importeseguro AS seguro,"); sb.append(" cj.importeseguro AS seguro,");
sb.append(" cj.importetaxaembarque AS txembarque,"); sb.append(" cj.importetaxaembarque AS txembarque,");
sb.append(" cj.importepedagio AS pedagio,"); sb.append(" cj.importepedagio AS pedagio,");
sb.append(" cj.preciopagado AS passagens,"); 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(" FROM caja cj");
sb.append(" INNER JOIN ruta r ON (cj.ruta_id = r.ruta_id)"); 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)"); 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 origen ON (origen.parada_id = tr.origen_id)");
sb.append(" INNER JOIN parada destino ON (destino.parada_id = tr.destino_id)"); sb.append(" INNER JOIN parada destino ON (destino.parada_id = tr.destino_id)");
sb.append(" WHERE cj.activo = 1"); 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(" 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(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(corridasIds == null || TODOS.equals(corridasIds) ? "" : " AND cj.corrida_id IN ( " + corridasIds + " ) ");
@ -200,7 +219,7 @@ public class RelatorioIndiceIRK extends Relatorio {
sb.append(" r.indsentidoida,"); sb.append(" r.indsentidoida,");
sb.append(" e.indiceirk,"); sb.append(" e.indiceirk,");
sb.append(" gr.descgrupo,"); sb.append(" gr.descgrupo,");
sb.append(" co.fechorsalida, "); sb.append(" co.fechorsalida,");
sb.append(" cj.importeseguro,"); sb.append(" cj.importeseguro,");
sb.append(" cj.importetaxaembarque,"); sb.append(" cj.importetaxaembarque,");
sb.append(" cj.importepedagio,"); sb.append(" cj.importepedagio,");
@ -215,8 +234,10 @@ public class RelatorioIndiceIRK extends Relatorio {
sb.append(" indiceirkminimo,"); sb.append(" indiceirkminimo,");
sb.append(" hora,"); sb.append(" hora,");
sb.append(" extensao,"); sb.append(" extensao,");
sb.append(" prefixo"); sb.append(" prefixo,");
sb.append(" ORDER BY descruta, hora )tabela "); sb.append(" qtdCorrida");
sb.append(" ORDER BY descruta, ");
sb.append(" hora)tabela ");
sb.append("GROUP BY servico,"); sb.append("GROUP BY servico,");
sb.append(" rutaid,"); sb.append(" rutaid,");
sb.append(" descruta,"); sb.append(" descruta,");
@ -224,8 +245,11 @@ public class RelatorioIndiceIRK extends Relatorio {
sb.append(" gruporuta,"); sb.append(" gruporuta,");
sb.append(" indiceirkminimo,"); sb.append(" indiceirkminimo,");
sb.append(" hora,"); sb.append(" hora,");
sb.append(" prefixo"); sb.append(" prefixo ");
sb.append(" ORDER BY descruta, sentido, hora "); sb.append("ORDER BY descruta,");
sb.append(" sentido,");
sb.append(" hora");
return sb.toString(); return sb.toString();
@ -237,7 +261,7 @@ public class RelatorioIndiceIRK extends Relatorio {
Date dataInicio = (Date) parametros.get("DATA_INICIO"); Date dataInicio = (Date) parametros.get("DATA_INICIO");
Date dataFinal = (Date) parametros.get("DATA_FINAL"); Date dataFinal = (Date) parametros.get("DATA_FINAL");
int diferenciaDeDiasFiltroData = calcularQuantidadeDeDiasFiltroData(dataInicio, dataFinal);
while (rset.next()) { while (rset.next()) {
RelatorioIndiceIRKBean relatorioIndiceIRK = new RelatorioIndiceIRKBean(); RelatorioIndiceIRKBean relatorioIndiceIRK = new RelatorioIndiceIRKBean();
@ -249,7 +273,7 @@ public class RelatorioIndiceIRK extends Relatorio {
relatorioIndiceIRK.setIrkMinimo((BigDecimal) rset.getObject("indiceirkminimo")); relatorioIndiceIRK.setIrkMinimo((BigDecimal) rset.getObject("indiceirkminimo"));
relatorioIndiceIRK.setHora((String) rset.getObject("hora")); relatorioIndiceIRK.setHora((String) rset.getObject("hora"));
relatorioIndiceIRK.setExtensao((BigDecimal) rset.getObject("extensao")); 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.setSeguro((BigDecimal) rset.getObject("seguro"));
relatorioIndiceIRK.setTxEmbarque((BigDecimal) rset.getObject("txembarque")); relatorioIndiceIRK.setTxEmbarque((BigDecimal) rset.getObject("txembarque"));
relatorioIndiceIRK.setPedagio((BigDecimal) rset.getObject("pedagio")); relatorioIndiceIRK.setPedagio((BigDecimal) rset.getObject("pedagio"));
@ -263,16 +287,21 @@ public class RelatorioIndiceIRK extends Relatorio {
lsDadosRelatorio.add(relatorioIndiceIRK); lsDadosRelatorio.add(relatorioIndiceIRK);
} }
calcularQuantidadeDeDiasFiltroData(lsDadosRelatorio);
return lsDadosRelatorio; return lsDadosRelatorio;
} }
private int calcularQuantidadeDeDiasFiltroData(Date dataInicial, Date dataFInal) { private void calcularQuantidadeDeDiasFiltroData(List<RelatorioIndiceIRKBean> lsDadosRelatorio) {
if (dataInicial != null && dataFInal != null) { Map<Date, Integer> qtdDias = new HashMap<Date, Integer>();
int diferencaDias = DateUtil.diferencaEntreDatasEmdias(dataInicial, dataFInal)+1;
return diferencaDias; for (RelatorioIndiceIRKBean relatorioIndiceIRKBean : lsDadosRelatorio) {
// if(qtdDias.get(relatorioIndiceIRKBean.gets)) {
//
// }
} }
return 1;
} }
} }