package gcom.gui.portal; import gcom.atendimentopublico.ligacaoagua.LigacaoAguaSituacao; import gcom.cadastro.cliente.Cliente; import gcom.cadastro.cliente.FiltroCliente; import gcom.cadastro.imovel.Categoria; import gcom.cadastro.imovel.Imovel; import gcom.cadastro.imovel.ImovelSituacao; import gcom.cadastro.imovel.ImovelSubcategoria; import gcom.cadastro.imovel.Subcategoria; import gcom.cobranca.FiltroResolucaoDiretoria; import gcom.cobranca.ResolucaoDiretoria; import gcom.cobranca.bean.ContaValoresHelper; import gcom.cobranca.bean.GuiaPagamentoValoresHelper; import gcom.cobranca.bean.IndicadoresParcelamentoHelper; import gcom.cobranca.bean.NegociacaoOpcoesParcelamentoHelper; import gcom.cobranca.bean.ObterDebitoImovelOuClienteHelper; import gcom.cobranca.bean.ObterOpcoesDeParcelamentoHelper; import gcom.cobranca.bean.OpcoesParcelamentoHelper; import gcom.cobranca.parcelamento.Parcelamento; import gcom.cobranca.parcelamento.ParcelamentoDescontoAntiguidade; import gcom.cobranca.parcelamento.ParcelamentoPerfil; import gcom.fachada.Fachada; import gcom.faturamento.credito.CreditoARealizar; import gcom.faturamento.debito.DebitoACobrar; import gcom.faturamento.debito.DebitoTipo; import gcom.financeiro.FinanciamentoTipo; import gcom.gui.GcomAction; import gcom.seguranca.acesso.usuario.FiltroUsuario; import gcom.seguranca.acesso.usuario.Usuario; import gcom.util.ConstantesSistema; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import java.math.BigDecimal; import java.util.Collection; import java.util.Iterator; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; /** * [UC1191] Efetuar Parcelamento de Débitos Através da Loja Virtual * * Classe Responsável por carregar todos os dados necessários para exibir * a tela parcelamento_debitos_portal_efetuar.jsp * * @author Diogo Peixoto * @since 28/06/2011 */ public class ExibirEfetuarParcelamentoDebitosPortalAction extends GcomAction { private ObterDebitoImovelOuClienteHelper colecaoDebitoImovel = null; private boolean reativacaoDaligacaoAgua = false; public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { HttpSession sessao = httpServletRequest.getSession(false); ActionForward retorno = actionMapping.findForward("efetuarParcelamento"); Fachada fachada = Fachada.getInstancia(); httpServletRequest.setAttribute("voltarServicos", true); String method = httpServletRequest.getParameter("method"); String erroEfetuarParcelamento = (String)httpServletRequest.getAttribute("erroEfetuarParcelamento"); Boolean mensagemReativacao = (Boolean)httpServletRequest.getAttribute("mensagemReativacao"); Integer matricula = (Integer) sessao.getAttribute("matricula"); EfetuarParcelamentoDebitosPortalActionForm form = (EfetuarParcelamentoDebitosPortalActionForm) actionForm; /* * Se houver não houver erro no parcelamento e não houver uma mesangem de reativação do ramal * (quando o efetuar parcelamento for bem sucedido e tiver religação de água). */ if(!Util.verificarNaoVazio(erroEfetuarParcelamento) && (mensagemReativacao == null || (mensagemReativacao != null && !mensagemReativacao))){ //[FS0003] – Verificar existência de parcelamento ativo Collection<Parcelamento> parcelamentos = fachada.pesquisarParcelamentosSituacaoNormal(matricula); if(Util.isVazioOrNulo(parcelamentos)){ // [FS0012] Verificar existência de parcelamento no mês parcelamentos = fachada.verificarParcelamentoMesImovel(matricula); if(Util.isVazioOrNulo(parcelamentos)){ //Caso a solicitação tenha vindo da página de serviços, limpar o form. String paginaServicos = httpServletRequest.getParameter("paginaServicos"); if(Util.verificarNaoVazio(paginaServicos) && paginaServicos.equalsIgnoreCase("sim")){ form.limparForm(); } Imovel imovel = fachada.pesquisarImovel(matricula); sessao.setAttribute("imovel", imovel); form.setMatriculaImovel(matricula.toString()); form.setInscricaoImovel(imovel.getInscricaoFormatada()); //[UC0067] Obter Débito do Imóvel ou Cliente - [FS0014] Verificar existência de débitos para o imóvel if(this.obterDebitosImovel(matricula)){ //Validações relativas ao cpf/cliente. ParcelamentoPerfil parcelamentoPerfil = this.obterPerfilParcelamentoImovel(imovel, form); //Verifica se o imóvel possui perfil de parcelamento if(parcelamentoPerfil != null){ //As três situações onde pode ter reativação da situação de água. if(imovel.getLigacaoAguaSituacao().getId().intValue() == LigacaoAguaSituacao.SUPRIMIDO || imovel.getLigacaoAguaSituacao().getId().intValue() == LigacaoAguaSituacao.SUPR_PARC || imovel.getLigacaoAguaSituacao().getId().intValue() == LigacaoAguaSituacao.SUPR_PARC_PEDIDO ){ reativacaoDaligacaoAgua = true; httpServletRequest.setAttribute("reativacaoLigacaoAgua", reativacaoDaligacaoAgua); /* * Caso tenha sido a primeira vez que a página foi carrega, isto é: que * o indicador do restabelecimento for nulo, por padrão colocar o indicador * como 2. */ if(form.getIndicadorRestabelecimento() == null){ form.setIndicadorRestabelecimento("2"); } /* * Caso não esteja dentro das três situações acima, o indicador de restabelecimento será * por padrão 2. */ }else{ form.setIndicadorRestabelecimento("2"); } if(method != null && method.equalsIgnoreCase("pesquisarCliente")){ String nomeCliente = this.verificaExistenciaCpf(form.getCpfCliente(), matricula, httpServletRequest); if(Util.verificarNaoVazio(nomeCliente)){ form.setNomeCliente(nomeCliente); this.calcularDebitos(this.colecaoDebitoImovel, imovel, form, sessao, httpServletRequest, false, parcelamentoPerfil); httpServletRequest.setAttribute("exibirDetalhesDebito", true); } }else{ String calcularParcelas = httpServletRequest.getParameter("calcularParcelas"); if(Util.verificarNaoVazio(calcularParcelas) && calcularParcelas.equalsIgnoreCase("sim")){ if(form.getValorEntradaInformado().equals("")){ httpServletRequest.setAttribute("valorEntradaNaoDigitado", true); }else{ this.calcularDebitos(this.colecaoDebitoImovel, imovel, form, sessao, httpServletRequest, true, parcelamentoPerfil); } httpServletRequest.setAttribute("exibirDetalhesDebito", true); } String endereco = fachada.pesquisarEndereco(matricula); form.setEnderecoImovel(endereco); } }else{ retorno = actionMapping.findForward("imovelNaoPossuiPerfilParcelamento"); httpServletRequest.setAttribute("imovelNaoPossuiPerfilParcelamento", true); } }else{ retorno = actionMapping.findForward("imovelSemDebitos"); httpServletRequest.setAttribute("imovelSemDebitos", true); } }else{ retorno = actionMapping.findForward("debitoParceladoMesCorrente"); httpServletRequest.setAttribute("debitoParceladoMesCorrente", true); } }else{ retorno = actionMapping.findForward("matriculaPossuiParcelamentoNaoQuitado"); httpServletRequest.setAttribute("imovelParcelamentoAtivo", true); } }else{ httpServletRequest.setAttribute("exibirDetalhesDebito", true); httpServletRequest.setAttribute("reativacaoLigacaoAgua", reativacaoDaligacaoAgua); } return retorno; } private String verificaExistenciaCpf(String cpf, Integer matricula, HttpServletRequest request){ Fachada fachada = Fachada.getInstancia(); FiltroCliente filtroCliente = new FiltroCliente(); filtroCliente.adicionarParametro(new ParametroSimples(FiltroCliente.CPF, cpf)); Collection<Cliente> clientes = fachada.pesquisar(filtroCliente, Cliente.class.getName()); String nomeCliente = null; //[FS0001] - Verificar existência do CPF do cliente if(!Util.isVazioOrNulo(clientes)){ nomeCliente = fachada.validarCliente(cpf, matricula); //[FS0002] – Validar cliente if(!Util.verificarNaoVazio(nomeCliente)){ request.setAttribute("clienteInvalido", true); } }else{ request.setAttribute("cpfInvalido", true); } return nomeCliente; } private boolean obterDebitosImovel(Integer matricula){ boolean possuiDebitos = false; this.colecaoDebitoImovel = Fachada.getInstancia().obterDebitoImovelOuCliente( 1,// Indicador débito imóvel matricula.toString(), // Matrícula do imóvel null, // Código do cliente null, // Tipo de relação do cliento com o imóvel "000101", // Referência inicial do débito "999912", // Referência final do débito Util.converteStringParaDate("01/01/0001"), // Inicio Vencimento Util.converteStringParaDate("31/12/9999"), // Final Vencimento 1, // Indicador pagamento 2, // Indicador conta em revisão 1, // Indicador débito a cobrar 1, // Indicador crédito a realizar 1, // Indicador notas promissórias 1, // Indicador guias de pagamento 1, // Indicador acréscimos por impontualidade null); // Indicador Contas if (this.existeDebitos(colecaoDebitoImovel)) { possuiDebitos = true; } return possuiDebitos; } private boolean existeDebitos(ObterDebitoImovelOuClienteHelper debitos){ boolean existe = true; if(Util.isVazioOrNulo(debitos.getColecaoContasValoresImovel()) && Util.isVazioOrNulo(debitos.getColecaoGuiasPagamentoValores()) && Util.isVazioOrNulo(debitos.getColecaoDebitoACobrar())){ existe = false; } return existe; } private void calcularDebitos(ObterDebitoImovelOuClienteHelper debitos, Imovel imovel, EfetuarParcelamentoDebitosPortalActionForm form, HttpSession sessao, HttpServletRequest request, boolean recalcularOpcaoParcelamento, ParcelamentoPerfil parcelamentoPerfil){ Fachada fachada = Fachada.getInstancia(); /* * Verifica se o usuário digitou um novo valor de entrada para o calculo do parcelamento. Caso * tenha digitado, não será necessário calcular os débitos novamente, apenas o novo valor do * parcelamento. */ if(!recalcularOpcaoParcelamento){ // Para o cálculo do Débito Total Atualizado BigDecimal valorTotalContas = new BigDecimal("0.00"); BigDecimal valorTotalAcrescimoImpontualidade = new BigDecimal("0.00"); BigDecimal valorTotalRestanteServicosACobrar = new BigDecimal("0.00"); BigDecimal valorTotalRestanteServicosACobrarCurtoPrazo = new BigDecimal("0.00"); BigDecimal valorTotalRestanteServicosACobrarLongoPrazo = new BigDecimal("0.00"); BigDecimal valorTotalRestanteParcelamentosACobrar = new BigDecimal("0.00"); BigDecimal valorTotalRestanteParcelamentosACobrarCurtoPrazo = new BigDecimal("0.00"); BigDecimal valorTotalRestanteParcelamentosACobrarLongoPrazo = new BigDecimal("0.00"); BigDecimal valorTotalGuiasPagamento = new BigDecimal("0.00"); BigDecimal valorTotalAcrescimoImpontualidadeContas = new BigDecimal("0.00"); BigDecimal valorTotalAcrescimoImpontualidadeGuias = new BigDecimal("0.00"); BigDecimal valorCreditoARealizar = new BigDecimal("0.00"); BigDecimal valorRestanteACobrar = new BigDecimal("0.00"); BigDecimal valorAtualizacaoMonetaria = new BigDecimal("0.00"); BigDecimal valorJurosMora = new BigDecimal("0.00"); BigDecimal valorMulta = new BigDecimal("0.00"); // Dados do Débito do Imóvel - Contas Collection<ContaValoresHelper> colecaoContaValores = debitos.getColecaoContasValores(); //[SB0011] Verificar Única Fatura fachada.verificarUnicaFatura(colecaoContaValores,parcelamentoPerfil); if (!Util.isVazioOrNulo(colecaoContaValores)) { int quantidadeMinimaMesesAntiguidade = 0; int maiorQuantidadeMinimaMesesAntiguidade = 0; Iterator<ContaValoresHelper> contaValores = colecaoContaValores.iterator(); while (contaValores.hasNext()) { ContaValoresHelper contaValoresHelper = (ContaValoresHelper) contaValores.next(); //Colocado por Raphael Rossiter em 04/12/2008 //============================================================================================= Collection<ParcelamentoDescontoAntiguidade> colecaoParcelamentoDescontoAntiguidade = fachada.obterParcelamentoDescontoAntiguidadeParaConta(parcelamentoPerfil, contaValoresHelper.getConta()); ParcelamentoDescontoAntiguidade parcelamentoDescontoAntiguidadeMaior = new ParcelamentoDescontoAntiguidade(); // Caso nenhuma ocorrência tenha sido selecionada passar para a próxima conta if (!Util.isVazioOrNulo(colecaoParcelamentoDescontoAntiguidade)) { Iterator<ParcelamentoDescontoAntiguidade> parcelamentoDescontoAntiguidadeValores = colecaoParcelamentoDescontoAntiguidade.iterator(); quantidadeMinimaMesesAntiguidade = 0; maiorQuantidadeMinimaMesesAntiguidade = 0; //Determina o percentual de desconto por antiguidade do débito while (parcelamentoDescontoAntiguidadeValores.hasNext()) { ParcelamentoDescontoAntiguidade descoAnt = (ParcelamentoDescontoAntiguidade) parcelamentoDescontoAntiguidadeValores.next(); quantidadeMinimaMesesAntiguidade = descoAnt.getQuantidadeMinimaMesesDebito(); if (quantidadeMinimaMesesAntiguidade > maiorQuantidadeMinimaMesesAntiguidade) { maiorQuantidadeMinimaMesesAntiguidade = quantidadeMinimaMesesAntiguidade; parcelamentoDescontoAntiguidadeMaior = descoAnt; } } /* * Colocado por Raphael Rossiter em 03/12/2008 * As contas onde o perfil de parcelamento para desconto de antiguidade estiver com * o motivo de revisão informado NÃO entrarão no parcelamento. */ valorTotalContas.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalContas = valorTotalContas.add(contaValoresHelper.getValorTotalConta()); if (contaValoresHelper.getValorAtualizacaoMonetaria() != null && !contaValoresHelper.getValorAtualizacaoMonetaria().equals("")) { valorAtualizacaoMonetaria.setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO); valorAtualizacaoMonetaria = valorAtualizacaoMonetaria.add(contaValoresHelper.getValorAtualizacaoMonetaria().setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO)); } if (contaValoresHelper.getValorJurosMora() != null && !contaValoresHelper.getValorJurosMora().equals("")) { valorJurosMora.setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO); valorJurosMora = valorJurosMora.add(contaValoresHelper.getValorJurosMora().setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO)); } if (contaValoresHelper.getValorMulta() != null && !contaValoresHelper.getValorMulta().equals("")) { valorMulta.setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO); valorMulta = valorMulta.add(contaValoresHelper.getValorMulta().setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO)); } // Para cálculo do Acrescimo de Impontualidade valorTotalAcrescimoImpontualidadeContas.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalAcrescimoImpontualidadeContas = valorTotalAcrescimoImpontualidadeContas.add(contaValoresHelper.getValorTotalContaValoresParcelamento()); if (parcelamentoDescontoAntiguidadeMaior.getContaMotivoRevisao() != null){ //CONTA ENTRARÁ EM REVISÃO contaValoresHelper.setRevisao(1); } }else{ valorTotalContas.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalContas = valorTotalContas.add(contaValoresHelper.getValorTotalConta()); if (contaValoresHelper.getValorAtualizacaoMonetaria() != null && !contaValoresHelper.getValorAtualizacaoMonetaria().equals("")) { valorAtualizacaoMonetaria.setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO); valorAtualizacaoMonetaria = valorAtualizacaoMonetaria.add(contaValoresHelper.getValorAtualizacaoMonetaria().setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO)); } if (contaValoresHelper.getValorJurosMora() != null && !contaValoresHelper.getValorJurosMora().equals("")) { valorJurosMora.setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO); valorJurosMora = valorJurosMora.add(contaValoresHelper.getValorJurosMora().setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO)); } if (contaValoresHelper.getValorMulta() != null && !contaValoresHelper.getValorMulta().equals("")) { valorMulta.setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO); valorMulta = valorMulta.add(contaValoresHelper.getValorMulta().setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO)); } // Para cálculo do Acrescimo de Impontualidade valorTotalAcrescimoImpontualidadeContas.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalAcrescimoImpontualidadeContas = valorTotalAcrescimoImpontualidadeContas.add(contaValoresHelper.getValorTotalContaValoresParcelamento()); } //============================================================================================= } form.setValorTotalContaValores(Util.formatarMoedaReal(valorTotalContas)); sessao.setAttribute("valorTotalContaValores", valorTotalContas); sessao.setAttribute("colecaoContaValores", colecaoContaValores); } //----------------------------- Guia Pagamento -----------------------------// Collection<GuiaPagamentoValoresHelper> guiasPagamentoValores = debitos.getColecaoGuiasPagamentoValores(); if (!Util.isVazioOrNulo(guiasPagamentoValores)){ Iterator<GuiaPagamentoValoresHelper> guiaPagamentoValores = guiasPagamentoValores.iterator(); while (guiaPagamentoValores.hasNext()) { GuiaPagamentoValoresHelper guiaPagamentoValoresHelper = (GuiaPagamentoValoresHelper) guiaPagamentoValores.next(); valorTotalGuiasPagamento.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalGuiasPagamento = valorTotalGuiasPagamento.add(guiaPagamentoValoresHelper.getGuiaPagamento().getValorDebito()); if (guiaPagamentoValoresHelper.getValorAtualizacaoMonetaria() != null && !guiaPagamentoValoresHelper.getValorAtualizacaoMonetaria().equals("")) { valorAtualizacaoMonetaria.setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO); valorAtualizacaoMonetaria = valorAtualizacaoMonetaria.add(guiaPagamentoValoresHelper.getValorAtualizacaoMonetaria().setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO)); } if (guiaPagamentoValoresHelper.getValorJurosMora() != null && !guiaPagamentoValoresHelper.getValorJurosMora().equals("")) { valorJurosMora.setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO); valorJurosMora = valorJurosMora.add(guiaPagamentoValoresHelper.getValorJurosMora().setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO)); } if (guiaPagamentoValoresHelper.getValorMulta() != null && !guiaPagamentoValoresHelper.getValorMulta().equals("")) { valorMulta.setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO); valorMulta = valorMulta.add(guiaPagamentoValoresHelper.getValorMulta().setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO)); } // Para cálculo do Acrescimo de Impontualidade valorTotalAcrescimoImpontualidadeGuias.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalAcrescimoImpontualidadeGuias = valorTotalAcrescimoImpontualidadeGuias.add(guiaPagamentoValoresHelper.getValorAcrescimosImpontualidade()); } form.setValorGuiasPagamento(Util.formatarMoedaReal(valorTotalGuiasPagamento)); // Seta as Guias de Pagamento em Débito sessao.setAttribute("guiasPagamentoValores", guiasPagamentoValores); } else { form.setValorGuiasPagamento("0.00"); } //----------------------------- Acrescimos por Impontualidade -----------------------------// BigDecimal retornoSoma = new BigDecimal("0.00"); retornoSoma.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); retornoSoma = retornoSoma.add(valorTotalAcrescimoImpontualidadeContas); retornoSoma = retornoSoma.add(valorTotalAcrescimoImpontualidadeGuias); form.setValorAcrescimosImpontualidade(Util.formatarMoedaReal(retornoSoma)); sessao.setAttribute("valorAcrescimosImpontualidade", retornoSoma); form.setValorAtualizacaoMonetaria(Util.formatarMoedaReal(valorAtualizacaoMonetaria)); form.setValorJurosMora(Util.formatarMoedaReal(valorJurosMora)); form.setValorMulta(Util.formatarMoedaReal(valorMulta)); valorTotalAcrescimoImpontualidade = retornoSoma; //----------------------------- Débitos a cobrar -----------------------------// //[FS0022]-Verificar existência de juros sobre imóvel Collection<DebitoACobrar> colecaoDebitoACobrar = debitos.getColecaoDebitoACobrar(); if (!Util.isVazioOrNulo(colecaoDebitoACobrar)) { Iterator<DebitoACobrar> debitoACobrarValores = colecaoDebitoACobrar.iterator(); final int indiceCurtoPrazo = 0; final int indiceLongoPrazo = 1; while (debitoACobrarValores.hasNext()) { DebitoACobrar debitoACobrar = debitoACobrarValores.next(); //[FS0022]-Verificar existência de juros sobre imóvel if(debitoACobrar.getDebitoTipo().getId() != null && !debitoACobrar.getDebitoTipo().getId().equals(DebitoTipo.JUROS_SOBRE_PARCELAMENTO)){ // Debitos A Cobrar - Serviço if (debitoACobrar.getFinanciamentoTipo().getId().equals(FinanciamentoTipo.SERVICO_NORMAL)) { // [SB0001] Obter Valores de Curto e Longo Prazo valorRestanteACobrar = debitoACobrar.getValorTotalComBonus(); BigDecimal[] valoresDeCurtoELongoPrazo = fachada.obterValorCurtoELongoPrazo( debitoACobrar.getNumeroPrestacaoDebito(), debitoACobrar.getNumeroPrestacaoCobradasMaisBonus(), valorRestanteACobrar); valorTotalRestanteServicosACobrarCurtoPrazo.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalRestanteServicosACobrarCurtoPrazo = valorTotalRestanteServicosACobrarCurtoPrazo.add( valoresDeCurtoELongoPrazo[indiceCurtoPrazo]); form.setValorDebitoACobrarServicoCurtoPrazo(Util.formatarMoedaReal(valorTotalRestanteServicosACobrarCurtoPrazo)); valorTotalRestanteServicosACobrarLongoPrazo.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalRestanteServicosACobrarLongoPrazo = valorTotalRestanteServicosACobrarLongoPrazo.add( valoresDeCurtoELongoPrazo[indiceLongoPrazo]); form.setValorDebitoACobrarServicoLongoPrazo(Util.formatarMoedaReal(valorTotalRestanteServicosACobrarLongoPrazo)); } // Debitos A Cobrar - Parcelamento if (debitoACobrar.getFinanciamentoTipo().getId().equals(FinanciamentoTipo.PARCELAMENTO_AGUA) || debitoACobrar.getFinanciamentoTipo().getId().equals(FinanciamentoTipo.PARCELAMENTO_ESGOTO) || debitoACobrar.getFinanciamentoTipo().getId().equals(FinanciamentoTipo.PARCELAMENTO_SERVICO)) { // [SB0001] Obter Valores de Curto e Longo Prazo valorRestanteACobrar = debitoACobrar.getValorTotalComBonus(); BigDecimal[] valoresDeCurtoELongoPrazo = fachada.obterValorCurtoELongoPrazo( debitoACobrar.getNumeroPrestacaoDebito(), debitoACobrar.getNumeroPrestacaoCobradasMaisBonus(), valorRestanteACobrar); valorTotalRestanteParcelamentosACobrarCurtoPrazo.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalRestanteParcelamentosACobrarCurtoPrazo = valorTotalRestanteParcelamentosACobrarCurtoPrazo.add( valoresDeCurtoELongoPrazo[indiceCurtoPrazo]); valorTotalRestanteParcelamentosACobrarLongoPrazo.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalRestanteParcelamentosACobrarLongoPrazo = valorTotalRestanteParcelamentosACobrarLongoPrazo.add( valoresDeCurtoELongoPrazo[indiceLongoPrazo]); } } } sessao.setAttribute("colecaoDebitoACobrar", colecaoDebitoACobrar); // Serviços valorTotalRestanteServicosACobrar.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalRestanteServicosACobrar = valorTotalRestanteServicosACobrarCurtoPrazo.add(valorTotalRestanteServicosACobrarLongoPrazo); form.setValorDebitoACobrarServico(Util.formatarMoedaReal(valorTotalRestanteServicosACobrar)); // Parcelamentos valorTotalRestanteParcelamentosACobrar.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalRestanteParcelamentosACobrar = valorTotalRestanteParcelamentosACobrarCurtoPrazo .add(valorTotalRestanteParcelamentosACobrarLongoPrazo); form.setValorDebitoACobrarParcelamento(Util.formatarMoedaReal(valorTotalRestanteParcelamentosACobrar)); }else{ form.setValorDebitoACobrarServico("0,00"); form.setValorDebitoACobrarParcelamento("0,00"); form.setValorDebitoACobrarServicoLongoPrazo("0,00"); form.setValorDebitoACobrarServicoCurtoPrazo("0,00"); form.setValorDebitoACobrarParcelamentoLongoPrazo("0,00"); form.setValorDebitoACobrarParcelamentoCurtoPrazo("0,00"); } //----------------------------- Créditos a realizar -----------------------------// Collection<CreditoARealizar> colecaoCreditoARealizar = debitos.getColecaoCreditoARealizar(); if (Util.isVazioOrNulo(colecaoCreditoARealizar)) { Iterator<CreditoARealizar> creditoARealizarValores = colecaoCreditoARealizar.iterator(); while (creditoARealizarValores.hasNext()) { CreditoARealizar creditoARealizar = creditoARealizarValores.next(); valorCreditoARealizar.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorCreditoARealizar = valorCreditoARealizar.add(creditoARealizar.getValorTotalComBonus()); } sessao.setAttribute("colecaoCreditoARealizar",colecaoCreditoARealizar); form.setValorCreditoARealizar(Util.formatarMoedaReal(valorCreditoARealizar)); }else{ form.setValorCreditoARealizar("0,00"); } //----------------------------- Débito total atualizado -----------------------------// BigDecimal debitoTotalAtualizado = new BigDecimal("0.00"); debitoTotalAtualizado.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); debitoTotalAtualizado = debitoTotalAtualizado.add(valorTotalContas); debitoTotalAtualizado = debitoTotalAtualizado.add(valorTotalGuiasPagamento); debitoTotalAtualizado = debitoTotalAtualizado.add(valorTotalAcrescimoImpontualidade); debitoTotalAtualizado = debitoTotalAtualizado.add(valorTotalRestanteServicosACobrar); debitoTotalAtualizado = debitoTotalAtualizado.add(valorTotalRestanteParcelamentosACobrar); debitoTotalAtualizado = debitoTotalAtualizado.subtract(valorCreditoARealizar); form.setValorDebitoTotalAtualizado(Util.formatarMoedaReal(debitoTotalAtualizado)); sessao.setAttribute("valorDebitoTotalAtualizado", debitoTotalAtualizado); } /* * Caso o usuário tenha digitado um novo valor ou seja a primeira vez que esteja calculando os débitos do imóvel, * será necessário obter as opções de parcelamento. A coleção de conta valores será setada na sessao dentro do * calcular débitos. Logo acima. */ this.obterOpcaoParcelamento((Collection<ContaValoresHelper>)sessao.getAttribute("colecaoContaValores"), debitos.getColecaoGuiasPagamentoValores(), imovel, form, sessao, request); sessao.setAttribute("formParcelamento", form); } //Método auxiliar que vai retornar o perfil do parcelamento private ParcelamentoPerfil obterPerfilParcelamentoImovel(Imovel imovel, EfetuarParcelamentoDebitosPortalActionForm form){ Fachada fachada = Fachada.getInstancia(); ParcelamentoPerfil parcelamentoPerfil; //[FS004] Verificar existência da situação do imóvel. ImovelSituacao imovelSituacao = null; Integer situacaoAguaId = imovel.getLigacaoAguaSituacao().getId(); Integer situacaoEsgotoId = imovel.getLigacaoEsgotoSituacao().getId(); // Condição 1 if (situacaoAguaId != null && situacaoEsgotoId != null) { imovelSituacao = fachada.obterSituacaoImovel(situacaoAguaId, situacaoEsgotoId); // Condição 2 if (imovelSituacao == null) { imovelSituacao = fachada.obterSituacaoImovel(situacaoAguaId, null); } } //Obtém o perfil do parcelamento para o imóvel parcelamentoPerfil = null; FiltroResolucaoDiretoria filtro = new FiltroResolucaoDiretoria(); filtro.adicionarParametro(new ParametroSimples(FiltroResolucaoDiretoria.INDICADOR_PARCELAMENTO_LOJA_VIRTUAL, ConstantesSistema.INDICADOR_USO_ATIVO)); Collection<ResolucaoDiretoria> colecaoResolucaoDiretoria = fachada.pesquisar(filtro, ResolucaoDiretoria.class.getName()); if(!Util.isVazioOrNulo(colecaoResolucaoDiretoria)){ ResolucaoDiretoria resolucaoDiretoria = (ResolucaoDiretoria)Util.retonarObjetoDeColecao(colecaoResolucaoDiretoria); Integer idResolucao = resolucaoDiretoria.getId(); form.setResolucaoDiretoria(idResolucao.toString()); if (imovelSituacao != null) { // Pega a subcategoria do imóvel Collection<ImovelSubcategoria> colecaoImovelSubCategoria = fachada.obterColecaoImovelSubcategorias(imovel, 1); Subcategoria subcategoria = null; Categoria categoria = null; if (colecaoImovelSubCategoria != null && !colecaoImovelSubCategoria.isEmpty()) { Iterator<ImovelSubcategoria> iteretorImovelSubCategoria = colecaoImovelSubCategoria.iterator(); int quantidadeEconomisas = 0; int maiorQuantidadeEconomisas = 0; while (iteretorImovelSubCategoria.hasNext()) { ImovelSubcategoria imovelSubCategoria = (ImovelSubcategoria) iteretorImovelSubCategoria .next(); quantidadeEconomisas = imovelSubCategoria.getQuantidadeEconomias(); if (quantidadeEconomisas > maiorQuantidadeEconomisas) { maiorQuantidadeEconomisas = quantidadeEconomisas; subcategoria = imovelSubCategoria.getComp_id().getSubcategoria(); categoria = subcategoria.getCategoria(); } } } parcelamentoPerfil = fachada.obterPerfilParcelamento(imovel.getId(), imovelSituacao.getImovelSituacaoTipo().getId(), imovel.getImovelPerfil().getId(), subcategoria.getId(), idResolucao, categoria.getId()); if(parcelamentoPerfil == null){ //Condição 1 - iper_id = iper_id do imovel e scat_id = scat_id do imovel parcelamentoPerfil = fachada.obterPerfilParcelamento(imovel.getId(),imovelSituacao.getImovelSituacaoTipo().getId(), imovel.getImovelPerfil().getId(), subcategoria.getId(), idResolucao, null); if (parcelamentoPerfil == null) { parcelamentoPerfil = fachada.obterPerfilParcelamento(imovel.getId(),imovelSituacao.getImovelSituacaoTipo().getId(), imovel.getImovelPerfil().getId(), null, idResolucao, categoria.getId()); //Condição 2 - iper_id = iper_id do imovel e scat_id = null do imovel if (parcelamentoPerfil == null) { parcelamentoPerfil = fachada.obterPerfilParcelamento(imovel.getId(),imovelSituacao.getImovelSituacaoTipo().getId(), imovel.getImovelPerfil().getId(), null, idResolucao, null); if (parcelamentoPerfil == null) { parcelamentoPerfil = fachada.obterPerfilParcelamento(imovel.getId(),imovelSituacao.getImovelSituacaoTipo().getId(), null, subcategoria.getId(), idResolucao,categoria.getId()); //Condição 3 - iper_id = null do imovel e scat_id = scat_id do imovel if (parcelamentoPerfil == null) { parcelamentoPerfil = fachada.obterPerfilParcelamento(imovel.getId(),imovelSituacao.getImovelSituacaoTipo().getId(), null, subcategoria.getId(), idResolucao,null); if(parcelamentoPerfil == null){ parcelamentoPerfil = fachada.obterPerfilParcelamento(imovel.getId(),imovelSituacao.getImovelSituacaoTipo().getId(), null, null, idResolucao, categoria.getId()); //Condição 4 - iper_id = null do imovel e scat_id = null if (parcelamentoPerfil == null) { parcelamentoPerfil = fachada.obterPerfilParcelamento(imovel.getId(),imovelSituacao.getImovelSituacaoTipo().getId(), null, null, idResolucao, null); } } } } } } } } } return parcelamentoPerfil; } private void obterOpcaoParcelamento(Collection<ContaValoresHelper> colecaoContaValores, Collection<GuiaPagamentoValoresHelper> colecaoGuiaPagamento, Imovel imovel, EfetuarParcelamentoDebitosPortalActionForm form, HttpSession sessao, HttpServletRequest request){ //Configurando o helper dos indicadores de parcelamento IndicadoresParcelamentoHelper indicadoresParcelamentoHelper = new IndicadoresParcelamentoHelper(); indicadoresParcelamentoHelper.setIndicadorContasRevisao(new Integer(2)); indicadoresParcelamentoHelper.setIndicadorDebitosACobrar(new Integer(1)); indicadoresParcelamentoHelper.setIndicadorCreditoARealizar(new Integer(1)); indicadoresParcelamentoHelper.setIndicadorGuiasPagamento(new Integer(1)); indicadoresParcelamentoHelper.setIndicadorAcrescimosImpotualidade(new Integer(1)); indicadoresParcelamentoHelper.setIndicadorDividaAtiva(new Integer(3)); ///Configurando os parâmetros para obter opções de parcelamento Integer resolucaoDiretoria = 14; Integer codigoImovel = imovel.getId(); BigDecimal valorEntradaInformado = null; /* * Caso seja uma mudança no indicador de restabelecimento o valor entrada informado vai ter * null, pois o sitema vai calcular o valor mínimo e atribuir ao valor informado */ String mudancaIndicadorRestabelecimento = request.getParameter("mudancaIndicadorRestabelecimento"); if(mudancaIndicadorRestabelecimento != null){ form.setValorEntradaInformado(null); }else{ if(form.getValorEntradaInformado() != null){ valorEntradaInformado = Util.formatarMoedaRealparaBigDecimal(form.getValorEntradaInformado()); } } Integer situacaoAguaId = imovel.getLigacaoAguaSituacao().getId(); Integer situacaoEsgotoId = imovel.getLigacaoEsgotoSituacao().getId(); Integer perfilImovel = imovel.getImovelPerfil().getId(); Integer indicadorRestabelecimento = null; indicadorRestabelecimento = (form.getIndicadorRestabelecimento().equals("1") ? 1 : 2); BigDecimal valorDebitoTotalAtualizado = Util.formatarMoedaRealparaBigDecimal(form.getValorDebitoTotalAtualizado()); BigDecimal valorTotalMultas = Util.formatarMoedaRealparaBigDecimal(form.getValorMulta()); BigDecimal valorTotalJurosMora = Util.formatarMoedaRealparaBigDecimal(form.getValorJurosMora()); BigDecimal valorTotalAtualizacoesMonetarias = Util.formatarMoedaRealparaBigDecimal(form.getValorAtualizacaoMonetaria()); Integer numeroReparcelamentoConsecutivos = (imovel.getNumeroReparcelamentoConsecutivos() == null) ? 0 :imovel.getNumeroReparcelamentoConsecutivos().intValue(); //Usuário FiltroUsuario filtroUsuario = new FiltroUsuario(); filtroUsuario.adicionarParametro(new ParametroSimples(FiltroUsuario.LOGIN, "INTERNET")); Usuario usuario = (Usuario) Util.retonarObjetoDeColecao(Fachada.getInstancia().pesquisar(filtroUsuario, Usuario.class.getName())); //Fim Usuario BigDecimal valorDebitoACobrarParcelamentoImovelBigDecimal = Util.formatarMoedaRealparaBigDecimal(form.getValorDebitoACobrarParcelamento()); String inicioIntervaloParcelamento = "01/0001"; Integer inicioIntervaloParcelamentoFormatado = 101; Integer fimIntervaloParcelamentoFormatado = 999912; BigDecimal valorCreditoARealizar = Util.formatarMoedaRealparaBigDecimal(form.getValorCreditoARealizar()); //Configurando os indicadores para o concluir parcelamento (valores explicitados no caso de uso) form.setIndicadorAcrescimosImpotualidade("1"); form.setIndicadorContasRevisao("2"); form.setIndicadorCreditoARealizar("1"); form.setIndicadorDebitosACobrar("1"); form.setIndicadorDividaAtiva("3"); form.setIndicadorGuiasPagamento("1"); /* * [SB0002] - Obter Opções de Parcelamento de acordo com a entrada informada * CARREGANDO O HELPER COM AS INFORMAÇÕES DO PARCELAMENTO */ ObterOpcoesDeParcelamentoHelper helper = new ObterOpcoesDeParcelamentoHelper( new Integer(resolucaoDiretoria), new Integer(codigoImovel), valorEntradaInformado, situacaoAguaId, situacaoEsgotoId, perfilImovel, inicioIntervaloParcelamento, indicadorRestabelecimento, colecaoContaValores, valorDebitoTotalAtualizado, valorTotalMultas, valorTotalJurosMora, valorTotalAtualizacoesMonetarias, numeroReparcelamentoConsecutivos, colecaoGuiaPagamento, usuario, valorDebitoACobrarParcelamentoImovelBigDecimal, inicioIntervaloParcelamentoFormatado, fimIntervaloParcelamentoFormatado, indicadoresParcelamentoHelper,valorCreditoARealizar); NegociacaoOpcoesParcelamentoHelper opcoesParcelamento = Fachada.getInstancia().obterOpcoesDeParcelamento(helper); BigDecimal descontoAcrescimosImpontualidade = opcoesParcelamento.getValorDescontoAcrecismosImpotualidade(); BigDecimal descontoAntiguidadeDebito = opcoesParcelamento.getValorDescontoAntiguidade(); BigDecimal descontoInatividadeLigacaoAgua = opcoesParcelamento.getValorDescontoInatividade(); BigDecimal percentualDescontoAcrescimosImpontualidade = opcoesParcelamento.getPercentualDescontoAcrescimosImpontualidade(); BigDecimal percentualDescontoAntiguidadeDebito = opcoesParcelamento.getPercentualDescontoAntiguidadeDebito(); BigDecimal percentualDescontoInatividadeLigacaoAgua = opcoesParcelamento.getPercentualDescontoInatividadeLigacaoAgua(); BigDecimal valorPagamentoAVista = new BigDecimal("0.00"); ParcelamentoPerfil parcelamentoPerfil = opcoesParcelamento.getParcelamentoPerfil(); BigDecimal valorMinimoPrestacao = opcoesParcelamento.getValorMinimoPrestacao(); BigDecimal valorTotalImpostosConta = new BigDecimal("0.00"); BigDecimal descontoSancoesRDEspecial = opcoesParcelamento.getValorDescontoSancoesRDEspecial(); BigDecimal descontoTarifaSocialRDEspecial = opcoesParcelamento.getValorDescontoTarifaSocialRDEspecial(); BigDecimal descontoTotalPagamentoAVista = opcoesParcelamento.getValorTotalDescontoPagamentoAVista(); BigDecimal valorEntradaMinima = opcoesParcelamento.getValorEntradaMinima(); BigDecimal valorDebitoDesconto = opcoesParcelamento.getValorDebitoDesconto(); valorMinimoPrestacao = opcoesParcelamento.getValorMinimoPrestacao(); Collection<OpcoesParcelamentoHelper> colecaoOpcoesParcelamento = opcoesParcelamento.getOpcoesParcelamento(); if (valorEntradaInformado != null && valorEntradaInformado.compareTo(valorEntradaMinima.setScale( Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)) == -1) { request.setAttribute("entradaInformadaMenorMinima", true); request.setAttribute("entradaMinima", valorEntradaMinima); }else{ if(valorEntradaInformado == null || valorEntradaInformado.intValue() == 0){ form.setValorEntradaInformado(Util.formatarBigDecimalParaStringComVirgula(valorEntradaMinima)); } sessao.setAttribute("opcoesParcelamento",opcoesParcelamento); sessao.setAttribute("colecaoOpcoesParcelamento",colecaoOpcoesParcelamento); // Limpa os EP da Coleção de Contas if(colecaoContaValores != null && !colecaoContaValores.isEmpty()){ Iterator<ContaValoresHelper> contaValores = colecaoContaValores.iterator(); while(contaValores.hasNext()) { ContaValoresHelper contaValoresHelper = (ContaValoresHelper) contaValores.next(); if (contaValoresHelper.getIndicadorContasDebito() != null && !contaValoresHelper.getIndicadorContasDebito().equals(new Integer("2"))){ contaValoresHelper.setIndicadorContasDebito(null); } } } // Limpando a opção de parcelamento if(!Util.isVazioOrNulo(colecaoOpcoesParcelamento)){ Iterator<OpcoesParcelamentoHelper> opcoesParcelamentoValores = colecaoOpcoesParcelamento.iterator(); while(opcoesParcelamentoValores.hasNext()) { OpcoesParcelamentoHelper opcoesParcelamentoHelper = (OpcoesParcelamentoHelper) opcoesParcelamentoValores.next(); opcoesParcelamentoHelper.setIndicadorQuantidadeParcelas(null); form.setIndicadorQuantidadeParcelas(null); } }else{ request.setAttribute("valorEntradaInvalido", true); } // Verifica se o valor do débito menos o valor dos descontos é menor que o valor minimo da parcela BigDecimal valorTotalDescontos = new BigDecimal("0.00"); BigDecimal resultadoDiferenca = new BigDecimal("0.00"); valorTotalDescontos.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalDescontos = descontoAcrescimosImpontualidade.add(descontoAntiguidadeDebito); valorTotalDescontos = valorTotalDescontos.add(descontoInatividadeLigacaoAgua); valorTotalDescontos = valorTotalDescontos.add(descontoSancoesRDEspecial); valorTotalDescontos = valorTotalDescontos.add(descontoTarifaSocialRDEspecial); resultadoDiferenca.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); resultadoDiferenca = valorDebitoTotalAtualizado.subtract(valorTotalDescontos); if (!Fachada.getInstancia().verificarQtdeReparcelamentoPerfil(parcelamentoPerfil.getId(),new Short(numeroReparcelamentoConsecutivos.shortValue()))){ request.setAttribute("numeroReparcelamentos", true); }else{ // Coloca os valores no formulário form.setDescontoAcrescimosImpontualidade(Util.formatarMoedaReal(descontoAcrescimosImpontualidade)); form.setDescontoAntiguidadeDebito(Util.formatarMoedaReal(descontoAntiguidadeDebito)); form.setDescontoInatividadeLigacaoAgua(Util.formatarMoedaReal(descontoInatividadeLigacaoAgua)); form.setPercentualDescontoAcrescimosImpontualidade(Util.formatarMoedaReal(percentualDescontoAcrescimosImpontualidade)); form.setValorTotalDescontos(Util.formatarMoedaReal(valorTotalDescontos)); form.setDescontoSancoesRDEspecial(Util.formatarMoedaReal(descontoSancoesRDEspecial)); form.setDescontoTarifaSocialRDEspecial(Util.formatarMoedaReal(descontoTarifaSocialRDEspecial)); valorTotalImpostosConta = obterValorImpostosDasContasDoParcelamento(colecaoContaValores); valorPagamentoAVista.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorPagamentoAVista = valorDebitoTotalAtualizado.subtract(descontoTotalPagamentoAVista); valorPagamentoAVista = valorPagamentoAVista.subtract(valorTotalImpostosConta); // Colocando os valores no formulário form.setValorDebitoTotalAtualizado(Util.formatarMoedaReal(valorDebitoTotalAtualizado)); form.setValorDescontoPagamentoAVista(Util.formatarMoedaReal(descontoTotalPagamentoAVista)); form.setValorPagamentoAVista(Util.formatarMoedaReal(valorPagamentoAVista)); form.setValorTotalImpostos(Util.formatarMoedaReal(valorTotalImpostosConta)); form.setValorDesconto(Util.formatarMoedaReal(valorDebitoDesconto)); if (percentualDescontoAntiguidadeDebito != null) { form.setPercentualDescontoAntiguidadeDebito(Util.formatarMoedaReal(percentualDescontoAntiguidadeDebito)); } else { form.setPercentualDescontoAntiguidadeDebito("0.00"); } if (percentualDescontoInatividadeLigacaoAgua != null) { form.setPercentualDescontoInatividadeLigacaoAgua(Util.formatarMoedaReal(percentualDescontoInatividadeLigacaoAgua)); } else { form.setPercentualDescontoInatividadeLigacaoAgua("0.00"); } if (parcelamentoPerfil != null) { form.setParcelamentoPerfilId(parcelamentoPerfil.getId().toString()); sessao.setAttribute("parcelamentoPerfil", parcelamentoPerfil); } // O valor do débito é menor que o valor da parcela mínima permitida. // Utilizar a opção Pagamento à Vista. if (valorDebitoTotalAtualizado.compareTo(valorMinimoPrestacao) == -1){ request.setAttribute("vlDebitoMenor","1"); } form.setValorMinimoPrestacao(Util.formatarMoedaReal(valorMinimoPrestacao)); String habilitaPagamentoAVista = "1"; if (colecaoContaValores == null || colecaoContaValores.isEmpty()) { habilitaPagamentoAVista = "2"; } sessao.setAttribute("habilitaPagamentoAVista", habilitaPagamentoAVista); sessao.setAttribute("colecaoContaValoresNegociacao",colecaoContaValores); sessao.setAttribute("colecaoGuiaPagamentoNegociacao", colecaoGuiaPagamento); sessao.setAttribute("valorAcrescimosImpontualidadeNegociacao", Util.formatarMoedaRealparaBigDecimal(form.getValorAcrescimosImpontualidade())); } } } private BigDecimal obterValorImpostosDasContasDoParcelamento(Collection<ContaValoresHelper> colecaoContas){ BigDecimal valorTotalImpostos = BigDecimal.ZERO; if (colecaoContas != null && !colecaoContas.isEmpty()) { Iterator<ContaValoresHelper> contas = colecaoContas.iterator(); while (contas.hasNext()) { ContaValoresHelper contaValoresHelper = (ContaValoresHelper) contas.next(); if (contaValoresHelper.getConta().getValorImposto() != null) { valorTotalImpostos = valorTotalImpostos.add(contaValoresHelper.getConta().getValorImposto()); } } } return valorTotalImpostos; } }