fixes bug#AL-2550

master
Julio Heredia 2023-04-25 15:22:57 -03:00
parent e17ab02e11
commit 4430a1680e
1 changed files with 28 additions and 26 deletions

View File

@ -29,15 +29,15 @@ import com.rjconsultores.ventaboletos.utilerias.MoneyHelper;
import com.rjconsultores.ventaboletos.web.utilerias.NamedParameterStatement;
/**
* @author Bruno H. G. Gouv<EFBFBD>a <bruno@rjconsultores.com.br>
* @author Bruno H. G. Gouvêa <bruno@rjconsultores.com.br>
*
*/
public class RelatorioReceitaDiariaAgencia extends Relatorio {
private LinkedHashMap<String, LinkedHashMap<String, Object>> mapCacheConfigComissao;
//Mantis 16390
//As vendas com impress<EFBFBD>o posterior n<>o estavam sendo exibidas como pr<70>venda pois s<> estavam sendo validados os tipoVendaId 18 e 39.
//Verifiquei a classe RelatorioImpressaoPosterior e adicionei os tipoVendaId faltantes de acordo com sua regra de neg<EFBFBD>cio.
//As vendas com impressão posterior não estavam sendo exibidas como prévenda pois só estavam sendo validados os tipoVendaId 18 e 39.
//Verifiquei a classe RelatorioImpressaoPosterior e adicionei os tipoVendaId faltantes de acordo com sua regra de negócio.
private List<Integer> listaTipoVentaIdPreVenda = Arrays.asList(EnumTipoVenda.TPV_CENTRAL_TELEFONICA.getId(),
EnumTipoVenda.TPV_POR_INTERNET.getId(),
EnumTipoVenda.TPV_BOLETO_REMOTO.getId(),
@ -171,13 +171,13 @@ public class RelatorioReceitaDiariaAgencia extends Relatorio {
public void setRowComissao(LinkedHashMap<String, Object> rowOrigem) throws Exception {
LinkedHashMap<String, Object> rowDestino = rowOrigem;
// Busca as configura<EFBFBD><EFBFBD>es de comiss<73>o
// Busca as configurações de comissão
LinkedHashMap<String, Object> configComissao = getConfigComissao((Integer) rowOrigem.get("PUNTOVENTA_ID"), (Integer) rowOrigem.get("EMPRESAPUNTOVENTA_ID"));
if (configComissao == null) {
return;
}
// Verifica se existe ag<EFBFBD>ncia de destino da comiss<73>o e atualiza a row se necessario
// Verifica se existe agência de destino da comissão e atualiza a row se necessario
if ((Integer) configComissao.get("PUNTOVENTA_ID") != 0 && !((Integer) configComissao.get("PUNTOVENTA_ID")).equals(this.resultSet.getInt("PUNTOVENTA_ID")))
rowDestino = this.getRow((Integer) configComissao.get("PUNTOVENTA_ID"), (Integer) rowOrigem.get("EMPRESA_ID"), null);
@ -203,7 +203,7 @@ public class RelatorioReceitaDiariaAgencia extends Relatorio {
BigDecimal valorComissaoSeguro = BigDecimal.ZERO;
boolean isSeguroObrigatorioReceitaBPR = (Boolean) configComissao.get("SEGURORECEITA") || (Boolean) configComissao.get("SEGURO_DEV");
// Defini a base de calculo da comiss<EFBFBD>o
// Defini a base de calculo da comissão
if (motivoCancelacionId == null) {
if ((Boolean) configComissao.get("TARIFARECEITA") && this.resultSet.getBigDecimal("PRECIOPAGADO") != null)
baseCalculo = baseCalculo.add(this.resultSet.getBigDecimal("PRECIOPAGADO") );
@ -240,18 +240,19 @@ public class RelatorioReceitaDiariaAgencia extends Relatorio {
}
}
}
}
BigDecimal imposto = getValorImposto(this.resultSet.getInt("ORIGEM_ESTADO_ID"),
this.resultSet.getInt("EMPRESA_ID"), this.resultSet.getString("INTERESTADUAL"),
this.resultSet.getBigDecimal("PRECIOPAGADO"), this.resultSet.getBigDecimal("IMPORTESEGURO"),
this.resultSet.getBigDecimal("IMPORTETAXAEMBARQUE"),
this.resultSet.getBigDecimal("IMPORTEPEDAGIO"), BigDecimal.ZERO);
// Caso esteje setado na configura<72><61>o de comiss<73>o que o calculo deve ser sobre o liquido, deduz o imposto.
if (configComissao.get("RECEITA") != null && ((String) configComissao.get("RECEITA")).equals("RL") &&
(!tipoVentaId.equals(18) || (tipoVentaId.equals(18) && (Boolean) this.relatorio.getParametros().get("B_CONTEMPLAR_GAP"))) &&
imposto != null) {
// Caso esteje setado na configuração de comissão que o calculo deve ser sobre o liquido, deduz o imposto.
if (configComissao.get("RECEITA") != null && ((String) configComissao.get("RECEITA")).equals("RL")
&& (!tipoVentaId.equals(18) || (tipoVentaId.equals(18)
&& (Boolean) this.relatorio.getParametros().get("B_CONTEMPLAR_GAP")))
&& imposto != null) {
baseCalculo = baseCalculo.subtract(imposto);
baseCalculoSeguro = baseCalculoSeguro.subtract(imposto);
}
@ -305,7 +306,7 @@ public class RelatorioReceitaDiariaAgencia extends Relatorio {
rowDestino.put("VALOR_COMISSAO", ((BigDecimal) rowDestino.get("VALOR_COMISSAO")).add(valorComissao).add(valorComissaoSeguro));
// Se a agencia de destino n<EFBFBD>o estiver na listagem, finaliza o preenchimento do map e adiciona na listagem
// Se a agencia de destino não estiver na listagem, finaliza o preenchimento do map e adiciona na listagem
if (!mapDados.containsKey(puntoVentaId)) {
rowDestino.put("PUNTOVENTA_ID", configComissao.get("PUNTOVENTA_ID"));
@ -369,14 +370,14 @@ public class RelatorioReceitaDiariaAgencia extends Relatorio {
row.put("GRUPO_RUTA", " ----- ");
}
// Como a receita de bagagem <EFBFBD> obtida por agencia, j<> calcula o valor
// Como a receita de bagagem é obtida por agencia, já calcula o valor
if (!(Boolean) this.relatorio.getParametros().get("B_EXCLUI_BAGAGEM"))
{
BigDecimal receitaBagagem = getValorReceitaBagagem(puntoVentaId, empresaId);
try {
row.put("IMPOSTOS", getValorImposto(rs.getInt("ORIGEM_ESTADO_ID"), rs.getInt("EMPRESA_ID"), rs.getString("INTERESTADUAL"), BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, receitaBagagem));
} catch (Exception e) {
// Este erro n<EFBFBD>o <20> tratado pois existem demais pontos no relatorio que fazem esta chamada com os mesmos parametros e fazer o tratamento correto.
// Este erro não é tratado pois existem demais pontos no relatorio que fazem esta chamada com os mesmos parametros e fazer o tratamento correto.
}
row.put("RECEITA_BAGAGEM", receitaBagagem);
@ -410,7 +411,7 @@ public class RelatorioReceitaDiariaAgencia extends Relatorio {
boolean preVenda = isTipoVentaIdPreVenda(tipoVentaId);
if ((Boolean) getParametros().get("TRANSFERENCIA_PASSAGENS")) {
// Utiliza o -1 para retirar as transfer<EFBFBD>ncias
// Utiliza o -1 para retirar as transferências
row.put("TOTAL_BILHETES", ((BigDecimal) row.get("TOTAL_BILHETES")).add(motivoCancelacionId == 23 ? new BigDecimal(-1) : motivoCancelacionId == 0 && !preVenda ? BigDecimal.ONE : BigDecimal.ZERO));
} else {
row.put("TOTAL_BILHETES", ((BigDecimal) row.get("TOTAL_BILHETES")).add(motivoCancelacionId == 0 && !preVenda ? BigDecimal.ONE : BigDecimal.ZERO));
@ -421,7 +422,7 @@ public class RelatorioReceitaDiariaAgencia extends Relatorio {
// Aumenta receita
// N<EFBFBD>o se trate de cancelamento e n<>o seja uma impress<73>o de pr<70> venda
// Não se trate de cancelamento e não seja uma impressão de pré venda
if (motivoCancelacionId == 0 && !((tipoVentaId.equals(18) && this.resultSet.getInt("INDREIMPRESION") == 1))) {
/*row.put("RECEITA_TARIFA", ((BigDecimal) row.get("RECEITA_TARIFA")).add(!tipoVentaId.equals(18) && !tipoVentaId.equals(39) ? this.resultSet.getBigDecimal("PRECIOPAGADO") : BigDecimal.ZERO));
@ -435,13 +436,13 @@ public class RelatorioReceitaDiariaAgencia extends Relatorio {
row.put("RECEITA_PEDAGIO", ((BigDecimal) row.get("RECEITA_PEDAGIO")).add(!tipoVentaId.equals(18) && !tipoVentaId.equals(39) && this.resultSet.getBigDecimal("IMPORTEPEDAGIO") != null ? this.resultSet.getBigDecimal("IMPORTEPEDAGIO") : BigDecimal.ZERO));
row.put("RECEITA_PEDAGIO_GAP", ((BigDecimal) row.get("RECEITA_PEDAGIO_GAP")).add((tipoVentaId.equals(18) || tipoVentaId.equals(39)) && this.resultSet.getBigDecimal("IMPORTEPEDAGIO") != null ? this.resultSet.getBigDecimal("IMPORTEPEDAGIO") : BigDecimal.ZERO));
// Realiza os calculos de comiss<EFBFBD>o se o tipo de venda n<>o for "EM ABERTO" e se for venda normal, ou se for GAP e o check estiver marcado
// Realiza os calculos de comissão se o tipo de venda não for "EM ABERTO" e se for venda normal, ou se for GAP e o check estiver marcado
if (!tipoVentaId.equals(9) && ((!tipoVentaId.equals(18) && !tipoVentaId.equals(39)) || ((tipoVentaId.equals(18) || tipoVentaId.equals(39)) && (Boolean) this.relatorio.getParametros().get("B_CONTEMPLAR_GAP"))))
this.setRowComissao(row);*/
//Mantis 16390
//As vendas com impress<EFBFBD>o posterior n<>o estavam sendo exibidas como pr<70>venda pois s<> estavam sendo validados os tipoVendaId 18 e 39.
//Verifiquei a classe RelatorioImpressaoPosterior e adicionei os tipoVendaId faltantes de acordo com sua regra de neg<EFBFBD>cio.
//As vendas com impressão posterior não estavam sendo exibidas como prévenda pois só estavam sendo validados os tipoVendaId 18 e 39.
//Verifiquei a classe RelatorioImpressaoPosterior e adicionei os tipoVendaId faltantes de acordo com sua regra de negócio.
row.put("RECEITA_TARIFA", ((BigDecimal) row.get("RECEITA_TARIFA")).add(!preVenda ? this.resultSet.getBigDecimal("PRECIOPAGADO") : BigDecimal.ZERO));
row.put("RECEITA_TARIFA_GAP", ((BigDecimal) row.get("RECEITA_TARIFA_GAP")).add(preVenda ? this.resultSet.getBigDecimal("PRECIOPAGADO") : BigDecimal.ZERO));
@ -454,7 +455,7 @@ public class RelatorioReceitaDiariaAgencia extends Relatorio {
row.put("RECEITA_PEDAGIO", ((BigDecimal) row.get("RECEITA_PEDAGIO")).add(!preVenda && this.resultSet.getBigDecimal("IMPORTEPEDAGIO") != null ? this.resultSet.getBigDecimal("IMPORTEPEDAGIO") : BigDecimal.ZERO));
row.put("RECEITA_PEDAGIO_GAP", ((BigDecimal) row.get("RECEITA_PEDAGIO_GAP")).add(preVenda && this.resultSet.getBigDecimal("IMPORTEPEDAGIO") != null ? this.resultSet.getBigDecimal("IMPORTEPEDAGIO") : BigDecimal.ZERO));
// Realiza os calculos de comiss<EFBFBD>o se o tipo de venda n<>o for "EM ABERTO" e se for venda normal, ou se for GAP e o check estiver marcado
// Realiza os calculos de comissão se o tipo de venda não for "EM ABERTO" e se for venda normal, ou se for GAP e o check estiver marcado
if (!tipoVentaId.equals(9) && (!preVenda || (preVenda && (Boolean) this.relatorio.getParametros().get("B_CONTEMPLAR_GAP"))))
this.setRowComissao(row);
}
@ -467,6 +468,7 @@ public class RelatorioReceitaDiariaAgencia extends Relatorio {
// Deduz imposto
if ((tipoVentaId != 18 && motivoCancelacionId != 0) || (tipoVentaId == 18 && this.resultSet.getInt("INDREIMPRESION") == 1 && this.resultSet.getInt("POSSUI_CANC") == 1)) {
row.put("IMPOSTOS", ((BigDecimal) row.get("IMPOSTOS")).subtract(getValorImposto(idEstado, empresaId, this.resultSet.getString("INTERESTADUAL"), this.resultSet.getBigDecimal("PRECIOPAGADO"), this.resultSet.getBigDecimal("IMPORTESEGURO"), this.resultSet.getBigDecimal("IMPORTETAXAEMBARQUE"), this.resultSet.getBigDecimal("IMPORTEPEDAGIO"), BigDecimal.ZERO)));
}
// Deduz os cancelamentos e trocas e transferencias
@ -484,8 +486,8 @@ public class RelatorioReceitaDiariaAgencia extends Relatorio {
row.put("RECEITA_PEDAGIO_GAP", ((BigDecimal) row.get("RECEITA_PEDAGIO_GAP")).subtract((tipoVentaId.equals(18) || tipoVentaId.equals(39)) && this.resultSet.getBigDecimal("IMPORTEPEDAGIO") != null ? this.resultSet.getBigDecimal("IMPORTEPEDAGIO") : BigDecimal.ZERO));*/
//Mantis 16390
//As vendas com impress<EFBFBD>o posterior n<>o estavam sendo exibidas como pr<70>venda pois s<> estavam sendo validados os tipoVendaId 18 e 39.
//Verifiquei a classe RelatorioImpressaoPosterior e adicionei os tipoVendaId faltantes de acordo com sua regra de neg<EFBFBD>cio.
//As vendas com impressão posterior não estavam sendo exibidas como prévenda pois só estavam sendo validados os tipoVendaId 18 e 39.
//Verifiquei a classe RelatorioImpressaoPosterior e adicionei os tipoVendaId faltantes de acordo com sua regra de negócio.
row.put("RECEITA_TARIFA", ((BigDecimal) row.get("RECEITA_TARIFA")).subtract(!preVenda ? this.resultSet.getBigDecimal("PRECIOPAGADO") : BigDecimal.ZERO));
row.put("RECEITA_TARIFA_GAP", ((BigDecimal) row.get("RECEITA_TARIFA_GAP")).subtract(preVenda ? this.resultSet.getBigDecimal("PRECIOPAGADO") : BigDecimal.ZERO));
@ -498,10 +500,10 @@ public class RelatorioReceitaDiariaAgencia extends Relatorio {
row.put("RECEITA_PEDAGIO", ((BigDecimal) row.get("RECEITA_PEDAGIO")).subtract(!preVenda && this.resultSet.getBigDecimal("IMPORTEPEDAGIO") != null ? this.resultSet.getBigDecimal("IMPORTEPEDAGIO") : BigDecimal.ZERO));
row.put("RECEITA_PEDAGIO_GAP", ((BigDecimal) row.get("RECEITA_PEDAGIO_GAP")).subtract(preVenda && this.resultSet.getBigDecimal("IMPORTEPEDAGIO") != null ? this.resultSet.getBigDecimal("IMPORTEPEDAGIO") : BigDecimal.ZERO));
}
// Aumenta devolu<EFBFBD><EFBFBD>o
// Aumenta devolução
if (motivoCancelacionId == 32) {
// Verificia se a devolu<EFBFBD><EFBFBD>o <20> pra ser contabilizada na ag<61>ncia de destino ou de origem da venda
// Verificia se a devolução é pra ser contabilizada na agência de destino ou de origem da venda
// if (((Integer) this.relatorio.getParametros().get("ISDEVOLUCAODESTINO") == 1) || (((Integer) this.relatorio.getParametros().get("ISDEVOLUCAODESTINO")).equals(0) && this.resultSet.getInt("POSSUI_CANC") == 1)) {
row.put("TOTAL_DEVOL", ((BigDecimal) row.get("TOTAL_DEVOL")).add(!(tipoVentaId.equals(18) || tipoVentaId.equals(5))? this.resultSet.getBigDecimal("PRECIOPAGADO").add(this.resultSet.getBigDecimal("IMPORTESEGURO") != null ? this.resultSet.getBigDecimal("IMPORTESEGURO") : BigDecimal.ZERO).add(this.resultSet.getBigDecimal("IMPORTETAXAEMBARQUE") != null ? this.resultSet.getBigDecimal("IMPORTETAXAEMBARQUE") : BigDecimal.ZERO).add(this.resultSet.getBigDecimal("IMPORTEPEDAGIO") != null ? this.resultSet.getBigDecimal("IMPORTEPEDAGIO") : BigDecimal.ZERO).add(this.resultSet.getBigDecimal("IMPORTEOUTROS") != null ? this.resultSet.getBigDecimal("IMPORTEOUTROS") : BigDecimal.ZERO) : BigDecimal.ZERO));
row.put("TOTAL_DEVOL_GAP", ((BigDecimal) row.get("TOTAL_DEVOL_GAP")).add(tipoVentaId.equals(18) || tipoVentaId.equals(5) ? this.resultSet.getBigDecimal("PRECIOPAGADO").add(this.resultSet.getBigDecimal("IMPORTESEGURO") != null ? this.resultSet.getBigDecimal("IMPORTESEGURO") : BigDecimal.ZERO).add(this.resultSet.getBigDecimal("IMPORTETAXAEMBARQUE") != null ? this.resultSet.getBigDecimal("IMPORTETAXAEMBARQUE") : BigDecimal.ZERO).add(this.resultSet.getBigDecimal("IMPORTEPEDAGIO") != null ? this.resultSet.getBigDecimal("IMPORTEPEDAGIO") : BigDecimal.ZERO).add(this.resultSet.getBigDecimal("IMPORTEOUTROS") != null ? this.resultSet.getBigDecimal("IMPORTEOUTROS") : BigDecimal.ZERO) : BigDecimal.ZERO));
@ -529,7 +531,7 @@ public class RelatorioReceitaDiariaAgencia extends Relatorio {
LinkedHashMap<String, Object> cacheConfig = null;
// Verifica se j<EFBFBD> existe configura<72><61>o na memoria, caso n<>o exista, realiza busca no banco
// Verifica se já existe configuração na memoria, caso não exista, realiza busca no banco
if (!mapCacheConfigComissao.containsKey(puntoVentaId.toString() + "_" + empresaId.toString())) {
StringBuilder sql = new StringBuilder();