package com.rjconsultores.integracaoreceitadespesa.dao; import java.math.BigDecimal; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Collection; import java.util.Date; import java.util.List; import org.apache.commons.lang.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import com.rjconsultores.integracaoreceitadespesa.IntegracaoReceitaDespesaException; import com.rjconsultores.integracaoreceitadespesa.entidades.DespesaReceita; import com.rjconsultores.integracaoreceitadespesa.entidades.DespesaReceitaComporte; import com.rjconsultores.integracaoreceitadespesa.entidades.Empresa; import com.rjconsultores.integracaoreceitadespesa.entidades.PuntoVenta; public class Totalbus { private static final Logger log = LogManager.getLogger(Totalbus.class); private static final int DAYS_AGO = -1; private Connection conn; private List pontosVenda = new ArrayList(); private List empresas = new ArrayList(); private Boolean isCodReceitaFixoBgm = false; private Boolean isReceitasDespesasComporte = false; private Boolean isReceitasDespesasOuroPrata= false; private Boolean isLayoutNovo= false; private DecimalFormat df = new DecimalFormat("#0.00"); public Totalbus(Connection con, Boolean isReceitasDespesasComporte, Boolean isReceitasDespesasOuroPrata) { this.conn = con; this.isReceitasDespesasComporte = isReceitasDespesasComporte; this.isReceitasDespesasOuroPrata = isReceitasDespesasOuroPrata; loadEmpresas(); loadPuntosVenta(); } public Totalbus(Connection con, Boolean isReceitasDespesasComporte,Boolean isCodReceitaFixoBgm, Boolean isReceitasDespesasOuroPrata) { this.conn = con; this.isReceitasDespesasComporte = isReceitasDespesasComporte; this.isReceitasDespesasOuroPrata = isReceitasDespesasOuroPrata; this.isCodReceitaFixoBgm = isCodReceitaFixoBgm; loadEmpresas(); loadPuntosVenta(); } public Totalbus(Connection con, Boolean isReceitasDespesasComporte,Boolean isCodReceitaFixoBgm, Boolean isReceitasDespesasOuroPrata, Boolean isLayoutNovo) { this.conn = con; this.isReceitasDespesasComporte = isReceitasDespesasComporte; this.isReceitasDespesasOuroPrata = isReceitasDespesasOuroPrata; this.isCodReceitaFixoBgm = isCodReceitaFixoBgm; this.isLayoutNovo = isLayoutNovo; loadEmpresas(); loadPuntosVenta(); } public List getDespesasReceitas(Integer puntoventaId, Integer empresaId, Date fechaParam, boolean incluiTipoPagamentoTurismoBGM, boolean isLayoutNovo) throws IntegracaoReceitaDespesaException{ 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); } if( isLayoutNovo ) { for (DespesaReceita item : despesasReceitas) { item.preencheLinhaLayoutNovo(rows); } }else { for (DespesaReceita item : despesasReceitas) { item.preencheLinha(rows); } } } return rows; } private void getContaCorrenteAgencia(List despesasReceitas, Integer puntoVentaId, Integer empresaId, Date fechaParam, boolean incluiTipoPagamentoTurismoBGM) throws IntegracaoReceitaDespesaException { despesasReceitas.addAll(buscarFormasPagamentoContaCorrenteAgencia(puntoVentaId, empresaId, fechaParam,incluiTipoPagamentoTurismoBGM)); despesasReceitas.addAll(buscarComissoesContaCorrenteAgencia(puntoVentaId, empresaId, fechaParam,incluiTipoPagamentoTurismoBGM)); } private Collection buscarFormasPagamentoContaCorrenteAgencia(Integer puntoVentaId, Integer empresaId, Date fechaParam, boolean incluiTipoPagamentoTurismoBGM) throws IntegracaoReceitaDespesaException { List despesas = new ArrayList(); StringBuilder sb = new StringBuilder(); SimpleDateFormat sf = new SimpleDateFormat("dd/MM/yyyy"); String fechaStr = sf.format(fechaParam); if (fechaParam == null) { fechaStr = sf.format(getData()); } sb.append("SELECT SUM(precioboleto) AS precioBoleto, "); sb.append("formaPagoId, "); sb.append("descripcionFormaPago, "); sb.append("empresa, "); sb.append("puntoventaId, "); sb.append("contacontabil, "); sb.append("numpuntoventa, "); sb.append("descinfo, "); sb.append("tipoEventoExtra, "); sb.append("feccorte AS feccorte "); sb.append("FROM ("); sb.append("(SELECT SUM(CASE "); sb.append(" WHEN c.MOTIVOCANCELACION_ID IS NULL THEN 1 ELSE -1 END * cfp.importe) AS precioBoleto, "); sb.append("cfp.formapago_id AS formaPagoId, "); sb.append("fp.DESCPAGO AS descripcionFormaPago, "); sb.append("e.empresa_id AS empresa, "); sb.append("ccp.PUNTOVENTA_ID AS puntoventaId, "); sb.append("CASE WHEN cfp.formapago_id = 2 THEN 802 ELSE 803 END contacontabil, "); sb.append("pv.numpuntoventa AS numpuntoventa, "); sb.append("ee.descinfo AS descinfo, "); sb.append("ee.tipoeventoextra_id AS tipoEventoExtra, "); sb.append("ccp.feccorte AS feccorte "); sb.append(" FROM forma_pago fp, caja c "); sb.append(" left OUTER JOIN motivo_cancelacion mc ON c.motivocancelacion_id = mc.motivocancelacion_id"); sb.append(" left OUTER JOIN marca m ON c.marca_id = m.marca_id"); sb.append(" left OUTER JOIN empresa e ON m.empresa_id = e.empresa_id"); sb.append(" INNER JOIN caja_formapago cfp ON c.caja_id = cfp.caja_id"); sb.append(" left OUTER JOIN boleto b ON b.boleto_id = c.transacao_id"); sb.append(" left JOIN evento_extra ee ON b.boleto_id = ee.boleto_id and ee.boleto_id is null "); sb.append(" left JOIN tipo_evento_extra tee ON tee.tipoeventoextra_id = ee.tipoeventoextra_id"); sb.append(" left JOIN punto_venta pv ON pv.puntoventa_id = c.puntoventa_id and (cfp.activo = 1) "); sb.append(" INNER JOIN CONTA_CORRENTE_PTOVTA ccp ON e.EMPRESA_ID = ccp.EMPRESA_ID"); sb.append(" and ccp.PUNTOVENTA_ID = c.PUNTOVENTA_ID"); sb.append(" and ccp.FECCORTE = c.FECCORTE"); sb.append(" and ccp.TURNO_ID = c.turno_id"); sb.append(" and ccp.ACTIVO = 1"); sb.append(" and c.USUARIO_ID = ccp.USUARIO_ID"); sb.append(" WHERE cfp.formapago_id = fp.formapago_id"); sb.append(" and C.INDSTATUSOPERACION = 'F'"); sb.append(" and c.INDREIMPRESION = 0"); sb.append(" and c.tipoventa_id <> 6"); sb.append(" and c.ACTIVO = 1"); adicionaFiltroQuery(empresaId, sb, " and ccp.EMPRESA_ID = ", empresaId != null); adicionaFiltroQuery(puntoVentaId, sb, " and ccp.PUNTOVENTA_ID = ", puntoVentaId != null && !puntoVentaId.equals(-1)); sb.append(" and ccp.feccorte = TO_DATE('"+fechaStr+" 00:00:00', 'dd/MM/yyyy HH24:mi:ss')and cfp.formapago_id in (2,3) "); sb.append(" GROUP BY cfp.formapago_id,"); sb.append(" fp.DESCPAGO,"); sb.append(" e.empresa_id,"); sb.append(" ccp.PUNTOVENTA_ID,"); sb.append(" tee.contacontabil,"); sb.append(" pv.numpuntoventa,"); sb.append(" ee.descinfo, ee.tipoeventoextra_id, ccp.FECCORTE )"); sb.append(" UNION"); sb.append(" (SELECT SUM(cdp.IMPORTE) AS precioBoleto,"); sb.append(" cdp.formapago_id AS formaPagoId,"); sb.append(" fp.DESCPAGO AS descripcionFormaPago,"); sb.append(" e.empresa_id AS empresa,"); sb.append(" cd.PUNTOVENTA_ID AS puntoventaId,"); sb.append(" CASE WHEN cdp.formapago_id = 2 THEN 802 ELSE 803 END contacontabil, "); sb.append(" pv.numpuntoventa AS numpuntoventa,"); sb.append(" ee.descinfo AS descinfo,"); sb.append(" ee.tipoeventoextra_id AS tipoEventoExtra, ccp.feccorte AS feccorte "); sb.append(" FROM CAJA_DIVERSOS cd"); sb.append(" JOIN CAJA_DIVERSOS_PAGO cdp ON cdp.CAJADIVERSOS_ID = cd.CAJADIVERSOS_ID"); sb.append(" INNER JOIN forma_pago fp ON fp.formapago_id = cdp.formapago_id"); sb.append(" INNER JOIN EVENTO_EXTRA EE ON EE.EVENTOEXTRA_ID = cd.EVENTOEXTRA_ID"); sb.append(" LEFT OUTER JOIN empresa e ON ee.empresa_id = e.empresa_id"); sb.append(" LEFT JOIN boleto b ON b.boleto_id = ee.boleto_id"); sb.append(" LEFT OUTER JOIN evento_extra ee ON b.boleto_id = ee.boleto_id"); sb.append(" LEFT JOIN tipo_evento_extra tee ON tee.tipoeventoextra_id = ee.tipoeventoextra_id"); sb.append(" LEFT JOIN punto_venta pv ON pv.puntoventa_id = cd.puntoventa_id "); sb.append(" INNER JOIN CONTA_CORRENTE_PTOVTA ccp ON e.EMPRESA_ID = ccp.EMPRESA_ID "); sb.append(" AND ccp.PUNTOVENTA_ID = cd.PUNTOVENTA_ID "); sb.append("AND ccp.FECCORTE = cd.FECCORTE "); sb.append(" AND ccp.TURNO_ID = cd.turno_id "); sb.append(" AND cd.USUARIO_ID = ccp.USUARIO_ID "); sb.append(" WHERE 1 = 1"); sb.append(" AND cd.ACTIVO = 1"); sb.append(" AND ccp.ACTIVO = 1"); sb.append(" AND (ee.boleto_id IS NULL"); sb.append(" OR ee.boleto_id = b.boleto_id)"); adicionaFiltroQuery(empresaId, sb, " and ccp.EMPRESA_ID = ", empresaId != null); adicionaFiltroQuery(puntoVentaId, sb, " and ccp.PUNTOVENTA_ID = ", puntoVentaId != null && !puntoVentaId.equals(-1)); sb.append(" AND ccp.feccorte = TO_DATE('"+fechaStr+" 00:00:00', 'dd/MM/yyyy HH24:mi:ss') and ee.tipoeventoextra_id <> 25 and cdp.formapago_id in (2,3) "); sb.append(" GROUP BY cdp.formapago_id, fp.DESCPAGO,"); sb.append(" e.empresa_id, cd.PUNTOVENTA_ID, "); sb.append(" tee.contacontabil,"); sb.append(" pv.numpuntoventa, ee.descinfo,"); sb.append(" ee.tipoeventoextra_id, ccp.FECCORTE )) x "); sb.append("GROUP BY formaPagoId, descripcionFormaPago, empresa, "); sb.append(" puntoventaId,"); sb.append(" contacontabil,"); sb.append(" numpuntoventa,"); sb.append(" descinfo,"); sb.append(" tipoEventoExtra,feccorte "); sb.append("ORDER BY formaPagoId, descripcionFormaPago"); PreparedStatement stmt = null; ResultSet rs = null; try { stmt = getConnection().prepareStatement(sb.toString()); rs = stmt.executeQuery(); while (rs.next()) { DespesaReceita receita = new DespesaReceita(); receita.setCodigoEmpresa(rs.getInt(4)); receita.setCodigoReceitaDespesa(rs.getString(6)); receita.setDataLancamento(rs.getDate(10)); receita.setDataMovimento(rs.getDate(10)); receita.setLocalArrecadacao(rs.getString(7)); if (rs.getBigDecimal(1).signum() == 1) { receita.setIdentificadorReceitaDespesa("D"); receita.setValorLancamento(df.format(rs.getBigDecimal(1))); } else { receita.setIdentificadorReceitaDespesa("R"); receita.setValorLancamento(df.format(rs.getBigDecimal(1))); } String desc =rs.getString(8); desc = this.removerQuebraDeLinha(desc); receita.setDescricaoDetalhada(desc); if (incluiTipoPagamentoTurismoBGM) { receita.setTipoPagamentoTurismo(rs.getString("tipoEventoExtra")); } receita.setFormaPagamentoId(rs.getString("formaPagoId")); despesas.add(receita); } } catch (Exception e) { log.error(e.getMessage(), e); throw new IntegracaoReceitaDespesaException("Erro ao processar Receitas"); } finally { try { rs.close(); } catch (Exception ignore) { log.error(ignore.getMessage(), ignore); } try { stmt.close(); } catch (Exception ignore) { log.error(ignore.getMessage(), ignore); } } return despesas; } private void loadPuntosVenta() { PreparedStatement pstmt = null; ResultSet rs = null; try { pstmt = getConnection().prepareStatement("Select puntoventa_id, nombpuntoventa from punto_venta order by nombpuntoventa"); rs = pstmt.executeQuery(); while (rs.next()) { PuntoVenta puntoVenta = new PuntoVenta(); puntoVenta.codigo = rs.getInt(1); puntoVenta.nombpuntoventa = rs.getString(2); pontosVenda.add(puntoVenta); } } catch (Exception e) { log.error(e.getMessage(), e); } finally { try { rs.close(); } catch (Exception ignore) { log.error(ignore.getMessage(), ignore); } try { pstmt.close(); } catch (Exception ignore) { log.error(ignore.getMessage(), ignore); } } } private Collection buscarComissoesContaCorrenteAgencia(Integer puntoVentaId,Integer empresaId, Date fechaParam, boolean incluiTipoPagamentoTurismoBGM) throws IntegracaoReceitaDespesaException { List despesas = new ArrayList(); StringBuilder sb = new StringBuilder(); SimpleDateFormat sf = new SimpleDateFormat("dd/MM/yyyy"); String fechaStr = sf.format(fechaParam); if (fechaParam == null) { fechaStr = sf.format(getData()); } sb.append("SELECT CASE"); sb.append(" WHEN E.INDRATEIOCOMISSAOGRUPOLINHA = 1"); sb.append(" AND OP.TIPOOPERACIONCC_ID = 5"); sb.append(" AND CCGL.CONTACORRENTEPTOVTAGRLIN_ID IS NOT NULL THEN CCGL.IMPORTE"); sb.append(" ELSE CC.IMPORTETOTALEFECTIVO"); sb.append(" END AS precioBoleto ,"); sb.append(" CASE"); sb.append(" WHEN OP.INDCREDITO = 1 THEN 'CREDITO'"); sb.append(" ELSE 'DEBITO'"); sb.append(" END AS descripcionFormaPago ,"); sb.append(" CASE"); sb.append(" WHEN OP.CVETIPO = 'CM' THEN 'COMISSAO' "); sb.append(" WHEN OP.CVETIPO = 'LQ' THEN 'LQ' "); sb.append(" END AS descripcionFormaPago,"); sb.append(" cc.empresa_id, "); sb.append(" cc.puntoventa_id, "); sb.append(" pv.numpuntoventa, "); sb.append(" cc.fechoroperacion, "); sb.append(" CASE WHEN OP.INDCREDITO = 1 THEN 802 ELSE 803 END contacontabil "); sb.append("FROM CONTA_CORRENTE_PTOVTA CC "); sb.append("LEFT JOIN CONTA_CORRENTE_PTOVTA_GR_LIN CCGL ON CCGL.CONTACORRENTEPTOVTA_ID = CC.CONTACORRENTEPTOVTA_ID "); sb.append("JOIN TIPO_OPERACION_CC OP ON CC.TIPOOPERACIONCC_ID = OP.TIPOOPERACIONCC_ID "); sb.append("JOIN PUNTO_VENTA PV ON CC.PUNTOVENTA_ID = PV.PUNTOVENTA_ID "); sb.append("JOIN EMPRESA E ON CC.EMPRESA_ID = E.EMPRESA_ID "); sb.append("LEFT JOIN LOG_CONFERENCIA LG ON CC.CONTACORRENTEPTOVTA_ID = LG.CONTACORRENTEPTOVTA_ID "); sb.append("LEFT JOIN CONFERENCIA_PENDENCIA CP ON CP.CONFERENCIAPENDENCIA_ID = LG.CONFERENCIAPENDENCIA_ID "); sb.append("WHERE CC.ACTIVO = 1 "); sb.append(" AND cc.feccorte = TO_DATE('"+fechaStr+" 00:00:00', 'dd/MM/yyyy HH24:mi:ss') "); adicionaFiltroQuery(empresaId, sb, " and CC.EMPRESA_ID = ", empresaId != null); adicionaFiltroQuery(puntoVentaId, sb, " and CC.PUNTOVENTA_ID = ", puntoVentaId != null && !puntoVentaId.equals(-1)); sb.append(" ORDER BY PV.NOMBPUNTOVENTA,"); sb.append(" E.NOMBEMPRESA,"); sb.append(" OP.DESCTIPO,"); sb.append(" OP.CVETIPO "); PreparedStatement stmt = null; ResultSet rs = null; try { stmt = getConnection().prepareStatement(sb.toString()); rs = stmt.executeQuery(); while (rs.next()) { DespesaReceita receita = new DespesaReceita(); receita.setCodigoEmpresa(rs.getInt(4)); receita.setCodigoReceitaDespesa(rs.getString(8)); receita.setDataLancamento(rs.getDate(7)); receita.setDataMovimento(rs.getDate(7)); receita.setLocalArrecadacao(rs.getString(6)); if(rs.getString(3) != null) { if(rs.getString(3).equalsIgnoreCase("COMISSAO")) { if (rs.getBigDecimal(1).signum() == 1) { receita.setIdentificadorReceitaDespesa("D"); } else { receita.setIdentificadorReceitaDespesa("R"); } }else if(rs.getString(3).equalsIgnoreCase("LQ")) { if (rs.getBigDecimal(1).signum() == 1) { receita.setIdentificadorReceitaDespesa("D"); } else { receita.setIdentificadorReceitaDespesa("R"); } } } receita.setValorLancamento(df.format(rs.getBigDecimal(1))); receita.setDescricaoDetalhada(""); if (incluiTipoPagamentoTurismoBGM) { receita.setTipoPagamentoTurismo(rs.getString("tipoeventoextra_id")); } receita.setFormaPagamentoId("1"); despesas.add(receita); } } catch (Exception e) { log.error(e.getMessage(), e); throw new IntegracaoReceitaDespesaException("Erro ao processar Receitas"); } finally { try { rs.close(); } catch (Exception ignore) { log.error(ignore.getMessage(), ignore); } try { stmt.close(); } catch (Exception ignore) { log.error(ignore.getMessage(), ignore); } } return despesas; } private void loadEmpresas() { PreparedStatement pstmt = null; ResultSet rs = null; try { pstmt = getConnection().prepareStatement("Select empresa_id, nombempresa from empresa order by nombempresa"); rs = pstmt.executeQuery(); while (rs.next()) { Empresa empresa = new Empresa(); empresa.codigo = rs.getInt(1); empresa.nombempresa = rs.getString(2); empresas.add(empresa); } } catch (Exception e) { log.error(e.getMessage(), e); } finally { try { rs.close(); } catch (Exception ignore) { log.error(ignore.getMessage(), ignore); } try { pstmt.close(); } catch (Exception ignore) { log.error(ignore.getMessage(), ignore); } } } public Connection getConnection() { return this.conn; } public List getDespesaCartaoDebCred(final Integer puntoVentaId, final 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 fechorvta, "); sb.append(" e.empresa_id AS empresa, "); sb.append(" pv.puntoventa_id AS puntoventaId, "); sb.append(" sum(cdp.importe) AS valor, "); if(isCodReceitaFixoBgm){ sb.append(" case when cdp.formapago_id = 2 then 802 else 803 end, "); }else{ sb.append(" tee.contacontabil AS contacontabil, "); } sb.append(" pv.numpuntoventa AS numpuntoventa, "); sb.append(" ev.tipoeventoextra_id, "); sb.append(" cdp.formapago_id as formapagoId "); 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(" where "); sb.append(" cd.feccorte = ? "); 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 in (2,3) "); sb.append(" and tee.indtipo = 0 "); sb.append(" group by "); sb.append(" cd.feccorte, "); sb.append(" e.empresa_id, "); sb.append(" pv.puntoventa_id, "); if(isCodReceitaFixoBgm){ sb.append(" case when cdp.formapago_id = 2 then 802 else 803 end, "); }else{ sb.append(" tee.contacontabil, "); } sb.append(" pv.numpuntoventa, ev.tipoeventoextra_id, "); sb.append(" cdp.formapago_id "); PreparedStatement stmt = null; ResultSet rs = null; Date fecha = fechaParam; if (fechaParam == null) { fecha = getData(); } try { stmt = getConnection().prepareStatement(sb.toString()); stmt.setDate(1, new java.sql.Date(fecha.getTime())); rs = stmt.executeQuery(); while (rs.next()) { DespesaReceita despesa = new DespesaReceita(); despesa.setCodigoEmpresa(rs.getInt(2)); despesa.setCodigoReceitaDespesa(rs.getString(5)); despesa.setDataLancamento(rs.getDate(1)); despesa.setDataMovimento(rs.getDate(1)); despesa.setLocalArrecadacao(rs.getString(6)); if (rs.getBigDecimal(4).signum() == -1) { despesa.setIdentificadorReceitaDespesa("D"); despesa.setValorLancamento(df.format(rs.getBigDecimal(4).multiply(new BigDecimal(-1)))); } else { despesa.setIdentificadorReceitaDespesa("R"); despesa.setValorLancamento(df.format(rs.getBigDecimal(4))); } if (incluiTipoPagamentoTurismoBGM) { despesa.setTipoPagamentoTurismo(rs.getString("tipoeventoextra_id")); } despesa.setFormaPagamentoId(rs.getString("formapagoId")); if(isLayoutNovo) { despesa.setTipoPagamentoTurismo("01"); despesa.setFormaPagamentoId("03"); despesa.setTipoDocumentoVenda("P"); } despesas.add(despesa); } } catch (Exception e) { log.error(e.toString(), e); throw new IntegracaoReceitaDespesaException("Erro ao processar Despesas cartão Crédito/Débito"); } finally { try { rs.close(); } catch (Exception ignore) { log.error("", ignore); } try { stmt.close(); } catch (Exception ignore) { log.error("", ignore); } } return despesas; } public List getDespesaCartaoDebCredComporte(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, "); sb.append(" e.empresa_id AS empresa, "); sb.append(" pv.puntoventa_id AS puntoventaId, "); sb.append(" cdp.importe AS valor, "); sb.append(" tee.contacontabil AS contacontabil, "); sb.append(" pv.numpuntoventa AS numpuntoventa, "); sb.append(" ev.tipoeventoextra_id, "); sb.append(" cdp.formapago_id as formapagoId, "); sb.append(" ct.numautorizacion as numautorizacion, "); sb.append(" pte.numsitef as numeroEstabelecimento, "); sb.append(" b.numfoliosistema,"); 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 "); 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 caja_tarjeta ct on ct.cajatarjeta_id = cdp.cajatarjeta_id "); sb.append(" left join ptovta_empresa pte on pte.puntoventa_id = pv.puntoventa_id and pte.empresa_id = e.empresa_id "); sb.append(" left join boleto b on (b.boleto_id = ev.boleto_id) "); sb.append(" where "); sb.append(" cd.feccorte = ? "); 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 in (2,3) "); sb.append(" and tee.indtipo = 0 "); PreparedStatement stmt = null; ResultSet rs = null; Date fecha = fechaParam; if (fechaParam == null) { fecha = getData(); } try { stmt = getConnection().prepareStatement(sb.toString()); stmt.setDate(1, new java.sql.Date(fecha.getTime())); rs = stmt.executeQuery(); while (rs.next()) { DespesaReceitaComporte despesa = new DespesaReceitaComporte(); 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("num_bpe")); }else { despesa.setNumfoliosistema(""); } despesa.setDataLancamento(rs.getDate(1)); despesa.setDataMovimento(rs.getDate(1)); despesa.setLocalArrecadacao(rs.getString(6)); if (rs.getBigDecimal(4).signum() == -1) { despesa.setIdentificadorReceitaDespesa("D"); despesa.setValorLancamento(df.format(rs.getBigDecimal(4).multiply(new BigDecimal(-1)))); } else { despesa.setIdentificadorReceitaDespesa("R"); despesa.setValorLancamento(df.format(rs.getBigDecimal(4))); } if (incluiTipoPagamentoTurismoBGM) { despesa.setTipoPagamentoTurismo(rs.getString("tipoeventoextra_id")); } despesa.setFormaPagamentoId(rs.getString("formapagoId")); if( despesa.getFormaPagamentoId().equals("2") || despesa.getFormaPagamentoId().equals("3")) { despesa.setCodigoAutorizacao(rs.getString("numautorizacion")); despesa.setNumeroEstabelecimento(rs.getString("numeroEstabelecimento")); }else { despesa.setCodigoAutorizacao(""); despesa.setNumeroEstabelecimento(""); } despesa.setTxId(rs.getString(12)); despesas.add(despesa); } } catch (Exception e) { log.error(e.toString(), e); throw new IntegracaoReceitaDespesaException("Erro ao processar Despesas cartão Crédito/Débito"); } finally { try { rs.close(); } catch (Exception ignore) { log.error("", ignore); } try { stmt.close(); } catch (Exception ignore) { log.error("", ignore); } } return despesas; } private void adicionaFiltroQuery(final Integer valor, StringBuilder sb, String filtroSQL, Boolean adicionar) { if (adicionar) { sb.append(filtroSQL + valor); } } public List getReceitas(final Integer puntoVentaId, final 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 fechorvta, "); sb.append(" e.empresa_id AS empresa, "); sb.append(" pv.puntoventa_id AS puntoventaId, "); sb.append(" COALESCE(sum(cdp.importe),0) AS valor, "); sb.append(" tee.contacontabil AS contacontabil, "); sb.append(" pv.numpuntoventa AS numpuntoventa, "); sb.append(" ev.descinfo as descinfo, "); sb.append(" ev.tipoeventoextra_id, "); sb.append(" COALESCE(cdp.formapago_id,0) as formapagoId, "); sb.append(" tee.desctipoevento, "); sb.append(" fp.tipo_pago "); 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 forma_pago fp on cdp.formapago_id = fp.formapago_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(" where "); sb.append(" cd.feccorte = ? "); 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 tee.indtipo = 1 "); sb.append(" group by cd.feccorte, "); sb.append(" e.empresa_id, pv.puntoventa_id, "); sb.append(" tee.contacontabil, pv.numpuntoventa, "); sb.append(" ev.descinfo, ev.tipoeventoextra_id, "); sb.append(" cdp.formapago_id, tee.desctipoevento,fp.tipo_pago "); PreparedStatement stmt = null; ResultSet rs = null; Date fecha = fechaParam; if (fechaParam == null) { fecha = getData(); } try { stmt = getConnection().prepareStatement(sb.toString()); stmt.setDate(1, new java.sql.Date(fecha.getTime())); rs = stmt.executeQuery(); while (rs.next()) { DespesaReceita receita = new DespesaReceita(); receita.setCodigoEmpresa(rs.getInt(2)); receita.setCodigoReceitaDespesa(rs.getString(5)); receita.setDataLancamento(rs.getDate(1)); receita.setDataMovimento(rs.getDate(1)); receita.setLocalArrecadacao(rs.getString(6)); if (rs.getBigDecimal(4).signum() == -1) { receita.setIdentificadorReceitaDespesa("D"); receita.setValorLancamento(df.format(rs.getBigDecimal(4).multiply(new BigDecimal(-1)))); } else { receita.setIdentificadorReceitaDespesa("R"); receita.setValorLancamento(df.format(rs.getBigDecimal(4))); } String desc =rs.getString(7); desc = this.removerQuebraDeLinha(desc); receita.setDescricaoDetalhada(desc); if (incluiTipoPagamentoTurismoBGM) { receita.setTipoPagamentoTurismo(rs.getString("tipoeventoextra_id")); } receita.setFormaPagamentoId(rs.getString("formapagoId")); if(isLayoutNovo) { if( rs.getString("desctipoevento").matches("EXCESSO.BAGAGEM") ) { receita.setTipoDocumentoVenda("E"); }else { receita.setTipoDocumentoVenda("P"); } receita.setTipoPagamentoTurismo("01"); receita.setFormaPagamentoId( converteFormaPagamentoLayoutNovo(rs.getString("tipo_pago")) ); } despesas.add(receita); } } catch (Exception e) { log.error(e.getMessage(), e); throw new IntegracaoReceitaDespesaException("Erro ao processar Receitas"); } finally { try { rs.close(); } catch (Exception ignore) { log.error(ignore.getMessage(), ignore); } try { stmt.close(); } catch (Exception ignore) { log.error(ignore.getMessage(), ignore); } } return despesas; } 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, "); sb.append(" e.empresa_id AS empresa, "); sb.append(" pv.puntoventa_id AS puntoventaId, "); sb.append(" COALESCE(cdp.importe,0) AS valor, "); sb.append(" tee.contacontabil AS contacontabil, "); sb.append(" pv.numpuntoventa AS numpuntoventa, "); sb.append(" ev.descinfo AS descinfo, "); sb.append(" ev.tipoeventoextra_id, "); sb.append(" COALESCE(cdp.formapago_id,0) as formapagoId, "); sb.append(" ct.numautorizacion AS numautorizacion, "); sb.append(" pte.numsitef AS numeroestabelecimento, "); sb.append(" ct.cantparcelas, "); 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 "); 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 caja_tarjeta ct ON ct.cajatarjeta_id = cdp.cajatarjeta_id "); sb.append(" LEFT JOIN ptovta_empresa pte ON pte.puntoventa_id = pv.puntoventa_id AND pte.empresa_id = e.empresa_id "); sb.append(" LEFT JOIN boleto b on (b.boleto_id = ev.boleto_id) "); sb.append(" where "); sb.append(" cd.feccorte = ? "); 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 tee.indtipo = 1 "); PreparedStatement stmt = null; ResultSet rs = null; Date fecha = fechaParam; if (fechaParam == null) { fecha = getData(); } try { stmt = getConnection().prepareStatement(sb.toString()); stmt.setDate(1, new java.sql.Date(fecha.getTime())); rs = stmt.executeQuery(); while (rs.next()) { DespesaReceitaComporte receita = new DespesaReceitaComporte(); receita.setCodigoEmpresa(rs.getInt(2)); receita.setCodigoReceitaDespesa(rs.getString(5)); receita.setNumfoliosistema(rs.getString(13)); receita.setDataLancamento(rs.getDate(1)); receita.setDataMovimento(rs.getDate(1)); receita.setLocalArrecadacao(rs.getString(6)); receita.setCantParcelas(rs.getString(12)); if (rs.getBigDecimal(4).signum() == -1) { receita.setIdentificadorReceitaDespesa("D"); receita.setValorLancamento(df.format(rs.getBigDecimal(4).multiply(new BigDecimal(-1)))); } else { receita.setIdentificadorReceitaDespesa("R"); receita.setValorLancamento(df.format(rs.getBigDecimal(4))); } String desc =rs.getString(7); desc = this.removerQuebraDeLinha(desc); receita.setDescricaoDetalhada(desc); if (incluiTipoPagamentoTurismoBGM) { receita.setTipoPagamentoTurismo(rs.getString("tipoeventoextra_id")); } receita.setFormaPagamentoId(rs.getString("formapagoId")); if( receita.getFormaPagamentoId().equals("2") || receita.getFormaPagamentoId().equals("3")) { receita.setCodigoAutorizacao(rs.getString("numautorizacion")); receita.setNumeroEstabelecimento(rs.getString("numeroEstabelecimento")); }else { receita.setCodigoAutorizacao(""); receita.setNumeroEstabelecimento(""); } receita.setTxId(rs.getString(14)); despesas.add(receita); } } catch (Exception e) { log.error(e.getMessage(), e); throw new IntegracaoReceitaDespesaException("Erro ao processar Receitas"); } finally { try { rs.close(); } catch (Exception ignore) { log.error(ignore.getMessage(), ignore); } try { stmt.close(); } catch (Exception ignore) { log.error(ignore.getMessage(), ignore); } } return despesas; } public List getDespesas(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(" 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(" 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()) { DespesaReceita despesa = new DespesaReceita(); 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"); } 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; } private String removerQuebraDeLinha(String desc) { if(StringUtils.isBlank(desc)){ return desc; } desc = desc.replaceAll("\t", " "); desc = desc.replaceAll("\n", " "); desc = desc.replaceAll("\r", " "); return desc; } public List getDepositos(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); } DespesaReceita deposito = new DespesaReceita(); 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 Integer getCodigoReceitaDespesaGlobus() { StringBuilder sb = new StringBuilder(); sb.append("Select valorconstante from constante where nombconstante = 'CODIGO_RECEITA_DESPESA_GLOBUS' "); PreparedStatement pstmt = null; ResultSet rs = null; Integer result = null; try { pstmt = getConnection().prepareStatement(sb.toString()); rs = pstmt.executeQuery(); if (rs.next()) { result = rs.getInt(1); } } catch (Exception e) { log.error(e.getMessage(), e); } finally { try { rs.close(); } catch (Exception ignore) { log.error(ignore.getMessage(), ignore); } try { pstmt.close(); } catch (Exception ignore) { log.error(ignore.getMessage(), ignore); } } return result; } public Boolean isConstanteBloqueioMenorQueData(Integer empresaId, Date data) { StringBuilder sb = new StringBuilder(); sb.append("Select valorconstante from constante where nombconstante = 'DATA_LIMITE_EDICAO_DEPOSITO_" + empresaId + "'"); PreparedStatement pstmt = null; ResultSet rs = null; Boolean result = null; try { pstmt = getConnection().prepareStatement(sb.toString()); rs = pstmt.executeQuery(); if (rs.next()) { Date rsDate = new SimpleDateFormat("dd/MM/yyyy").parse(rs.getString(1)); result = !rsDate.after(data); } else { // se não existir a constante, retorno true para que ela seja criada na função updateDataBloqueio result = true; } } catch (Exception e) { log.error(e.getMessage(), e); } finally { try { rs.close(); } catch (Exception ignore) { log.error(ignore.getMessage(), ignore); } try { pstmt.close(); } catch (Exception ignore) { log.error(ignore.getMessage(), ignore); } } return result; } public void updateDataBloqueio(Integer empresaId, Date data) { StringBuilder sb = new StringBuilder(); PreparedStatement pstmt = null; SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); try { if (!getConnection().prepareStatement("Select valorconstante from constante where nombconstante = 'DATA_LIMITE_EDICAO_DEPOSITO_" + empresaId + "'").executeQuery().next()) { sb.append("insert into constante values (constante_seq.nextval, 'DATA_LIMITE_EDICAO_DEPOSITO_" + empresaId + "', 'DATA_LIMITE_EDICAO_DEPOSITO_" + empresaId + "',1," + "'" + sdf.format(data) + "', 1, 1, :datamodif, 1)"); pstmt = getConnection().prepareStatement(sb.toString()); pstmt.setDate(1, new java.sql.Date(new Date().getTime())); } else { sb.append("update constante set valorconstante = :valor where nombconstante = 'DATA_LIMITE_EDICAO_DEPOSITO_" + empresaId + "'"); pstmt = getConnection().prepareStatement(sb.toString()); pstmt.setString(1, sdf.format(data)); } pstmt.executeUpdate(); } catch (Exception e) { log.error(e.getMessage(), e); } finally { try { pstmt.close(); } catch (Exception ignore) { log.error(ignore.getMessage(), ignore); } } } private Date getData() { Calendar cal = Calendar.getInstance(); cal.set(2015, 10, 13); cal.setTime(new Date()); cal.add(Calendar.DAY_OF_MONTH, DAYS_AGO); return cal.getTime(); } private String converteFormaPagamentoLayoutNovo(String formaPago) { //lista de tipos: com.rjconsultores.ventaboletos.enums.TipoFormapago if(formaPago == null) { return ""; } Integer converted = new Integer( formaPago); switch (converted) { case 0: return "01"; case 1: return "03"; case 2: return "03"; case 3: return "05"; case 4: return "05"; case 10: return "02"; case 11: return "04"; default: return ""; } } public List getPontosVenda() { return pontosVenda; } public void setPontosVenda(List pontosVenda) { this.pontosVenda = pontosVenda; } public List getEmpresas() { return empresas; } public void setEmpresas(List empresas) { this.empresas = empresas; } public void setIsReceitasDespesasComporte(Boolean isReceitasDespesasComporte) { this.isReceitasDespesasComporte = isReceitasDespesasComporte; } public static void amain(String[] args) { 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; } }