package gcom.gui.faturamento;
import gcom.cadastro.cliente.ClienteImovel;
import gcom.cadastro.cliente.ClienteRelacaoTipo;
import gcom.cadastro.cliente.FiltroClienteImovel;
import gcom.cadastro.imovel.FiltroImovel;
import gcom.cadastro.imovel.FiltroImovelCobrancaSituacao;
import gcom.cadastro.imovel.Imovel;
import gcom.cadastro.imovel.ImovelCobrancaSituacao;
import gcom.cadastro.sistemaparametro.SistemaParametro;
import gcom.cobranca.CobrancaSituacao;
import gcom.fachada.Fachada;
import gcom.faturamento.debito.DebitoACobrar;
import gcom.faturamento.debito.DebitoCreditoSituacao;
import gcom.faturamento.debito.FiltroDebitoACobrar;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import gcom.util.filtro.ParametroSimples;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
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;
/**
* Manter D�bito a Cobrar ao Imovel [UC0184] Manter D�bito a Cobrar
*
* @author Rafael Santos
* @since 29/12/2005
*
*/
public class ExibirManterDebitoACobrarAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o mapeamento de retorno
ActionForward retorno = actionMapping
.findForward("exibirManterDebitoACobrar");
HttpSession sessao = httpServletRequest.getSession(false);
Fachada fachada = Fachada.getInstancia();
ManterDebitoACobrarActionForm manterDebitoACobrarActionForm = (ManterDebitoACobrarActionForm) actionForm;
String limparForm = (String) httpServletRequest
.getParameter("limparForm");
String codigoImovel = null;
if(httpServletRequest.getParameter("idRegistroInseridoManter")!= null
&& !httpServletRequest.getParameter("idRegistroInseridoManter").equals("") ){
codigoImovel = "" + httpServletRequest.getParameter("idRegistroInseridoManter");
}else{
codigoImovel = manterDebitoACobrarActionForm.getCodigoImovel();
}
if (codigoImovel != null && !codigoImovel.trim().equals("")) {
FiltroImovel filtroImovel = new FiltroImovel();
filtroImovel.adicionarParametro(new ParametroSimples(
FiltroImovel.ID, codigoImovel));
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("logradouroBairro.bairro.municipio.unidadeFederacao");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("localidade");
filtroImovel
.adicionarCaminhoParaCarregamentoEntidade("setorComercial");
filtroImovel
.adicionarCaminhoParaCarregamentoEntidade("quadra");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.cep");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.logradouro.logradouroTipo");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.logradouro.logradouroTitulo");
filtroImovel
.adicionarCaminhoParaCarregamentoEntidade("enderecoReferencia");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("ligacaoAguaSituacao");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("ligacaoEsgotoSituacao");
/* filtroImovel
.adicionarCaminhoParaCarregamentoEntidade("ligacaoAguaSituacao.id");
filtroImovel
.adicionarCaminhoParaCarregamentoEntidade("ligacaoEsgotoSituacao.id");
*/
Collection<Imovel> imovelPesquisado = fachada.pesquisar(
filtroImovel, Imovel.class.getName());
// [FS0001 - Verificar exist�ncioa da matr�cula do im�vel] Imovel
// Inxistente
if (imovelPesquisado != null && imovelPesquisado.isEmpty()) {
manterDebitoACobrarActionForm.setInscricaoImovel("Matr�cula Inexistente");
manterDebitoACobrarActionForm.setNomeCliente("");
manterDebitoACobrarActionForm.setSituacaoAgua("");
manterDebitoACobrarActionForm.setSituacaoEsgoto("");
httpServletRequest.setAttribute("corMatriculaImovel",
null);
httpServletRequest.setAttribute("nomeCampo",
"codigoImovel");
if (sessao.getAttribute("colecaoDebitosACobrar") != null) {
sessao.removeAttribute("colecaoDebitosACobrar");
}
}
// [FS0001 - Verificar exist�ncioa da matr�cula do im�vel] Imovel
// Excluido
if (imovelPesquisado != null && !imovelPesquisado.isEmpty()) {
Imovel imovel = imovelPesquisado.iterator().next();
if (imovel.getIndicadorExclusao() == Imovel.IMOVEL_EXCLUIDO) {
throw new ActionServletException(
"atencao.pesquisa.imovel.excluido");
}
}
// [FS0003 - Verificar usu�rio com d�bito em cobran�a
// administrativa]
if (imovelPesquisado != null && !imovelPesquisado.isEmpty()) {
Imovel imovel = imovelPesquisado.iterator().next();
FiltroImovelCobrancaSituacao filtroImovelCobrancaSituacao = new FiltroImovelCobrancaSituacao();
filtroImovelCobrancaSituacao
.adicionarCaminhoParaCarregamentoEntidade("cobrancaSituacao");
filtroImovelCobrancaSituacao
.adicionarParametro(new ParametroSimples(
FiltroImovelCobrancaSituacao.IMOVEL_ID, imovel
.getId()));
Collection imovelCobrancaSituacaoEncontrada = fachada
.pesquisar(filtroImovelCobrancaSituacao,
ImovelCobrancaSituacao.class.getName());
// Verifica se o im�vel tem d�bito em cobran�a administrativa
if (imovelCobrancaSituacaoEncontrada != null
&& !imovelCobrancaSituacaoEncontrada.isEmpty()) {
if (((ImovelCobrancaSituacao) ((List) imovelCobrancaSituacaoEncontrada)
.get(0)).getCobrancaSituacao() != null) {
if (((ImovelCobrancaSituacao) ((List) imovelCobrancaSituacaoEncontrada)
.get(0)).getCobrancaSituacao().getId().equals(
CobrancaSituacao.COBRANCA_ADMINISTRATIVA)
&& ((ImovelCobrancaSituacao) ((List) imovelCobrancaSituacaoEncontrada)
.get(0)).getDataRetiradaCobranca() == null) {
throw new ActionServletException(
"atencao.pesquisa.imovel.cobranca_administrativa");
}
}
}
}
// Obtem o cliente imovel do imovel pesquisado
if (imovelPesquisado != null && !imovelPesquisado.isEmpty()) {
Imovel imovel = imovelPesquisado.iterator().next();
FiltroDebitoACobrar filtroDebitoACobrar = new FiltroDebitoACobrar();
filtroDebitoACobrar
.adicionarCaminhoParaCarregamentoEntidade("imovel");
filtroDebitoACobrar.adicionarParametro(new ParametroSimples(
FiltroDebitoACobrar.IMOVEL_ID, imovel.getId()));
filtroDebitoACobrar.adicionarParametro(new ParametroSimples(
FiltroDebitoACobrar.DEBITO_CREDITO_SITUACAO_ATUAL_ID, DebitoCreditoSituacao.NORMAL));
/*filtroDebitoACobrar.adicionarParametro(new Menor(FiltroDebitoACobrar.NUMERO_PRESTACOES_COBRADAS,
FiltroDebitoACobrar.NUMERO_PRESTACOES_DEBITO));
*/
filtroDebitoACobrar
.adicionarCaminhoParaCarregamentoEntidade(FiltroDebitoACobrar.FINANCIAMENTO_TIPO);
filtroDebitoACobrar
.adicionarCaminhoParaCarregamentoEntidade(FiltroDebitoACobrar.DEBITO_TIPO);
filtroDebitoACobrar
.adicionarCaminhoParaCarregamentoEntidade(FiltroDebitoACobrar.DEBITO_CREDITO_SITUACAO_ATUAL);
Collection<DebitoACobrar> colecaoDebitoACobrar = fachada
.pesquisar(filtroDebitoACobrar, DebitoACobrar.class
.getName());
// [FS0002] - Verificar exist�ncia de d�bito a cobrar
if (colecaoDebitoACobrar != null
&& colecaoDebitoACobrar.isEmpty()) {
throw new ActionServletException(
"atencao.debito_a_cobrar.inexistente", null,
codigoImovel);
}
Collection<DebitoACobrar> colecaoDebitoACobrarFinal = new ArrayList();
SistemaParametro sistemaParametro = this.getSistemaParametro();
/*
* Adicionado por: Mariana Victor
* Data: 28/07/2011
*
* 5. Caso o indicador de bloqueio de d�bitos a cobrar vinculados a contrato de parcelamento no manter debito a cobrar esteja ativo
* */
if (sistemaParametro.getIndicadorBloqueioDebitoACobrarContratoParcelManterDebito() != null
&& sistemaParametro.getIndicadorBloqueioDebitoACobrarContratoParcelManterDebito()
.compareTo(ConstantesSistema.SIM) == 0) {
// retirar da lista de d�bitos a cobrar selecionados os d�bitos a cobrar vinculados
// a algum contrato de parcelamento ativo
Iterator iterator = colecaoDebitoACobrar.iterator();
while(iterator.hasNext()) {
DebitoACobrar debitoACobrar = (DebitoACobrar) iterator.next();
if (!fachada.verificaDebitoACobrarVinculadoContratoParcelamentoCliente(debitoACobrar.getId())) {
colecaoDebitoACobrarFinal.add(debitoACobrar);
}
}
} else {
colecaoDebitoACobrarFinal.addAll(colecaoDebitoACobrar);
}
// manterDebitoACobrarActionForm.setCodigoImovel()
sessao.setAttribute("colecaoDebitosACobrar",
colecaoDebitoACobrarFinal);
sessao.setAttribute("imovelPesquisado", imovel);
FiltroClienteImovel filtroClienteImovel = new FiltroClienteImovel();
filtroClienteImovel
.adicionarCaminhoParaCarregamentoEntidade("cliente");
filtroClienteImovel.adicionarParametro(new ParametroSimples(
FiltroClienteImovel.IMOVEL_ID, codigoImovel));
filtroClienteImovel.adicionarParametro(new ParametroSimples(
FiltroClienteImovel.CLIENTE_RELACAO_TIPO,
ClienteRelacaoTipo.USUARIO));
Collection<ClienteImovel> clienteImovelPesquisado = fachada
.pesquisar(filtroClienteImovel, ClienteImovel.class
.getName());
if (clienteImovelPesquisado != null
&& !clienteImovelPesquisado.isEmpty()) {
ClienteImovel clienteImovel = clienteImovelPesquisado
.iterator().next();
if (clienteImovel.getCliente() != null) {
manterDebitoACobrarActionForm
.setNomeCliente(clienteImovel.getCliente()
.getNome());
}
}
if (imovel.getLigacaoAguaSituacao() != null) {
manterDebitoACobrarActionForm.setSituacaoAgua(imovel
.getLigacaoAguaSituacao().getDescricao());
}
if (imovel.getLigacaoEsgotoSituacao() != null) {
manterDebitoACobrarActionForm.setSituacaoEsgoto(imovel
.getLigacaoEsgotoSituacao().getDescricao());
}
manterDebitoACobrarActionForm.setCodigoImovel(codigoImovel);
manterDebitoACobrarActionForm.setInscricaoImovel(imovel
.getInscricaoFormatada());
httpServletRequest.setAttribute("corMatriculaImovel",
"valor");
httpServletRequest.setAttribute("nomeCampo",
"idTipoDebito");
}
}
if (limparForm != null && !limparForm.trim().equalsIgnoreCase("")) {
// manterDebitoACobrarActionForm.set
manterDebitoACobrarActionForm.reset(actionMapping,
httpServletRequest);
if (sessao.getAttribute("imovelPesquisado") != null) {
sessao.removeAttribute("imovelPesquisado");
}
if (sessao.getAttribute("colecaoDebitosACobrar") != null) {
sessao.removeAttribute("colecaoDebitosACobrar");
}
}
return retorno;
}
}