package gcom.gui.cobranca;
import gcom.cobranca.FiltroIndicesAcrescimosImpontualidade;
import gcom.cobranca.IndicesAcrescimosImpontualidade;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.interceptor.RegistradorOperacao;
import gcom.seguranca.acesso.Operacao;
import gcom.seguranca.acesso.OperacaoEfetuada;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.seguranca.acesso.usuario.UsuarioAcao;
import gcom.seguranca.acesso.usuario.UsuarioAcaoUsuarioHelper;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.Date;
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;
/**
* Processamento para inserir o crit�rio da cobran�a e as linhas do criterio da
* cobran�a
*
* @author S�vio Luiz
* @date 18/09/2007
*/
public class InformarIndiceAcrescimosImpontualidadeAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o retorno
ActionForward retorno = actionMapping.findForward("telaSucesso");
IndiceAcrescimosImpontualidadeForm indiceAcrescimosImpontualidadeForm = (IndiceAcrescimosImpontualidadeForm) actionForm;
HttpSession sessao = httpServletRequest.getSession(false);
Usuario usuarioLogado = (Usuario) sessao
.getAttribute(Usuario.USUARIO_LOGADO);
// Validar campos
if (indiceAcrescimosImpontualidadeForm.getPercentualMulta() != null) {
BigDecimal percentualMulta = new BigDecimal(indiceAcrescimosImpontualidadeForm
.getPercentualMulta().replace(",", "."));
if (percentualMulta.compareTo(new BigDecimal("0.0000")) <= 0
|| percentualMulta.compareTo(new BigDecimal("100.0000")) > 0) {
throw new ActionServletException("atencao.percentual_invalido",
null, "Multa");
}
}
if (indiceAcrescimosImpontualidadeForm.getPercentualJurosMora() != null) {
BigDecimal percentualJurosMora = new BigDecimal(indiceAcrescimosImpontualidadeForm
.getPercentualJurosMora().replace(",", "."));
if (percentualJurosMora.compareTo(new BigDecimal("0.0000")) <= 0
|| percentualJurosMora.compareTo(new BigDecimal("100.0000")) > 0) {
throw new ActionServletException("atencao.percentual_invalido",
null, "Juros Mora");
}
}
if (indiceAcrescimosImpontualidadeForm.getPercentualLimiteJuros() != null) {
BigDecimal percentualLimiteJuros = Util
.formatarMoedaRealparaBigDecimal(indiceAcrescimosImpontualidadeForm
.getPercentualLimiteJuros());
if (percentualLimiteJuros.compareTo(new BigDecimal("0.00")) <= 0
|| percentualLimiteJuros.compareTo(new BigDecimal("999.00")) > 0) {
throw new ActionServletException("atencao.percentual_invalido",
null, "Limite dos Juros");
}
}
if (indiceAcrescimosImpontualidadeForm.getPercentualLimiteMulta() != null) {
BigDecimal percentualLimiteMulta = Util
.formatarMoedaRealparaBigDecimal(indiceAcrescimosImpontualidadeForm
.getPercentualLimiteMulta());
if (percentualLimiteMulta.compareTo(new BigDecimal("0.00")) <= 0
|| percentualLimiteMulta.compareTo(new BigDecimal("999.00")) > 0) {
throw new ActionServletException("atencao.percentual_invalido",
null, "Limite da Multa");
}
}
Fachada fachada = Fachada.getInstancia();
FiltroIndicesAcrescimosImpontualidade filtroIndicesAcrescimosImpontualidade = new FiltroIndicesAcrescimosImpontualidade();
Integer anoMesReferencia = null;
anoMesReferencia = Util
.formatarMesAnoComBarraParaAnoMes(indiceAcrescimosImpontualidadeForm
.getMesAnoReferencia());
filtroIndicesAcrescimosImpontualidade
.adicionarParametro(new ParametroSimples(
FiltroIndicesAcrescimosImpontualidade.ANO_MES_REFERENCIA,
anoMesReferencia));
Collection colecaoIndicesAcrescimosImpontualidade = fachada.pesquisar(
filtroIndicesAcrescimosImpontualidade,
IndicesAcrescimosImpontualidade.class.getName());
String mensagem = "";
IndicesAcrescimosImpontualidade indicesAcrescimosImpontualidade = null;
if (colecaoIndicesAcrescimosImpontualidade != null
&& !colecaoIndicesAcrescimosImpontualidade.isEmpty()) {
indicesAcrescimosImpontualidade = (IndicesAcrescimosImpontualidade) Util
.retonarObjetoDeColecao(colecaoIndicesAcrescimosImpontualidade);
indicesAcrescimosImpontualidade
.setPercentualMulta(new BigDecimal(indiceAcrescimosImpontualidadeForm
.getPercentualMulta().replace(",", ".")));
indicesAcrescimosImpontualidade
.setPercentualJurosMora(new BigDecimal(indiceAcrescimosImpontualidadeForm
.getPercentualJurosMora().replace(",", ".")));
String valorComPonto = indiceAcrescimosImpontualidadeForm
.getFatorCorrecao().replace(",", ".");
indicesAcrescimosImpontualidade
.setFatorAtualizacaoMonetaria(new BigDecimal(valorComPonto));
// Percentual Limite dos Juros
indicesAcrescimosImpontualidade
.setPercentualLimiteJuros(Util
.formatarMoedaRealparaBigDecimal(indiceAcrescimosImpontualidadeForm
.getPercentualLimiteJuros()));
// Percentual Limite da Multa
indicesAcrescimosImpontualidade
.setPercentualLimiteMulta(Util
.formatarMoedaRealparaBigDecimal(indiceAcrescimosImpontualidadeForm
.getPercentualLimiteMulta()));
// Indicador Juros Mensal
indicesAcrescimosImpontualidade.setIndicadorJurosMensal(new Short(
indiceAcrescimosImpontualidadeForm
.getIndicadorJurosMensal()));
// Indicador Multa Mensal
indicesAcrescimosImpontualidade.setIndicadorMultaMensal(new Short(
indiceAcrescimosImpontualidadeForm
.getIndicadorMultaMensal()));
indicesAcrescimosImpontualidade.setUltimaAlteracao(new Date());
fachada.atualizar(indicesAcrescimosImpontualidade);
mensagem = "atualizada";
} else {
indicesAcrescimosImpontualidade = new IndicesAcrescimosImpontualidade();
indicesAcrescimosImpontualidade
.setAnoMesReferencia(Util
.formatarMesAnoComBarraParaAnoMes(indiceAcrescimosImpontualidadeForm
.getMesAnoReferencia()));
indicesAcrescimosImpontualidade
.setPercentualMulta(new BigDecimal(indiceAcrescimosImpontualidadeForm
.getPercentualMulta().replace(",", ".")));
indicesAcrescimosImpontualidade
.setPercentualJurosMora(new BigDecimal(indiceAcrescimosImpontualidadeForm
.getPercentualJurosMora().replace(",", ".")));
String valorComPonto = indiceAcrescimosImpontualidadeForm
.getFatorCorrecao().replace(",", ".");
indicesAcrescimosImpontualidade
.setFatorAtualizacaoMonetaria(new BigDecimal(valorComPonto));
// Percentual Limite dos Juros
indicesAcrescimosImpontualidade
.setPercentualLimiteJuros(Util
.formatarMoedaRealparaBigDecimal(indiceAcrescimosImpontualidadeForm
.getPercentualLimiteJuros()));
// Percentual Limite da Multa
indicesAcrescimosImpontualidade
.setPercentualLimiteMulta(Util
.formatarMoedaRealparaBigDecimal(indiceAcrescimosImpontualidadeForm
.getPercentualLimiteMulta()));
// Indicador Juros Mensal
indicesAcrescimosImpontualidade.setIndicadorJurosMensal(new Short(
indiceAcrescimosImpontualidadeForm
.getIndicadorJurosMensal()));
// Indicador Multa Mensal
indicesAcrescimosImpontualidade.setIndicadorMultaMensal(new Short(
indiceAcrescimosImpontualidadeForm
.getIndicadorMultaMensal()));
indicesAcrescimosImpontualidade.setUltimaAlteracao(new Date());
fachada.inserir(indicesAcrescimosImpontualidade);
mensagem = "inserida";
}
// ------------ REGISTRAR TRANSA��O----------------------------
RegistradorOperacao registradorOperacao = new RegistradorOperacao(
Operacao.OPERACAO_INFORMAR_INDICES_ACRESCIMOS_IMPONTUALIDADE,
new UsuarioAcaoUsuarioHelper(usuarioLogado,
UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO));
Operacao operacao = new Operacao();
operacao.setId(Operacao.OPERACAO_COBRANCA_ACAO_INSERIR);
OperacaoEfetuada operacaoEfetuada = new OperacaoEfetuada();
operacaoEfetuada.setOperacao(operacao);
indicesAcrescimosImpontualidade.setOperacaoEfetuada(operacaoEfetuada);
indicesAcrescimosImpontualidade.adicionarUsuario(usuarioLogado,
UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO);
registradorOperacao.registrarOperacao(indicesAcrescimosImpontualidade);
// ------------ REGISTRAR TRANSA��O----------------------------
montarPaginaSucesso(httpServletRequest,
"�ndices dos acr�scimos de impontualidade de "
+ indiceAcrescimosImpontualidadeForm
.getMesAnoReferencia() + " " + mensagem
+ " com sucesso.", "", "");
return retorno;
}
}