package gcom.gui.cobranca;
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.ImovelCobrancaSituacao;
import gcom.cadastro.imovel.ImovelSituacao;
import gcom.cadastro.imovel.ImovelSituacaoTipo;
import gcom.cadastro.imovel.ImovelSubcategoria;
import gcom.cadastro.imovel.Subcategoria;
import gcom.cadastro.sistemaparametro.SistemaParametro;
import gcom.cobranca.DocumentoTipo;
import gcom.cobranca.parcelamento.ParcelamentoPerfil;
import gcom.fachada.Fachada;
import gcom.faturamento.FaturamentoGrupo;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.micromedicao.consumo.LigacaoTipo;
import gcom.micromedicao.hidrometro.HidrometroCapacidade;
import gcom.seguranca.acesso.PermissaoEspecial;
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.Date;
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;
import org.apache.struts.action.DynaActionForm;
/**
* Permite efetuar o parcelamento dos d�bitos de um im�vel
*
* [UC0214] Efetuar Parcelamento de D�bitos
*
* @author Roberta Costa
* @date 24/01/2006
*/
public class ProcessarEfetuarParcelamentoDebitosProcesso1Action extends GcomAction {
public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping.findForward("processo1");
Fachada fachada = Fachada.getInstancia();
HttpSession sessao = httpServletRequest.getSession(false);
DynaActionForm efetuarParcelamentoDebitosActionForm = (DynaActionForm) actionForm;
Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado");
// Pega os codigos que o usuario digitou para a pesquisa direta de
// imovel
String codigoImovel = httpServletRequest.getParameter("matriculaImovel");
// String codigoImovelAntes = (String)
// efetuarParcelamentoDebitosActionForm.get("codigoImovelAntes");
String inscricaoImovel = (String) efetuarParcelamentoDebitosActionForm.get("inscricaoImovel");
// Boolean indicadorContas = true;
String dataParcelamento = (String) (efetuarParcelamentoDebitosActionForm.get("dataParcelamento"));
String resolucaoDiretoria = (String) (efetuarParcelamentoDebitosActionForm.get("resolucaoDiretoria"));
String inicioIntervaloParcelamento = (String) efetuarParcelamentoDebitosActionForm.get("inicioIntervaloParcelamento");
String fimIntervaloParcelamento = (String) efetuarParcelamentoDebitosActionForm.get("fimIntervaloParcelamento");
String indicadorContasRevisao = (String) efetuarParcelamentoDebitosActionForm.get("indicadorContasRevisao");
String indicadorGuiasPagamento = (String) efetuarParcelamentoDebitosActionForm.get("indicadorGuiasPagamento");
String indicadorAcrescimosImpotualidade = (String) efetuarParcelamentoDebitosActionForm.get("indicadorAcrescimosImpotualidade");
String indicadorDebitosACobrar = (String) efetuarParcelamentoDebitosActionForm.get("indicadorDebitosACobrar");
String indicadorCreditoARealizar = (String) efetuarParcelamentoDebitosActionForm.get("indicadorCreditoARealizar");
String indicadorDividaAtiva = (String) efetuarParcelamentoDebitosActionForm.get("indicadorDividaAtiva");
String indicadorRestabelecimento = (String) efetuarParcelamentoDebitosActionForm.get("indicadorRestabelecimento");
String numeroReparcelamento = (String) efetuarParcelamentoDebitosActionForm.get("numeroReparcelamento");
String idClienteParcelamento = (String) efetuarParcelamentoDebitosActionForm.get("idClienteParcelamento");
String cpfClienteParcelamentoDigitado = (String) efetuarParcelamentoDebitosActionForm.get("cpfClienteParcelamentoDigitado");
String cpfClienteParcelamento = (String) efetuarParcelamentoDebitosActionForm.get("cpfClienteParcelamento");
BigDecimal valorDebitoTotalAtualizadoImovel = new BigDecimal("0.00");
if (efetuarParcelamentoDebitosActionForm.get("valorDebitoTotalAtualizadoImovel") != null
&& !efetuarParcelamentoDebitosActionForm.get("valorDebitoTotalAtualizadoImovel").equals("")) {
valorDebitoTotalAtualizadoImovel = Util.formatarMoedaRealparaBigDecimal((String) efetuarParcelamentoDebitosActionForm
.get("valorDebitoTotalAtualizadoImovel"));
}
// 1. Obtem a situa��o do imovel
Integer situacaoAguaId = new Integer((String) (efetuarParcelamentoDebitosActionForm.get("situacaoAguaId")));
Integer situacaoEsgotoId = new Integer((String) (efetuarParcelamentoDebitosActionForm.get("situacaoEsgotoId")));
if (inscricaoImovel.equals("")) {
throw new ActionServletException("atencao.imovel.parcelamento.pesquisar");
}
if ((cpfClienteParcelamentoDigitado == null || cpfClienteParcelamentoDigitado.equals(""))
&& (cpfClienteParcelamento == null || cpfClienteParcelamento.equals(""))) {
} else if (cpfClienteParcelamentoDigitado != null && !cpfClienteParcelamentoDigitado.equals("")) {
validarCpf(cpfClienteParcelamentoDigitado, idClienteParcelamento, fachada);
}
// Data Parcelamento obrigat�rio
if (dataParcelamento == null || dataParcelamento.equals("")) {
throw new ActionServletException("atencao.data.parcelamento.obrigatorio");
}
// Resolu��o de diretoria obrigat�rio
if (resolucaoDiretoria == null || resolucaoDiretoria.equals("")) {
throw new ActionServletException("atencao.resolucao.diretoria.obrigatorio");
}
// adicionado por Vivianne Sousa - 19/11/2009 - analista:Adriano Britto
SistemaParametro sistemaParametro = fachada.pesquisarParametrosDoSistema();
boolean existeCobrancaDocumentoDoImovel = fachada.existeCobrancaDocumentoDoImovel(new Integer(codigoImovel), DocumentoTipo.CARTA_DE_FINAL_DE_ANO_2009);
if (sistemaParametro.getCodigoEmpresaFebraban().equals(SistemaParametro.CODIGO_EMPRESA_FEBRABAN_COMPESA) && resolucaoDiretoria.equalsIgnoreCase("13")
&& !existeCobrancaDocumentoDoImovel) {
throw new ActionServletException("atencao.imovel.nao.recebeu.carta");
}
if (situacaoAguaId.equals(LigacaoAguaSituacao.SUPRIMIDO) || situacaoAguaId.equals(LigacaoAguaSituacao.SUPR_PARC)
|| situacaoAguaId.equals(LigacaoAguaSituacao.SUPR_PARC_PEDIDO)) {
if (indicadorRestabelecimento == null || indicadorRestabelecimento.trim().equals("")) {
throw new ActionServletException("atencao.campo_selecionado.obrigatorio", null, "Com Restabelecimento?");
}
}
// Verifica se as perguntas sobre o parcelamento foram respondidas
if (indicadorContasRevisao == null || indicadorContasRevisao.equals("")) {
throw new ActionServletException("atencao.campo_selecionado.obrigatorio", null, "'Considerar Contas em Revis�o?'");
}
if (indicadorGuiasPagamento == null || indicadorGuiasPagamento.equals("")) {
throw new ActionServletException("atencao.campo_selecionado.obrigatorio", null, "'Considerar Guias de Pagamento?'");
}
if (indicadorAcrescimosImpotualidade == null || indicadorAcrescimosImpotualidade.equals("")) {
throw new ActionServletException("atencao.campo_selecionado.obrigatorio", null, "'Considerar Acr�scimos por Impontualidade?'");
}
if (indicadorDebitosACobrar == null || indicadorDebitosACobrar.equals("")) {
throw new ActionServletException("atencao.campo_selecionado.obrigatorio", null, "'Considerar D�bitos a Cobrar?'");
}
if (indicadorCreditoARealizar == null || indicadorCreditoARealizar.equals("")) {
throw new ActionServletException("atencao.campo_selecionado.obrigatorio", null, "'Considerar Cr�ditos a Realizar?'");
}
// Caso o valor Total do D�bito seja negativo n�o h� d�bitos para
// parcelar
if (valorDebitoTotalAtualizadoImovel.compareTo(new BigDecimal("0.00")) == -1) {
throw new ActionServletException("atencao.imovel.sem.debitos", null, codigoImovel);
}
// Caso a data do parcelamento seja maior que a data atual
Date dataParcelamentoFormatado = Util.converteStringParaDate((String) efetuarParcelamentoDebitosActionForm.get("dataParcelamento"));
if (dataParcelamentoFormatado.after(new Date())) {
throw new ActionServletException("atencao.data.parcelamento.menor.igual.data.corrente");
}
if (fachada.verificarRDUtilizadaPeloImovel(new Integer(resolucaoDiretoria), new Integer(codigoImovel)) != null) {
throw new ActionServletException("atencao.rd.ja.utilizada.parcelamento");
}
ImovelSituacao imovelSituacao = null;
// Condi��o 1
if (situacaoAguaId != null && situacaoEsgotoId != null) {
imovelSituacao = fachada.obterSituacaoImovel(situacaoAguaId, situacaoEsgotoId);
// Condi��o 2
if (imovelSituacao == null) {
imovelSituacao = fachada.obterSituacaoImovel(situacaoAguaId, null);
}
}
// [FS004] Verificar exist�ncia da situa��o do im�vel
if (imovelSituacao == null) {
throw new ActionServletException("atencao.nao.existe.situacao.imovel.correspondente.situacao.agua.esgoto");
}
// 2. Obtem o perfil do parcelamento para o im�vel
Integer perfilImovelId = new Integer((String) (efetuarParcelamentoDebitosActionForm.get("perfilImovel")));
ParcelamentoPerfil parcelamentoPerfil = new ParcelamentoPerfil();
if (imovelSituacao != null) {
// Pega a subcategoria do im�vel
Imovel imovel = new Imovel();
imovel.setId(new Integer(codigoImovel));
Collection colecaoImovelSubCategoria = fachada.obterColecaoImovelSubcategorias(imovel, 1);
Subcategoria subcategoria = null;
Categoria categoria = null;
if (colecaoImovelSubCategoria != null && !colecaoImovelSubCategoria.isEmpty()) {
Iterator 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(new Integer(codigoImovel), imovelSituacao.getImovelSituacaoTipo().getId(), perfilImovelId,
subcategoria.getId(), new Integer(resolucaoDiretoria), categoria.getId());
if (parcelamentoPerfil == null) {
// Condi��o 1 - iper_id = iper_id do imovel e scat_id = scat_id
// do imovel
parcelamentoPerfil = fachada.obterPerfilParcelamento(new Integer(codigoImovel), imovelSituacao.getImovelSituacaoTipo().getId(), perfilImovelId,
subcategoria.getId(), new Integer(resolucaoDiretoria), null);
if (parcelamentoPerfil == null) {
parcelamentoPerfil = fachada.obterPerfilParcelamento(new Integer(codigoImovel), imovelSituacao.getImovelSituacaoTipo().getId(),
perfilImovelId, null, new Integer(resolucaoDiretoria), categoria.getId());
// Condi��o 2 - iper_id = iper_id do imovel e scat_id = null
// do imovel
if (parcelamentoPerfil == null) {
parcelamentoPerfil = fachada.obterPerfilParcelamento(new Integer(codigoImovel), imovelSituacao.getImovelSituacaoTipo().getId(),
perfilImovelId, null, new Integer(resolucaoDiretoria), null);
if (parcelamentoPerfil == null) {
parcelamentoPerfil = fachada.obterPerfilParcelamento(new Integer(codigoImovel), imovelSituacao.getImovelSituacaoTipo().getId(),
null, subcategoria.getId(), new Integer(resolucaoDiretoria), categoria.getId());
// Condi��o 3 - iper_id = null do imovel e scat_id =
// scat_id do imovel
if (parcelamentoPerfil == null) {
parcelamentoPerfil = fachada.obterPerfilParcelamento(new Integer(codigoImovel), imovelSituacao.getImovelSituacaoTipo().getId(),
null, subcategoria.getId(), new Integer(resolucaoDiretoria), null);
if (parcelamentoPerfil == null) {
parcelamentoPerfil = fachada.obterPerfilParcelamento(new Integer(codigoImovel), imovelSituacao.getImovelSituacaoTipo()
.getId(), null, null, new Integer(resolucaoDiretoria), categoria.getId());
// Condi��o 4 - iper_id = null do imovel e
// scat_id = null
if (parcelamentoPerfil == null) {
parcelamentoPerfil = fachada.obterPerfilParcelamento(new Integer(codigoImovel), imovelSituacao.getImovelSituacaoTipo()
.getId(), null, null, new Integer(resolucaoDiretoria), null);
}
}
}
}
}
}
}
// // Condi��o 1 - iper_id = iper_id do imovel e scat_id = scat_id
// do imovel
// parcelamentoPerfil = fachada.obterPerfilParcelamento(new
// Integer(codigoImovel),imovelSituacao.getImovelSituacaoTipo().getId(),perfilImovelId,
// subcategoria.getId(), new Integer(resolucaoDiretoria),null);
//
// // Condi��o 2 - iper_id = iper_id do imovel e scat_id = null do
// // imovel
// if (parcelamentoPerfil == null) {
// parcelamentoPerfil = fachada.obterPerfilParcelamento(new
// Integer(codigoImovel),imovelSituacao.getImovelSituacaoTipo().getId(),perfilImovelId,
// null, new Integer(resolucaoDiretoria),null);
// // Condi��o 3 - iper_id = null do imovel e scat_id = scat_id do
// imovel
// if (parcelamentoPerfil == null) {
// parcelamentoPerfil = fachada.obterPerfilParcelamento(new
// Integer(codigoImovel),imovelSituacao.getImovelSituacaoTipo().getId(),null,
// subcategoria.getId(), new Integer(resolucaoDiretoria),null);
// // Condi��o 4 - iper_id = null do imovel e scat_id = null
// if (parcelamentoPerfil == null) {
// parcelamentoPerfil = fachada.obterPerfilParcelamento(new
// Integer(codigoImovel),
// imovelSituacao.getImovelSituacaoTipo().getId(), null, null, new
// Integer(resolucaoDiretoria),null);
// }
// }
// }
}
// [FS005] Verificar exist�ncia do perfil de parcelamento
if (parcelamentoPerfil == null) {
throw new ActionServletException("atencao.nao.existe.perfil.parcelamento.correspondente.situacao.imovel");
}
// [FS0025] Verificar quantidade m�xima de reparcelamento
if (parcelamentoPerfil.getQuantidadeMaximaReparcelamento() != null
&& parcelamentoPerfil.getQuantidadeMaximaReparcelamento().compareTo(new Integer(numeroReparcelamento)) == -1) {
throw new ActionServletException("atencao.quantidade.reparcel.nao.permite.parcel");
}
Integer idImovel = new Integer(codigoImovel);
if (efetuarParcelamentoDebitosActionForm.get("areaConstruidaImovel") != null
&& !efetuarParcelamentoDebitosActionForm.get("areaConstruidaImovel").equals("")) {
BigDecimal areaConstruidaImovel = new BigDecimal((String) efetuarParcelamentoDebitosActionForm.get("areaConstruidaImovel"));
if (parcelamentoPerfil.getNumeroAreaConstruida() != null && areaConstruidaImovel.compareTo(parcelamentoPerfil.getNumeroAreaConstruida()) > 0) {
// area contruida do imovel > a area contruida do perfil do
// parcelamento
throw new ActionServletException("atencao.nao.existe.perfil.parcelamento.correspondente.situacao.imovel");
}
}
Imovel imovel = new Imovel();
imovel.setId(idImovel);
if (parcelamentoPerfil.getCategoria() != null) {
Collection colecaoCategoria = fachada.pesquisarCategoriasImovel(imovel);
boolean existePerfilParaCategoria = false;
Iterator iter = colecaoCategoria.iterator();
while (iter.hasNext()) {
Categoria categoria = (Categoria) iter.next();
if (categoria.getId().equals(parcelamentoPerfil.getCategoria().getId())) {
existePerfilParaCategoria = true;
}
// comentado por Vivianne Sousa 22/05/2008
// n�o funcionava correto para imovel misto
// if(!categoria.getId().equals(parcelamentoPerfil.getCategoria().getId())){
// //categoria principal do imovel != categoria do perfl do
// parcelamento
// throw new
// ActionServletException("atencao.nao.existe.perfil.parcelamento.correspondente.situacao.imovel");
// }
}
if (!existePerfilParaCategoria) {
// categoria principal do imovel != categoria do perfl do
// parcelamento
throw new ActionServletException("atencao.nao.existe.perfil.parcelamento.correspondente.situacao.imovel");
}
}
int qtdeEconomiasImovel = fachada.obterQuantidadeEconomias(imovel);
if (parcelamentoPerfil.getNumeroConsumoEconomia() != null) {
Integer idLigacaoTipo = LigacaoTipo.LIGACAO_AGUA;
if (imovelSituacao.getImovelSituacaoTipo().getId().equals(ImovelSituacaoTipo.LIGADO_SO_ESGOTO)) {
idLigacaoTipo = LigacaoTipo.LIGACAO_ESGOTO;
}
Integer consumoMedio = fachada.obterConsumoMedioEmConsumoHistorico(idImovel, idLigacaoTipo);
Integer consumoMedioPorEconomia = 0;
if (consumoMedio != null && consumoMedio.intValue() != 0) {
consumoMedioPorEconomia = Util.dividirArredondarResultado(consumoMedio, qtdeEconomiasImovel);
}
if (consumoMedioPorEconomia.compareTo(parcelamentoPerfil.getNumeroConsumoEconomia()) > 0) {
throw new ActionServletException("atencao.nao.existe.perfil.parcelamento.correspondente.situacao.imovel");
}
// if(fachada.verificarExistenciaHidrometroEmLigacaoAgua(idImovel)){
// Integer consumoMedio6meses =
// fachada.obterValorConsumoMedio6meses(idImovel);
// Imovel imovel = new Imovel();
// imovel.setId(idImovel);
//
// int qtdeEconomiasImovel =
// fachada.obterQuantidadeEconomias(imovel);
// Integer consumoMedio6mesesEconomia =
// Util.dividirArredondarResultado(consumoMedio6meses,qtdeEconomiasImovel);
//
// if(consumoMedio6mesesEconomia.compareTo(parcelamentoPerfil.getNumeroConsumoEconomia())
// > 0){
// throw new
// ActionServletException("atencao.nao.existe.perfil.parcelamento.correspondente.situacao.imovel");
// }
// }
}
if (parcelamentoPerfil.getQuantidadeEconomias() != null) {
if (qtdeEconomiasImovel > parcelamentoPerfil.getQuantidadeEconomias().intValue()) {
throw new ActionServletException("atencao.nao.existe.perfil.parcelamento.correspondente.situacao.imovel");
}
}
if (parcelamentoPerfil.getCapacidadeHidrometro() != null && parcelamentoPerfil.getCapacidadeHidrometro().equals(ConstantesSistema.SIM)) {
HidrometroCapacidade hidrometroCapacidade = null;
hidrometroCapacidade = fachada.obterHidrometroCapacidadeEmLigacaoAgua(idImovel);
if (hidrometroCapacidade != null) {
if (!hidrometroCapacidade.getId().equals(1) && !hidrometroCapacidade.getId().equals(2) && !hidrometroCapacidade.getId().equals(8)) {
throw new ActionServletException("atencao.nao.existe.perfil.parcelamento.correspondente.situacao.imovel");
}
}
}
sessao.setAttribute("parcelamentoPerfil", parcelamentoPerfil);
// [FS0021] - Verificar situa��o de cobran�a
if (parcelamentoPerfil.getIndicadorChequeDevolvido().equals(ConstantesSistema.SIM)) {
// CRC3323 - adicionado por Vivianne Sousa - analista:Fatima Sampaio
// - 05/05/2010
Collection colecaoImovelCobrancaSituacao = fachada.pesquisarImovelCobrancaSituacaoPorImovel(new Integer(codigoImovel));
if (colecaoImovelCobrancaSituacao != null && !colecaoImovelCobrancaSituacao.isEmpty()) {
Iterator iterImovelCobrancaSituacao = colecaoImovelCobrancaSituacao.iterator();
String descricao = "";
while (iterImovelCobrancaSituacao.hasNext()) {
ImovelCobrancaSituacao imovelCobrancaSituacao = (ImovelCobrancaSituacao) iterImovelCobrancaSituacao.next();
if (imovelCobrancaSituacao.getCobrancaSituacao().getIndicadorBloqueioParcelamento().equals(ConstantesSistema.SIM)) {
descricao = descricao + imovelCobrancaSituacao.getCobrancaSituacao().getDescricao() + ", ";
}
}
if (!descricao.equalsIgnoreCase("")) {
descricao = Util.removerUltimosCaracteres(descricao, 2);
if (!fachada.verificarPermissaoEspecial(PermissaoEspecial.IMOVEL_EM_SITUACAO_COBRANCA, usuario)) {
throw new ActionServletException("atencao.imovel.situacao.cobranca", null, descricao);
}
}
}
// FiltroImovel filtroImovel = new FiltroImovel();
// filtroImovel.adicionarCaminhoParaCarregamentoEntidade("cobrancaSituacao");
// filtroImovel.adicionarParametro(new
// ParametroSimples(FiltroImovel.ID, codigoImovel));
//
// Collection colecaoImovelCobrancaSituacaoEncontrada =
// fachada.pesquisar(filtroImovel,Imovel.class.getName());
//
// // Verifica se o Im�vel tem situa��o de cobran�a
// if (colecaoImovelCobrancaSituacaoEncontrada != null &&
// !colecaoImovelCobrancaSituacaoEncontrada.isEmpty()) {
//
// // CobrancaSituacao cobrancaSituacao = ((Imovel) ((List)
// imovelCobrancaSituacaoEncontrada).get(0)).getCobrancaSituacao();
// // if (cobrancaSituacao != null) {
// // throw new
// ActionServletException("atencao.imovel.situacao.cobranca" , null
// , cobrancaSituacao.getDescricao());
// // }
//
// //Alterado por Vivianne Sousa 18/03/2008
// //analista responsavel:Fatima
// Imovel imovelCobrancaSituacaoEncontrada =
// (Imovel)Util.retonarObjetoDeColecao(colecaoImovelCobrancaSituacaoEncontrada);
//
// //[FS0021]-Verificar situa��o de cobran�a
// //efetuar o parcelamento de um imovel com cobrancaSituacao
// fachada.verificarPermissaoEspecial(PermissaoEspecial.IMOVEL_EM_SITUACAO_COBRANCA,
// usuario,imovelCobrancaSituacaoEncontrada) ;
// }
}
String bloqueiaIntervaloParcelamento = (String) sessao.getAttribute("bloqueiaIntervaloParcelamento");
if (bloqueiaIntervaloParcelamento != null && bloqueiaIntervaloParcelamento.equalsIgnoreCase("nao")) {
if (inicioIntervaloParcelamento == null || inicioIntervaloParcelamento.equals("")) {
throw new ActionServletException("atencao.campo_texto.obrigatorio", null, "Intervalo do Parcelamento Inicio");
} else if (fimIntervaloParcelamento == null || fimIntervaloParcelamento.equals("")) {
throw new ActionServletException("atencao.campo_texto.obrigatorio", null, "Intervalo do Parcelamento Fim");
}
// [FS0002] Validar m�s e ano de refer�ncia
// Caso o m�s/ano esteja inv�lido
if (!Util.validarMesAno(fimIntervaloParcelamento)) {
throw new ActionServletException("atencao.mes.ano.referencia.final.invalido");
}
// Caso m�s/ano refer�ncia final seja anterior ao de refer�ncia
// incial
Integer fimIntervaloParcelamentoFormatado = Util.formatarMesAnoComBarraParaAnoMes(fimIntervaloParcelamento);
Integer inicioIntervaloParcelamentoFormatado = Util.formatarMesAnoComBarraParaAnoMes(inicioIntervaloParcelamento);
if (fimIntervaloParcelamentoFormatado < inicioIntervaloParcelamentoFormatado) {
throw new ActionServletException("atencao.mes.ano.referencia.final.anterior.referencia.inicial");
}
FaturamentoGrupo grupo = fachada.pesquisarGrupoImovel(Integer.valueOf(codigoImovel));
int referenciaCronograma = fachada.pesquisarMaiorAnoMesReferenciaCronogramaGrupoFaturamentoMensal(grupo.getId());
if (fimIntervaloParcelamentoFormatado.intValue() > referenciaCronograma)
throw new ActionServletException("atencao.mes.ano.referencia.final.maior.referencia.grupo", grupo.getId().toString());
fachada.verificaSeExisteParcelasEmAtraso(idImovel, new Integer(resolucaoDiretoria), inicioIntervaloParcelamentoFormatado,
fimIntervaloParcelamentoFormatado);
}
// Verifica se os campos obrigat�rios continuam iguais quando houve
// navega��o nas abas
if (sessao.getAttribute("codigoImovelEscolhida") == null && sessao.getAttribute("dataParcelamentoEscolhida") == null
&& sessao.getAttribute("resolucaoDiretoriaEscolhida") == null && sessao.getAttribute("fimIntervaloParcelamentoEscolhida") == null
&& sessao.getAttribute("inicioIntervaloParcelamentoEscolhida") == null && sessao.getAttribute("indicadorContasRevisaoEscolhida") == null
&& sessao.getAttribute("indicadorGuiasPagamentoEscolhida") == null && sessao.getAttribute("indicadorAcrescimosImpotualidadeEscolhida") == null
&& sessao.getAttribute("indicadorDebitosACobrarEscolhida") == null && sessao.getAttribute("indicadorCreditoARealizarEscolhida") == null
&& sessao.getAttribute("indicadorDividaAtivaEscolhida") == null) {
sessao.setAttribute("codigoImovelEscolhida", codigoImovel);
sessao.setAttribute("dataParcelamentoEscolhida", dataParcelamento);
sessao.setAttribute("resolucaoDiretoriaEscolhida", resolucaoDiretoria);
sessao.setAttribute("fimIntervaloParcelamentoEscolhida", fimIntervaloParcelamento);
sessao.setAttribute("inicioIntervaloParcelamentoEscolhida", inicioIntervaloParcelamento);
sessao.setAttribute("indicadorContasRevisaoEscolhida", indicadorContasRevisao);
sessao.setAttribute("indicadorGuiasPagamentoEscolhida", indicadorGuiasPagamento);
sessao.setAttribute("indicadorAcrescimosImpotualidadeEscolhida", indicadorAcrescimosImpotualidade);
sessao.setAttribute("indicadorDebitosACobrarEscolhida", indicadorDebitosACobrar);
sessao.setAttribute("indicadorCreditoARealizarEscolhida", indicadorCreditoARealizar);
sessao.setAttribute("indicadorDividaAtivaEscolhida", indicadorDividaAtiva);
} else {
// Caso algum campo tenha mudado limpar a sess�o
if (!codigoImovel.equals("" + sessao.getAttribute("codigoImovelEscolhida"))
|| !dataParcelamento.equals("" + sessao.getAttribute("dataParcelamentoEscolhida"))
|| !resolucaoDiretoria.equals("" + sessao.getAttribute("resolucaoDiretoriaEscolhida"))
|| !fimIntervaloParcelamento.equals("" + sessao.getAttribute("fimIntervaloParcelamentoEscolhida"))
|| !inicioIntervaloParcelamento.equals("" + sessao.getAttribute("inicioIntervaloParcelamentoEscolhida"))
|| !indicadorContasRevisao.equals("" + sessao.getAttribute("indicadorContasRevisaoEscolhida"))
|| !indicadorGuiasPagamento.equals("" + sessao.getAttribute("indicadorGuiasPagamentoEscolhida"))
|| !indicadorAcrescimosImpotualidade.equals("" + sessao.getAttribute("indicadorAcrescimosImpotualidadeEscolhida"))
|| !indicadorDebitosACobrar.equals("" + sessao.getAttribute("indicadorDebitosACobrarEscolhida"))
|| !indicadorCreditoARealizar.equals("" + sessao.getAttribute("indicadorCreditoARealizarEscolhida"))
|| !indicadorDividaAtiva.equals("" + sessao.getAttribute("indicadorDividaAtivaEscolhida"))) {
sessao.removeAttribute("colecaoContaValores");
// Monta a p�gina de confirma��o do wizard para perguntar se o
// usu�rio quer
retorno = montarPaginaConfirmacaoWizard("atencao.parametros.modificados.parcelamento", httpServletRequest, actionMapping, codigoImovel,
dataParcelamento);
}
}
return retorno;
}
public void validarCpf(String cpf, String idClienteParcelamento, Fachada fachada) {
// Validar CPF de cliente
if (cpf != null && !cpf.equals("")) {
boolean igual = true;
Integer i = 0;
Integer tam = cpf.length() - 1;
while (i < tam) {
if ((cpf.charAt(i)) != (cpf.charAt(i + 1))) {
igual = false;
break;
} else {
i++;
}
}
if (igual) {
throw new ActionServletException("atencao.cpf_invalido");
}
FiltroCliente filtroCliente = new FiltroCliente();
filtroCliente.adicionarParametro(new ParametroSimples(FiltroCliente.CPF, cpf));
Collection clienteComCpfExistente = fachada.pesquisar(filtroCliente, Cliente.class.getName());
if (clienteComCpfExistente != null && !clienteComCpfExistente.isEmpty()) {
Cliente clienteComCpf = (Cliente) clienteComCpfExistente.iterator().next();
if (!clienteComCpf.getId().equals(new Integer(idClienteParcelamento))) {
throw new ActionServletException("atencao.cpf.cliente.ja_cadastrado", null, "" + clienteComCpf.getId());
}
}
}
}
}