package gcom.gui.faturamento.conta;
import gcom.fachada.Fachada;
import gcom.gui.GcomAction;
import gcom.seguranca.acesso.PermissaoEspecial;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.util.Util;
import java.util.ArrayList;
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;
/**
* [UC0407] Filtrar Im�veis para Inserir ou Manter Conta
*
* @author Ana Maria
* @created 16/03/2007
*/
public class ExibirManterContaConjuntoImovelAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o mapeamento de retorno
ActionForward retorno = actionMapping.findForward("manterContaConjuntoImovel");
HttpSession sessao = httpServletRequest.getSession(false);
ManterContaConjuntoImovelActionForm manterContaConjuntoImovelActionForm = (ManterContaConjuntoImovelActionForm) actionForm;
Fachada fachada = Fachada.getInstancia();
Collection colecaoImovel = new ArrayList();
if (manterContaConjuntoImovelActionForm.getIndicadorContaPaga() == null) {
manterContaConjuntoImovelActionForm.setIndicadorContaPaga("2");
}
if (manterContaConjuntoImovelActionForm.getSomenteDebitoAutomatico() == null) {
manterContaConjuntoImovelActionForm.setSomenteDebitoAutomatico("2");
}
if (sessao.getAttribute("colecaoImovel") != null) {
colecaoImovel = (Collection) sessao.getAttribute("colecaoImovel");
}
manterContaConjuntoImovelActionForm.setQuatidadeImovel(Integer.toString(colecaoImovel.size()));
Date dataVencimentoContaInicio = null;
Date dataVencimentoContaFim = null;
if (manterContaConjuntoImovelActionForm.getDataVencimentoInicial() != null
&& !manterContaConjuntoImovelActionForm.getDataVencimentoInicial().equals("")) {
dataVencimentoContaInicio = Util.converteStringParaDate(manterContaConjuntoImovelActionForm.getDataVencimentoInicial());
}
if (manterContaConjuntoImovelActionForm.getDataVencimentoFinal() != null
&& !manterContaConjuntoImovelActionForm.getDataVencimentoFinal().equals("")) {
dataVencimentoContaFim = Util.converteStringParaDate(manterContaConjuntoImovelActionForm.getDataVencimentoFinal());
}
// Cliente Superior
if (sessao.getAttribute("codigoClienteSuperior") != null && sessao.getAttribute("nomeCliente") != null) {
manterContaConjuntoImovelActionForm.setCodigoClienteSuperior((String) sessao.getAttribute("codigoClienteSuperior"));
manterContaConjuntoImovelActionForm.setNomeCliente((String) sessao.getAttribute("nomeCliente"));
httpServletRequest.setAttribute("cliente", "ok");
httpServletRequest.setAttribute("superior", "ok");
}
// Cliente Im�vel
if (sessao.getAttribute("codigoCliente") != null && sessao.getAttribute("nomeCliente") != null) {
manterContaConjuntoImovelActionForm.setCodigoCliente((String) sessao.getAttribute("codigoCliente"));
manterContaConjuntoImovelActionForm.setNomeCliente((String) sessao.getAttribute("nomeCliente"));
httpServletRequest.setAttribute("cliente", "ok");
}
// Inscri��o Im�vel
if (sessao.getAttribute("inscricaoInicialImovel") != null) {
manterContaConjuntoImovelActionForm.setInscricaoInicial((String) sessao.getAttribute("inscricaoInicialImovel"));
} else {
manterContaConjuntoImovelActionForm.setInscricaoInicial("");
}
if (sessao.getAttribute("inscricaoDestinoImovel") != null) {
manterContaConjuntoImovelActionForm.setInscricaoFinal((String) sessao.getAttribute("inscricaoDestinoImovel"));
} else {
manterContaConjuntoImovelActionForm.setInscricaoFinal("");
}
String idGrupoFaturamentoSessao = (String) sessao.getAttribute("grupoFaturamento");
Integer idGrupoFaturamento = null;
if (idGrupoFaturamentoSessao != null && !idGrupoFaturamentoSessao.equals("")) {
manterContaConjuntoImovelActionForm.setIdGrupoFaturamento(idGrupoFaturamentoSessao);
idGrupoFaturamento = new Integer(idGrupoFaturamentoSessao);
} else {
manterContaConjuntoImovelActionForm.setIdGrupoFaturamento("");
}
Integer quantidadeConta = 0;
Integer quantidadeContaRevisao = 0;
Integer codigoCliente = null;
if (sessao.getAttribute("codigoCliente") != null) {
codigoCliente = new Integer((String) sessao.getAttribute("codigoCliente"));
}
Short relacaoTipo = null;
if (sessao.getAttribute("relacaoTipo") != null) {
relacaoTipo = ((Integer) sessao.getAttribute("relacaoTipo")).shortValue();
}
Integer somenteDebitoAutomatico = Integer.parseInt(manterContaConjuntoImovelActionForm.getSomenteDebitoAutomatico());
if (httpServletRequest.getParameter("quantidadeConta") != null) {
boolean isDebitoAutomatico;
if(somenteDebitoAutomatico == 1)
isDebitoAutomatico = true;
else
isDebitoAutomatico = false;
sessao.setAttribute("debitoAutomatico", isDebitoAutomatico);
Integer anoMes = Util.formatarMesAnoComBarraParaAnoMes(manterContaConjuntoImovelActionForm.getMesAnoConta());
Integer anoMesFinal = Util.formatarMesAnoComBarraParaAnoMes(manterContaConjuntoImovelActionForm.getMesAnoContaFinal());
String indicadorContaPaga = manterContaConjuntoImovelActionForm.getIndicadorContaPaga();
if (sessao.getAttribute("bancos") != null) {
String[] bancos = (String[]) sessao.getAttribute("bancos");
/*
* autor: Adriana Muniz
*
* Altera��o para a conta considerar como filtro grupo de
* faturamento, quando o mesmo estiver preenchido
*/
if (idGrupoFaturamento != null) {
quantidadeConta = fachada.countImoveisBancoDebitoAutomaticoPorGrupoFaturamento(bancos, anoMes, anoMesFinal,
dataVencimentoContaInicio, dataVencimentoContaFim, indicadorContaPaga, idGrupoFaturamento,
somenteDebitoAutomatico);
} else {
quantidadeConta = fachada.countImoveisBancoDebitoAutomatico(bancos, anoMes, anoMesFinal, dataVencimentoContaInicio,
dataVencimentoContaFim, indicadorContaPaga, somenteDebitoAutomatico);
}
// Collection imoveis =
// fachada.selecionarImoveisBancoDebitoAutomatico(bancos,
// anoMes,
// anoMesFinal, dataVencimentoContaInicio,
// dataVencimentoContaFim, indicadorContaPaga);
} else {
quantidadeConta = fachada.obterContasConjuntoImoveis(anoMes, colecaoImovel, codigoCliente, relacaoTipo,
dataVencimentoContaInicio, dataVencimentoContaFim, idGrupoFaturamento, anoMesFinal, indicadorContaPaga,
somenteDebitoAutomatico);
quantidadeContaRevisao = fachada.obterContasRevisaoConjuntoImoveis(anoMes, colecaoImovel, codigoCliente, relacaoTipo,
dataVencimentoContaInicio, dataVencimentoContaFim, idGrupoFaturamento, anoMesFinal, indicadorContaPaga);
}
if (!quantidadeConta.equals(quantidadeContaRevisao)) {
sessao.setAttribute("contaRevisao", "contaRevisao");
} else {
sessao.removeAttribute("contaRevisao");
}
manterContaConjuntoImovelActionForm.setQuatidadeConta(quantidadeConta.toString());
} else if (httpServletRequest.getParameter("cancelar") == null) {
manterContaConjuntoImovelActionForm.setMesAnoConta("");
manterContaConjuntoImovelActionForm.setMesAnoContaFinal("");
manterContaConjuntoImovelActionForm.setDataVencimentoInicial("");
manterContaConjuntoImovelActionForm.setDataVencimentoFinal("");
manterContaConjuntoImovelActionForm.setQuatidadeConta("");
}
// Seleciona a quantidade de contas depois do cancelamento
if (httpServletRequest.getParameter("cancelar") != null) {
httpServletRequest.setAttribute("reloadPage", "ok");
httpServletRequest.setAttribute("mensagemSuceso", "Cancelar conjunto de contas encaminhado para processamento.");
}
// Fechar popup de retirar d�bito cobrado
if (httpServletRequest.getParameter("fecharPopup") != null) {
sessao.removeAttribute("debitosTipoRetirar");
sessao.removeAttribute("RetirarDebitoCobradoActionForm");
}
if (httpServletRequest.getParameter("mensagemSuceso") != null) {
httpServletRequest.setAttribute("mensagemSuceso", "Alterar vencimento conjunto de contas encaminhado para processamento.");
}
if (httpServletRequest.getParameter("mensagemSucesoRetificarConjuntoConta") != null) {
httpServletRequest.setAttribute("mensagemSuceso", "Retifica��o de um conjunto de contas foi para batch.");
}
/*
* Colocado por Bruno Barros em 05 de Janeiro de 2009 Verificamos se o
* usu�rio possue permiss�o especial para atualizar ou retificar contas
* pagas
*/
boolean usuarioPodeAtualizarRetificarContasPagas = fachada.verificarPermissaoEspecial(
PermissaoEspecial.ATUALIZAR_RETIFICAR_CONTAS_PAGAS, (Usuario) sessao.getAttribute(Usuario.USUARIO_LOGADO));
httpServletRequest.setAttribute("usuarioPodeAtualizarRetificarContasPagas", usuarioPodeAtualizarRetificarContasPagas);
// *****************************************************************
return retorno;
}
}