diff --git a/pom.xml b/pom.xml index 7fd4d7fcc..810767612 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 br.com.rjconsultores ventaboletosadm - 1.147.0 + 1.147.1 war diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioFormaPagamentoAgenciaNovo.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioFormaPagamentoAgenciaNovo.java index 9889d5535..eba93137d 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioFormaPagamentoAgenciaNovo.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioFormaPagamentoAgenciaNovo.java @@ -6,6 +6,7 @@ package com.rjconsultores.ventaboletos.relatorios.impl; import java.math.BigDecimal; import java.sql.Connection; import java.sql.ResultSet; +import java.sql.SQLException; import java.util.Date; import java.util.HashMap; import java.util.Map; @@ -34,6 +35,7 @@ public class RelatorioFormaPagamentoAgenciaNovo extends RelatorioDemandas { StringBuilder sql = new StringBuilder(); sql.append(" SELECT " ); + sql.append(" c.caja_id AS cajaID, " ); sql.append(" c.fechorventa AS data, " ); sql.append(" c.numfoliosistema AS bilhete, " ); sql.append(" bpe.NBP AS bpe, " ); @@ -102,57 +104,95 @@ public class RelatorioFormaPagamentoAgenciaNovo extends RelatorioDemandas { } ResultSet rset = stmt.executeQuery(); + String cajaID = StringUtils.EMPTY; while (rset.next()) { - Map dataResult = new HashMap(); - - String motivoCancelamento = StringUtils.isNotBlank(rset.getString("motivo")) ? rset.getString("motivo") : StringUtils.EMPTY; - String indStatus = StringUtils.isNotBlank(rset.getString("status")) ? rset.getString("status") : StringUtils.EMPTY; - String bpe = StringUtils.isNotBlank(rset.getString("bpe")) ? rset.getString("bpe") : StringUtils.EMPTY; - - Boolean isCancelamento = "1".equals(rset.getString("indcancelacion")); - BigDecimal tarifa = rset.getBigDecimal("tarifa"); - BigDecimal pedagio = rset.getBigDecimal("PEDAGIO"); - BigDecimal seguro = rset.getBigDecimal("SEGURO"); - BigDecimal seguroOPC = rset.getBigDecimal("seg_opcional"); - BigDecimal taxa = rset.getBigDecimal("taxa"); - BigDecimal valor = rset.getBigDecimal("valor"); - String formaPagamento = StringUtils.isEmpty(rset.getString("forma_pagamento")) ? StringUtils.EMPTY : rset.getString("forma_pagamento"); - String formaPagamentoOriginal = StringUtils.isEmpty(rset.getString("forma_pago_original")) ? StringUtils.EMPTY : rset.getString("forma_pago_original"); - Boolean isFormaPagamentoIguais = formaPagamento.equals(formaPagamentoOriginal); - - dataResult.put("DATA", rset.getDate("data")); - dataResult.put("BILHETE", rset.getString("bilhete")); - dataResult.put("ORIGEM", rset.getString("ORIGEM")); - dataResult.put("DESTINO", rset.getString("DESTINO")); - dataResult.put("AGENCIA", rset.getString("agencia")); - dataResult.put("NUMERO_BPE", bpe); - dataResult.put("STATUS", indStatus); - dataResult.put("MOTIVO_CANCELAMENTO", motivoCancelamento); - - if(isCancelamento) { - dataResult.put("FORMA_PAGAMENTO", formaPagamentoOriginal); - dataResult.put("TARIFA", tarifa.compareTo(BigDecimal.ZERO) == 0 ? tarifa : tarifa.negate()); - dataResult.put("PEDAGIO", pedagio.compareTo(BigDecimal.ZERO) == 0 ? pedagio : pedagio.negate()); - dataResult.put("SEGURO", seguro.compareTo(BigDecimal.ZERO) == 0 ? seguro : seguro.negate()); - dataResult.put("SEG_OPCIONAL", seguroOPC.compareTo(BigDecimal.ZERO) == 0 ? seguroOPC : seguroOPC.negate()); - dataResult.put("TAXA", taxa.compareTo(BigDecimal.ZERO) == 0 ? taxa : taxa.negate()); - dataResult.put("VALOR", valor.compareTo(BigDecimal.ZERO) == 0 ? valor : valor.negate()); - } else if (isFormaPagamentoIguais){ - dataResult.put("FORMA_PAGAMENTO", formaPagamento); - dataResult.put("TARIFA", tarifa); - dataResult.put("PEDAGIO", pedagio); - dataResult.put("SEGURO", seguro); - dataResult.put("SEG_OPCIONAL", seguroOPC); - dataResult.put("TAXA", taxa); - dataResult.put("VALOR", valor); - } + Map dataResult = new HashMap<>(); - this.dados.add(dataResult); + String motivoCancelamento = getValueOrEmpty(rset, "motivo"); + String indStatus = getValueOrEmpty(rset, "status"); + String bpe = getValueOrEmpty(rset, "bpe"); + + Boolean isCancelamento = "1".equals(rset.getString("indcancelacion")); + String formaPagamento = getValueOrEmpty(rset, "forma_pagamento"); + String formaPagamentoOriginal = getValueOrEmpty(rset, "forma_pago_original"); + Boolean isFormaPagamentoIguais = formaPagamento.equals(formaPagamentoOriginal); + + Boolean isCajaIDRepetido = cajaID.equals(rset.getString("cajaID")); + cajaID = isCajaIDRepetido ? cajaID : rset.getString("cajaID"); + + BigDecimal tarifa = getBigDecimal(isCajaIDRepetido, rset, "tarifa"); + BigDecimal pedagio = getBigDecimal(isCajaIDRepetido, rset, "PEDAGIO"); + BigDecimal seguro = getBigDecimal(isCajaIDRepetido, rset, "SEGURO"); + BigDecimal seguroOPC = getBigDecimal(isCajaIDRepetido, rset, "seg_opcional"); + BigDecimal taxa = getBigDecimal(isCajaIDRepetido, rset, "taxa"); + BigDecimal valor = rset.getBigDecimal("valor"); + + popularData(dataResult, rset, bpe, indStatus, motivoCancelamento); + + boolean isReplicado = processarTransacao(dataResult, isCancelamento, tarifa, pedagio, seguro, seguroOPC, taxa, valor, formaPagamento, formaPagamentoOriginal, isFormaPagamentoIguais); + + if (!isReplicado) { + this.dados.add(dataResult); + } } this.resultSet = rset; + + + } + + private String getValueOrEmpty(ResultSet rset, String columnName) throws SQLException { + return StringUtils.defaultString(rset.getString(columnName), StringUtils.EMPTY); + } + + private BigDecimal getBigDecimal(Boolean isCajaIDRepetido, ResultSet rset, String columnName) throws SQLException { + return isCajaIDRepetido ? BigDecimal.ZERO : rset.getBigDecimal(columnName); + } + + private void popularData(Map dataResult, ResultSet rset, String bpe, String indStatus, String motivoCancelamento) throws SQLException { + dataResult.put("DATA", rset.getDate("data")); + dataResult.put("BILHETE", rset.getString("bilhete")); + dataResult.put("ORIGEM", rset.getString("ORIGEM")); + dataResult.put("DESTINO", rset.getString("DESTINO")); + dataResult.put("AGENCIA", rset.getString("agencia")); + dataResult.put("NUMERO_BPE", bpe); + dataResult.put("STATUS", indStatus); + dataResult.put("MOTIVO_CANCELAMENTO", motivoCancelamento); + } + + private boolean processarTransacao(Map dataResult, Boolean isCancelamento, BigDecimal tarifa, BigDecimal pedagio, BigDecimal seguro, BigDecimal seguroOPC, BigDecimal taxa, BigDecimal valor, String formaPagamento, String formaPagamentoOriginal, Boolean isFormaPagamentoIguais) { + if (isCancelamento) { + transacaoNegativa(dataResult, tarifa, pedagio, seguro, seguroOPC, taxa, valor, formaPagamentoOriginal); + return false; + } else if (isFormaPagamentoIguais) { + transacaoNormal(dataResult, tarifa, pedagio, seguro, seguroOPC, taxa, valor, formaPagamento); + return false; + } + return true; + } + + private void transacaoNegativa(Map dataResult, BigDecimal tarifa, BigDecimal pedagio, BigDecimal seguro, BigDecimal seguroOPC, BigDecimal taxa, BigDecimal valor, String formaPagamentoOriginal) { + dataResult.put("FORMA_PAGAMENTO", formaPagamentoOriginal); + dataResult.put("TARIFA", tarifa.negate()); + dataResult.put("PEDAGIO", pedagio.negate()); + dataResult.put("SEGURO", seguro.negate()); + dataResult.put("SEG_OPCIONAL", seguroOPC.negate()); + dataResult.put("TAXA", taxa.negate()); + dataResult.put("VALOR", valor.negate()); + } + + private void transacaoNormal(Map dataResult, BigDecimal tarifa, BigDecimal pedagio, BigDecimal seguro, BigDecimal seguroOPC, BigDecimal taxa, BigDecimal valor, String formaPagamento) { + dataResult.put("FORMA_PAGAMENTO", formaPagamento); + dataResult.put("TARIFA", tarifa); + dataResult.put("PEDAGIO", pedagio); + dataResult.put("SEGURO", seguro); + dataResult.put("SEG_OPCIONAL", seguroOPC); + dataResult.put("TAXA", taxa); + dataResult.put("VALOR", valor); } }); + + } -} +} \ No newline at end of file