package gcom.gui.relatorio.cadastro.imovel;
import gcom.atendimentopublico.ligacaoagua.FiltroLigacaoAguaSituacao;
import gcom.atendimentopublico.ligacaoagua.LigacaoAguaSituacao;
import gcom.cadastro.cliente.Cliente;
import gcom.cadastro.cliente.ClienteRelacaoTipo;
import gcom.cadastro.cliente.EsferaPoder;
import gcom.cadastro.cliente.FiltroEsferaPoder;
import gcom.cadastro.imovel.Categoria;
import gcom.cadastro.imovel.FiltroCategoria;
import gcom.cadastro.imovel.FiltroImovelPerfil;
import gcom.cadastro.imovel.ImovelPerfil;
import gcom.cobranca.CobrancaSituacao;
import gcom.cobranca.FiltroCobrancaSituacao;
import gcom.fachada.Fachada;
import gcom.relatorio.ExibidorProcessamentoTarefaRelatorio;
import gcom.relatorio.cadastro.imovel.FiltrarRelatorioImoveisFaturasAtrasoHelper;
import gcom.relatorio.cadastro.imovel.RelatorioImoveisFaturasAtrasoAgrupadasCliente;
import gcom.relatorio.cadastro.imovel.RelatorioImoveisFaturasAtrasoAgrupadasLocalizacao;
import gcom.relatorio.cadastro.imovel.RelatorioImoveisFaturasAtrasoDescritasCliente;
import gcom.relatorio.cadastro.imovel.RelatorioImoveisFaturasAtrasoDescritasLocalizacao;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.tarefa.TarefaRelatorio;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.ArrayList;
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;
/**
* [UC00725] Gerar Relat�rio de Im�veis por Situa��o da Liga��o de �gua
*
* @author Rafael Pinto
*
* @date 28/11/2007
*/
public class GerarRelatorioImoveisFaturasAtrasoAction extends ExibidorProcessamentoTarefaRelatorio {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
httpServletRequest.setAttribute("telaSucessoRelatorio",true);
GerarRelatorioImoveisFaturasAtrasoActionForm form =
(GerarRelatorioImoveisFaturasAtrasoActionForm) actionForm;
FiltrarRelatorioImoveisFaturasAtrasoHelper filtro = criarFiltro(form);
String tipoRelatorio = httpServletRequest.getParameter("tipoRelatorio");
if (tipoRelatorio == null) {
tipoRelatorio = TarefaRelatorio.TIPO_PDF + "";
}
TarefaRelatorio relatorio = null;
relatorio = definirTipoRelatorio(form, getUsuarioLogado(httpServletRequest));
relatorio.addParametro("filtrarRelatorioImoveisFaturasAtrasoHelper", filtro);
relatorio.addParametro("tipoFormatoRelatorio",Integer.parseInt(tipoRelatorio));
configurarParametrosRelatorio(relatorio, form);
return
processarExibicaoRelatorio(relatorio, tipoRelatorio, httpServletRequest,
httpServletResponse, actionMapping);
}
/**
* Esse m�todo instancia e retorna o tipo de relatorio correto de acordo com os filtros
* informados pelo usu�rio.
*
*@since 02/09/2009
*@author Marlon Patrick
*/
private TarefaRelatorio definirTipoRelatorio(GerarRelatorioImoveisFaturasAtrasoActionForm form,
Usuario usuarioLogado) {
boolean isCriterioFiltroLocalidade = form.getCriterioFiltro().equals("1");
boolean isConsultaAgrupada = form.getTipo().equals("A");
if(isConsultaAgrupada){
if(isCriterioFiltroLocalidade){
return
new RelatorioImoveisFaturasAtrasoAgrupadasLocalizacao(usuarioLogado);
}
return new RelatorioImoveisFaturasAtrasoAgrupadasCliente(usuarioLogado);
}
if(isCriterioFiltroLocalidade){
return
new RelatorioImoveisFaturasAtrasoDescritasLocalizacao(usuarioLogado);
}
return new RelatorioImoveisFaturasAtrasoDescritasCliente(usuarioLogado);
}
/**
* Este m�todo cria e configura o filtro necess�rio a gera��o do relat�rio.
*
*
*@since 25/08/2009
*@author Marlon Patrick
*/
private FiltrarRelatorioImoveisFaturasAtrasoHelper criarFiltro(
GerarRelatorioImoveisFaturasAtrasoActionForm form) {
FiltrarRelatorioImoveisFaturasAtrasoHelper filtro =
new FiltrarRelatorioImoveisFaturasAtrasoHelper();
if (Util.verificarNaoVazio(form.getCriterioFiltro())) {
filtro.setCriterioFiltro(new Integer(form.getCriterioFiltro()));
}
if (Util.verificarNaoVazio(form.getGerenciaRegional())
&& !form.getGerenciaRegional().equals(""+ConstantesSistema.NUMERO_NAO_INFORMADO) ) {
filtro.setGerenciaRegional(new Integer(form.getGerenciaRegional()));
}
if (Util.verificarNaoVazio(form.getUnidadeNegocio())
&& !form.getUnidadeNegocio().equals(""+ConstantesSistema.NUMERO_NAO_INFORMADO) ) {
filtro.setUnidadeNegocio(new Integer(form.getUnidadeNegocio()));
}
if (Util.verificarNaoVazio(form.getLocalidadeInicial())) {
filtro.setLocalidadeInicial(new Integer(form.getLocalidadeInicial()));
}
if (Util.verificarNaoVazio(form.getSetorComercialInicial())) {
filtro.setSetorComercialInicial(new Integer(form.getSetorComercialInicial()));
}
if (Util.verificarNaoVazio(form.getRotaInicial())) {
filtro.setRotaInicial(new Short(form.getRotaInicial()));
}
if (Util.verificarNaoVazio(form.getSequencialRotaInicial())) {
filtro.setSequencialRotalInicial(new Integer(form.getSequencialRotaInicial()));
}
if (Util.verificarNaoVazio(form.getLocalidadeFinal())) {
filtro.setLocalidadeFinal(new Integer(form.getLocalidadeFinal()));
}
if (Util.verificarNaoVazio(form.getSetorComercialFinal())) {
filtro.setSetorComercialFinal(new Integer(form.getSetorComercialFinal()));
}
if (Util.verificarNaoVazio(form.getRotaFinal())) {
filtro.setRotaFinal(new Short(form.getRotaFinal()));
}
if (Util.verificarNaoVazio(form.getSequencialRotaFinal())) {
filtro.setSequencialRotalFinal(new Integer(form.getSequencialRotaFinal()));
}
if (Util.verificarNaoVazio(form.getCodigoCliente())) {
filtro.setCliente(new Integer(form.getCodigoCliente()));
}
if (Util.verificarNaoVazio(form.getCodigoClienteSuperior())) {
filtro.setClienteSuperior(new Integer(form.getCodigoClienteSuperior()));
}
if (Util.verificarNaoVazio(form.getResponsavel())) {
filtro.setResponsavel(new Integer(form.getResponsavel()));
}
if (Util.verificarNaoVazio(form.getTipoRelacao())
&& !form.getTipoRelacao().equals(""+ConstantesSistema.NUMERO_NAO_INFORMADO)) {
filtro.setTipoRelacao(new Integer(form.getTipoRelacao()));
}
if (Util.verificarNaoVazio(form.getHidrometro()) && !form.getHidrometro().equals("0")){
if(form.getHidrometro().equals("1")){
filtro.setHidrometro("S");
}else if(form.getHidrometro().equals("2")){
filtro.setHidrometro("N");
}
}
if ( !Util.isVazioOrNulo(form.getSituacaoLigacaoAgua())) {
Collection<Integer> colecao = new ArrayList<Integer>();
String[] array = form.getSituacaoLigacaoAgua();
for(String situacao: array){
if( !situacao.equals(String.valueOf(ConstantesSistema.NUMERO_NAO_INFORMADO))){
colecao.add(new Integer(situacao));
}
}
if(!colecao.isEmpty()){
filtro.setSituacaoLigacaoAgua(colecao);
}
}
if ( !Util.isVazioOrNulo(form.getCategorias())) {
Collection<Integer> colecao = new ArrayList<Integer>();
String[] array = form.getCategorias();
for(String categoria: array){
if( !categoria.equals(String.valueOf(ConstantesSistema.NUMERO_NAO_INFORMADO))){
colecao.add(new Integer(categoria));
}
}
if(!colecao.isEmpty()){
filtro.setCategorias(colecao);
}
}
if ( !Util.isVazioOrNulo(form.getPerfilImovel())) {
Collection<Integer> colecao = new ArrayList<Integer>();
String[] array = form.getPerfilImovel();
for(String perfilImovel: array){
if( !perfilImovel.equals(String.valueOf(ConstantesSistema.NUMERO_NAO_INFORMADO))){
colecao.add(new Integer(perfilImovel));
}
}
if(!colecao.isEmpty()){
filtro.setPerfisImovel(colecao);
}
}
if (Util.verificarNaoVazio(form.getSituacaoCobranca())
&& !form.getSituacaoCobranca().equals(""+ConstantesSistema.NUMERO_NAO_INFORMADO) ) {
filtro.setSituacaoCobranca(new Integer(form.getSituacaoCobranca()));
}
if (Util.verificarNaoVazio(form.getQuantidadeFaturasAtrasoInicial())) {
filtro.setQuantidadeFaturasAtrasoInicial(new Integer(form.getQuantidadeFaturasAtrasoInicial()));
}
if ( Util.verificarNaoVazio(form.getQuantidadeFaturasAtrasoFinal())) {
filtro.setQuantidadeFaturasAtrasoFinal(new Integer(form.getQuantidadeFaturasAtrasoFinal()));
}
if (Util.verificarNaoVazio(form.getValorFaturasAtrasoInicial())) {
filtro.setValorFaturasAtrasoInicial(new Float(form.getValorFaturasAtrasoInicial()));
}
if (Util.verificarNaoVazio(form.getValorFaturasAtrasoFinal())) {
filtro.setValorFaturasAtrasoFinal(new Float(form.getValorFaturasAtrasoFinal()));
}
if (Util.verificarNaoVazio(form.getReferenciaFaturasAtrasoInicial())) {
filtro.setReferenciaFaturasAtrasoInicial( Util.formatarMesAnoComBarraParaAnoMes( form.getReferenciaFaturasAtrasoInicial() ) );
}
if (Util.verificarNaoVazio(form.getReferenciaFaturasAtrasoFinal())) {
filtro.setReferenciaFaturasAtrasoFinal( Util.formatarMesAnoComBarraParaAnoMes( form.getReferenciaFaturasAtrasoFinal() ) );
}
if( !Util.isVazioOrNulo(form.getEsferaPoder())){
Collection<Integer> colecao = new ArrayList<Integer>();
String[] array = form.getEsferaPoder();
for(String esferaPoder : array){
if( !esferaPoder.equals(String.valueOf(ConstantesSistema.NUMERO_NAO_INFORMADO))){
colecao.add(new Integer(esferaPoder));
}
}
if(!colecao.isEmpty()){
filtro.setEsferaPoder(colecao);
}
}
return filtro;
}
/**
* Esse m�todo adiciona os parametros no objeto TarefaRelatorio
* para que os mesmos sejam exibidos quando o relat�rio for gerado.
*
*@since 25/08/2009
*@author Marlon Patrick
*/
private void configurarParametrosRelatorio(TarefaRelatorio relatorio, GerarRelatorioImoveisFaturasAtrasoActionForm form){
if(form.getGerenciaRegional() != null && !form.getGerenciaRegional().equalsIgnoreCase(ConstantesSistema.NUMERO_NAO_INFORMADO + "")){
relatorio.addParametro("gerRegionalFiltro", form.getGerenciaRegional());
}
if(form.getUnidadeNegocio() != null && !form.getUnidadeNegocio().equalsIgnoreCase(ConstantesSistema.NUMERO_NAO_INFORMADO + "")){
relatorio.addParametro("uniNegocioFiltro", form.getUnidadeNegocio());
}
if(form.getLocalidadeInicial() != null && !form.getLocalidadeInicial().equals("")){
relatorio.addParametro("localidadeFiltro", form.getLocalidadeInicial() + " a " + form.getLocalidadeFinal());
}
if(form.getSetorComercialInicial() != null && !form.getSetorComercialInicial().equals("")){
relatorio.addParametro("setorFiltro", form.getSetorComercialInicial() + " a " + form.getSetorComercialFinal());
}
if(form.getRotaInicial() != null && !form.getRotaInicial().equals("")){
relatorio.addParametro("rotaFiltro", form.getRotaInicial() + " a " + form.getRotaFinal());
}
if(form.getSequencialRotaInicial() != null && !form.getSequencialRotaInicial().equals("")){
relatorio.addParametro("seqRotaFiltro", form.getSequencialRotaInicial() + " a " + form.getSequencialRotaFinal());
}
if(form.getValorFaturasAtrasoInicial() != null && !form.getValorFaturasAtrasoInicial().equals("")){
relatorio.addParametro("valorFaturasFiltro", form.getValorFaturasAtrasoInicial() + " a " + form.getValorFaturasAtrasoFinal());
}
if(form.getQuantidadeFaturasAtrasoInicial() != null && !form.getQuantidadeFaturasAtrasoInicial().equals("")){
relatorio.addParametro("qtdFaturasFiltro", form.getQuantidadeFaturasAtrasoInicial() + " a " + form.getQuantidadeFaturasAtrasoFinal());
}
if(form.getReferenciaFaturasAtrasoInicial() != null && !form.getReferenciaFaturasAtrasoInicial().equals("")){
relatorio.addParametro("refFaturasFiltro", form.getReferenciaFaturasAtrasoInicial() + " a " + form.getReferenciaFaturasAtrasoFinal());
}
if (Util.verificarNaoVazio(form.getCodigoClienteSuperior())) {
if(Util.verificarNaoVazio(form.getNomeClienteSuperior())){
relatorio.addParametro("clienteSuperiorFiltro",form.getCodigoClienteSuperior() + " - " + form.getNomeClienteSuperior());
}else{
Cliente cliente = Fachada.getInstancia().pesquisarClienteDigitado(new Integer(form.getCodigoClienteSuperior()));
relatorio.addParametro("clienteSuperiorFiltro",cliente.getId() + " - " + cliente.getNome());
}
}
if (Util.verificarNaoVazio(form.getCodigoCliente())) {
if(Util.verificarNaoVazio(form.getNomeCliente())){
relatorio.addParametro("clienteFiltro",form.getCodigoCliente() + " - " + form.getNomeCliente());
}else{
Cliente cliente = Fachada.getInstancia().consultarCliente(new Integer(form.getCodigoCliente()));
relatorio.addParametro("clienteFiltro",cliente.getId() + " - " + cliente.getNome());
}
if (Util.verificarNaoVazio(form.getTipoRelacao())
&& !form.getTipoRelacao().equals(""+ConstantesSistema.NUMERO_NAO_INFORMADO) ) {
if(form.getTipoRelacao().equals(ClienteRelacaoTipo.USUARIO.toString())){
relatorio.addParametro("tipoRelacaoFiltro",ClienteRelacaoTipo.USUARIO.toString());
}else if(form.getTipoRelacao().equals(ClienteRelacaoTipo.PROPRIETARIO.toString())){
relatorio.addParametro("tipoRelacaoFiltro",ClienteRelacaoTipo.PROPRIETARIO.toString());
}else if(form.getTipoRelacao().equals(ClienteRelacaoTipo.RESPONSAVEL.toString())){
relatorio.addParametro("tipoRelacaoFiltro",ClienteRelacaoTipo.RESPONSAVEL.toString());
}
}
if (Util.verificarNaoVazio(form.getResponsavel())) {
if(form.getResponsavel().equals("0")){
relatorio.addParametro("responsavelFiltro","Indicado na Conta");
}else if(form.getResponsavel().equals("1")){
relatorio.addParametro("responsavelFiltro","Atual do Im�vel");
}else if(form.getResponsavel().equals("2")){
relatorio.addParametro("responsavelFiltro","Todos");
}
}
}
if(Util.verificarNaoVazio(form.getHidrometro())) {
if(form.getHidrometro().equals("0")){
relatorio.addParametro("hidrometro", "TODOS");
}else if(form.getHidrometro().equals("1")){
relatorio.addParametro("hidrometro", "Com Hidr�metro");
}else if(form.getHidrometro().equals("2")){
relatorio.addParametro("hidrometro", "Sem Hidr�metro");
}
}
if (Util.verificarNaoVazio(form.getSituacaoCobranca())
&& !form.getSituacaoCobranca().equals(""+ConstantesSistema.NUMERO_NAO_INFORMADO) ) {
FiltroCobrancaSituacao filtroSituacaoCobranca = new FiltroCobrancaSituacao();
filtroSituacaoCobranca.adicionarParametro(
new ParametroSimples(FiltroCobrancaSituacao.ID,form.getSituacaoCobranca()));
Collection<CobrancaSituacao> colecaoSituacoesCobranca =
this.getFachada().pesquisar(filtroSituacaoCobranca, CobrancaSituacao.class.getName());
relatorio.addParametro("situacaoCobrancaFiltro",colecaoSituacoesCobranca.iterator().next().getDescricao());
}
if( !Util.isVazioOrNulo(form.getEsferaPoder())){
String esfera = "";
String[] array = form.getEsferaPoder();
for(String esferaTemp : array){
if (!esferaTemp.equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) {
FiltroEsferaPoder filtroEsferaPoder = new FiltroEsferaPoder();
filtroEsferaPoder.adicionarParametro(new ParametroSimples(FiltroEsferaPoder.ID, esferaTemp));
Collection<EsferaPoder> colecao = Fachada.getInstancia().pesquisar(filtroEsferaPoder, EsferaPoder.class.getName());
esfera += colecao.iterator().next().getDescricao() + " ";
}
}
relatorio.addParametro("esfPoderFiltro", esfera);
}
if( !Util.isVazioOrNulo(form.getSituacaoLigacaoAgua())){
String ligacaoAgua = "";
String[] array = form.getSituacaoLigacaoAgua();
for(String ligacaoAguaTemp : array){
if (!ligacaoAguaTemp.equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) {
FiltroLigacaoAguaSituacao filtro = new FiltroLigacaoAguaSituacao();
filtro.adicionarParametro(new ParametroSimples(FiltroLigacaoAguaSituacao.ID, ligacaoAguaTemp));
Collection<LigacaoAguaSituacao> colecao = Fachada.getInstancia().pesquisar(filtro, LigacaoAguaSituacao.class.getName());
ligacaoAgua += colecao.iterator().next().getDescricaoAbreviado() + " ";
}
}
relatorio.addParametro("LigAguaFiltro", ligacaoAgua);
}
if( !Util.isVazioOrNulo(form.getCategorias())){
String categoria = "";
String[] array = form.getCategorias();
for(String categoriaTemp:array){
if (!categoriaTemp.equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) {
FiltroCategoria filtro = new FiltroCategoria();
filtro.adicionarParametro(new ParametroSimples(FiltroCategoria.CODIGO, categoriaTemp));
Collection<Categoria> colecao = Fachada.getInstancia().pesquisar(filtro, Categoria.class.getName());
categoria += colecao.iterator().next().getDescricaoAbreviada() + " ";
}
}
relatorio.addParametro("categoriaFiltro", categoria );
}
if( !Util.isVazioOrNulo(form.getPerfilImovel())){
String perfilImovel = "";
String[] array = form.getPerfilImovel();
for(String perfilImovelTemp : array){
if (!perfilImovelTemp.equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) {
FiltroImovelPerfil filtro = new FiltroImovelPerfil();
filtro.adicionarParametro(new ParametroSimples(FiltroImovelPerfil.ID, perfilImovelTemp));
Collection<ImovelPerfil> colecao = Fachada.getInstancia().pesquisar(filtro, ImovelPerfil.class.getName());
perfilImovel += colecao.iterator().next().getId() + " ";
}
}
relatorio.addParametro("perfisImovelFiltro", perfilImovel );
}
}
}