1217 lines
49 KiB
Java
1217 lines
49 KiB
Java
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.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 = Logger.getLogger(Totalbus.class);
|
|
private static final int DAYS_AGO = -1;
|
|
|
|
private Connection conn;
|
|
|
|
private List<PuntoVenta> pontosVenda = new ArrayList<PuntoVenta>();
|
|
private List<Empresa> empresas = new ArrayList<Empresa>();
|
|
|
|
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<String> getDespesasReceitas(Integer puntoventaId, Integer empresaId, Date fechaParam, boolean incluiTipoPagamentoTurismoBGM, boolean isLayoutNovo) throws IntegracaoReceitaDespesaException{
|
|
log.debug("gerando depositos...");
|
|
List<DespesaReceita> 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...");
|
|
|
|
if (isReceitasDespesasComporte){
|
|
despesasReceitas.addAll(getDespesaCartaoDebCredComporte(puntoventaId, empresaId, fechaParam, incluiTipoPagamentoTurismoBGM));
|
|
log.debug("gerando receitas...");
|
|
despesasReceitas.addAll(getReceitasComporte(puntoventaId, empresaId, fechaParam, incluiTipoPagamentoTurismoBGM));
|
|
|
|
}else {
|
|
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<String> rows = new ArrayList<String>();
|
|
|
|
if( isLayoutNovo ) {
|
|
for (DespesaReceita item : despesasReceitas) {
|
|
item.preencheLinhaLayoutNovo(rows);
|
|
}
|
|
}else {
|
|
for (DespesaReceita item : despesasReceitas) {
|
|
item.preencheLinha(rows);
|
|
}
|
|
}
|
|
return rows;
|
|
}
|
|
|
|
private void getContaCorrenteAgencia(List<DespesaReceita> 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<? extends DespesaReceita> buscarFormasPagamentoContaCorrenteAgencia(Integer puntoVentaId,
|
|
Integer empresaId, Date fechaParam, boolean incluiTipoPagamentoTurismoBGM)
|
|
throws IntegracaoReceitaDespesaException {
|
|
|
|
List<DespesaReceita> despesas = new ArrayList<DespesaReceita>();
|
|
|
|
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("tee.contacontabil AS 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(" tee.contacontabil AS 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<? extends DespesaReceita> buscarComissoesContaCorrenteAgencia(Integer puntoVentaId,Integer empresaId, Date fechaParam, boolean incluiTipoPagamentoTurismoBGM)
|
|
throws IntegracaoReceitaDespesaException {
|
|
List<DespesaReceita> despesas = new ArrayList<DespesaReceita>();
|
|
|
|
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("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("");
|
|
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<DespesaReceita> getDespesaCartaoDebCred(final Integer puntoVentaId, final Integer empresaId, Date fechaParam, boolean incluiTipoPagamentoTurismoBGM, boolean isLayoutNovo) throws IntegracaoReceitaDespesaException{
|
|
List<DespesaReceita> despesas = new ArrayList<DespesaReceita>();
|
|
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<DespesaReceitaComporte> getDespesaCartaoDebCredComporte(final Integer puntoVentaId, final Integer empresaId, Date fechaParam, boolean incluiTipoPagamentoTurismoBGM) throws IntegracaoReceitaDespesaException{
|
|
List<DespesaReceitaComporte> despesas = new ArrayList<DespesaReceitaComporte>();
|
|
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(" 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(11));
|
|
}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<DespesaReceita> getReceitas(final Integer puntoVentaId, final Integer empresaId, Date fechaParam, boolean incluiTipoPagamentoTurismoBGM, boolean isLayoutNovo) throws IntegracaoReceitaDespesaException {
|
|
List<DespesaReceita> despesas = new ArrayList<DespesaReceita>();
|
|
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<DespesaReceita> getReceitasComporte(final Integer puntoVentaId, final Integer empresaId, Date fechaParam, boolean incluiTipoPagamentoTurismoBGM) throws IntegracaoReceitaDespesaException {
|
|
List<DespesaReceita> despesas = new ArrayList<DespesaReceita>();
|
|
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(" b.numfoliosistema,");
|
|
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));
|
|
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.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<DespesaReceita> getDespesas(Integer puntoventaId, Integer empresaId, Date fechaParam, boolean incluiTipoPagamentoTurismoBGM, boolean isLayoutNovo ) throws IntegracaoReceitaDespesaException {
|
|
List<DespesaReceita> despesas = new ArrayList<DespesaReceita>();
|
|
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<DespesaReceita> getDepositos(Integer puntoventaId, Integer empresaId, Date fechaParam, boolean incluiTipoPagamentoTurismoBGM, boolean isLayoutNovo) throws IntegracaoReceitaDespesaException {
|
|
List<DespesaReceita> depositos = new ArrayList<DespesaReceita>();
|
|
|
|
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<PuntoVenta> getPontosVenda() {
|
|
return pontosVenda;
|
|
}
|
|
|
|
public void setPontosVenda(List<PuntoVenta> pontosVenda) {
|
|
this.pontosVenda = pontosVenda;
|
|
}
|
|
|
|
public List<Empresa> getEmpresas() {
|
|
return empresas;
|
|
}
|
|
|
|
public void setEmpresas(List<Empresa> 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());
|
|
}
|
|
|
|
}
|