Galera, preciso trazer o percentual de quando for venda a vista e venda a prazo, só que o vendedor pode ter N pedidos vendidos, tinha feito assim $V{vendaAvista}.divide( $V{TotalVendedor} ).multiply( java.math.BigDecimal (100)) ficou em um loop(Quando o vendedor tem varios pedidos q ele começa fazer cada pedido e dá uma conta muito grande que estourou a exceção)
while(rs.next()) {
mapaGlobal = new MapaGlobalDeVendaPorVendedor();
long idVenda = Long.parseLong(rs.getString("idvenda")) ;
VendaId vId = new VendaId(ISEEnv.getInstance().getEmpCod(), idVenda);
v = vBo.loadById(vId);
v.setLstVendaFormaPagtos(new VendaFormaPagtoBO().loadByVenda(v.getEmpCod(), v.getIdVenda()));
mapaGlobal.setDataEmissao(rs.getDate("dataemissao"));
mapaGlobal.setNumVenda(rs.getInt("numvenda"));
mapaGlobal.setDataEntrega(rs.getDate("dataEntrega"));
mapaGlobal.setVlrLiquido(rs.getBigDecimal("vlrliquido"));
mapaGlobal.setDescricaocf(v.getLstVendaFormaPagtos().get(0).getForPagVenDesc());
mapaGlobal.setPrazoDesc(rs.getString("prazoDesc"));
mapaGlobal.setCadid(rs.getInt("cadid"));
mapaGlobal.setNome(rs.getString("nome"));
mapaGlobal.setNomeReduzido(rs.getString("nomereduzido"));
mapaGlobal.setNumeroCem(new BigDecimal(100));
if(rs.getString("prazodesc").equals("A vista")) {
mapaGlobal.setValorTotalAVista(rs.getBigDecimal("vlrliquido"));
mapaGlobal.setValorTotalAPrazo(BigDecimal.ZERO);
} else {
mapaGlobal.setValorTotalAPrazo(rs.getBigDecimal("vlrliquido"));
mapaGlobal.setValorTotalAVista(BigDecimal.ZERO);
}
/*
* Não deixa repetir as informações pegando sempre a primeira, usado o map
* dando um put no object
* Pegando o chave primaria e o object
*/
if(mapComparator.get(mapaGlobal.getNumVenda()) == null) {
mapComparator.put(mapaGlobal.getNumVenda(), mapaGlobal);
listMapa.add(mapaGlobal);
}
}