package gcom.gui.cobranca;
import gcom.cadastro.imovel.ImovelPerfil;
import gcom.cadastro.localidade.GerenciaRegional;
import gcom.cadastro.localidade.UnidadeNegocio;
import gcom.cobranca.CmdEmpresaCobrancaContaLigacaoAguaSituacao;
import gcom.fachada.Fachada;
import gcom.gui.GcomAction;
import gcom.util.Util;
import java.math.BigDecimal;
import java.util.ArrayList;
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;
/**
* [UC0896] Gerar Arquivo Texto das Contas em Cobran�a por Empresa
*
* @author R�mulo Aur�lio
* @since 29/10/2008
*/
public class ExibirConsultarContasComandoCobrancaPopupAction extends GcomAction {
/**
*
* @param actionMapping
* @param actionForm
* @param httpServletRequest
* @param httpServletResponse
* @return
*/
@SuppressWarnings("unchecked")
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o mapeamento de retorno
ActionForward retorno = actionMapping
.findForward("exibirConsultarContasComandoCobrancaPopupAction");
GerarArquivoTextoContasCobrancaEmpresaActionForm form = (GerarArquivoTextoContasCobrancaEmpresaActionForm) actionForm;
HttpSession sessao = httpServletRequest.getSession(false);
Fachada fachada = Fachada.getInstancia();
String pesquisar = httpServletRequest.getParameter("pesquisa");
boolean Entrou = false;
String idComando = httpServletRequest.getParameter("idComandoEmpresaCobrancaConta");
Date dataIncial = (Date) sessao.getAttribute("dataInicial");
Date dataFinal = (Date) sessao.getAttribute("dataFinal");
if(pesquisar!=null && pesquisar.equals("sim") && !Entrou){
Object[] dados = fachada.
pesquisarDadosPopupExtensaoComando(new Integer(idComando),dataIncial,dataFinal);
//Nome empresa
if (dados[0] != null) {
form.setNomeEmpresa(dados[0].toString());
}
// Data Execucao Comando
if (dados[1] != null) {
form.setDataExecucaoComando(Util.formatarData((Date) dados[1]));
}
// Periodo Referencia Contas Inicial
if (dados[2] != null) {
form.setPeriodoReferenciaContasInicial((Util
.formatarAnoMesParaMesAno(new Integer(dados[2].toString()).intValue())));
}
// Periodo Referencia Contas Final
if (dados[3] != null) {
form.setPeriodoReferenciaContasFinal((Util
.formatarAnoMesParaMesAno(new Integer(dados[3].toString()).intValue())));
}
// Periodo Vencimento Contas Inicial
if (dados[4] != null) {
form.setPeriodoVencimentoContasInicial(Util
.formatarData((Date) dados[4]));
}
// Periodo Vencimento Contas Final
if (dados[5] != null) {
form.setPeriodoVencimentoContasFinal(Util
.formatarData((Date) dados[5]));
}
// Intervalo Valor Contas Minimo
if (dados[6] != null) {
form.setIntervaloValorContasInicial(
Util.formatarMoedaReal(new BigDecimal(dados[6].toString())));
}
// Intervalo Valor Contas Maximo
if (dados[7] != null) {
form.setIntervaloValorContasFinal(
Util.formatarMoedaReal(new BigDecimal(dados[7].toString())));
}
Object[] dadosQtdContas = fachada.pesquisarDadosQtdContasEDiasVencidos(new Integer(idComando));
//Quantidade de Contas
if(dadosQtdContas[0] != null && dadosQtdContas[1] != null){
form.setQtdContasInicial(dadosQtdContas[0].toString());
form.setQtdContasFinal(dadosQtdContas[1].toString());
}
//Quantidade de Dias de Vencimento
if (dadosQtdContas[2] != null) {
form.setQtdDeDiasVencimento(dadosQtdContas[2].toString());
}
//LigacaoAguaSituacao
if (dadosQtdContas[3] != null && dadosQtdContas[4] != null) {
form.setIdLigacaoAguaSituacao(dadosQtdContas[3].toString());
form.setNomeLigacaoAguaSituacao(dadosQtdContas[4].toString());
sessao.removeAttribute("colecaoLigacaoAguaSituacao");
} else {
Collection<CmdEmpresaCobrancaContaLigacaoAguaSituacao> colecaoLigacaoAguaSituacao = fachada.pesquisarColecaoLigacaoAguaSituacaoPorComandoEmpresaCobrancaConta(new Integer(idComando));
if (colecaoLigacaoAguaSituacao != null && !colecaoLigacaoAguaSituacao.isEmpty()) {
sessao.setAttribute("colecaoLigacaoAguaSituacao", colecaoLigacaoAguaSituacao);
} else {
sessao.removeAttribute("colecaoLigacaoAguaSituacao");
}
}
// Im�vel
if (dados[8] != null) {
form.setIdImovel(dados[8].toString());
}
// Dados Cliente
if (dados[9] != null) {
form.setIdCliente(dados[9].toString());
}
// UNidade de Negocio
if (dados[10] != null) {
form.setIdUnidadeNegocio(dados[10].toString());
sessao.removeAttribute("colecaoUnidadeNegocio");
} else {
Collection<UnidadeNegocio> colecaoUnidadeNegocio = this.pesquisarColecaoUnidadeNegocio(new Integer(idComando));
if (colecaoUnidadeNegocio != null && !colecaoUnidadeNegocio.isEmpty()) {
sessao.setAttribute("colecaoUnidadeNegocio", colecaoUnidadeNegocio);
} else {
sessao.removeAttribute("colecaoUnidadeNegocio");
}
}
if (dados[11] != null) {
form.setNomeUnidadeNegocio(dados[11].toString());
}
// Intervalo de localizacao
if (dados[12] != null) {
form.setIntervaloLocalizacaoInicial(dados[12].toString());
}
if (dados[13] != null) {
form.setIntervaloLocalizacaoFinal(dados[13].toString());
}
// Intervalo de Setor Comercial
if (dados[14] != null) {
form.setIntervaloSetorComercialInicial(dados[14].toString());
}
if (dados[15] != null) {
form.setIntervaloSetorComercialFinal(dados[15].toString());
}
// Perfil do Im�vel
if (dados[16] != null) {
form.setIdImovelPerfil(dados[16].toString());
sessao.removeAttribute("colecaoImovelPerfil");
} else {
Collection<ImovelPerfil> colecaoImovelPerfil = this.pesquisarColecaoImovelPerfil(new Integer(idComando));
if (colecaoImovelPerfil != null && !colecaoImovelPerfil.isEmpty()) {
sessao.setAttribute("colecaoImovelPerfil", colecaoImovelPerfil);
} else {
sessao.removeAttribute("colecaoImovelPerfil");
}
}
if (dados[17] != null) {
form.setDsImovelPerfil(dados[17].toString());
}
// Ger�ncia Regional
if (dados[18] != null) {
form.setIdGerenciaRegional(dados[18].toString());
sessao.removeAttribute("colecaoGerenciaRegional");
} else {
Collection<GerenciaRegional> colecaoGerenciaRegional = this.pesquisarColecaoGerenciaRegional(new Integer(idComando));
if (colecaoGerenciaRegional != null && !colecaoGerenciaRegional.isEmpty()) {
sessao.setAttribute("colecaoGerenciaRegional", colecaoGerenciaRegional);
} else {
sessao.removeAttribute("colecaoGerenciaRegional");
}
}
if (dados[19] != null) {
form.setNomeGerenciaRegional(dados[19].toString());
}
// Intervalo de Quadra
if (dados[20] != null && !dados[20].equals("") && ((Integer)dados[20]).compareTo(0) != 0) {
form.setIntervaloQuadraInicial(dados[20].toString());
}
if (dados[21] != null && !dados[21].equals("") && ((Integer)dados[21]).compareTo(0) != 0) {
form.setIntervaloQuadraFinal(dados[21].toString());
}
// Quantidade total de contas selecionadas para cobranca
if (dados[22] != null) {
form.setQtdeTotalContasCobranca(dados[22].toString());
}
// Valor Total de contas selecionadas para cobranca
if (dados[23] != null) {
form.setValorTotalContasCobranca(Util
.formatarMoedaReal(new BigDecimal(dados[23].toString())));
}
// Quantidade total de contas selecionadas para Criterios
if (dados[24] != null) {
form.setQtdeContasCriterioComando(dados[24].toString());
}
// Valor Total de contas selecionadas para Criterios COmando
if (dados[25] != null) {
form.setValorContasCriterioComando(Util.formatarMoedaReal(new BigDecimal(dados[25].toString())));
}
Entrou = true;
}
if(pesquisar!=null && pesquisar.equals("nao")){
httpServletRequest.setAttribute("pesquisa" ,"nao");
httpServletRequest.setAttribute("idComandoEmpresaCobrancaConta",idComando);
}
return retorno;
}
private Collection<ImovelPerfil> pesquisarColecaoImovelPerfil(Integer idComando) {
Collection<ImovelPerfil> retorno = new ArrayList();
Collection<Object[]> colecaoDados = Fachada.getInstancia().pesquisarDadosPopupExtensaoComandoImovelPerfil(idComando);
if (colecaoDados != null && !colecaoDados.isEmpty()) {
Iterator iterator = colecaoDados.iterator();
while(iterator.hasNext()) {
Object[] dados = (Object[]) iterator.next();
ImovelPerfil imovelPerfil = new ImovelPerfil();
if (dados[0] != null && dados[1] != null) {
if (dados[0] != null) {
imovelPerfil.setId((Integer) dados[0]);
}
if (dados[1] != null) {
imovelPerfil.setDescricao(dados[1].toString());
}
retorno.add(imovelPerfil);
}
}
}
return retorno;
}
private Collection<GerenciaRegional> pesquisarColecaoGerenciaRegional(Integer idComando) {
Collection<GerenciaRegional> retorno = new ArrayList();
Collection<Object[]> colecaoDados = Fachada.getInstancia().pesquisarDadosPopupExtensaoComandoGerenciaRegional(idComando);
if (colecaoDados != null && !colecaoDados.isEmpty()) {
Iterator iterator = colecaoDados.iterator();
while(iterator.hasNext()) {
Object[] dados = (Object[]) iterator.next();
GerenciaRegional gerenciaRegional = new GerenciaRegional();
if (dados[0] != null && dados[1] != null) {
if (dados[0] != null) {
gerenciaRegional.setId((Integer) dados[0]);
}
if (dados[1] != null) {
gerenciaRegional.setNome(dados[1].toString());
}
retorno.add(gerenciaRegional);
}
}
}
return retorno;
}
private Collection<UnidadeNegocio> pesquisarColecaoUnidadeNegocio(Integer idComando) {
Collection<UnidadeNegocio> retorno = new ArrayList();
Collection<Object[]> colecaoDados = Fachada.getInstancia().pesquisarDadosPopupExtensaoComandoUnidadeNegocio(idComando);
if (colecaoDados != null && !colecaoDados.isEmpty()) {
Iterator iterator = colecaoDados.iterator();
while(iterator.hasNext()) {
Object[] dados = (Object[]) iterator.next();
UnidadeNegocio unidadeNegocio = new UnidadeNegocio();
if (dados[0] != null && dados[1] != null) {
if (dados[0] != null) {
unidadeNegocio.setId((Integer) dados[0]);
}
if (dados[1] != null) {
unidadeNegocio.setNome(dados[1].toString());
}
retorno.add(unidadeNegocio);
}
}
}
return retorno;
}
}