450 lines
22 KiB
Java
450 lines
22 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.Date;
|
|
import java.util.List;
|
|
|
|
import org.apache.log4j.Logger;
|
|
|
|
import com.rjconsultores.integracaoreceitadespesa.entidades.DespesaReceita;
|
|
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 DecimalFormat df = new DecimalFormat("#0.00");
|
|
|
|
public Totalbus(Connection con){
|
|
this.conn = con;
|
|
loadEmpresas();
|
|
loadPuntosVenta();
|
|
}
|
|
|
|
public List<String> getDespesasReceitas(Integer puntoventaId, Integer empresaId,Date fechaParam){
|
|
log.debug("gerando depósitos...");
|
|
List<DespesaReceita> despesasReceitas = getDepositos(puntoventaId, empresaId, fechaParam);
|
|
log.debug("gerando despesas...");
|
|
despesasReceitas.addAll(getDespesas(puntoventaId, empresaId, fechaParam));
|
|
log.debug("gerando despesas cartão...");
|
|
despesasReceitas.addAll(getDespesaCartaoDebCred(puntoventaId, empresaId, fechaParam));
|
|
log.debug("gerando receitas...");
|
|
despesasReceitas.addAll(getReceitas(puntoventaId, empresaId, fechaParam));
|
|
|
|
List<String> rows = new ArrayList<String>();
|
|
|
|
for (DespesaReceita item : despesasReceitas){
|
|
item.preencheLinha(rows);
|
|
}
|
|
return rows;
|
|
}
|
|
|
|
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 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) {
|
|
List<DespesaReceita> despesas = new ArrayList<DespesaReceita>();
|
|
StringBuffer sb = new StringBuffer();
|
|
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, ");
|
|
sb.append(" case when cdp.formapago_id = 2 then 802 else 803 end as contacontabil, ");
|
|
sb.append(" pv.numpuntoventa AS numpuntoventa ");
|
|
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 = ? ");
|
|
if (puntoVentaId != null && !puntoVentaId.equals(-1)){
|
|
sb.append(" and cd.puntoventa_id = " + puntoVentaId);
|
|
}
|
|
if (empresaId != null){
|
|
sb.append(" and e.empresa_id = " + empresaId);
|
|
}
|
|
sb.append(" and cd.activo = 1 ");
|
|
sb.append(" and tee.indtipo = 1 ");
|
|
sb.append(" and cdp.formapago_id in (2,3) ");
|
|
sb.append(" group by ");
|
|
sb.append(" cd.feccorte, ");
|
|
sb.append(" e.empresa_id, ");
|
|
sb.append(" pv.puntoventa_id, ");
|
|
sb.append(" case when cdp.formapago_id = 2 then 802 else 803 end, ");
|
|
sb.append(" pv.numpuntoventa ");
|
|
|
|
|
|
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.getInt(5));
|
|
despesa.setDataLancamento(rs.getDate(1));
|
|
despesa.setDataMovimento(rs.getDate(1));
|
|
despesa.setLocalArrecadação(rs.getInt(6));
|
|
despesa.setValorLancamento(df.format(rs.getBigDecimal(4)));
|
|
despesa.setIdentificadorReceitaDespesa("D");
|
|
despesas.add(despesa);
|
|
}
|
|
} catch (Exception e){
|
|
log.error(e.toString(),e);
|
|
} finally {
|
|
try { rs.close(); } catch (Exception ignore) { log.error("", ignore); }
|
|
try { stmt.close(); } catch (Exception ignore) { log.error("", ignore); }
|
|
}
|
|
return despesas;
|
|
}
|
|
|
|
public List<DespesaReceita> getReceitas(final Integer puntoVentaId, final Integer empresaId, Date fechaParam) {
|
|
List<DespesaReceita> despesas = new ArrayList<DespesaReceita>();
|
|
StringBuffer sb = new StringBuffer();
|
|
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, ");
|
|
sb.append(" tee.contacontabil AS contacontabil, ");
|
|
sb.append(" pv.numpuntoventa AS numpuntoventa ");
|
|
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 = ? ");
|
|
if (puntoVentaId != null && !puntoVentaId.equals(-1)){
|
|
sb.append(" and cd.puntoventa_id = " + puntoVentaId);
|
|
}
|
|
if (empresaId != null){
|
|
sb.append(" and e.empresa_id = " + empresaId);
|
|
}
|
|
sb.append(" and cd.activo = 1 ");
|
|
sb.append(" and tee.indtipo = 1 ");
|
|
//sb.append(" and cd.usuario_id=7061 ");
|
|
sb.append(" group by ");
|
|
sb.append(" cd.feccorte, ");
|
|
sb.append(" e.empresa_id, ");
|
|
sb.append(" pv.puntoventa_id, ");
|
|
sb.append(" tee.contacontabil, ");
|
|
sb.append(" pv.numpuntoventa ");
|
|
|
|
|
|
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.getInt(5));
|
|
receita.setDataLancamento(rs.getDate(1));
|
|
receita.setDataMovimento(rs.getDate(1));
|
|
receita.setLocalArrecadação(rs.getInt(6));
|
|
receita.setValorLancamento(df.format(rs.getBigDecimal(4)));
|
|
receita.setIdentificadorReceitaDespesa("R");
|
|
despesas.add(receita);
|
|
}
|
|
} catch (Exception e){
|
|
log.error(e.getMessage(),e);
|
|
} 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){
|
|
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(" 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 ");
|
|
if (puntoventaId != null && !puntoventaId.equals(-1)){
|
|
sb.append(" and cd.puntoventa_id = " + puntoventaId);
|
|
}
|
|
if (empresaId != null){
|
|
sb.append(" and e.empresa_id = " + empresaId);
|
|
}
|
|
sb.append(" and cd.activo = 1 ");
|
|
//sb.append(" and cd.usuario_id=7061 ");
|
|
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.getInt(5));
|
|
despesa.setDataLancamento(rs.getDate(1));
|
|
despesa.setDataMovimento(rs.getDate(1));
|
|
despesa.setLocalArrecadação(rs.getInt(3));
|
|
despesa.setValorLancamento(df.format(rs.getBigDecimal(4).doubleValue() * -1));
|
|
despesa.setIdentificadorReceitaDespesa("D");
|
|
despesas.add(despesa);
|
|
}
|
|
} 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 despesas;
|
|
}
|
|
|
|
public List<DespesaReceita> getDepositos(Integer puntoventaId, Integer empresaId, Date fechaParam){
|
|
List<DespesaReceita> depositos = new ArrayList<DespesaReceita>();
|
|
// StringBuilder sb = new StringBuilder();
|
|
// sb.append("select fdep.fechamentodeposito_id, fdep.valor, fdep.numdeposito, fdep.FECCREACION, fdep.fecha_deposito ");
|
|
// sb.append("from fechamento_deposito fdep ");
|
|
// sb.append("where trunc(FECCREACION) = :fecha and fdep.activo = 1 ");
|
|
|
|
|
|
StringBuilder strFechamentos = new StringBuilder();
|
|
strFechamentos.append("Select sum(fdep.valor), fdep.numdeposito, fdep.fecha_deposito, fc.empresa_id, pv.numpuntoventa, ec.numagencia, ec.numconta, if.CODIGO, ec.numintegracion ");
|
|
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 ");
|
|
|
|
if (puntoventaId != null && !puntoventaId.equals(-1)){
|
|
strFechamentos.append(" and fc.puntoventa_id = " + puntoventaId);
|
|
}
|
|
if (empresaId != null){
|
|
strFechamentos.append(" and fc.empresa_id = " + empresaId);
|
|
}
|
|
|
|
strFechamentos.append(" group by fdep.numdeposito, 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 pstmt = null;
|
|
//ResultSet rs = null;
|
|
|
|
|
|
// pstmt = getConnection().prepareStatement(sb.toString());
|
|
// pstmt.setDate(1, new java.sql.Date(fecha.getTime()));
|
|
//
|
|
// rs = pstmt.executeQuery();
|
|
Integer codigoReceitaDespesaGlobus = getCodigoReceitaDespesaGlobus();
|
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("MM/yy");
|
|
|
|
PreparedStatement pstmtFechamentos = null;
|
|
ResultSet rsFechamentos = null;
|
|
BigDecimal soma = BigDecimal.ZERO;
|
|
try{
|
|
// while (rs.next()){
|
|
pstmtFechamentos = getConnection().prepareStatement(strFechamentos.toString());
|
|
pstmtFechamentos.setDate(1, new java.sql.Date(fecha.getTime()));
|
|
|
|
rsFechamentos = pstmtFechamentos.executeQuery();
|
|
|
|
while (rsFechamentos.next()){
|
|
Integer empId = null;
|
|
Integer pvId = null;
|
|
String banco = "" ;
|
|
String agencia = "";
|
|
String contaCorrente = "";
|
|
String numDep = " Dep: " + rsFechamentos.getString(2);
|
|
String valor = " R$ " + df.format(rsFechamentos.getBigDecimal(1));
|
|
String ref = " Ref: ";
|
|
Integer codRecDesp = null;
|
|
|
|
if (empId == null ){ empId = rsFechamentos.getInt(4); }
|
|
if (banco.isEmpty()){banco = "Bco: " + DespesaReceita.lpad(rsFechamentos.getString(8), "0", 3);}
|
|
if (pvId == null){ pvId = rsFechamentos.getInt(5); }
|
|
if (agencia.isEmpty()){ agencia = " Ag: " + rsFechamentos.getString(6); }
|
|
if (contaCorrente.isEmpty()){ contaCorrente = " C/C: " + rsFechamentos.getString(7); }
|
|
//ref += ref.length() <= 6 ? sdf.format(rsFechamentos.getDate(3)) : ", " + sdf.format(rsFechamentos.getDate(3));
|
|
if (codRecDesp == null){ codRecDesp = rsFechamentos.getInt(9); }
|
|
|
|
DespesaReceita deposito = new DespesaReceita();
|
|
deposito.setCodigoEmpresa(empId);
|
|
deposito.setDataLancamento(rsFechamentos.getDate(3));
|
|
deposito.setDataMovimento(rsFechamentos.getDate(3));
|
|
deposito.setLocalArrecadação(pvId);
|
|
deposito.setValorLancamento(df.format(rsFechamentos.getBigDecimal(1)));
|
|
deposito.setIdentificadorReceitaDespesa("D");
|
|
deposito.setCodigoReceitaDespesa(codRecDesp);
|
|
deposito.setDescricaoDetalhada(banco + agencia + contaCorrente + numDep + valor);
|
|
depositos.add(deposito);
|
|
soma = soma.add(rsFechamentos.getBigDecimal(1));
|
|
}
|
|
log.debug("Total depósitos: " + soma);
|
|
} catch (Exception e){
|
|
log.error(e.getMessage(), e);
|
|
} 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;
|
|
|
|
}
|
|
|
|
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();
|
|
}
|
|
|
|
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;
|
|
}
|
|
}
|