package gcom.gui.relatorio.cobranca;
import gcom.cadastro.cliente.EsferaPoder;
import gcom.cadastro.cliente.FiltroEsferaPoder;
import gcom.cadastro.imovel.Categoria;
import gcom.cadastro.imovel.CategoriaTipo;
import gcom.cadastro.imovel.FiltroCategoria;
import gcom.cadastro.imovel.FiltroCategoriaTipo;
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.DocumentosReceberFaixaDiasVencidos;
import gcom.cobranca.FiltroDocumentosReceberFaixaDiasVencidos;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesInterfaceGSAN;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
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;
/**
* [UC990] Gerar Relat�rio de Documentos a Receber
*
* @author Hugo Amorim
* @date 22/02/2010
*
*/
public class ExibirGerarRelatorioDocumentosAReceberAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
RelatorioDocumentosAReceberForm form = (RelatorioDocumentosAReceberForm) actionForm;
HttpSession sessao = httpServletRequest.getSession(false);
if(Util.verificarNaoVazio(form.getIdLocalidade())){
pesquisarLocalidade(form,sessao);
}
// Verifica se faixa est� no request, se sim coloca na cole��o
if(sessao.getAttribute("faixaAdicionar")!=null){
carregarFaixas(form,sessao);
}
if(form.getIndicadorInclusaoValorSemParcelas() == null) {
form.setIndicadorInclusaoValorSemParcelas("2");
}
carregarComboboxEListbox(form,httpServletRequest);
return actionMapping.findForward("exibirGerarRelatorioDocumentosAReceberAction");
}
private void carregarFaixas(RelatorioDocumentosAReceberForm form,
HttpSession sessao) {
FaixaHelper helper =
(FaixaHelper) sessao.getAttribute("faixaAdicionar");
if(form.getColecaoFaixas()==null){
form.setColecaoFaixas(new ArrayList<FaixaHelper>());
}
for (Iterator iterator = form.getColecaoFaixas().iterator(); iterator.hasNext();) {
FaixaHelper faixaItera = (FaixaHelper) iterator.next();
if(helper.verificarFaixa(faixaItera)){
String[] parametros = {
helper.getValorInicial().toString(),
helper.getValorFinal().toString(),
faixaItera.getDescricao()};
throw new ActionServletException("atencao.faixa_ja_existe",parametros);
}
}
form.getColecaoFaixas().add(helper);
List colecaoFaixasParaOrdenar = (List) form.getColecaoFaixas();
Collections.sort(colecaoFaixasParaOrdenar,
new Comparator() {
public int compare(Object left, Object right) {
FaixaHelper leftKey = (FaixaHelper) left;
FaixaHelper rightKey = (FaixaHelper) right;
return leftKey.getValorInicial().compareTo(rightKey.getValorInicial());
}
});
form.setColecaoFaixas(colecaoFaixasParaOrdenar);
if(form.getColecaoFaixas().size()>0){
form.setIcInformouFaixa("SIM");
}else{
form.setIcInformouFaixa("NAO");
}
sessao.removeAttribute("faixaAdicionar");
}
private void carregarComboboxEListbox(RelatorioDocumentosAReceberForm form,HttpServletRequest httpServletRequest) {
carregarColecaoUnidadesNegocios(form);
carregarColecaoCategoriasTipos(form);
carregarColecaoCategorias(form);
carregarColecaoPerfisImovel(form);
carregarColecaoEsferasPoder(form);
carregarColecaoOpcaoTotalizacao(form);
carregarColecaoGerencias(form);
carregarColecaoFaixas(form,httpServletRequest);
}
private void carregarColecaoFaixas(RelatorioDocumentosAReceberForm form,HttpServletRequest httpServletRequest) {
FiltroDocumentosReceberFaixaDiasVencidos
filtroFaixas = new FiltroDocumentosReceberFaixaDiasVencidos();
filtroFaixas.setConsultaSemLimites(true);
filtroFaixas.setCampoOrderBy(FiltroDocumentosReceberFaixaDiasVencidos.VALOR_MENOR_FAIXA);
filtroFaixas.adicionarParametro(
new ParametroSimples(
FiltroDocumentosReceberFaixaDiasVencidos.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection<DocumentosReceberFaixaDiasVencidos> colecaoFaixas =
this.getFachada().pesquisar(filtroFaixas, DocumentosReceberFaixaDiasVencidos.class.getName());
if(form.getColecaoFaixas()==null){
form.setColecaoFaixas(new ArrayList<FaixaHelper>());
}
if(form.getColecaoFaixas().isEmpty() && !colecaoFaixas.isEmpty()){
httpServletRequest.setAttribute("icInformouFaixa", "SIM");
for (Iterator iterator = colecaoFaixas.iterator(); iterator
.hasNext();) {
DocumentosReceberFaixaDiasVencidos documentosReceberFaixaDiasVencidos =
(DocumentosReceberFaixaDiasVencidos) iterator.next();
FaixaHelper helper = new FaixaHelper(
documentosReceberFaixaDiasVencidos.getDescricaoFaixa(),
documentosReceberFaixaDiasVencidos.getValorInicialFaixa(),
documentosReceberFaixaDiasVencidos.getValorFinalFaixa());
form.getColecaoFaixas().add(helper);
}
}
}
private void carregarColecaoGerencias(RelatorioDocumentosAReceberForm form) {
FiltroGerenciaRegional filtroGerenciaRegional = new FiltroGerenciaRegional();
filtroGerenciaRegional.setConsultaSemLimites(true);
filtroGerenciaRegional.setCampoOrderBy(FiltroGerenciaRegional.NOME);
filtroGerenciaRegional.adicionarParametro(
new ParametroSimples(FiltroGerenciaRegional.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection<GerenciaRegional> colecaoGerenciaRegional =
this.getFachada().pesquisar(filtroGerenciaRegional, GerenciaRegional.class.getName());
if ( Util.isVazioOrNulo(colecaoGerenciaRegional)) {
throw new ActionServletException(ConstantesInterfaceGSAN.ATENCAO_NAO_CADASTRADO,
"Ger�ncia Regional");
}
form.setColecaoGerencias(colecaoGerenciaRegional);
}
private void carregarColecaoCategoriasTipos(
RelatorioDocumentosAReceberForm form) {
FiltroCategoriaTipo filtroCategoriaTipo = new FiltroCategoriaTipo();
filtroCategoriaTipo.setConsultaSemLimites(true);
filtroCategoriaTipo.setCampoOrderBy(FiltroCategoriaTipo.DESCRICAO);
Collection<CategoriaTipo> colecaoCategoriaTipo =
this.getFachada().pesquisar(filtroCategoriaTipo, CategoriaTipo.class.getName());
if ( Util.isVazioOrNulo(colecaoCategoriaTipo)) {
throw new ActionServletException(ConstantesInterfaceGSAN.ATENCAO_NAO_CADASTRADO,
"Tipo Categoria");
}
form.setColecaoCategoriasTipo(colecaoCategoriaTipo);
}
private void carregarColecaoOpcaoTotalizacao(
RelatorioDocumentosAReceberForm form) {
Collection<OpcaoTotalizacaoHelper>
colecaoOpcoesTotalizacoes
= new ArrayList<OpcaoTotalizacaoHelper>();
String[] opcoes = {"Estado"
,"Estado por Ger�ncia Regional"
,"Estado por Unidade de Neg�cio"
,"Estado por Ger�ncia Regional e por Localidade"
,"Estado por Unidade de Neg�cio e por Localidade"
,"Ger�ncia Regional"
,"Ger�ncia Regional por Localidade"
,"Unidade de Neg�cio"
,"Unidade de Neg�cio por Localidade"
,"Localidade"};
for (int i = 0; i < opcoes.length; i++) {
String opcao = opcoes[i];
colecaoOpcoesTotalizacoes.add(new OpcaoTotalizacaoHelper(i+1, opcao));
}
form.setColecaoOpcoesTotalizacoes(colecaoOpcoesTotalizacoes);
}
/**
* M�todo consulta os perfis de im�vel ativos
* e seta essa cole��o no FORM para que seja exibida na tela.
*
* @author Marlon Patrick
* @since 07/10/2009
*/
private void carregarColecaoPerfisImovel(RelatorioDocumentosAReceberForm form){
FiltroImovelPerfil filtroImovelPerfil = new FiltroImovelPerfil();
filtroImovelPerfil.setConsultaSemLimites(true);
filtroImovelPerfil.setCampoOrderBy(FiltroImovelPerfil.DESCRICAO);
filtroImovelPerfil.adicionarParametro(new ParametroSimples(
FiltroImovelPerfil.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection<ImovelPerfil> colecaoImoveisPerfis = this.getFachada().pesquisar(
filtroImovelPerfil, ImovelPerfil.class.getName());
if ( Util.isVazioOrNulo(colecaoImoveisPerfis)) {
throw new ActionServletException(ConstantesInterfaceGSAN.ATENCAO_NAO_CADASTRADO,
ConstantesInterfaceGSAN.LABEL_GSAN_PERFIL_IMOVEL);
}
form.setColecaoPerfisImovel(colecaoImoveisPerfis);
}
/**
* M�todo consulta as Unidades de Neg�cio ativas
* e seta essa cole��o no FORM para que seja exibida na tela.
*
* @author Marlon Patrick
* @since 07/10/2009
*/
private void carregarColecaoUnidadesNegocios(RelatorioDocumentosAReceberForm form){
FiltroUnidadeNegocio filtroUnidadeNegocio = new FiltroUnidadeNegocio();
filtroUnidadeNegocio.setConsultaSemLimites(true);
filtroUnidadeNegocio.setCampoOrderBy(FiltroUnidadeNegocio.NOME);
filtroUnidadeNegocio.adicionarParametro(
new ParametroSimples(FiltroUnidadeNegocio.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection<UnidadeNegocio> colecaoUnidadeNegocio =
this.getFachada().pesquisar(filtroUnidadeNegocio,UnidadeNegocio.class.getName());
if ( Util.isVazioOrNulo(colecaoUnidadeNegocio)) {
throw new ActionServletException(ConstantesInterfaceGSAN.ATENCAO_NAO_CADASTRADO,
ConstantesInterfaceGSAN.LABEL_GSAN_UNIDADE_NEGOCIO);
}
form.setColecaoUnidades(colecaoUnidadeNegocio);
}
/**
* M�todo consulta as categorias ativas
* e seta essa cole��o no FORM para que seja exibida na tela.
*
* @author Marlon Patrick
* @since 07/10/2009
*/
private void carregarColecaoCategorias(RelatorioDocumentosAReceberForm form){
FiltroCategoria filtroCategoria = new FiltroCategoria();
filtroCategoria.setConsultaSemLimites(true);
filtroCategoria.setCampoOrderBy(FiltroCategoria.DESCRICAO);
filtroCategoria.adicionarParametro(
new ParametroSimples(FiltroCategoria.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection<Categoria> colecaoCategoria =
this.getFachada().pesquisar(filtroCategoria, Categoria.class.getName());
if ( Util.isVazioOrNulo(colecaoCategoria)) {
throw new ActionServletException(ConstantesInterfaceGSAN.ATENCAO_NAO_CADASTRADO,
ConstantesInterfaceGSAN.LABEL_GSAN_CATEGORIA);
}
form.setColecaoCategorias(colecaoCategoria);
}
/**
* M�todo consulta as esferas do poder ativas
* e seta essa cole��o no FORM para que seja exibida na tela.
*
* @author Marlon Patrick
* @since 07/10/2009
*/
private void carregarColecaoEsferasPoder(RelatorioDocumentosAReceberForm form){
FiltroEsferaPoder filtroEsferaPoder = new FiltroEsferaPoder();
filtroEsferaPoder.setConsultaSemLimites(true);
filtroEsferaPoder.setCampoOrderBy(FiltroEsferaPoder.DESCRICAO);
filtroEsferaPoder.adicionarParametro(
new ParametroSimples(FiltroEsferaPoder.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection<EsferaPoder> colecaoEsferaPoder =
this.getFachada().pesquisar(filtroEsferaPoder,EsferaPoder.class.getName());
if ( Util.isVazioOrNulo(colecaoEsferaPoder)) {
throw new ActionServletException(ConstantesInterfaceGSAN.ATENCAO_NAO_CADASTRADO,
ConstantesInterfaceGSAN.LABEL_GSAN_ESFERA_PODER);
}
form.setColecaoEsferasPoder(colecaoEsferaPoder);
}
private void pesquisarLocalidade(RelatorioDocumentosAReceberForm form, HttpSession sessao){
FiltroLocalidade filtroLocalidade = new FiltroLocalidade();
filtroLocalidade.adicionarParametro(new ParametroSimples(FiltroLocalidade.ID,form.getIdLocalidade()));
filtroLocalidade.adicionarParametro(new ParametroSimples(FiltroLocalidade.INDICADORUSO
,ConstantesSistema.INDICADOR_USO_ATIVO));
Collection<Localidade> colecaoLocalidade =
this.getFachada().pesquisar(filtroLocalidade, Localidade.class.getName());
if ( Util.isVazioOrNulo(colecaoLocalidade)) {
form.setIdLocalidade("");
form.setNomeLocalidade("Localidade Inexistente");
sessao.removeAttribute("localidadeEncontrada");
return;
}
Localidade localidade = (Localidade) Util.retonarObjetoDeColecao(colecaoLocalidade);
form.setIdLocalidade(localidade.getId().toString());
form.setNomeLocalidade(localidade.getDescricao());
sessao.setAttribute("localidadeEncontrada","");
}
}