fixes bug#21424

dev:valdir
qua:

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@105065 d1611594-4594-4d17-8e1d-87c2c4800839
master
wilian 2021-01-19 19:53:17 +00:00
parent 204d983858
commit 623670068a
2 changed files with 70 additions and 47 deletions

View File

@ -15,6 +15,7 @@ import java.util.Map.Entry;
import javax.sql.DataSource;
import org.apache.commons.lang.BooleanUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
@ -23,6 +24,7 @@ import org.springframework.stereotype.Repository;
import com.rjconsultores.ventaboletos.dao.ReceitaDespesaDAO;
import com.rjconsultores.ventaboletos.exception.BusinessException;
import com.rjconsultores.ventaboletos.relatorios.receitaDespesa.RelatorioFinanceiroReceitasDespesasBean;
import com.rjconsultores.ventaboletos.utilerias.MoneyHelper;
import com.rjconsultores.ventaboletos.web.utilerias.NamedParameterStatement;
@Repository("receitaDespesaDAO")
@ -44,8 +46,7 @@ public class ReceitaDespesaHibernateDAO implements ReceitaDespesaDAO {
StringBuilder sql = new StringBuilder();
sql.append(" SELECT ")
.append("LISTAGG(fp.cvepago||' /'||CAST(cfp.IMPORTE AS VARCHAR(10)),';') WITHIN GROUP( ORDER BY 1 DESC ) AS descpago,")
.append(" C.FECHORVTA, P.PUNTOVENTA_ID, P.NOMBPUNTOVENTA, P.NUMPUNTOVENTA, TE.INDTIPO, TE.TIPOEVENTOEXTRA_ID, TE.DESCTIPOEVENTO, ")
.append(" CASE WHEN TE.INDTIPO = 1 THEN C.PRECIO ELSE (CASE WHEN TE.INDTIPO = 0 THEN (C.PRECIO * -1) END) END PRECIO, ")
.append(" C.FECHORVTA, P.PUNTOVENTA_ID, P.NOMBPUNTOVENTA, P.NUMPUNTOVENTA, TE.TIPOEVENTOEXTRA_ID, TE.DESCTIPOEVENTO, ")
.append(" C.NUMSERIEPREIMPRESA, C.NUMFOLIOPREIMPRESO, E.NUMDOCUMENTO,E.EVENTOEXTRA_ID ")
.append(" FROM CAJA_DIVERSOS C ")
.append(" JOIN EVENTO_EXTRA E ON E.EVENTOEXTRA_ID = C.EVENTOEXTRA_ID ")
@ -53,6 +54,7 @@ public class ReceitaDespesaHibernateDAO implements ReceitaDespesaDAO {
.append(" JOIN PUNTO_VENTA P ON P.PUNTOVENTA_ID = C.PUNTOVENTA_ID ")
.append(" JOIN CAJA_DIVERSOS_PAGO cfp ON ( c.cajadiversos_id = cfp.cajadiversos_id)")
.append(" JOIN FORMA_PAGO fp ON ( cfp.formapago_id = fp.formapago_id )")
.append(" LEFT JOIN BOLETO B ON B.BOLETO_ID = E.BOLETO_ID ")
.append("WHERE C.ACTIVO = 1 ");
adicionarFiltros(sql, parametros);
@ -62,24 +64,13 @@ public class ReceitaDespesaHibernateDAO implements ReceitaDespesaDAO {
.append("p.puntoventa_id, ")
.append("p.nombpuntoventa, ")
.append("p.numpuntoventa, ")
.append("te.indtipo, ")
.append("te.tipoeventoextra_id, ")
.append("te.desctipoevento, ")
.append("CASE ")
.append(" WHEN te.indtipo = 1 THEN c.precio ")
.append(" ELSE ( ")
.append(" CASE ")
.append(" WHEN te.indtipo = 0 THEN ( c.precio *-1 ) ")
.append(" END ")
.append(" ) ")
.append("END, ")
.append("c.numseriepreimpresa, ")
.append("c.numfoliopreimpreso, ")
.append("e.numdocumento, ")
.append("e.eventoextra_id ");
sql.append("ORDER BY C.FECHORVTA, TE.DESCTIPOEVENTO, P.NOMBPUNTOVENTA, P.NUMPUNTOVENTA");
NamedParameterStatement stmt = new NamedParameterStatement(con, sql.toString());
@ -94,8 +85,6 @@ public class ReceitaDespesaHibernateDAO implements ReceitaDespesaDAO {
bean.setTipoEventoExtraId(resultSet.getString("TIPOEVENTOEXTRA_ID"));
bean.setNombPuntoVenta(resultSet.getString("NOMBPUNTOVENTA"));
bean.setNumPuntoVenta(resultSet.getString("NUMPUNTOVENTA"));
bean.setPrecio(resultSet.getBigDecimal("PRECIO"));
bean.setIndtipo(resultSet.getInt("INDTIPO"));
bean.setPuntoVentaId(resultSet.getInt("PUNTOVENTA_ID"));
bean.setFormaPagamento(resultSet.getString("DESCPAGO"));
bean.setNumSeriePreImpresa(resultSet.getString("NUMSERIEPREIMPRESA"));
@ -103,6 +92,8 @@ public class ReceitaDespesaHibernateDAO implements ReceitaDespesaDAO {
bean.setNumDocumento(resultSet.getString("NUMDOCUMENTO"));
setFormasDePagamento(bean);
setValorFormaPagamento(bean);
bean.setIndtipo(MoneyHelper.isMaiorIgual(bean.getPrecio(), BigDecimal.ZERO) ? 1 : 0);
lsBean.add(bean);
}
@ -130,35 +121,45 @@ public class ReceitaDespesaHibernateDAO implements ReceitaDespesaDAO {
con = dataSourceRead.getConnection();
StringBuilder sql = new StringBuilder();
sql.append("SELECT P.PUNTOVENTA_ID, P.NOMBPUNTOVENTA, P.NUMPUNTOVENTA, ")
.append("SUM(CASE WHEN TE.INDTIPO = 1 THEN C.PRECIO ELSE 0 END) RECEITA, ")
.append("SUM(CASE WHEN TE.INDTIPO = 1 THEN C.PRECIO ELSE (CASE WHEN TE.INDTIPO = 0 THEN (C.PRECIO * -1) END) END) DESPESA ")
sql.append("SELECT P.PUNTOVENTA_ID, P.NOMBPUNTOVENTA, P.NUMPUNTOVENTA, CDP.IMPORTE ")
.append("FROM CAJA_DIVERSOS C ")
.append("JOIN EVENTO_EXTRA E ON E.EVENTOEXTRA_ID = C.EVENTOEXTRA_ID ")
.append("JOIN TIPO_EVENTO_EXTRA TE ON TE.TIPOEVENTOEXTRA_ID = E.TIPOEVENTOEXTRA_ID ")
.append("JOIN PUNTO_VENTA P ON P.PUNTOVENTA_ID = C.PUNTOVENTA_ID ")
.append("JOIN CAJA_DIVERSOS_PAGO CDP ON CDP.CAJADIVERSOS_ID = C.CAJADIVERSOS_ID ")
.append("LEFT JOIN BOLETO B ON B.BOLETO_ID = E.BOLETO_ID ")
.append("WHERE C.ACTIVO = 1 ");
adicionarFiltros(sql, parametros);
sql.append("GROUP BY P.PUNTOVENTA_ID, P.NOMBPUNTOVENTA, P.NUMPUNTOVENTA ")
.append("ORDER BY P.NOMBPUNTOVENTA, P.NUMPUNTOVENTA");
sql.append("ORDER BY P.NOMBPUNTOVENTA, P.NUMPUNTOVENTA");
NamedParameterStatement stmt = new NamedParameterStatement(con, sql.toString());
setParametros(stmt);
ResultSet resultSet = stmt.executeQuery();
List<RelatorioFinanceiroReceitasDespesasBean> lsBean = new ArrayList<RelatorioFinanceiroReceitasDespesasBean>();
Map<Integer, RelatorioFinanceiroReceitasDespesasBean> map = new HashMap<Integer, RelatorioFinanceiroReceitasDespesasBean>();
while (resultSet.next()) {
RelatorioFinanceiroReceitasDespesasBean bean = new RelatorioFinanceiroReceitasDespesasBean();
bean.setPuntoVentaId(resultSet.getInt("PUNTOVENTA_ID"));
bean.setNombPuntoVenta(resultSet.getString("NOMBPUNTOVENTA"));
bean.setNumPuntoVenta(resultSet.getString("NUMPUNTOVENTA"));
bean.setReceita(resultSet.getBigDecimal("RECEITA"));
bean.setDespesa(resultSet.getBigDecimal("DESPESA"));
lsBean.add(bean);
if(map.containsKey(bean.getPuntoVentaId())) {
bean = map.get(bean.getPuntoVentaId());
}
BigDecimal precio = resultSet.getBigDecimal("IMPORTE");
if(MoneyHelper.isMaiorIgual(precio, BigDecimal.ZERO)) {
bean.setReceita(MoneyHelper.somar(bean.getReceita(), precio));
} else {
bean.setDespesa(MoneyHelper.somar(bean.getDespesa(), precio));
}
map.put(bean.getPuntoVentaId(), bean);
}
List<RelatorioFinanceiroReceitasDespesasBean> lsBean = new ArrayList<RelatorioFinanceiroReceitasDespesasBean>(map.values());
return lsBean;
} catch (Exception e) {
@ -183,17 +184,19 @@ public class ReceitaDespesaHibernateDAO implements ReceitaDespesaDAO {
con = dataSourceRead.getConnection();
StringBuilder sql = new StringBuilder();
sql.append("SELECT P.PUNTOVENTA_ID, P.NOMBPUNTOVENTA, P.NUMPUNTOVENTA, TE.TIPOEVENTOEXTRA_ID, TE.DESCTIPOEVENTO, TE.INDTIPO, ")
.append("SUM(CASE WHEN TE.INDTIPO = 1 THEN C.PRECIO ELSE (CASE WHEN TE.INDTIPO = 0 THEN (C.PRECIO * -1) END) END) PRECIO ")
sql.append("SELECT P.PUNTOVENTA_ID, P.NOMBPUNTOVENTA, P.NUMPUNTOVENTA, TE.TIPOEVENTOEXTRA_ID, TE.DESCTIPOEVENTO, ")
.append("SUM(CDP.IMPORTE) PRECIO ")
.append("FROM CAJA_DIVERSOS C ")
.append("JOIN EVENTO_EXTRA E ON E.EVENTOEXTRA_ID = C.EVENTOEXTRA_ID ")
.append("JOIN TIPO_EVENTO_EXTRA TE ON TE.TIPOEVENTOEXTRA_ID = E.TIPOEVENTOEXTRA_ID ")
.append("JOIN PUNTO_VENTA P ON P.PUNTOVENTA_ID = C.PUNTOVENTA_ID ")
.append("JOIN CAJA_DIVERSOS_PAGO CDP ON CDP.CAJADIVERSOS_ID = C.CAJADIVERSOS_ID ")
.append("LEFT JOIN BOLETO B ON B.BOLETO_ID = E.BOLETO_ID ")
.append("WHERE C.ACTIVO = 1 ");
adicionarFiltros(sql, parametros);
sql.append("GROUP BY P.PUNTOVENTA_ID, P.NOMBPUNTOVENTA, P.NUMPUNTOVENTA, TE.TIPOEVENTOEXTRA_ID, TE.DESCTIPOEVENTO, TE.INDTIPO ")
sql.append("GROUP BY P.PUNTOVENTA_ID, P.NOMBPUNTOVENTA, P.NUMPUNTOVENTA, TE.TIPOEVENTOEXTRA_ID, TE.DESCTIPOEVENTO ")
.append("ORDER BY P.NOMBPUNTOVENTA, P.NUMPUNTOVENTA, TE.DESCTIPOEVENTO");
NamedParameterStatement stmt = new NamedParameterStatement(con, sql.toString());
@ -207,7 +210,7 @@ public class ReceitaDespesaHibernateDAO implements ReceitaDespesaDAO {
bean.setNombPuntoVenta(resultSet.getString("NOMBPUNTOVENTA"));
bean.setNumPuntoVenta(resultSet.getString("NUMPUNTOVENTA"));
bean.setPrecio(resultSet.getBigDecimal("PRECIO"));
bean.setIndtipo(resultSet.getInt("INDTIPO"));
bean.setIndtipo(MoneyHelper.isMaiorIgual(bean.getPrecio(), BigDecimal.ZERO) ? 1 : 0);
bean.setTipoEventoExtraId(resultSet.getString("TIPOEVENTOEXTRA_ID"));
bean.setDescTipoEvento(resultSet.getString("DESCTIPOEVENTO"));
lsBean.add(bean);
@ -237,18 +240,20 @@ public class ReceitaDespesaHibernateDAO implements ReceitaDespesaDAO {
con = dataSourceRead.getConnection();
StringBuilder sql = new StringBuilder();
sql.append("SELECT P.PUNTOVENTA_ID, P.NOMBPUNTOVENTA, P.NUMPUNTOVENTA, TE.TIPOEVENTOEXTRA_ID, TE.DESCTIPOEVENTO, TE.INDTIPO, ")
.append("SUM(CASE WHEN TE.INDTIPO = 1 THEN C.PRECIO ELSE (CASE WHEN TE.INDTIPO = 0 THEN (C.PRECIO * -1) END) END) PRECIO ")
sql.append("SELECT P.PUNTOVENTA_ID, P.NOMBPUNTOVENTA, P.NUMPUNTOVENTA, TE.TIPOEVENTOEXTRA_ID, TE.DESCTIPOEVENTO, ")
.append("SUM(CDP.IMPORTE) PRECIO ")
.append("FROM CAJA_DIVERSOS C ")
.append("JOIN EVENTO_EXTRA E ON E.EVENTOEXTRA_ID = C.EVENTOEXTRA_ID ")
.append("JOIN TIPO_EVENTO_EXTRA TE ON TE.TIPOEVENTOEXTRA_ID = E.TIPOEVENTOEXTRA_ID ")
.append("JOIN PUNTO_VENTA P ON P.PUNTOVENTA_ID = C.PUNTOVENTA_ID ")
.append("JOIN CAJA_DIVERSOS_PAGO CDP ON CDP.CAJADIVERSOS_ID = C.CAJADIVERSOS_ID ")
.append("LEFT JOIN BOLETO B ON B.BOLETO_ID = E.BOLETO_ID ")
.append("WHERE C.ACTIVO = 1 ");
adicionarFiltros(sql, parametros);
sql.append("GROUP BY P.PUNTOVENTA_ID, P.NOMBPUNTOVENTA, P.NUMPUNTOVENTA, TE.TIPOEVENTOEXTRA_ID, TE.DESCTIPOEVENTO, TE.INDTIPO ")
.append("ORDER BY TE.TIPOEVENTOEXTRA_ID, TE.DESCTIPOEVENTO, TE.INDTIPO, P.NOMBPUNTOVENTA");
sql.append("GROUP BY P.PUNTOVENTA_ID, P.NOMBPUNTOVENTA, P.NUMPUNTOVENTA, TE.TIPOEVENTOEXTRA_ID, TE.DESCTIPOEVENTO ")
.append("ORDER BY TE.TIPOEVENTOEXTRA_ID, TE.DESCTIPOEVENTO, P.NOMBPUNTOVENTA");
NamedParameterStatement stmt = new NamedParameterStatement(con, sql.toString());
setParametros(stmt);
@ -261,7 +266,7 @@ public class ReceitaDespesaHibernateDAO implements ReceitaDespesaDAO {
bean.setNombPuntoVenta(resultSet.getString("NOMBPUNTOVENTA"));
bean.setNumPuntoVenta(resultSet.getString("NUMPUNTOVENTA"));
bean.setPrecio(resultSet.getBigDecimal("PRECIO"));
bean.setIndtipo(resultSet.getInt("INDTIPO"));
bean.setIndtipo(MoneyHelper.isMaiorIgual(bean.getPrecio(), BigDecimal.ZERO) ? 1 : 0);
bean.setTipoEventoExtraId(resultSet.getString("TIPOEVENTOEXTRA_ID"));
bean.setDescTipoEvento(resultSet.getString("DESCTIPOEVENTO"));
lsBean.add(bean);
@ -287,11 +292,26 @@ public class ReceitaDespesaHibernateDAO implements ReceitaDespesaDAO {
@SuppressWarnings({ "unchecked", "rawtypes" })
private void adicionarFiltros(StringBuilder sql, Map<String, Object> parametros) {
parametrosFiltro = new HashMap<String, Object>();
sql.append(" AND (E.BOLETO_ID IS NULL OR E.BOLETO_ID = B.BOLETO_ID) ");
if(parametros.containsKey("empresaId")) {
sql.append("AND E.EMPRESA_ID = :empresaId ");
parametrosFiltro.put("empresaId", parametros.get("empresaId"));
}
boolean isDataFechamentoCaixa = parametros.get("isDataFechamentoCaixa") != null ? BooleanUtils.toBoolean(parametros.get("isDataFechamentoCaixa").toString()) : false;
if(isDataFechamentoCaixa) {
if(parametros.containsKey("fecInicio")) {
sql.append("AND C.FECCORTE >= TO_DATE(:fecInicio,'DD/MM/YYYY HH24:MI') ");
parametrosFiltro.put("fecInicio", parametros.get("fecInicio"));
}
if(parametros.containsKey("fecFinal")) {
sql.append("AND C.FECCORTE <= TO_DATE(:fecFinal,'DD/MM/YYYY HH24:MI') ");
parametrosFiltro.put("fecFinal", parametros.get("fecFinal"));
}
} else {
if(parametros.containsKey("fecInicio")) {
sql.append("AND C.FECHORVTA >= TO_DATE(:fecInicio,'DD/MM/YYYY HH24:MI') ");
parametrosFiltro.put("fecInicio", parametros.get("fecInicio"));
@ -301,6 +321,7 @@ public class ReceitaDespesaHibernateDAO implements ReceitaDespesaDAO {
sql.append("AND C.FECHORVTA <= TO_DATE(:fecFinal,'DD/MM/YYYY HH24:MI') ");
parametrosFiltro.put("fecFinal", parametros.get("fecFinal"));
}
}
if(parametros.containsKey("numDocumento")) {
sql.append("AND E.NUMDOCUMENTO = :numDocumento ");
@ -378,6 +399,8 @@ public class ReceitaDespesaHibernateDAO implements ReceitaDespesaDAO {
bean.setValorFormaPagamento1(formatarValorFormaDePagamento(formaPagamento[0]));
}
}
bean.setPrecio(MoneyHelper.somar(bean.getValorFormaPagamento1(), bean.getValorFormaPagamento2(), bean.getValorFormaPagamento3()));
}
private String formatarFormaDePagamento(String formaDePagamento){

View File

@ -79,7 +79,7 @@ public class RelatorioFinanceiroReceitasDespesasBean {
}
public BigDecimal getReceita() {
return receita;
return receita != null ? receita : BigDecimal.ZERO;
}
public void setReceita(BigDecimal receita) {
@ -87,7 +87,7 @@ public class RelatorioFinanceiroReceitasDespesasBean {
}
public BigDecimal getDespesa() {
return despesa;
return despesa != null ? despesa : BigDecimal.ZERO;
}
public void setDespesa(BigDecimal despesa) {
@ -103,7 +103,7 @@ public class RelatorioFinanceiroReceitasDespesasBean {
}
public BigDecimal getSaldo() {
return receita.subtract(despesa);
return getReceita().add(getDespesa());
}
public Integer getIndtipo() {
@ -182,7 +182,7 @@ public class RelatorioFinanceiroReceitasDespesasBean {
}
public BigDecimal getValorFormaPagamento1() {
return ValorFormaPagamento1;
return ValorFormaPagamento1 != null ? ValorFormaPagamento1 : BigDecimal.ZERO;
}
public void setValorFormaPagamento1(BigDecimal valorFormaPagamento1) {
@ -190,7 +190,7 @@ public class RelatorioFinanceiroReceitasDespesasBean {
}
public BigDecimal getValorFormaPagamento2() {
return ValorFormaPagamento2;
return ValorFormaPagamento2 != null ? ValorFormaPagamento2 : BigDecimal.ZERO;
}
public void setValorFormaPagamento2(BigDecimal valorFormaPagamento2) {
@ -198,7 +198,7 @@ public class RelatorioFinanceiroReceitasDespesasBean {
}
public BigDecimal getValorFormaPagamento3() {
return ValorFormaPagamento3;
return ValorFormaPagamento3 != null ? ValorFormaPagamento3 : BigDecimal.ZERO;
}
public void setValorFormaPagamento3(BigDecimal valorFormaPagamento3) {