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