package gcom.gui.relatorio.cadastro.imovel;
import gcom.atendimentopublico.ligacaoagua.FiltroLigacaoAguaSituacao;
import gcom.atendimentopublico.ligacaoagua.LigacaoAguaSituacao;
import gcom.cadastro.imovel.Categoria;
import gcom.cadastro.imovel.FiltroCategoria;
import gcom.cadastro.localidade.FiltroGerenciaRegional;
import gcom.cadastro.localidade.FiltroLocalidade;
import gcom.cadastro.localidade.FiltroQuadra;
import gcom.cadastro.localidade.FiltroSetorComercial;
import gcom.cadastro.localidade.FiltroUnidadeNegocio;
import gcom.cadastro.localidade.GerenciaRegional;
import gcom.cadastro.localidade.Localidade;
import gcom.cadastro.localidade.SetorComercial;
import gcom.cadastro.localidade.UnidadeNegocio;
import gcom.cadastro.sistemaparametro.SistemaParametro;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.Collection;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
* [UC00730] Gerar Relat�rio de Im�veis com Faturas Recentes em Dia e Faturas Antigas em Atraso
*
* @author Rafael Pinto
* @date 08/01/2008
*/
public class ExibirGerarRelatorioImoveisFaturasRecentesDiaFaturasAntigasAtrasoAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o mapeamento de retorno
ActionForward retorno = actionMapping.findForward("exibirGerarRelatorioImoveisFaturasRecentesDiaFaturasAntigasAtraso");
GerarRelatorioImoveisFaturasRecentesDiaFaturasAntigasAtrasoActionForm form =
(GerarRelatorioImoveisFaturasRecentesDiaFaturasAntigasAtrasoActionForm) actionForm;
// Flag indicando que o usu�rio fez uma consulta a partir da tecla Enter
String objetoConsulta = httpServletRequest.getParameter("objetoConsulta");
// Pesquisar Localidade
if (objetoConsulta != null && !objetoConsulta.trim().equals("") &&
(objetoConsulta.trim().equals("1")|| objetoConsulta.trim().equals("3")) ) {
// Faz a consulta de Localidade
this.pesquisarLocalidade(form,objetoConsulta);
}
// Pesquisar Setor Comercial
if (objetoConsulta != null && !objetoConsulta.trim().equals("") &&
(objetoConsulta.trim().equals("2") || objetoConsulta.trim().equals("4")) ) {
// Faz a consulta de Setor Comercial
this.pesquisarSetorComercial(form,objetoConsulta);
}
this.pesquisarGerenciaRegional(httpServletRequest);
this.pesquisarUnidadeNegocio(httpServletRequest,form);
this.pesquisarLigacaoAguaSituacao(httpServletRequest);
this.pesquisarCategoria(httpServletRequest);
SistemaParametro sistemaParametro = this.getFachada().pesquisarParametrosDoSistema();
Integer anoMesFaturamento = sistemaParametro.getAnoMesFaturamento();
int anoMesSubtraido = Util.subtrairMesDoAnoMes(anoMesFaturamento,2);
form.setReferenciaFaturasDiaFinal(Util.formatarAnoMesParaMesAno(anoMesSubtraido));
if(form.getReferenciaFaturasDiaInicial() != null && !form.getReferenciaFaturasDiaInicial().equals("")){
boolean ehValidaReferencia = Util.validarMesAno(form.getReferenciaFaturasDiaInicial());
if(ehValidaReferencia){
int referenciaFaturaDiaInicial =
Util.formatarMesAnoComBarraParaAnoMes(form.getReferenciaFaturasDiaInicial());
int referenciaFaturaDiaInicialSubtraido = Util.subtrairMesDoAnoMes(referenciaFaturaDiaInicial,1);
form.setReferenciaFaturasAtrasoFinal(Util.formatarAnoMesParaMesAno(referenciaFaturaDiaInicialSubtraido));
}else{
throw new ActionServletException("atencao.ano_mes_referencia.invalida");
}
}
//Seta os request�s encontrados
this.setaRequest(httpServletRequest,form);
return retorno;
}
/**
* Pesquisa Localidade
*
* @author Rafael Pinto
* @date 08/01/2008
*/
private void pesquisarLocalidade(GerarRelatorioImoveisFaturasRecentesDiaFaturasAntigasAtrasoActionForm form,
String objetoConsulta) {
Object local = form.getLocalidadeInicial();
if(!objetoConsulta.trim().equals("1")){
local = form.getLocalidadeFinal();
}
FiltroLocalidade filtroLocalidade = new FiltroLocalidade();
filtroLocalidade.adicionarParametro(
new ParametroSimples(FiltroLocalidade.ID,local));
// Recupera Localidade
Collection colecaoLocalidade =
this.getFachada().pesquisar(filtroLocalidade, Localidade.class.getName());
if (colecaoLocalidade != null && !colecaoLocalidade.isEmpty()) {
Localidade localidade =
(Localidade) Util.retonarObjetoDeColecao(colecaoLocalidade);
if(objetoConsulta.trim().equals("1")){
form.setLocalidadeInicial(localidade.getId().toString());
form.setNomeLocalidadeInicial(localidade.getDescricao());
}
form.setLocalidadeFinal(localidade.getId().toString());
form.setNomeLocalidadeFinal(localidade.getDescricao());
} else {
if(objetoConsulta.trim().equals("1")){
form.setLocalidadeInicial(null);
form.setNomeLocalidadeInicial("Localidade Inicial inexistente");
form.setLocalidadeFinal(null);
form.setNomeLocalidadeFinal(null);
}else{
form.setLocalidadeFinal(null);
form.setNomeLocalidadeFinal("Localidade Final inexistente");
}
}
}
/**
* Pesquisa Setor comercial
*
* @author Rafael Pinto
* @date 08/01/2008
*/
private void pesquisarSetorComercial(GerarRelatorioImoveisFaturasRecentesDiaFaturasAntigasAtrasoActionForm form,
String objetoConsulta) {
Object local = form.getLocalidadeInicial();
Object setor = form.getSetorComercialInicial();
if(!objetoConsulta.trim().equals("2")){
local = form.getLocalidadeFinal();
setor = form.getSetorComercialFinal();
}
FiltroSetorComercial filtroSetorComercial = new FiltroSetorComercial();
filtroSetorComercial.adicionarParametro(
new ParametroSimples(FiltroSetorComercial.CODIGO_SETOR_COMERCIAL,setor));
filtroSetorComercial.adicionarParametro(
new ParametroSimples(FiltroSetorComercial.LOCALIDADE,local));
// Recupera Setor Comercial
Collection colecaoSetorComercial =
this.getFachada().pesquisar(filtroSetorComercial, SetorComercial.class.getName());
if (colecaoSetorComercial != null && !colecaoSetorComercial.isEmpty()) {
SetorComercial setorComercial =
(SetorComercial) Util.retonarObjetoDeColecao(colecaoSetorComercial);
if(objetoConsulta.trim().equals("2")){
form.setSetorComercialInicial(""+setorComercial.getCodigo());
form.setNomeSetorComercialInicial(setorComercial.getDescricao());
}
form.setSetorComercialFinal(""+setorComercial.getCodigo());
form.setNomeSetorComercialFinal(setorComercial.getDescricao());
} else {
if(objetoConsulta.trim().equals("2")){
form.setSetorComercialInicial(null);
form.setNomeSetorComercialInicial("Setor Comercial Inicial inexistente");
form.setSetorComercialFinal(null);
form.setNomeSetorComercialFinal(null);
}else{
form.setSetorComercialFinal(null);
form.setNomeSetorComercialFinal("Setor Comercial Final inexistente");
}
}
}
/**
* Pesquisa Gerencial Regional
*
* @author Rafael Pinto
* @date 08/01/2008
*/
private void pesquisarGerenciaRegional(HttpServletRequest httpServletRequest){
FiltroGerenciaRegional filtroGerenciaRegional = new FiltroGerenciaRegional();
filtroGerenciaRegional.setConsultaSemLimites(true);
filtroGerenciaRegional.setCampoOrderBy(FiltroGerenciaRegional.NOME);
filtroGerenciaRegional.adicionarParametro(
new ParametroSimples(FiltroQuadra.INDICADORUSO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection colecaoGerenciaRegional =
this.getFachada().pesquisar(filtroGerenciaRegional,GerenciaRegional.class.getName());
if (colecaoGerenciaRegional == null || colecaoGerenciaRegional.isEmpty()) {
throw new ActionServletException("atencao.naocadastrado", null,"Ger�ncia Regional");
} else {
httpServletRequest.setAttribute("colecaoGerenciaRegional",colecaoGerenciaRegional);
}
}
/**
* Pesquisa Unidade Negocio
*
* @author Rafael Pinto
* @date 08/01/2008
*/
private void pesquisarUnidadeNegocio(HttpServletRequest httpServletRequest,
GerarRelatorioImoveisFaturasRecentesDiaFaturasAntigasAtrasoActionForm form){
FiltroUnidadeNegocio filtroUnidadeNegocio = new FiltroUnidadeNegocio();
filtroUnidadeNegocio.setConsultaSemLimites(true);
filtroUnidadeNegocio.setCampoOrderBy(FiltroUnidadeNegocio.NOME);
if(form.getGerenciaRegional() != null &&
!form.getGerenciaRegional().equals(""+ConstantesSistema.NUMERO_NAO_INFORMADO)){
filtroUnidadeNegocio.adicionarParametro(
new ParametroSimples(FiltroUnidadeNegocio.ID_GERENCIA,
form.getGerenciaRegional()));
}
filtroUnidadeNegocio.adicionarParametro(
new ParametroSimples(FiltroUnidadeNegocio.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection colecaoUnidadeNegocio =
this.getFachada().pesquisar(filtroUnidadeNegocio,UnidadeNegocio.class.getName());
if (colecaoUnidadeNegocio == null || colecaoUnidadeNegocio.isEmpty()) {
throw new ActionServletException("atencao.naocadastrado", null,"Unidade de Neg�cio");
} else {
httpServletRequest.setAttribute("colecaoUnidadeNegocio",colecaoUnidadeNegocio);
}
}
/**
* Pesquisa Situacao Ligacao Agua
*
* @author Rafael Pinto
* @date 08/01/2008
*/
private void pesquisarLigacaoAguaSituacao(HttpServletRequest httpServletRequest){
FiltroLigacaoAguaSituacao filtroLigacaoAguaSituacao = new FiltroLigacaoAguaSituacao();
filtroLigacaoAguaSituacao.setConsultaSemLimites(true);
filtroLigacaoAguaSituacao.setCampoOrderBy(FiltroLigacaoAguaSituacao.DESCRICAO);
filtroLigacaoAguaSituacao.adicionarParametro(
new ParametroSimples(FiltroLigacaoAguaSituacao.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection colecaoSituacaoLigacaoAgua =
this.getFachada().pesquisar(filtroLigacaoAguaSituacao,LigacaoAguaSituacao.class.getName());
if (colecaoSituacaoLigacaoAgua == null || colecaoSituacaoLigacaoAgua.isEmpty()) {
throw new ActionServletException("atencao.naocadastrado", null,"Liga�ao de �gua");
} else {
httpServletRequest.setAttribute("colecaoSituacaoLigacaoAgua",colecaoSituacaoLigacaoAgua);
}
}
/**
* Seta os request com os id encontrados
*
* @author Rafael Pinto
* @date 08/01/2008
*/
private void setaRequest(HttpServletRequest httpServletRequest,
GerarRelatorioImoveisFaturasRecentesDiaFaturasAntigasAtrasoActionForm form){
//Localidade Inicial
if(form.getLocalidadeInicial() != null &&
!form.getLocalidadeInicial().equals("") &&
form.getNomeLocalidadeInicial() != null &&
!form.getNomeLocalidadeInicial().equals("")){
httpServletRequest.setAttribute("localidadeInicialEncontrada","true");
httpServletRequest.setAttribute("localidadeFinalEncontrada","true");
}else{
if(form.getLocalidadeFinal() != null &&
!form.getLocalidadeFinal().equals("") &&
form.getNomeLocalidadeFinal() != null &&
!form.getNomeLocalidadeFinal().equals("")){
httpServletRequest.setAttribute("localidadeFinalEncontrada","true");
}
}
//Setor Comercial Inicial
if(form.getSetorComercialInicial() != null &&
!form.getSetorComercialInicial().equals("") &&
form.getNomeSetorComercialInicial() != null &&
!form.getNomeSetorComercialInicial().equals("")){
httpServletRequest.setAttribute("setorComercialInicialEncontrado","true");
httpServletRequest.setAttribute("setorComercialFinalEncontrado","true");
}else{
if(form.getSetorComercialFinal() != null &&
!form.getSetorComercialFinal().equals("") &&
form.getNomeSetorComercialFinal() != null &&
!form.getNomeSetorComercialFinal().equals("")){
httpServletRequest.setAttribute("setorComercialFinalEncontrado","true");
}
}
}
/**
* Pesquisa Gerencial Regional
*
* @author Rafael Pinto
* @date 08/01/2008
*/
private void pesquisarCategoria(HttpServletRequest httpServletRequest){
FiltroCategoria filtroCategoria = new FiltroCategoria();
filtroCategoria.setConsultaSemLimites(true);
filtroCategoria.setCampoOrderBy(FiltroCategoria.DESCRICAO);
filtroCategoria.adicionarParametro(
new ParametroSimples(FiltroQuadra.INDICADORUSO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection colecaoCategoria =
this.getFachada().pesquisar(filtroCategoria, Categoria.class.getName());
if (colecaoCategoria == null || colecaoCategoria.isEmpty()) {
throw new ActionServletException("atencao.naocadastrado", null,"Categoria");
} else {
httpServletRequest.setAttribute("colecaoCategoria",colecaoCategoria);
}
}
}