package gcom.gui.cobranca; import gcom.cobranca.CicloMeta; import gcom.cobranca.CicloMetaGrupo; import gcom.cobranca.CobrancaAcao; import gcom.cobranca.FiltroCicloMeta; import gcom.cobranca.FiltroCicloMetaGrupo; import gcom.cobranca.FiltroCobrancaAcao; import gcom.cobranca.InformarCicloMetaGrupoHelper; import gcom.fachada.Fachada; import gcom.gui.GcomAction; import gcom.util.ConstantesSistema; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.Iterator; import java.util.TreeMap; 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; /** * [UC00] Informar metas do ciclo * * @author Francisco do Nascimento * */ public class ExibirInformarCicloMetaGrupoAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { ActionForward retorno = actionMapping .findForward("informarCicloMetaGrupo"); CicloMetaGrupoActionForm cicloMetaForm = (CicloMetaGrupoActionForm) actionForm; CicloMeta cicloMeta = null; Fachada fachada = Fachada.getInstancia(); // Mudar isso quando tiver esquema de seguran�a HttpSession sessao = httpServletRequest.getSession(false); String voltaFiltro = httpServletRequest.getParameter("voltar"); if (voltaFiltro != null && !voltaFiltro.trim().equals("")) { sessao.removeAttribute("idCicloMeta"); sessao.removeAttribute("cicloMeta"); sessao.removeAttribute("helpers"); cicloMetaForm.setAnoMesCobranca(null); cicloMetaForm.setIdCobrancaAcao(null); } if (httpServletRequest.getParameter("reloadPage") == null) { String idCicloMeta = ""; if (httpServletRequest.getParameter("idRegistroAtualizacao") != null) { idCicloMeta = httpServletRequest .getParameter("idRegistroAtualizacao"); sessao.setAttribute("idCicloMeta", idCicloMeta); } else { if (sessao.getAttribute("idRegistroAtualizacao") != null) { idCicloMeta = (String) sessao .getAttribute("idRegistroAtualizacao"); } else { idCicloMeta = (String) sessao .getAttribute("idCicloMeta"); } } if ((idCicloMeta == null || idCicloMeta.equals("")) && cicloMetaForm.getAnoMesCobranca() != null){ FiltroCicloMeta filtroCiclo = new FiltroCicloMeta(); filtroCiclo.adicionarParametro(new ParametroSimples(FiltroCicloMeta.COBRANCA_ACAO_ID, cicloMetaForm.getIdCobrancaAcao())); filtroCiclo.adicionarParametro(new ParametroSimples(FiltroCicloMeta.ANO_MES_REFERENCIA, Util.formatarMesAnoComBarraParaAnoMes(cicloMetaForm.getAnoMesCobranca()))); filtroCiclo.adicionarCaminhoParaCarregamentoEntidade(FiltroCicloMeta.COBRANCA_ACAO); Collection colecaoCicloMetas = fachada.pesquisar( filtroCiclo, CicloMeta.class.getName()); cicloMeta = (CicloMeta) Util.retonarObjetoDeColecao(colecaoCicloMetas); if (cicloMeta != null){ /* 4.3 Caso ambos estejam informados e apenas o valor seja exclu�do ( atualizar o CLMT_VLLIMITE com zero na tabela CICLO_META com CLMT_AMREFERENCIA = a refer�ncia Informada e CBAC_ID = Id da A��o de Cobran�a selecionada.) */ if (httpServletRequest.getParameter("alterarApenasValorLimite") != null && !httpServletRequest.getParameter("alterarApenasValorLimite").equals("")){ cicloMeta.setUltimaAlteracao(new Date()); cicloMeta.setValorLimite(new BigDecimal(0)); if (!cicloMetaForm.getMetaTotal().equals("") && !cicloMetaForm.getMetaTotal().equals("0")){ FiltroCicloMetaGrupo filtroCicloMetaGrupo = new FiltroCicloMetaGrupo(); filtroCicloMetaGrupo.adicionarParametro(new ParametroSimples(FiltroCicloMetaGrupo.CICLO_META_ID, cicloMetaForm.getIdCicloMeta())); Collection colecaoCicloMetaGrupo = fachada.pesquisar( filtroCicloMetaGrupo, CicloMetaGrupo.class.getName()); Collection<InformarCicloMetaGrupoHelper> helpersAux = (Collection<InformarCicloMetaGrupoHelper>) sessao.getAttribute("helpers"); Collection<InformarCicloMetaGrupoHelper> helpersLocalidade = new ArrayList<InformarCicloMetaGrupoHelper>(); if (helpersAux != null){ if (cicloMeta.getId().intValue() > 0 && colecaoCicloMetaGrupo != null && !colecaoCicloMetaGrupo.isEmpty()){ for (Iterator iter = helpersAux.iterator(); iter.hasNext();) { InformarCicloMetaGrupoHelper itemGerencia = (InformarCicloMetaGrupoHelper) iter.next(); for (Iterator iter2 = itemGerencia.getSubItens().values().iterator(); iter2.hasNext();) { InformarCicloMetaGrupoHelper itemUneg = (InformarCicloMetaGrupoHelper) iter2.next(); for (Iterator iter3 = itemUneg.getSubItens().values().iterator(); iter3 .hasNext();) { InformarCicloMetaGrupoHelper itemLoc = (InformarCicloMetaGrupoHelper) iter3.next(); String nomeItem = itemGerencia.getTipoItem() + itemGerencia.getIdItem() + itemUneg.getTipoItem() + itemUneg.getIdItem() + itemLoc.getTipoItem() + itemLoc.getIdItem(); itemLoc.setMetaAtual(Integer.parseInt( httpServletRequest.getParameter(nomeItem))); } helpersLocalidade.addAll(itemUneg.getSubItens().values()); } } fachada.atualizar(cicloMeta); fachada.atualizarDistribuicaoMetasCicloGrupoLocalidade(cicloMeta, helpersLocalidade); }else{ cicloMeta.setMetaTotal(new Integer(cicloMetaForm.getMetaTotal())); fachada.distribuirMetasCiclo(cicloMeta); } }else{ fachada.atualizar(cicloMeta); } }else{ fachada.remover(cicloMeta); } //limpa a sess�o if (sessao.getAttribute("helpers") != null){ sessao.removeAttribute("helpers"); } if (sessao.getAttribute("cicloMeta") != null){ sessao.removeAttribute("cicloMeta"); } if (sessao.getAttribute("colecaoCobrancaAcao") != null){ sessao.removeAttribute("colecaoCobrancaAcao"); } //Seta o retorno retorno = actionMapping.findForward("telaSucesso"); //p�gina de sucesso montarPaginaSucesso(httpServletRequest, "Metas/Valor Limite da A��o de Cobran�a " + cicloMeta.getCobrancaAcao().getDescricaoCobrancaAcao() + " do Ciclo " + Util.formatarAnoMesParaMesAno(cicloMeta.getAnoMesReferencia()) + " atualizadas(o) com sucesso. ", "Informar Metas de outra A��o de Cobran�a", "exibirInformarCicloMetaGrupoAction.do?menu=sim" ); return retorno; } /* 4.1. Caso s� o valor estivesse informado e for exclu�do * (excluir a linha da tabela CICLO_META com CLMT_AMREFERENCIA = a * refer�ncia Informada e CBAC_ID = Id da A��o de Cobran�a selecionada.) */ if (httpServletRequest.getParameter("excluirCicloMeta") != null && !httpServletRequest.getParameter("excluirCicloMeta").equals("")){ fachada.remover(cicloMeta); //limpa a sess�o if (sessao.getAttribute("helpers") != null){ sessao.removeAttribute("helpers"); } if (sessao.getAttribute("cicloMeta") != null){ sessao.removeAttribute("cicloMeta"); } if (sessao.getAttribute("colecaoCobrancaAcao") != null){ sessao.removeAttribute("colecaoCobrancaAcao"); } //Seta o retorno retorno = actionMapping.findForward("telaSucesso"); //p�gina de sucesso montarPaginaSucesso(httpServletRequest, "Metas/Valor Limite da A��o de Cobran�a " + cicloMeta.getCobrancaAcao().getDescricaoCobrancaAcao() + " do Ciclo " + Util.formatarAnoMesParaMesAno(cicloMeta.getAnoMesReferencia()) + " atualizadas(o) com sucesso. ", "Informar Metas de outra A��o de Cobran�a", "exibirInformarCicloMetaGrupoAction.do?menu=sim" ); return retorno; } /* 4.4. Caso ambos estejam informados e apenas a Meta seja exclu�da * (atualizar o CLMT_QTMETA com zero na tabela CICLO_META com CLMT_AMREFERENCIA * = a refer�ncia Informada e CBAC_ID = Id da A��o de Cobran�a selecionada * e Excluir na tabela CICLO_META_GRUPO as linhas com o CLMT_ID da tabela * CICLO_META com CLMT_AMREFERENCIA = a refer�ncia Informada e CBAC_ID = * Id da A��o de Cobran�a selecionada)*/ if (httpServletRequest.getParameter("alterarMetaExcluirCicloMetaGrupo") != null && !httpServletRequest.getParameter("alterarMetaExcluirCicloMetaGrupo").equals("")){ cicloMeta.setUltimaAlteracao(new Date()); cicloMeta.setMetaTotal(0); fachada.atualizar(cicloMeta); fachada.removerCicloMetaGrupo(cicloMeta.getId()); //limpa a sess�o if (sessao.getAttribute("helpers") != null){ sessao.removeAttribute("helpers"); } if (sessao.getAttribute("cicloMeta") != null){ sessao.removeAttribute("cicloMeta"); } if (sessao.getAttribute("colecaoCobrancaAcao") != null){ sessao.removeAttribute("colecaoCobrancaAcao"); } //Seta o retorno retorno = actionMapping.findForward("telaSucesso"); //p�gina de sucesso montarPaginaSucesso(httpServletRequest, "Metas/Valor Limite da A��o de Cobran�a " + cicloMeta.getCobrancaAcao().getDescricaoCobrancaAcao() + " do Ciclo " + Util.formatarAnoMesParaMesAno(cicloMeta.getAnoMesReferencia()) + " atualizadas(o) com sucesso. ", "Informar Metas de outra A��o de Cobran�a", "exibirInformarCicloMetaGrupoAction.do?menu=sim" ); return retorno; } /* 4.5. Caso ambos estejam informados e ambos sejam exclu�dos((Excluir na * tabela CICLO_META_GRUPO as linhas com o CLMT_ID da tabela CICLO_META com * CLMT_AMREFERENCIA = a refer�ncia Informada e CBAC_ID = Id da A��o de Cobran�a * selecionada e excluir a linha da tabela CICLO_META com CLMT_AMREFERENCIA = a * refer�ncia Informada e CBAC_ID = Id da A��o de Cobran�a selecionada.)*/ if (httpServletRequest.getParameter("excluirTudo") != null && !httpServletRequest.getParameter("excluirTudo").equals("")){ fachada.removerCicloMetaGrupo(cicloMeta.getId()); fachada.remover(cicloMeta); //limpa a sess�o if (sessao.getAttribute("helpers") != null){ sessao.removeAttribute("helpers"); } if (sessao.getAttribute("cicloMeta") != null){ sessao.removeAttribute("cicloMeta"); } if (sessao.getAttribute("colecaoCobrancaAcao") != null){ sessao.removeAttribute("colecaoCobrancaAcao"); } //Seta o retorno retorno = actionMapping.findForward("telaSucesso"); //pagina de sucesso montarPaginaSucesso(httpServletRequest, "Metas/Valor Limite da A��o de Cobran�a " + cicloMeta.getCobrancaAcao().getDescricaoCobrancaAcao() + " do Ciclo " + Util.formatarAnoMesParaMesAno(cicloMeta.getAnoMesReferencia()) + " atualizadas(o) com sucesso. ", "Informar Metas de outra A��o de Cobran�a", "exibirInformarCicloMetaGrupoAction.do?menu=sim" ); return retorno; } /* 4.2. Caso apenas a meta estivesse gerada e for exclu�da (Excluir na * tabela CICLO_META_GRUPO as linhas com o CLMT_ID da tabela CICLO_META * com CLMT_AMREFERENCIA = a refer�ncia Informada e CBAC_ID = Id da A��o * de Cobran�a selecionada e excluir a linha da tabela CICLO_META com * CLMT_AMREFERENCIA = a refer�ncia Informada e CBAC_ID = Id da A��o * de Cobran�a selecionada.)*/ if (httpServletRequest.getParameter("excluirCicloMetaCicloMetaGrupo") != null && !httpServletRequest.getParameter("excluirCicloMetaCicloMetaGrupo").equals("")){ fachada.removerCicloMetaGrupo(cicloMeta.getId()); fachada.remover(cicloMeta); //limpa a sess�o if (sessao.getAttribute("helpers") != null){ sessao.removeAttribute("helpers"); } if (sessao.getAttribute("cicloMeta") != null){ sessao.removeAttribute("cicloMeta"); } if (sessao.getAttribute("colecaoCobrancaAcao") != null){ sessao.removeAttribute("colecaoCobrancaAcao"); } //Seta o retorno retorno = actionMapping.findForward("telaSucesso"); //pagina de sucesso montarPaginaSucesso(httpServletRequest, "Metas/Valor Limite da A��o de Cobran�a " + cicloMeta.getCobrancaAcao().getDescricaoCobrancaAcao() + " do Ciclo " + Util.formatarAnoMesParaMesAno(cicloMeta.getAnoMesReferencia()) + " atualizadas(o) com sucesso. ", "Informar Metas de outra A��o de Cobran�a", "exibirInformarCicloMetaGrupoAction.do?menu=sim" ); return retorno; } idCicloMeta = cicloMeta.getId() + ""; cicloMetaForm.setMetaTotal(cicloMeta.getMetaTotal() + ""); cicloMetaForm.setValorLimite(Util.formataBigDecimal(cicloMeta.getValorLimite(), 2, true)); int metaTotalCalculada = 0; int metaTotalAjustada = 0; if (cicloMeta.getMetaTotal() > 0){ TreeMap<String, InformarCicloMetaGrupoHelper> helpers = fachada.consultarColecaoCicloMetaGrupo(cicloMeta); // percorrer os helpers de gerencia para calcular o valor total das metas for (Iterator iter = helpers.values().iterator(); iter.hasNext();) { InformarCicloMetaGrupoHelper helperGerencia = (InformarCicloMetaGrupoHelper) iter.next(); metaTotalCalculada += helperGerencia.getMetaOriginal(); metaTotalAjustada += helperGerencia.getMetaAtual(); } sessao.setAttribute("helpers", helpers.values()); } httpServletRequest.setAttribute("metaTotalCalculada", new Integer(metaTotalCalculada)); httpServletRequest.setAttribute("metaTotalAjustada", new Integer(metaTotalAjustada)); if (cicloMeta.getValorLimite() != null){ httpServletRequest.setAttribute("valorLimiteEmissao", cicloMeta.getValorLimite()); }else{ httpServletRequest.setAttribute("valorLimiteEmissao", 0); } sessao.setAttribute("cicloMeta", cicloMeta); } else { idCicloMeta = "-1"; cicloMetaForm.setMetaTotal(""); cicloMetaForm.setValorLimite(""); sessao.removeAttribute("helpers"); sessao.removeAttribute("cicloMeta"); } }else{ idCicloMeta = ""; cicloMetaForm.setMetaTotal(""); cicloMetaForm.setValorLimite(""); sessao.removeAttribute("helpers"); sessao.removeAttribute("cicloMeta"); } cicloMetaForm.setIdCicloMeta(idCicloMeta); FiltroCobrancaAcao filtroCobrancaAcao = new FiltroCobrancaAcao(); filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.INDICADOR_USO, ConstantesSistema.SIM)); // filtroCobrancaAcao.adicionarParametro(new ParametroSimples("usaMetas", // ConstantesSistema.SIM)); filtroCobrancaAcao.setCampoOrderBy(FiltroCobrancaAcao.DESCRICAO); Collection colecaoCobrancaAcao = fachada.pesquisar( filtroCobrancaAcao, CobrancaAcao.class.getName()); sessao.setAttribute("colecaoCobrancaAcao", colecaoCobrancaAcao); } return retorno; } }