package gcom.gui.faturamento;
import gcom.arrecadacao.pagamento.FiltroGuiaPagamento;
import gcom.arrecadacao.pagamento.GuiaPagamento;
import gcom.cadastro.cliente.Cliente;
import gcom.cadastro.cliente.ClienteImovel;
import gcom.cadastro.cliente.ClienteRelacaoTipo;
import gcom.cadastro.cliente.ClienteTipo;
import gcom.cadastro.cliente.FiltroCliente;
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.DebitoCreditoSituacao;
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;
public class ExibirManterGuiaPagamentoAction extends GcomAction {
/**
* < <Descri��o do m�todo>>
*
* @param actionMapping
* Descri��o do par�metro
* @param actionForm
* Descri��o do par�metro
* @param httpServletRequest
* Descri��o do par�metro
* @param httpServletResponse
* Descri��o do par�metro
* @return Descri��o do retorno
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping
.findForward("manterGuiaPagamento");
ManterGuiaPagamentoActionForm manterGuiaPagamentoActionForm = (ManterGuiaPagamentoActionForm) actionForm;
HttpSession sessao = httpServletRequest.getSession(false);
Fachada fachada = Fachada.getInstancia();
// -------Parte que trata do c�digo quando o usu�rio tecla enter
FiltroGuiaPagamento filtroGuiaPagamento = new FiltroGuiaPagamento();
filtroGuiaPagamento.setCampoOrderBy("anoMesReferenciaContabil",
"debitoTipo.descricao", "dataVencimento");
filtroGuiaPagamento
.adicionarCaminhoParaCarregamentoEntidade("localidade");
filtroGuiaPagamento
.adicionarCaminhoParaCarregamentoEntidade("financiamentoTipo");
filtroGuiaPagamento
.adicionarCaminhoParaCarregamentoEntidade("debitoTipo");
filtroGuiaPagamento
.adicionarCaminhoParaCarregamentoEntidade("lancamentoItemContabil");
filtroGuiaPagamento
.adicionarCaminhoParaCarregamentoEntidade("debitoCreditoSituacaoAtual");
filtroGuiaPagamento
.adicionarCaminhoParaCarregamentoEntidade("debitoCreditoSituacaoAnterior");
// C�digo do Cliente
String codigoDigitadoClienteEnter = null;
if (httpServletRequest.getParameter("idCliente") != null
&& !httpServletRequest.getParameter("idCliente").equals("")) {
codigoDigitadoClienteEnter = httpServletRequest
.getParameter("idCliente");
manterGuiaPagamentoActionForm.setCodigoCliente(codigoDigitadoClienteEnter);
} else {
codigoDigitadoClienteEnter = (String) manterGuiaPagamentoActionForm
.getCodigoCliente();
}
// Matr�cula do Im�vel
String codigoDigitadoImovelEnter = null;
if (httpServletRequest.getParameter("idImovel") != null
&& !httpServletRequest.getParameter("idImovel").equals("")) {
codigoDigitadoImovelEnter = httpServletRequest
.getParameter("idImovel");
manterGuiaPagamentoActionForm.setIdImovel(codigoDigitadoImovelEnter);
} else {
codigoDigitadoImovelEnter = (String) manterGuiaPagamentoActionForm
.getIdImovel();
}
// Verifica se o c�digo do im�vel foi digitado
if (codigoDigitadoImovelEnter != null
&& !codigoDigitadoImovelEnter.trim().equals("")
&& Integer.parseInt(codigoDigitadoImovelEnter) > 0) {
FiltroImovel filtroImovel = new FiltroImovel();
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("localidade");
filtroImovel
.adicionarCaminhoParaCarregamentoEntidade("setorComercial");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("quadra");
filtroImovel
.adicionarCaminhoParaCarregamentoEntidade("ligacaoAguaSituacao");
filtroImovel
.adicionarCaminhoParaCarregamentoEntidade("ligacaoEsgotoSituacao");
filtroImovel.adicionarParametro(new ParametroSimples(
FiltroImovel.ID, codigoDigitadoImovelEnter));
Collection imovelEncontrado = fachada.pesquisar(filtroImovel,
Imovel.class.getName());
if (imovelEncontrado != null && !imovelEncontrado.isEmpty()) {
// O imovel foi encontrado
Imovel imovel = (Imovel) imovelEncontrado.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());
if (imovel.getIndicadorExclusao() != null
&& imovel.getIndicadorExclusao().equals(
Imovel.IMOVEL_EXCLUIDO)) {
throw new ActionServletException("atencao.imovel.excluido");
}
// Verifica se o im�vel tem d�bito em cobran�a administrativa
if (imovelCobrancaSituacaoEncontrada != null
&& !imovelCobrancaSituacaoEncontrada.isEmpty()) {
ImovelCobrancaSituacao imovelCobrancaSituacao = new ImovelCobrancaSituacao();
sessao.setAttribute("imovelCobrancaSituacao",
imovelCobrancaSituacao);
if (imovelCobrancaSituacao.getCobrancaSituacao() != null) {
if (imovelCobrancaSituacao
.getCobrancaSituacao()
.getId()
.equals(
CobrancaSituacao.COBRANCA_ADMINISTRATIVA)
&& imovelCobrancaSituacao
.getDataRetiradaCobranca() == null) {
throw new ActionServletException(
"atencao.pesquisa.imovel.cobranca_administrativa");
}
}
}
manterGuiaPagamentoActionForm.setIdImovel(""
+ ((Imovel) ((List) imovelEncontrado).get(0)).getId());
manterGuiaPagamentoActionForm.setInscricaoImovel(""
+ ((Imovel) ((List) imovelEncontrado).get(0))
.getInscricaoFormatada());
manterGuiaPagamentoActionForm
.setSituacaoAgua(((Imovel) ((List) imovelEncontrado)
.get(0)).getLigacaoAguaSituacao()
.getDescricao());
manterGuiaPagamentoActionForm
.setSituacaoEsgoto(((Imovel) ((List) imovelEncontrado)
.get(0)).getLigacaoEsgotoSituacao()
.getDescricao());
FiltroClienteImovel filtroClienteImovel = new FiltroClienteImovel();
filtroClienteImovel
.adicionarCaminhoParaCarregamentoEntidade("cliente");
filtroClienteImovel
.adicionarCaminhoParaCarregamentoEntidade("clienteRelacaoTipo");
filtroClienteImovel.adicionarParametro(new ParametroSimples(
FiltroClienteImovel.IMOVEL_ID,
codigoDigitadoImovelEnter));
Collection clientesImovelEncontrado = fachada.pesquisar(
filtroClienteImovel, ClienteImovel.class.getName());
ClienteImovel clienteImovel = null;
if (clientesImovelEncontrado != null
&& !clientesImovelEncontrado.isEmpty()) {
// O cliente imovel foi encontrado
Iterator clienteImovelEncontradoIterator = clientesImovelEncontrado
.iterator();
while (clienteImovelEncontradoIterator.hasNext()) {
clienteImovel = (ClienteImovel) clienteImovelEncontradoIterator
.next();
if (clienteImovel.getClienteRelacaoTipo().getId()
.equals(ClienteRelacaoTipo.USUARIO)) {
break;
}
}
manterGuiaPagamentoActionForm
.setNomeClienteUsuario(clienteImovel.getCliente()
.getNome());
}
filtroGuiaPagamento.adicionarParametro(new ParametroSimples(
FiltroGuiaPagamento.IMOVEL_ID, imovel.getId()));
filtroGuiaPagamento.adicionarParametro(new ParametroSimples(
FiltroGuiaPagamento.DEBITO_CREDITO_SITUACAO_ATUAL_ID,
DebitoCreditoSituacao.NORMAL));
filtroGuiaPagamento.adicionarCaminhoParaCarregamentoEntidade("financiamentoTipo");
Collection guiasPagamentos = fachada.pesquisar(
filtroGuiaPagamento, GuiaPagamento.class.getName());
if (guiasPagamentos != null && !guiasPagamentos.isEmpty()) {
SistemaParametro sistemaParametro = fachada
.pesquisarParametrosDoSistema();
if (sistemaParametro.getIndicadorBloqueioGuiasOuAcresContratoParcelManterConta() != null
&& sistemaParametro.getIndicadorBloqueioGuiasOuAcresContratoParcelManterConta().equals(ConstantesSistema.SIM)) {
Collection<Integer> idsGuiasBloquear = fachada
.verificarBloqueioGuiaPagamento(guiasPagamentos);
Iterator iterator = guiasPagamentos.iterator();
Collection guiasNaoBloqueadas = new ArrayList();
while (iterator.hasNext()) {
GuiaPagamento guiaPagamento = (GuiaPagamento) iterator.next();
if (!idsGuiasBloquear.contains(guiaPagamento.getId())) {
guiasNaoBloqueadas.add(guiaPagamento);
}
}
if (guiasPagamentos != null && !guiasPagamentos.isEmpty()) {
sessao.setAttribute("guiasPagamentos", guiasNaoBloqueadas);
} else {
throw new ActionServletException(
"atencao.guia_pagamento.imovel.inexistente", null,
"" + imovel.getId());
}
} else {
sessao.setAttribute("guiasPagamentos", guiasPagamentos);
}
} else {
throw new ActionServletException(
"atencao.guia_pagamento.imovel.inexistente", null,
"" + imovel.getId());
}
} else {
manterGuiaPagamentoActionForm.setIdImovel("");
throw new ActionServletException(
"atencao.pesquisa.imovel.inexistente.guia");
}
}
// Verifica se o do cliente c�digo foi digitado
if (codigoDigitadoClienteEnter != null
&& !codigoDigitadoClienteEnter.trim().equals("")
&& Integer.parseInt(codigoDigitadoClienteEnter) > 0) {
FiltroCliente filtroCliente = new FiltroCliente();
filtroCliente.adicionarCaminhoParaCarregamentoEntidade("profissao");
filtroCliente
.adicionarCaminhoParaCarregamentoEntidade("clienteTipo");
filtroCliente
.adicionarCaminhoParaCarregamentoEntidade("ramoAtividade");
filtroCliente.adicionarParametro(new ParametroSimples(
FiltroCliente.ID, codigoDigitadoClienteEnter));
Collection clienteEncontrado = fachada.pesquisar(filtroCliente,
Cliente.class.getName());
if (clienteEncontrado != null && !clienteEncontrado.isEmpty()) {
// O Cliente foi encontrado
if (((Cliente) ((List) clienteEncontrado).get(0))
.getIndicadorUso().equals(
ConstantesSistema.INDICADOR_USO_DESATIVO)) {
throw new ActionServletException("atencao.cliente.inativo",
null, ""
+ ((Cliente) ((List) clienteEncontrado)
.get(0)).getId());
}
manterGuiaPagamentoActionForm
.setNomeCliente(((Cliente) ((List) clienteEncontrado)
.get(0)).getNome());
if (((Cliente) ((List) clienteEncontrado).get(0))
.getClienteTipo().getIndicadorPessoaFisicaJuridica()
.equals(ClienteTipo.INDICADOR_PESSOA_FISICA)) {
manterGuiaPagamentoActionForm
.setCpf(((Cliente) ((List) clienteEncontrado)
.get(0)).getCpfFormatado());
manterGuiaPagamentoActionForm
.setProfissao(((Cliente) ((List) clienteEncontrado)
.get(0)).getProfissao() == null ? ""
: ((Cliente) ((List) clienteEncontrado)
.get(0)).getProfissao()
.getDescricao());
} else {
manterGuiaPagamentoActionForm
.setCpf(((Cliente) ((List) clienteEncontrado)
.get(0)).getCnpjFormatado());
manterGuiaPagamentoActionForm
.setRamoAtividade(((Cliente) ((List) clienteEncontrado)
.get(0)).getRamoAtividade() == null ? ""
: ((Cliente) ((List) clienteEncontrado)
.get(0)).getRamoAtividade()
.getDescricao());
}
filtroGuiaPagamento.adicionarParametro(new ParametroSimples(
FiltroGuiaPagamento.CLIENTE_ID,
((Cliente) ((List) clienteEncontrado).get(0)).getId()));
filtroGuiaPagamento.adicionarParametro(new ParametroSimples(
FiltroGuiaPagamento.DEBITO_CREDITO_SITUACAO_ATUAL_ID,
DebitoCreditoSituacao.NORMAL));
filtroGuiaPagamento.adicionarCaminhoParaCarregamentoEntidade("financiamentoTipo");
Collection guiasPagamentos = fachada.pesquisar(
filtroGuiaPagamento, GuiaPagamento.class.getName());
if (guiasPagamentos != null && !guiasPagamentos.isEmpty()) {
SistemaParametro sistemaParametro = fachada
.pesquisarParametrosDoSistema();
if (sistemaParametro.getIndicadorBloqueioGuiasOuAcresContratoParcelManterConta() != null
&& sistemaParametro.getIndicadorBloqueioGuiasOuAcresContratoParcelManterConta().equals(ConstantesSistema.SIM)) {
Collection<Integer> idsGuiasBloquear = fachada
.verificarBloqueioGuiaPagamento(guiasPagamentos);
Iterator iterator = guiasPagamentos.iterator();
Collection guiasNaoBloqueadas = new ArrayList();
while (iterator.hasNext()) {
GuiaPagamento guiaPagamento = (GuiaPagamento) iterator.next();
if (!idsGuiasBloquear.contains(guiaPagamento.getId())) {
guiasNaoBloqueadas.add(guiaPagamento);
}
}
if (guiasPagamentos != null && !guiasPagamentos.isEmpty()) {
sessao.setAttribute("guiasPagamentos", guiasNaoBloqueadas);
} else {
manterGuiaPagamentoActionForm.setCodigoCliente("");
throw new ActionServletException(
"atencao.guia_pagamento.cliente.inexistente", null,
""
+ ((Cliente) ((List) clienteEncontrado)
.get(0)).getId());
}
} else {
sessao.setAttribute("guiasPagamentos", guiasPagamentos);
}
} else {
manterGuiaPagamentoActionForm.setCodigoCliente("");
throw new ActionServletException(
"atencao.guia_pagamento.cliente.inexistente", null,
""
+ ((Cliente) ((List) clienteEncontrado)
.get(0)).getId());
}
} else {
throw new ActionServletException(
"atencao.pesquisa.cliente.inexistente.guia");
}
}
return retorno;
}
}