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.ActionServletException; import gcom.gui.GcomAction; 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 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 InformarCicloMetaGrupoSalvarAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse httpServletResponse) { ActionForward retorno = actionMapping .findForward("telaSucesso"); //CicloMetaGrupoActionForm cicloMetaForm = (CicloMetaGrupoActionForm) actionForm; Fachada fachada = Fachada.getInstancia(); // Mudar isso quando tiver esquema de seguran�a HttpSession sessao = request.getSession(false); CicloMetaGrupoActionForm cicloMetaForm = (CicloMetaGrupoActionForm) actionForm; CicloMeta cicloMeta = (CicloMeta) sessao.getAttribute("cicloMeta"); //se as metas foram regeradas if (sessao.getAttribute("metasRegeradas") != null){ fachada.removerCicloMetaGrupo(new Integer(cicloMetaForm.getIdCicloMeta())); sessao.removeAttribute("metasRegeradas"); } if (cicloMeta == null){ if ((cicloMetaForm.getValorLimite() == null || cicloMetaForm.getValorLimite().equals("")) && (cicloMetaForm.getMetaTotal() == null || cicloMetaForm.getMetaTotal().equals(""))){ throw new ActionServletException( "atencao.informe_valor_ou_meta", null, ""); } } if (cicloMeta != null){ if ((cicloMetaForm.getValorLimite() == null || cicloMetaForm.getValorLimite().equals("")) && (cicloMetaForm.getMetaTotal() == null || cicloMetaForm.getMetaTotal().equals(""))){ throw new ActionServletException( "atencao.informe_valor_ou_meta", null, ""); } if (cicloMeta.getId() == 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()); if (colecaoCicloMetas != null && colecaoCicloMetas.size() > 0){ throw new ActionServletException( "atencao.ciclo_meta_ano_mes_ja_existe", null, ""); } } } Collection<InformarCicloMetaGrupoHelper> helpers = null; Collection colecaoCicloMetaGrupo = null; if (!cicloMetaForm.getIdCicloMeta().equals("") && !cicloMetaForm.getIdCicloMeta().equals("-1") ){ FiltroCicloMetaGrupo filtroCicloMetaGrupo = new FiltroCicloMetaGrupo(); filtroCicloMetaGrupo.adicionarParametro(new ParametroSimples(FiltroCicloMetaGrupo.CICLO_META_ID, cicloMetaForm.getIdCicloMeta())); colecaoCicloMetaGrupo = fachada.pesquisar( filtroCicloMetaGrupo, CicloMetaGrupo.class.getName()); } boolean distribuidas = false; if (colecaoCicloMetaGrupo == null || colecaoCicloMetaGrupo.isEmpty() || cicloMetaForm.getIdCicloMeta() == null || cicloMetaForm.getIdCicloMeta().equals("")){ if (cicloMetaForm.getMetaTotal() != null && !cicloMetaForm.getMetaTotal().equals("") && !cicloMetaForm.getMetaTotal().equals("0")){ if (cicloMeta != null){ cicloMeta.setMetaTotal(new Integer(cicloMetaForm.getMetaTotal())); fachada.distribuirMetasCiclo(cicloMeta); distribuidas = true; }else{ throw new ActionServletException( "atencao.informe_valor_ou_meta", null, ""); } } } helpers = (Collection<InformarCicloMetaGrupoHelper>) sessao.getAttribute("helpers"); //Collection<InformarCicloMetaGrupoHelper> helpers = (Collection<InformarCicloMetaGrupoHelper>) sessao.getAttribute("helpers"); /*if (helpers == null && cicloMeta == null){ if (cicloMetaForm.getValorLimite() == null || cicloMetaForm.getValorLimite().equals("")){ throw new ActionServletException( "atencao.informe_valor_ou_meta", null, ""); } }*/ Collection<InformarCicloMetaGrupoHelper> helpersLocalidade = new ArrayList<InformarCicloMetaGrupoHelper>(); if (distribuidas == false){ // Acumula numa cole��o os helpers de todas as localidades if (helpers != null) { for (Iterator iter = helpers.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( request.getParameter(nomeItem))); } helpersLocalidade.addAll(itemUneg.getSubItens().values()); } } 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); fachada.atualizarDistribuicaoMetasCicloGrupoLocalidade(cicloMeta, helpersLocalidade); } } //5. Caso contr�rio o sistema permite que seja informado o valor //6. Caso o valor n�o estivesse informado //6.1. O usu�rio pode informar o valor if (cicloMeta == null && cicloMetaForm.getValorLimite() != null && !cicloMetaForm.getValorLimite().equals("") && helpers == null){ cicloMeta = new CicloMeta(); cicloMeta.setAnoMesReferencia(Util.formatarMesAnoComBarraParaAnoMes(cicloMetaForm.getAnoMesCobranca())); cicloMeta.setUltimaAlteracao(new Date()); FiltroCobrancaAcao filtroCobrancaAcao = new FiltroCobrancaAcao(); filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.ID, cicloMetaForm.getIdCobrancaAcao())); filtroCobrancaAcao.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcao.COBRANCAO_CRITERIO); filtroCobrancaAcao.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcao.LIGACAO_AGUA_SITUACAO); Collection colecaoCobrancaAcao = fachada.pesquisar( filtroCobrancaAcao, CobrancaAcao.class.getName()); CobrancaAcao cobrancaAcao = (CobrancaAcao) Util.retonarObjetoDeColecao( colecaoCobrancaAcao); cicloMeta.setCobrancaAcao(cobrancaAcao); cicloMetaForm.setValorLimite(cicloMetaForm.getValorLimite().replace(".","").replace(",",".")); if (new Integer(cicloMetaForm.getValorLimite()).intValue() > 0){ cicloMeta.setValorLimite(new BigDecimal(cicloMetaForm.getValorLimite())); fachada.inserir(cicloMeta); } }else if (cicloMeta != null && cicloMetaForm.getValorLimite() != null && !cicloMetaForm.getValorLimite().equals("")){ cicloMetaForm.setValorLimite(cicloMetaForm.getValorLimite().replace(".","").replace(",",".")); cicloMeta.setValorLimite(new BigDecimal(cicloMetaForm.getValorLimite())); if (cicloMeta.getValorLimite().compareTo(new BigDecimal(0)) > 0){ fachada.atualizar(cicloMeta); } } request.setAttribute("caminhoFuncionalidade","exibirInformarCicloMetaGrupoAction.do?menu=sim"); request.setAttribute("labelPaginaSucesso"," Informar Metas de outra A��o de Cobran�a "); request.setAttribute("mensagemPaginaSucesso","Metas/Valor Limite da A��o de Cobran�a " + cicloMeta.getCobrancaAcao().getDescricaoCobrancaAcao() + " do Ciclo " + Util.formatarAnoMesParaMesAno(cicloMeta.getAnoMesReferencia()) + " atualizadas com sucesso. "); return retorno; } }