From 68b208b731ad3862a8edc9825b291cb6c42b2ceb Mon Sep 17 00:00:00 2001 From: "gleison.cruz" Date: Wed, 30 Aug 2023 14:28:04 -0300 Subject: [PATCH] fixes bug#AL-2979 --- pom.xml | 2 +- .../BGMApplication.java | 8 +- .../dao/Totalbus.java | 252 ++++++++++++++++-- .../entidades/DespesaReceitaComporte.java | 30 ++- 4 files changed, 246 insertions(+), 46 deletions(-) diff --git a/pom.xml b/pom.xml index 5bb4ae3d7..8adfcb329 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 br.com.rjconsultores IntegracaoReceitaDespesa - 1.2.4 + 1.2.5 diff --git a/src/com/rjconsultores/integracaoreceitadespesa/BGMApplication.java b/src/com/rjconsultores/integracaoreceitadespesa/BGMApplication.java index 79571742f..e3e1b8c3d 100644 --- a/src/com/rjconsultores/integracaoreceitadespesa/BGMApplication.java +++ b/src/com/rjconsultores/integracaoreceitadespesa/BGMApplication.java @@ -182,10 +182,10 @@ public class BGMApplication { sourceChannel = new FileInputStream(source).getChannel(); destChannel = new FileOutputStream(dest).getChannel(); destChannel.transferFrom(sourceChannel, 0, sourceChannel.size()); - }finally{ - sourceChannel.close(); - destChannel.close(); - } + }finally{ + sourceChannel.close(); + destChannel.close(); + } } private void excluirArquivosZip(String diretorio){ diff --git a/src/com/rjconsultores/integracaoreceitadespesa/dao/Totalbus.java b/src/com/rjconsultores/integracaoreceitadespesa/dao/Totalbus.java index aaf306ab5..2a6c137c5 100644 --- a/src/com/rjconsultores/integracaoreceitadespesa/dao/Totalbus.java +++ b/src/com/rjconsultores/integracaoreceitadespesa/dao/Totalbus.java @@ -69,35 +69,46 @@ public class Totalbus { } public List getDespesasReceitas(Integer puntoventaId, Integer empresaId, Date fechaParam, boolean incluiTipoPagamentoTurismoBGM, boolean isLayoutNovo) throws IntegracaoReceitaDespesaException{ - log.debug("gerando depositos..."); - List despesasReceitas = getDepositos(puntoventaId, empresaId, fechaParam, incluiTipoPagamentoTurismoBGM, isLayoutNovo); - log.debug("gerando despesas..."); - despesasReceitas.addAll(getDespesas(puntoventaId, empresaId, fechaParam, incluiTipoPagamentoTurismoBGM, isLayoutNovo)); - log.debug("gerando despesas cartão..."); - + List rows = new ArrayList(); if (isReceitasDespesasComporte){ + log.debug("gerando depositos..."); + List despesasReceitas = getDepositosComporte(puntoventaId, empresaId, fechaParam, incluiTipoPagamentoTurismoBGM, isLayoutNovo); + log.debug("gerando despesas..."); + despesasReceitas.addAll(getDespesasComporte(puntoventaId, empresaId, fechaParam, incluiTipoPagamentoTurismoBGM, isLayoutNovo)); + log.debug("gerando despesas cartão..."); despesasReceitas.addAll(getDespesaCartaoDebCredComporte(puntoventaId, empresaId, fechaParam, incluiTipoPagamentoTurismoBGM)); log.debug("gerando receitas..."); despesasReceitas.addAll(getReceitasComporte(puntoventaId, empresaId, fechaParam, incluiTipoPagamentoTurismoBGM)); + if( isLayoutNovo ) { + for (DespesaReceita item : despesasReceitas) { + item.preencheLinhaLayoutNovo(rows); + } + }else { + for (DespesaReceita item : despesasReceitas) { + item.preencheLinha(rows); + } + } }else { + log.debug("gerando depositos..."); + List despesasReceitas = getDepositos(puntoventaId, empresaId, fechaParam, incluiTipoPagamentoTurismoBGM, isLayoutNovo); + log.debug("gerando despesas..."); + despesasReceitas.addAll(getDespesas(puntoventaId, empresaId, fechaParam, incluiTipoPagamentoTurismoBGM, isLayoutNovo)); + log.debug("gerando despesas cartão..."); despesasReceitas.addAll(getDespesaCartaoDebCred(puntoventaId, empresaId, fechaParam, incluiTipoPagamentoTurismoBGM, isLayoutNovo)); log.debug("gerando receitas..."); despesasReceitas.addAll(getReceitas(puntoventaId, empresaId, fechaParam, incluiTipoPagamentoTurismoBGM, isLayoutNovo)); if(isReceitasDespesasOuroPrata) { getContaCorrenteAgencia(despesasReceitas, puntoventaId, empresaId, fechaParam, incluiTipoPagamentoTurismoBGM); } - } - - List rows = new ArrayList(); - - if( isLayoutNovo ) { - for (DespesaReceita item : despesasReceitas) { - item.preencheLinhaLayoutNovo(rows); - } - }else { - for (DespesaReceita item : despesasReceitas) { - item.preencheLinha(rows); + if( isLayoutNovo ) { + for (DespesaReceita item : despesasReceitas) { + item.preencheLinhaLayoutNovo(rows); + } + }else { + for (DespesaReceita item : despesasReceitas) { + item.preencheLinha(rows); + } } } return rows; @@ -560,7 +571,8 @@ public class Totalbus { sb.append(" ct.numautorizacion as numautorizacion, "); sb.append(" pte.numsitef as numeroEstabelecimento, "); sb.append(" b.numfoliosistema,"); - sb.append(" ct.tx_id"); + sb.append(" ct.tx_id, "); + sb.append(" b.num_bpe "); sb.append(" from "); sb.append(" caja_diversos cd "); sb.append(" left join evento_extra ev on ev.eventoextra_id = cd.eventoextra_id "); @@ -598,7 +610,7 @@ public class Totalbus { despesa.setCodigoEmpresa(rs.getInt(2)); despesa.setCodigoReceitaDespesa(rs.getString(5)); if(StringUtils.isNotBlank(rs.getString(5)) && (rs.getString(5).equals("22") || rs.getString(5).equals("8101"))) { - despesa.setNumfoliosistema(rs.getString(11)); + despesa.setNumfoliosistema(rs.getString("num_bpe")); }else { despesa.setNumfoliosistema(""); } @@ -757,8 +769,8 @@ public class Totalbus { return despesas; } - public List getReceitasComporte(final Integer puntoVentaId, final Integer empresaId, Date fechaParam, boolean incluiTipoPagamentoTurismoBGM) throws IntegracaoReceitaDespesaException { - List despesas = new ArrayList(); + public List getReceitasComporte(final Integer puntoVentaId, final Integer empresaId, Date fechaParam, boolean incluiTipoPagamentoTurismoBGM) throws IntegracaoReceitaDespesaException { + List despesas = new ArrayList(); StringBuilder sb = new StringBuilder(); sb.append(" select "); sb.append(" cd.feccorte AS fechorvta, "); @@ -773,7 +785,7 @@ public class Totalbus { sb.append(" ct.numautorizacion AS numautorizacion, "); sb.append(" pte.numsitef AS numeroestabelecimento, "); sb.append(" ct.cantparcelas, "); - sb.append(" b.numfoliosistema,"); + sb.append(" case when (b.num_bpe is not null) then LPAD(b.num_bpe, 9,'0') else LPAD(' ',9,0) end as num_bpe, "); sb.append(" ct.tx_id"); sb.append(" from "); sb.append(" caja_diversos cd "); @@ -810,11 +822,7 @@ public class Totalbus { DespesaReceitaComporte receita = new DespesaReceitaComporte(); receita.setCodigoEmpresa(rs.getInt(2)); receita.setCodigoReceitaDespesa(rs.getString(5)); - if(StringUtils.isNotBlank(rs.getString(5)) && (rs.getString(5).equals("22") || rs.getString(5).equals("8101"))) { - receita.setNumfoliosistema(rs.getString(13)); - }else { - receita.setNumfoliosistema(""); - } + receita.setNumfoliosistema(rs.getString(13)); receita.setDataLancamento(rs.getDate(1)); receita.setDataMovimento(rs.getDate(1)); receita.setLocalArrecadacao(rs.getString(6)); @@ -1060,6 +1068,7 @@ public class Totalbus { log.error(ignore.getMessage(), ignore); } } + return depositos; } @@ -1213,4 +1222,193 @@ public class Totalbus { System.out.println(new BigDecimal("0").signum()); } + + public List getDepositosComporte(Integer puntoventaId, Integer empresaId, Date fechaParam, boolean incluiTipoPagamentoTurismoBGM, boolean isLayoutNovo) throws IntegracaoReceitaDespesaException { + List depositos = new ArrayList(); + + StringBuilder strFechamentos = new StringBuilder(); + strFechamentos.append("Select distinct sum(fd.valor_pago), fdep.numdeposito, fdep.fecha_deposito, fc.empresa_id, "); + strFechamentos.append(" pv.numpuntoventa, ec.numagencia, ec.numconta, if.CODIGO, ec.numintegracion, fdep.feccreacion "); + strFechamentos.append(" from fechamento_deposito fdep "); + strFechamentos.append(" join fechamento_cct_deposito fd on fd.fechamentodeposito_id = fdep.fechamentodeposito_id "); + strFechamentos.append(" join fechamento_cntcorrente fc on fc.fechamentocntcorrente_id = fd.fechamentocntcorrente_id "); + strFechamentos.append(" inner join PUNTO_VENTA pv on PV.PUNTOVENTA_ID = FC.PUNTOVENTA_ID "); + strFechamentos.append(" join empresa_contabancaria ec on ec.EMPRESACONTABANCARIA_ID = fdep.EMPRESACONTABANCARIA_ID "); + strFechamentos.append(" join INSTI_FINANCEIRA if on if.INSTIFINANCEIRA_ID = EC.INSTIFINANCEIRA_ID "); + strFechamentos.append(" join EMPRESA e on e.empresa_id = fc.empresa_id "); + strFechamentos.append(" where trunc(fdep.feccreacion) = :fecha and fd.activo = 1 and fc.activo = 1 and fdep.activo = 1 "); + adicionaFiltroQuery(puntoventaId, strFechamentos, " and fc.puntoventa_id = ", puntoventaId != null && !puntoventaId.equals(-1)); + adicionaFiltroQuery(empresaId, strFechamentos, " and fc.empresa_id = ", empresaId != null); + strFechamentos.append(" group by fdep.numdeposito, fdep.feccreacion, fdep.fecha_deposito, fc.empresa_id, pv.numpuntoventa, ec.numagencia, ec.numconta, if.CODIGO, ec.numintegracion "); + + Date fecha = fechaParam; + if (fechaParam == null) { + fecha = getData(); + } + + PreparedStatement pstmtFechamentos = null; + ResultSet rsFechamentos = null; + BigDecimal soma = BigDecimal.ZERO; + try { + pstmtFechamentos = getConnection().prepareStatement(strFechamentos.toString()); + pstmtFechamentos.setDate(1, new java.sql.Date(fecha.getTime())); + + rsFechamentos = pstmtFechamentos.executeQuery(); + + while (rsFechamentos.next()) { + Integer empId = null; + String banco = ""; + String agencia = ""; + String contaCorrente = ""; + String numDep = " Dep: " + rsFechamentos.getString(2); + String codRecDesp = null; + String numpuntoventa = rsFechamentos.getString(5); + + if (empId == null) { + empId = rsFechamentos.getInt(4); + } + if (banco.isEmpty()) { + banco = "Bco: " + StringUtils.leftPad(rsFechamentos.getString(8), 3, "0"); + } + + if (agencia.isEmpty()) { + agencia = " Ag: " + rsFechamentos.getString(6); + } + if (contaCorrente.isEmpty()) { + contaCorrente = " C/C: " + rsFechamentos.getString(7); + } + if (codRecDesp == null) { + codRecDesp = rsFechamentos.getString(9); + } + + DespesaReceitaComporte deposito = new DespesaReceitaComporte(); + deposito.setCodigoEmpresa(empId); + deposito.setDataLancamento(rsFechamentos.getDate(10)); + deposito.setDataMovimento(rsFechamentos.getDate(3)); + deposito.setLocalArrecadacao(numpuntoventa); + deposito.setValorLancamento(df.format(rsFechamentos.getBigDecimal(1))); + deposito.setIdentificadorReceitaDespesa("D"); + deposito.setCodigoReceitaDespesa(codRecDesp); + deposito.setDescricaoDetalhada(banco + agencia + contaCorrente + numDep); + + if(isLayoutNovo) { + deposito.setTipoPagamentoTurismo("01"); + deposito.setFormaPagamentoId("04"); + deposito.setTipoDocumentoVenda("P"); + } + depositos.add(deposito); + soma = soma.add(rsFechamentos.getBigDecimal(1)); + } + log.debug("Total depositos: " + soma); + } catch (Exception e) { + log.error(e.getMessage(), e); + throw new IntegracaoReceitaDespesaException("Erro ao processar Depositos"); + } finally { + try { + pstmtFechamentos.close(); + } catch (Exception ignore) { + log.error(ignore.getMessage(), ignore); + } + try { + rsFechamentos.close(); + } catch (Exception ignore) { + log.error(ignore.getMessage(), ignore); + } + } + return depositos; + } + + public List getDespesasComporte(Integer puntoventaId, Integer empresaId, Date fechaParam, boolean incluiTipoPagamentoTurismoBGM, boolean isLayoutNovo ) throws IntegracaoReceitaDespesaException { + List despesas = new ArrayList(); + StringBuilder sb = new StringBuilder(); + sb.append(" select "); + sb.append(" cd.feccorte as feccorte, "); + sb.append(" e.empresa_id as empresa_id, "); + sb.append(" pv.numpuntoventa as numpuntoventa, "); + sb.append(" cdp.importe as valor, "); + sb.append(" tee.contacontabil as contacontabil, "); + sb.append(" ev.descinfo as descinfo, "); + sb.append(" ev.tipoeventoextra_id, "); + sb.append(" cdp.formapago_id as formapagoId, "); + sb.append(" case when (b.num_bpe is not null) then LPAD(b.num_bpe, 9,'0') else LPAD(' ',9,0) end as num_bpe "); + sb.append(" from "); + sb.append(" caja_diversos cd "); + sb.append(" left join evento_extra ev on ev.eventoextra_id = cd.eventoextra_id "); + sb.append(" left join empresa e on e.empresa_id = ev.empresa_id "); + sb.append(" left join punto_venta pv on pv.puntoventa_id = cd.puntoventa_id "); + sb.append(" left join caja_diversos_pago cdp on cdp.cajadiversos_id = cd.cajadiversos_id "); + sb.append(" left join tipo_evento_extra tee on tee.tipoeventoextra_id = ev.tipoeventoextra_id "); + sb.append(" left join ptovta_integra pi on e.empresa_id = pi.empresa_id and pi.puntoventa_id = pv.puntoventa_id "); + sb.append(" left join boleto b on b.boleto_id = ev.boleto_id "); + sb.append(" where "); + sb.append(" cd.feccorte = ? "); + sb.append(" and tee.indtipo = 0 "); + adicionaFiltroQuery(puntoventaId, sb, " and cd.puntoventa_id = ", puntoventaId != null && !puntoventaId.equals(-1)); + adicionaFiltroQuery(empresaId, sb, " and e.empresa_id = ", empresaId != null); + sb.append(" and cd.activo = 1 "); + sb.append(" and cdp.formapago_id not IN (2,3) "); + sb.append(" and not exists (select ee.EVENTOEXTRA_ID from evento_extra ee where ev.EVENTOEXTRA_ID = ee.EVENTOEXTRACANC_ID) "); + sb.append(" and ev.EVENTOEXTRACANC_ID is null "); + + Date fecha = fechaParam; + if (fechaParam == null) { + fecha = getData(); + } + + PreparedStatement pstmt = null; + ResultSet rs = null; + + try { + pstmt = getConnection().prepareStatement(sb.toString()); + pstmt.setDate(1, new java.sql.Date(fecha.getTime())); + + rs = pstmt.executeQuery(); + while (rs.next()) { + DespesaReceitaComporte despesa = new DespesaReceitaComporte(); + despesa.setCodigoEmpresa(rs.getInt(2)); + despesa.setCodigoReceitaDespesa(rs.getString(5)); + despesa.setDataLancamento(rs.getDate(1)); + despesa.setDataMovimento(rs.getDate(1)); + despesa.setLocalArrecadacao(rs.getString(3)); + despesa.setValorLancamento(df.format(rs.getBigDecimal(4).doubleValue() * -1)); + despesa.setIdentificadorReceitaDespesa("D"); + String desc =rs.getString(6); + + desc = this.removerQuebraDeLinha(desc); + + despesa.setDescricaoDetalhada(desc); + if (incluiTipoPagamentoTurismoBGM) { + despesa.setTipoPagamentoTurismo(rs.getString("tipoeventoextra_id")); + } + despesa.setFormaPagamentoId(rs.getString("formapagoId")); + + if(isLayoutNovo) { + despesa.setTipoPagamentoTurismo("01"); + despesa.setFormaPagamentoId("01"); + despesa.setTipoDocumentoVenda("P"); + } + + despesa.setNumfoliosistema(rs.getString("num_bpe")); + despesas.add(despesa); + } + } catch (Exception e) { + log.error(e.getMessage(), e); + throw new IntegracaoReceitaDespesaException("Erro ao processar Despesas"); + } finally { + try { + rs.close(); + } catch (Exception ignore) { + log.error(ignore.getMessage(), ignore); + } + try { + pstmt.close(); + } catch (Exception ignore) { + log.error(ignore.getMessage(), ignore); + } + } + return despesas; + } + + + } diff --git a/src/com/rjconsultores/integracaoreceitadespesa/entidades/DespesaReceitaComporte.java b/src/com/rjconsultores/integracaoreceitadespesa/entidades/DespesaReceitaComporte.java index 717f8542d..c42c1ef7c 100644 --- a/src/com/rjconsultores/integracaoreceitadespesa/entidades/DespesaReceitaComporte.java +++ b/src/com/rjconsultores/integracaoreceitadespesa/entidades/DespesaReceitaComporte.java @@ -26,17 +26,19 @@ public class DespesaReceitaComporte extends DespesaReceita { sb.append(StringUtils.leftPad(codigoReceitaDespesa.trim(), 10, "0")); //83 sb.append(StringUtils.rightPad(identificadorReceitaDespesa.toUpperCase().trim(), 1, "0")); //84 sb.append(StringUtils.leftPad(valorLancamento.trim(), 13, "0")); //97 - sb.append(StringUtils.leftPad(numeroContratoTurismo.trim(), 10, "0")); - sb.append(StringUtils.leftPad(numeroReciboTurismo.trim(), 10, "0")); - sb.append(StringUtils.leftPad(getFormaPagamentoTurismo().trim(),2,"0")); - sb.append(StringUtils.leftPad(getTipoPagamentoTurismo().trim(), 2, "0")); - sb.append(StringUtils.rightPad("", 80, " ")); - sb.append(StringUtils.rightPad(StringUtils.isNotEmpty(numeroEstabelecimento) ? StringUtils.rightPad(numeroEstabelecimento, 10, "0").substring(0,10) : "", 10, "0")); - sb.append(StringUtils.rightPad(StringUtils.isNotEmpty(codigoAutorizacao) ? StringUtils.rightPad(codigoAutorizacao, 25, "0").substring(0,24) : "", 25, " ")); - sb.append(StringUtils.leftPad(formaPagamentoId, 2, "0")); - sb.append(StringUtils.isNotEmpty(cantParcelas) ? StringUtils.leftPad(cantParcelas, 4,"0") : "0000"); - sb.append(numfoliosistema); - sb.append(txId); + sb.append(StringUtils.leftPad(numeroContratoTurismo.trim(), 10, "0"));//107 + sb.append(StringUtils.leftPad(numeroReciboTurismo.trim(), 10, "0"));//117 + sb.append(StringUtils.leftPad(getFormaPagamentoTurismo().trim(),2,"0"));//119 + sb.append(StringUtils.leftPad(getTipoPagamentoTurismo().trim(), 2, "0"));//121 + sb.append(StringUtils.rightPad(StringUtils.isNotEmpty(descricaoDetalhada) ? truncStr(descricaoDetalhada, 80) : "", 80, " ")); //201 + sb.append(StringUtils.rightPad(StringUtils.isNotEmpty(numeroEstabelecimento) ? StringUtils.rightPad(numeroEstabelecimento, 10, "0").substring(0,10) : "", 10, "0")); //211 + sb.append(StringUtils.rightPad(StringUtils.isNotEmpty(codigoAutorizacao) ? StringUtils.rightPad(codigoAutorizacao, 22, " ").substring(0,22) : "", 22, " "));//237 + sb.append(StringUtils.leftPad("0", 2, "0"));//239 + sb.append(StringUtils.leftPad(" ", 1, " "));//239 + sb.append(StringUtils.leftPad(formaPagamentoId, 2, "0"));//239 + sb.append(StringUtils.isNotEmpty(cantParcelas) ? StringUtils.leftPad(cantParcelas, 4,"0") : "0000");//243 + sb.append(StringUtils.leftPad(numfoliosistema,16, " "));//259 + sb.append(StringUtils.leftPad(txId,35, " "));//294 sb.append(finalLinha); sb.append(System.getProperty("line.separator")); rows.add(sb.toString()); @@ -55,7 +57,7 @@ public class DespesaReceitaComporte extends DespesaReceita { } public void setCodigoAutorizacao(String codigoAutorizacao) { - this.codigoAutorizacao = StringUtils.rightPad(codigoAutorizacao != null ? truncStr(codigoAutorizacao, 25) : " ", 25, "0"); + this.codigoAutorizacao = codigoAutorizacao; } public String getCantParcelas() { @@ -71,7 +73,7 @@ public class DespesaReceitaComporte extends DespesaReceita { } public void setNumfoliosistema(String numfoliosistema) { - this.numfoliosistema = StringUtils.leftPad(numfoliosistema != null ? numfoliosistema : "", 16, " "); + this.numfoliosistema = StringUtils.leftPad(numfoliosistema != null ? numfoliosistema :StringUtils.leftPad(" ", 16) , 16, " "); } public String getTxId() { @@ -79,7 +81,7 @@ public class DespesaReceitaComporte extends DespesaReceita { } public void setTxId(String txId) { - this.txId = StringUtils.leftPad(txId != null ? truncStr(txId, 36) : "", 35, " "); + this.txId = StringUtils.leftPad(txId != null ? truncStr(txId, 36) : StringUtils.leftPad(" ", 35), 35, " "); } }