package gcom.gui.arrecadacao;
import gcom.arrecadacao.ArrecadacaoForma;
import gcom.arrecadacao.Arrecadador;
import gcom.arrecadacao.FiltroArrecadacaoForma;
import gcom.arrecadacao.FiltroArrecadador;
import gcom.arrecadacao.FiltroConsultarDadosDiariosArrecadacao;
import gcom.arrecadacao.FiltroConsultarDadosDiariosArrecadacaoAuxiliar;
import gcom.arrecadacao.FiltroConsultarDadosDiariosArrecadacao.GROUP_BY;
import gcom.arrecadacao.FiltroConsultarDadosDiariosArrecadacaoAuxiliar.GROUP_BY_AUX;
import gcom.arrecadacao.bean.FiltrarDadosDiariosArrecadacaoHelper;
import gcom.arrecadacao.bean.FormasArrecadacaoDadosDiariosHelper;
import gcom.batch.FiltroFuncionalidadeIniciada;
import gcom.batch.FuncionalidadeIniciada;
import gcom.batch.FuncionalidadeSituacao;
import gcom.cadastro.imovel.Categoria;
import gcom.cadastro.imovel.FiltroCategoria;
import gcom.cadastro.imovel.FiltroImovelPerfil;
import gcom.cadastro.imovel.ImovelPerfil;
import gcom.cadastro.localidade.FiltroGerenciaRegional;
import gcom.cadastro.localidade.FiltroLocalidade;
import gcom.cadastro.localidade.FiltroUnidadeNegocio;
import gcom.cadastro.localidade.GerenciaRegional;
import gcom.cadastro.localidade.Localidade;
import gcom.cadastro.localidade.UnidadeNegocio;
import gcom.cobranca.DocumentoTipo;
import gcom.cobranca.FiltroDocumentoTipo;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.seguranca.acesso.Funcionalidade;
import gcom.util.Util;
import gcom.util.filtro.ConectorOr;
import gcom.util.filtro.ParametroSimples;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.Date;
import java.util.Map;
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;
/**
* Description of the Class
*
* @author Fernanda Paiva
* @created 25 de Maio de 2006
**/
public class ExibirConsultarDadosDiariosValoresDiariosAnaliticoComTarifaAction extends GcomAction {
/**
* Description of the Method
*
* @param actionMapping
* Description of the Parameter
* @param actionForm
* Description of the Parameter
* @param httpServletRequest
* Description of the Parameter
* @param httpServletResponse
* Description of the Parameter
* @return Description of the Return Value
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping
.findForward("exibirConsultarDadosDiariosValoresDiariosAnaliticoComTarifa");
/** filtro para verificar se a funcionalidade de gerar dados di�rios de arrecada��o esta executando */
FiltroFuncionalidadeIniciada filtroFuncionalidadeIniciada = new FiltroFuncionalidadeIniciada();
filtroFuncionalidadeIniciada.adicionarParametro(new ParametroSimples(FiltroFuncionalidadeIniciada.FUNCIONALIDADE_ID,Funcionalidade.GERAR_DADOS_DIARIOS_ARRECADACAO));
filtroFuncionalidadeIniciada.adicionarParametro(new ParametroSimples(FiltroFuncionalidadeIniciada.FUNCIONALIDADE_SITUACAO,FuncionalidadeSituacao.EM_ESPERA, ConectorOr.CONECTOR_OR, 2));
filtroFuncionalidadeIniciada.adicionarParametro(new ParametroSimples(FiltroFuncionalidadeIniciada.FUNCIONALIDADE_SITUACAO,FuncionalidadeSituacao.EM_PROCESSAMENTO));
Collection colecaoFuncionalidadeEmProcessamento = Fachada.getInstancia().pesquisar(filtroFuncionalidadeIniciada,FuncionalidadeIniciada.class.getName());
/*
* Caso a funcionalidade esteja emprocessamento ou em espera
* envia uma mensagem ao usu�rio negando o acesso a consulta.
*/
if(colecaoFuncionalidadeEmProcessamento != null && !colecaoFuncionalidadeEmProcessamento.isEmpty()){
throw new ActionServletException("atencao.funcionalidade.processando");
}
String referencia = httpServletRequest.getParameter("referencia");
String idGerencia = httpServletRequest.getParameter("idGerencia");
String idUnidadeNegocio = httpServletRequest.getParameter("idUnidadeNegocio");
String idArrecadadorPopup = httpServletRequest.getParameter("idArrecadadorPopup");
String idEloPopup = httpServletRequest.getParameter("idEloPopup");
String idLocalidade = httpServletRequest.getParameter("idLocalidade");
String idDocumentoTipoPopup = httpServletRequest.getParameter("idDocumentoTipoPopup");
String idDocumentoTipoAgregador = httpServletRequest.getParameter("idDocumentoTipoAgregador");
String idArrecadacaoForma = httpServletRequest.getParameter("idArrecadacaoForma");
String mostraUnidadeGerencia = httpServletRequest.getParameter("mostraUnidadeGerencia");
httpServletRequest.setAttribute("mostraUnidadeGerencia",mostraUnidadeGerencia);
Fachada fachada = Fachada.getInstancia();
// Mudar isso quando implementar a parte de seguran�a
HttpSession sessao = httpServletRequest.getSession(false);
FiltroConsultarDadosDiariosArrecadacaoAuxiliar filtro = (FiltroConsultarDadosDiariosArrecadacaoAuxiliar)
sessao.getAttribute("filtroConsultarDadosDiariosArrecadacaoAuxiliar");
Integer periodoArrecadacaoInicial = (Integer)
sessao.getAttribute("periodoArrecadacaoInicial");
Integer periodoArrecadacaoFinal = (Integer)
sessao.getAttribute("periodoArrecadacaoFinal");
if (filtro != null){
filtro = filtro.clone();
filtro.setAgrupamento(GROUP_BY_AUX.DATA);
filtro.setAnoMesArrecadacao(referencia);
if (idGerencia != null && !idGerencia.equals("") && !idGerencia.equals("-1")){
filtro.setIdGerenciaRegional(idGerencia);
// pesquisar na base a gerencia Regional
FiltroGerenciaRegional filtroGerenciaRegional = new FiltroGerenciaRegional ();
filtroGerenciaRegional.adicionarParametro(new ParametroSimples(FiltroGerenciaRegional.ID,
idGerencia));
Collection colecaoGerenciaRegional = fachada.pesquisar(filtroGerenciaRegional,
GerenciaRegional.class.getName());
GerenciaRegional gerenciaRegional = (GerenciaRegional)
Util.retonarObjetoDeColecao(colecaoGerenciaRegional);
httpServletRequest.setAttribute("nomeGerencia",gerenciaRegional.getNome());
}
if (idUnidadeNegocio != null && !idUnidadeNegocio.equals("") &&
!idUnidadeNegocio.equals("-1")){
filtro.setIdUnidadeNegocio(idUnidadeNegocio);
//pesquisar na base a gerencia
FiltroUnidadeNegocio filtroUnidadeNegocio = new FiltroUnidadeNegocio();
filtroUnidadeNegocio.adicionarParametro(new ParametroSimples(FiltroUnidadeNegocio.ID,
idUnidadeNegocio));
Collection colecaoUnidadeNegocio = fachada.pesquisar(filtroUnidadeNegocio,
UnidadeNegocio.class.getName());
UnidadeNegocio unidadeNegocio = (UnidadeNegocio)
Util.retonarObjetoDeColecao(colecaoUnidadeNegocio);
httpServletRequest.setAttribute("nomeUnidadeNegocio",unidadeNegocio.getNome());
}
if (idArrecadadorPopup != null && !idArrecadadorPopup.equals("")
&& !idArrecadadorPopup.equals("-1")){
filtro.setIdArrecadador(idArrecadadorPopup);
//pesquisar na base o arrecadador
FiltroArrecadador filtroArrecadador = new FiltroArrecadador();
filtroArrecadador.adicionarParametro(new ParametroSimples(FiltroArrecadador.ID,
idArrecadadorPopup));
filtroArrecadador.adicionarCaminhoParaCarregamentoEntidade("cliente");
Collection colecaoArrecadador = fachada.pesquisar(filtroArrecadador,
Arrecadador.class.getName());
Arrecadador arrecadador = (Arrecadador)Util.retonarObjetoDeColecao(colecaoArrecadador);
httpServletRequest.setAttribute("nomeAgente", arrecadador.getCliente().getNome());
}
if (idEloPopup != null && !idEloPopup.equals("") && !idEloPopup.equals("-1")){
filtro.setIdElo(idEloPopup);
// pesquisar na base a localidade
FiltroLocalidade filtroLocalidade = new FiltroLocalidade();
filtroLocalidade.adicionarParametro(new ParametroSimples("localidade.id",
idEloPopup));
filtroLocalidade.adicionarCaminhoParaCarregamentoEntidade("localidade");
Collection colecaoLocalidade = fachada.pesquisar(filtroLocalidade,
Localidade.class.getName());
Localidade localidade = (Localidade)Util.retonarObjetoDeColecao(colecaoLocalidade);
httpServletRequest.setAttribute("descricaoElo", localidade.getLocalidade().getDescricao());
}
if (idLocalidade != null && !idLocalidade.equals("") && !idLocalidade.equals("-1")){
filtro.setIdLocalidade(idLocalidade);
// pesquisar na base a localidade
FiltroLocalidade filtroLocalidade = new FiltroLocalidade();
filtroLocalidade.adicionarParametro(new ParametroSimples(FiltroLocalidade.ID,
idLocalidade));
Collection colecaoLocalidade = fachada.pesquisar(filtroLocalidade,
Localidade.class.getName());
Localidade localidade = (Localidade)Util.retonarObjetoDeColecao(colecaoLocalidade);
httpServletRequest.setAttribute("descricaoLocalidade", localidade.getDescricao());
}
if (idDocumentoTipoAgregador != null && !idDocumentoTipoAgregador.equals("") &&
!idDocumentoTipoAgregador.equals("-1")){
String[] idsDocumentoTipoAgregador = {idDocumentoTipoAgregador};
filtro.setIdsDocumentoTipoAgregador(idsDocumentoTipoAgregador);
//pesquisar na base o Documento Tipo
FiltroDocumentoTipo filtroDocumentoTipo = new FiltroDocumentoTipo();
filtroDocumentoTipo.adicionarParametro(new ParametroSimples(FiltroDocumentoTipo.ID,
idDocumentoTipoAgregador));
Collection colecaoDocumentoTipo = fachada.pesquisar(filtroDocumentoTipo,
DocumentoTipo.class.getName());
DocumentoTipo documentoTipo = (DocumentoTipo) Util.retonarObjetoDeColecao(colecaoDocumentoTipo);
if (documentoTipo == null){
documentoTipo = new DocumentoTipo();
documentoTipo.setDescricaoDocumentoTipo("Sem tipo de documento");
documentoTipo.setId(0);
}
httpServletRequest.setAttribute("nomeDocumento", documentoTipo.getDescricaoDocumentoTipo());
}
if (idDocumentoTipoPopup != null && !idDocumentoTipoPopup.equals("") &&
!idDocumentoTipoPopup.equals("-1")){
filtro.setIdDocumentoTipo(idDocumentoTipoPopup);
//pesquisar na base o Documento Tipo
FiltroDocumentoTipo filtroDocumentoTipo = new FiltroDocumentoTipo();
filtroDocumentoTipo.adicionarParametro(new ParametroSimples(FiltroDocumentoTipo.ID,
idDocumentoTipoPopup));
Collection colecaoDocumentoTipo = fachada.pesquisar(filtroDocumentoTipo,
DocumentoTipo.class.getName());
DocumentoTipo documentoTipo = (DocumentoTipo) Util.retonarObjetoDeColecao(colecaoDocumentoTipo);
if (documentoTipo == null){
documentoTipo = new DocumentoTipo();
documentoTipo.setDescricaoDocumentoTipo("Sem tipo de documento");
documentoTipo.setId(0);
}
httpServletRequest.setAttribute("nomeDocumento", documentoTipo.getDescricaoDocumentoTipo());
}
if (idArrecadacaoForma != null && !idArrecadacaoForma.equals("")
&& !idArrecadacaoForma.equals("-1")){
filtro.setIdFormaArrecadacao(idArrecadacaoForma);
//pesquisar na base o arrecadacao forma
FiltroArrecadacaoForma filtroArrecadacaoForma = new FiltroArrecadacaoForma();
filtroArrecadacaoForma.adicionarParametro(new ParametroSimples(FiltroArrecadacaoForma.CODIGO,
idArrecadacaoForma));
Collection colecaoArrecadacaoForma = fachada.pesquisar(filtroArrecadacaoForma,
ArrecadacaoForma.class.getName());
ArrecadacaoForma arrecadacaoForma = (ArrecadacaoForma) Util.retonarObjetoDeColecao(colecaoArrecadacaoForma);
if(arrecadacaoForma == null){
arrecadacaoForma = new ArrecadacaoForma();
arrecadacaoForma.setId(0);
arrecadacaoForma.setDescricao("Sem forma de arrecada��o");
}
httpServletRequest.setAttribute("nomeArrecadacaoForma", arrecadacaoForma.getDescricao());
}
filtro.setRelatorioValoresDiariosAnalitico(true);
Map<Integer, Collection<FiltrarDadosDiariosArrecadacaoHelper>>
mapDadosDiariosAnoMes = fachada.filtrarDadosDiariosArrecadacaoAuxiliarFormasArrecadacaoComTarifa(
periodoArrecadacaoInicial,
periodoArrecadacaoFinal,
filtro);
BigDecimal valorTotal = new BigDecimal(0.0);
Collection<FiltrarDadosDiariosArrecadacaoHelper> colecaoDadosDiarios =
mapDadosDiariosAnoMes.get(new Integer(referencia));
for (FiltrarDadosDiariosArrecadacaoHelper helper : colecaoDadosDiarios){
valorTotal = valorTotal.add(helper.getValorArrecadacaoLiquida());
}
sessao.setAttribute("colecaoDadosDiarios", colecaoDadosDiarios);
sessao.setAttribute("valorTotal", valorTotal);
Date dataMesInformado = fachada.pesquisarDataProcessamentoMes(new Integer(referencia));
Date dataAtual = fachada.pesquisarDataProcessamentoMes(this.getSistemaParametro().getAnoMesArrecadacao());
if(dataMesInformado!=null){
httpServletRequest
.setAttribute("dadosMesInformado",
Util.formatarDataComHora(dataMesInformado));
}
if(dataAtual!=null){
httpServletRequest
.setAttribute("dadosAtual",
Util.formatarDataComHora(dataAtual));
}
}
sessao.setAttribute("referencia",referencia);
return retorno;
}
}