package gcom.gui.cobranca; import gcom.cadastro.sistemaparametro.SistemaParametro; import gcom.cobranca.FiltroIndicesAcrescimosImpontualidade; import gcom.cobranca.IndicesAcrescimosImpontualidade; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.util.ConstantesSistema; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import java.math.BigDecimal; import java.util.Collection; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; /** * Pre- processamento para informar indices de acrescimos por impontualidade. * * @author S�vio Luiz * @date 26/09/2007 */ public class ExibirInformarIndiceAcrescimosImpontualidadeAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { // Seta o retorno ActionForward retorno = actionMapping .findForward("inserirAcaoCobranca"); Fachada fachada = Fachada.getInstancia(); IndiceAcrescimosImpontualidadeForm indiceAcrescimosImpontualidadeForm = (IndiceAcrescimosImpontualidadeForm) actionForm; if (httpServletRequest.getParameter("menu") != null && !httpServletRequest.getParameter("menu").equals("")) { indiceAcrescimosImpontualidadeForm.setMesAnoReferencia(""); indiceAcrescimosImpontualidadeForm.setPercentualMulta(""); indiceAcrescimosImpontualidadeForm.setPercentualJurosMora(""); indiceAcrescimosImpontualidadeForm .setPercentualAtualizacaoMonetaria(""); indiceAcrescimosImpontualidadeForm.setFatorCorrecao(""); indiceAcrescimosImpontualidadeForm.setCamposDesabilitados(""); indiceAcrescimosImpontualidadeForm.setIndicadorJurosMensal(ConstantesSistema.SIM.toString()); indiceAcrescimosImpontualidadeForm.setIndicadorMultaMensal(ConstantesSistema.SIM.toString()); indiceAcrescimosImpontualidadeForm.setPercentualLimiteJuros(""); indiceAcrescimosImpontualidadeForm.setPercentualLimiteMulta(""); } if (httpServletRequest.getParameter("calcular") != null && httpServletRequest.getParameter("calcular").equals("sim")) { calcularFatorAtualizacaoMonetaria( indiceAcrescimosImpontualidadeForm, httpServletRequest, fachada); } else { // pesquisa os dados do enter pesquisarEnter(indiceAcrescimosImpontualidadeForm, httpServletRequest, fachada); } return retorno; } private void pesquisarEnter( IndiceAcrescimosImpontualidadeForm indiceAcrescimosImpontualidadeForm, HttpServletRequest httpServletRequest, Fachada fachada) { // pesquisa enter de crit�rio de cobran�a if (indiceAcrescimosImpontualidadeForm.getMesAnoReferencia() != null && !indiceAcrescimosImpontualidadeForm.getMesAnoReferencia() .equals("")) { FiltroIndicesAcrescimosImpontualidade filtroIndicesAcrescimosImpontualidade = new FiltroIndicesAcrescimosImpontualidade(); Integer anoMesReferencia = null; try { anoMesReferencia = Util .formatarMesAnoComBarraParaAnoMes(indiceAcrescimosImpontualidadeForm .getMesAnoReferencia()); // [FS0002] - Validar m�s e ano de refer�ncia Integer anoMesReferenciaMaximo = fachada .pesquisarMaximoAnoMesIndicesAcerscimosImpontualidade(); Integer anoMesReferenciaMaisUm = null; if(anoMesReferenciaMaximo != null){ anoMesReferenciaMaisUm = Util.somaMesAnoMesReferencia( anoMesReferenciaMaximo, 1); } if (anoMesReferenciaMaisUm != null && anoMesReferencia > anoMesReferenciaMaisUm) { throw new ActionServletException( "atencao.mes_ano_referencia_maior", null, "" + anoMesReferenciaMaisUm); } filtroIndicesAcrescimosImpontualidade .adicionarParametro(new ParametroSimples( FiltroIndicesAcrescimosImpontualidade.ANO_MES_REFERENCIA, anoMesReferencia)); } catch (NumberFormatException ex) { throw new ActionServletException( "atencao.campo_texto.numero_obrigatorio", null, "Mes/Ano Refer�ncia"); } Collection colecaoIndicesAcrescimosImpontualidade = fachada .pesquisar(filtroIndicesAcrescimosImpontualidade, IndicesAcrescimosImpontualidade.class.getName()); if (colecaoIndicesAcrescimosImpontualidade != null && !colecaoIndicesAcrescimosImpontualidade.isEmpty()) { IndicesAcrescimosImpontualidade indicesAcrescimosImpontualidade = (IndicesAcrescimosImpontualidade) Util .retonarObjetoDeColecao(colecaoIndicesAcrescimosImpontualidade); indiceAcrescimosImpontualidadeForm.setPercentualMulta(indicesAcrescimosImpontualidade .getPercentualMulta() + ""); indiceAcrescimosImpontualidadeForm.setPercentualJurosMora(indicesAcrescimosImpontualidade .getPercentualJurosMora() + ""); indiceAcrescimosImpontualidadeForm.setFatorCorrecao(indicesAcrescimosImpontualidade .getFatorAtualizacaoMonetaria() + ""); indiceAcrescimosImpontualidadeForm .setPercentualAtualizacaoMonetaria(""); httpServletRequest.setAttribute("nomeCampo", "percentualAtualizacaoMonetaria"); indiceAcrescimosImpontualidadeForm.setPercentualLimiteJuros(Util .formatarMoedaReal(indicesAcrescimosImpontualidade .getPercentualLimiteJuros())); indiceAcrescimosImpontualidadeForm.setPercentualLimiteMulta(Util .formatarMoedaReal(indicesAcrescimosImpontualidade .getPercentualLimiteMulta())); indiceAcrescimosImpontualidadeForm.setIndicadorJurosMensal(indicesAcrescimosImpontualidade .getIndicadorJurosMensal().toString()); indiceAcrescimosImpontualidadeForm.setIndicadorMultaMensal(indicesAcrescimosImpontualidade .getIndicadorMultaMensal().toString()); SistemaParametro sistemaParametro = fachada .pesquisarParametrosDoSistema(); // caso o ano mes de referencia for menor ou igual ao ano mes de // arrecada��o n�o deixa alterar os dados if (anoMesReferencia <= sistemaParametro.getAnoMesArrecadacao()) { indiceAcrescimosImpontualidadeForm .setCamposDesabilitados("sim"); } } else { httpServletRequest.setAttribute("nomeCampo", "percentualMulta"); } } } private void calcularFatorAtualizacaoMonetaria( IndiceAcrescimosImpontualidadeForm indiceAcrescimosImpontualidadeForm, HttpServletRequest httpServletRequest, Fachada fachada) { // pesquisa enter de crit�rio de cobran�a if (indiceAcrescimosImpontualidadeForm.getMesAnoReferencia() != null && !indiceAcrescimosImpontualidadeForm.getMesAnoReferencia() .equals("")) { if (indiceAcrescimosImpontualidadeForm .getPercentualAtualizacaoMonetaria() != null) { BigDecimal percentualAtualizacaoMonetaria = Util .formatarMoedaRealparaBigDecimal(indiceAcrescimosImpontualidadeForm .getPercentualAtualizacaoMonetaria()); if (percentualAtualizacaoMonetaria.compareTo(new BigDecimal( "0.00")) == 0 || percentualAtualizacaoMonetaria .compareTo(new BigDecimal("100.00")) > 0) { throw new ActionServletException( "atencao.percentual_invalido", null, "Fator Atualiza��o Monet�ria"); } } FiltroIndicesAcrescimosImpontualidade filtroIndicesAcrescimosImpontualidade = new FiltroIndicesAcrescimosImpontualidade(); Integer anoMesReferencia = null; try { anoMesReferencia = Util .formatarMesAnoComBarraParaAnoMes(indiceAcrescimosImpontualidadeForm .getMesAnoReferencia()); Integer anoMesReferenciaMenosUm = Util .subtraiAteSeisMesesAnoMesReferencia(anoMesReferencia, 1); filtroIndicesAcrescimosImpontualidade .adicionarParametro(new ParametroSimples( FiltroIndicesAcrescimosImpontualidade.ANO_MES_REFERENCIA, anoMesReferenciaMenosUm)); } catch (NumberFormatException ex) { throw new ActionServletException( "atencao.campo_texto.numero_obrigatorio", null, "Mes/Ano Refer�ncia"); } Collection colecaoIndicesAcrescimosImpontualidadeAnterior = fachada .pesquisar(filtroIndicesAcrescimosImpontualidade, IndicesAcrescimosImpontualidade.class.getName()); if (colecaoIndicesAcrescimosImpontualidadeAnterior != null && !colecaoIndicesAcrescimosImpontualidadeAnterior .isEmpty()) { IndicesAcrescimosImpontualidade indicesAcrescimosImpontualidade = (IndicesAcrescimosImpontualidade) Util .retonarObjetoDeColecao(colecaoIndicesAcrescimosImpontualidadeAnterior); if (indiceAcrescimosImpontualidadeForm .getPercentualAtualizacaoMonetaria() != null && !indiceAcrescimosImpontualidadeForm .getPercentualAtualizacaoMonetaria().equals("")) { BigDecimal percentualAtualizacaoMonetaria = Util .formatarMoedaRealparaBigDecimal(indiceAcrescimosImpontualidadeForm .getPercentualAtualizacaoMonetaria()); BigDecimal fatorAtualizacao = indicesAcrescimosImpontualidade .getFatorAtualizacaoMonetaria().multiply( percentualAtualizacaoMonetaria); BigDecimal valorPrecentual = fatorAtualizacao .divide(new BigDecimal("100")); valorPrecentual = valorPrecentual .add(indicesAcrescimosImpontualidade .getFatorAtualizacaoMonetaria()); valorPrecentual = valorPrecentual.setScale(4, BigDecimal.ROUND_HALF_UP); String valorPercentualString = "" + valorPrecentual; valorPercentualString = valorPercentualString.replace(".", ","); indiceAcrescimosImpontualidadeForm .setFatorCorrecao(valorPercentualString); httpServletRequest.setAttribute("nomeCampo", "percentualLimiteJuros"); } else { throw new ActionServletException( "atencao.campo_texto.numero_obrigatorio", null, "Percentual Fator Atualiza��o Monet�ria"); } }else{ indiceAcrescimosImpontualidadeForm .setFatorCorrecao(indiceAcrescimosImpontualidadeForm .getPercentualAtualizacaoMonetaria()); httpServletRequest.setAttribute("nomeCampo", "percentualLimiteJuros"); } } else { httpServletRequest.setAttribute("nomeCampo", "percentualAtualizacaoMonetaria"); } } }