package gcom.gui.cobranca.contratoparcelamento; import gcom.cobranca.CobrancaForma; import gcom.cobranca.FiltroCobrancaForma; import gcom.cobranca.contratoparcelamento.ComparatorParcela; import gcom.cobranca.contratoparcelamento.ContratoParcelamentoRD; import gcom.cobranca.contratoparcelamento.QuantidadePrestacoes; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.seguranca.acesso.usuario.Usuario; import gcom.util.ConstantesSistema; import gcom.util.Util; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Date; import java.util.List; 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; /** * Action que define o pr�-processamento da p�gina de Filtrar Resolucao de Diretoria para Contrato pro Cliente * * @author Paulo Diniz * @created 16/03/2011 */ public class AtualizarResolucaoDiretoriaContratoParcelamentoAction extends GcomAction { /** * Este caso de uso permite a inclus�o de uma resolu��o de diretoria * * [UC1134] Manter Resolu��o de Diretoria (RD) para Contratos de Parcelamento por cliente * * * @author Paulo Diniz * @date 16/03/2011 * * @param actionMapping * @param actionForm * @param httpServletRequest * @param httpServletResponse * @return */ //Obt�m a inst�ncia da fachada Fachada fachada = Fachada.getInstancia(); public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { String method = httpServletRequest.getParameter("method"); ActionForward retorno = actionMapping.findForward("exibirAtualizar"); HttpSession sessao = httpServletRequest.getSession(false); Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado"); AtualizarResolucaoDiretoriaContratoParcelamentoActionForm form = (AtualizarResolucaoDiretoriaContratoParcelamentoActionForm) actionForm; //ContratoParcelamentoRD que vai ser cadastrado no sistema ContratoParcelamentoRD contratoAtualizar = (ContratoParcelamentoRD) sessao .getAttribute("contratoAtualizar"); if (contratoAtualizar == null) { contratoAtualizar = new ContratoParcelamentoRD(); } ContratoParcelamentoRD contratoAntes = (ContratoParcelamentoRD) sessao.getAttribute("contratoAtualizar"); sessao.setAttribute("contratoAntes",contratoAntes); if(method != null && method.equals("concluirAtualizarRD")){ List<QuantidadePrestacoes> parcelas = (List<QuantidadePrestacoes>) sessao.getAttribute("parcelas"); String validacao = validarFormulario(form); if(!validacao.equals("")){ carregarFormContratoAtualizar(contratoAtualizar, form); Collections.sort(parcelas, new ComparatorParcela()); sessao.setAttribute("parcelas", parcelas); sessao.setAttribute("contratoAtualizar", contratoAtualizar); sessao.setAttribute("atencao", validacao); sessao.setAttribute("voltar","document.forms[0].action = '/gsan/atualizarResolucaoDiretoriaContratoParcelamentoAction.do'; document.forms[0].submit();"); retorno = actionMapping.findForward("exibirError"); }else{ carregarFormContratoAtualizar(contratoAtualizar, form); Collections.sort(parcelas, new ComparatorParcela()); this.getFachada().atualizarContratoParcelamentoResolucaoDiretoria(contratoAtualizar,parcelas,usuarioLogado); retorno = actionMapping.findForward("telaSucesso"); montarPaginaSucesso( httpServletRequest, "Resolu��o de diretoria para contratos de parcelamento por cliente - " + contratoAtualizar.getNumero() +" - atualizada com sucesso", "Realizar outra Manuten��o de Resolu��o de diretoria para contratos de parcelamento por cliente", "exibirFiltrarResolucaoDiretoriaContratoParcelamentoAction.do?menu=sim"); } }else if(method != null && method.equals("inserirParcela")){ retorno = actionMapping.findForward("exibirPaginaAtualizar"); List<QuantidadePrestacoes> parcelas = (List<QuantidadePrestacoes>) sessao.getAttribute("parcelas"); if(parcelas == null){ parcelas = new ArrayList<QuantidadePrestacoes>(); } String parcela = httpServletRequest.getParameter("parcela"); String taxaJuros = httpServletRequest.getParameter("taxaJuros"); boolean parcelaExistente = false; boolean campoInvalido = false; if(parcela != null && !parcela.equals("") && taxaJuros != null && !taxaJuros.equals("") && Util.formatarMoedaRealparaBigDecimal(taxaJuros).compareTo(BigDecimal.ZERO) != 0){ for (QuantidadePrestacoes prestacoes : parcelas) { if(prestacoes.getQtdFaturasParceladas() == Integer.parseInt(parcela)){ parcelaExistente = true; } } }else{ campoInvalido = true; } if(parcelaExistente == false && campoInvalido == false){ QuantidadePrestacoes prestacao = new QuantidadePrestacoes(); prestacao.setQtdFaturasParceladas(Integer.parseInt(parcela)); prestacao.setUltimaAlteracao(new Date()); taxaJuros = taxaJuros.replace(',','.'); Double taxa = Double.parseDouble(taxaJuros); prestacao.setTaxaJuros(BigDecimal.valueOf(taxa)); parcelas.add(prestacao); carregarFormContratoAtualizar(contratoAtualizar, form); Collections.sort(parcelas, new ComparatorParcela()); sessao.setAttribute("parcelas", parcelas); sessao.setAttribute("contratoAtualizar", contratoAtualizar); }else{ carregarFormContratoAtualizar(contratoAtualizar, form); sessao.setAttribute("parcelas", parcelas); sessao.setAttribute("contratoAtualizar", contratoAtualizar); if(parcelaExistente){ //sessao.setAttribute("atencao", "Parcela informada j� consta na lista"); throw new ActionServletException( "atencao.parcela_informada_ja_existente"); } else { //sessao.setAttribute("atencao", "Campo Parcelas ou Taxa de Juros inv�lido"); throw new ActionServletException( "atencao.erro_invalido", "Campo Parcelas ou Taxa de Juros"); } //sessao.setAttribute("voltar","document.forms[0].action = '/gsan/atualizarResolucaoDiretoriaContratoParcelamentoAction.do'; document.forms[0].submit();"); //retorno = actionMapping.findForward("exibirError"); } }else if(method != null && method.equals("removerParcela")){ retorno = actionMapping.findForward("exibirPaginaAtualizar"); List<QuantidadePrestacoes> parcelas = (List<QuantidadePrestacoes>) sessao.getAttribute("parcelas"); String parcela = httpServletRequest.getParameter("parcela"); if(parcela != null && !parcela.equals("")){ for (int i = 0; i < parcelas.size(); i++) { if(parcelas.get(i).getQtdFaturasParceladas() == Integer.parseInt(parcela)){ parcelas.remove(i); i = parcelas.size(); } } }else{ throw new ActionServletException("erro.sistema"); } carregarFormContratoAtualizar(contratoAtualizar, form); Collections.sort(parcelas, new ComparatorParcela()); sessao.setAttribute("parcelas", parcelas); sessao.setAttribute("contratoAtualizar", contratoAtualizar); } else if (method != null && method.equals("limparColecaoParcelas")) { contratoAtualizar.setIndicadorParcelamentoJuros(ConstantesSistema.NAO); form.setIndicadorParcelamentoJuros(ConstantesSistema.NAO); sessao.removeAttribute("parcelas"); sessao.setAttribute("contratoAtualizar", contratoAtualizar); } return retorno; } /**Inicio dos metodos Privados**/ private void carregarFormContratoAtualizar(ContratoParcelamentoRD contratoAtualizar, AtualizarResolucaoDiretoriaContratoParcelamentoActionForm form){ contratoAtualizar.setDataVigenciaInicio(null); contratoAtualizar.setDataVigenciaFinal(null); contratoAtualizar.setQtdFaturasParceladas(null); contratoAtualizar.setCobrancaForma(null); contratoAtualizar.setAssunto(form.getAssunto()); if (form != null && !"".equals(form.getDataVigenciaInicial())){ contratoAtualizar.setDataVigenciaInicio(Util.converteStringParaDate(form.getDataVigenciaInicial())); } if (form != null && !"".equals(form.getDataVigenciaFinal())){ contratoAtualizar.setDataVigenciaFinal(Util.converteStringParaDate(form.getDataVigenciaFinal())); } contratoAtualizar.setIndicadorDebitoAcrescimo(form.getIndicadorDebitoAcrescimo()); contratoAtualizar.setIndicadorInformarParcela(form.getIndicadorInformarParcela()); contratoAtualizar.setIndicadorParcelamentoJuros(form.getIndicadorParcelamentoJuros()); if (form != null && !"".equals(form.getQtdFaturasParceladas())){ contratoAtualizar.setQtdFaturasParceladas(Integer.parseInt(form.getQtdFaturasParceladas())); } if (form != null && !"".equals(form.getFormaPgto())){ Collection<CobrancaForma> formasPagto = this.getFachada().pesquisar(new FiltroCobrancaForma(), CobrancaForma.class.getName()); for (CobrancaForma formaPgto : formasPagto) { if(formaPgto.getId() == Integer.parseInt(form.getFormaPgto())){ contratoAtualizar.setCobrancaForma(formaPgto); } } } } private String validarFormulario(AtualizarResolucaoDiretoriaContratoParcelamentoActionForm form){ String retorno = ""; if (form.getAssunto() == null || "".equals(form.getAssunto())){ retorno = "Assunto "; } if (form.getDataVigenciaInicial() == null || "".equals(form.getDataVigenciaInicial())){ retorno = "Data Vig�ncia Inicial "; } if (form.getDataVigenciaFinal() == null || "".equals(form.getDataVigenciaFinal())){ retorno = "Data Vig�ncia Final "; } if (form.getIndicadorDebitoAcrescimo() == null || "".equals(form.getIndicadorDebitoAcrescimo())){ retorno = "D�bito com Acr�scimo "; } if (form.getIndicadorInformarParcela() == null || "".equals(form.getIndicadorInformarParcela())){ retorno = "Parcelamento com Juros "; } if (form.getQtdFaturasParceladas() == null || "".equals(form.getIndicadorParcelamentoJuros())){ retorno = "Indicador Informar o Valor da Parcela "; } if (form.getQtdFaturasParceladas() == null || "".equals(form.getQtdFaturasParceladas())){ retorno = "Quantidade de Faturas Parceladas "; } if (form.getFormaPgto() == null || "".equals(form.getFormaPgto())){ retorno = "Forma de Pagamento "; } if(!retorno.equals("")){ retorno = "Informe: " + retorno; } Date dataInicial = Util.converteStringParaDate(form.getDataVigenciaInicial()); Date dataFinal = Util.converteStringParaDate(form.getDataVigenciaFinal()); if(dataInicial == null || dataFinal == null){ retorno = "Data inv�lida"; }else{ if(dataFinal.before(dataInicial)){ retorno = "Data In�cio da Vig�ncia deve ser anterior ou igual � Data Fim da Vig�ncia"; } } return retorno; } }