package gcom.gui.faturamento; import gcom.fachada.Fachada; import gcom.faturamento.FaturamentoAtividade; import gcom.faturamento.FaturamentoAtividadeCronograma; import gcom.faturamento.FaturamentoGrupo; import gcom.faturamento.FaturamentoGrupoCronogramaMensal; import gcom.faturamento.FiltroFaturamentoAtividade; import gcom.faturamento.FiltroFaturamentoAtividadeCronograma; import gcom.faturamento.FiltroFaturamentoGrupo; import gcom.faturamento.FiltroFaturamentoGrupoCronogramaMensal; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.util.ConstantesSistema; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import gcom.util.filtro.ParametroSimplesDiferenteDe; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.Date; 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; public class ExibirAtualizarFaturamentoCronogramaAction extends GcomAction { /** * < <Descri��o do m�todo>> * * @param actionMapping * Descri��o do par�metro * @param actionForm * Descri��o do par�metro * @param httpServletRequest * Descri��o do par�metro * @param httpServletResponse * Descri��o do par�metro * @return Descri��o do retorno */ public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { ActionForward retorno = actionMapping .findForward("atualizarFaturamentoCronograma"); FaturamentoActionForm faturamentoActionForm = (FaturamentoActionForm) actionForm; Fachada fachada = Fachada.getInstancia(); HttpSession sessao = httpServletRequest.getSession(false); String idFaturamentoGrupoCronogramaMensal = null; if(httpServletRequest.getParameter("idRegistroAtualizacao") != null){ idFaturamentoGrupoCronogramaMensal = httpServletRequest.getParameter("idRegistroAtualizacao"); }else{ idFaturamentoGrupoCronogramaMensal = (String)sessao.getAttribute("idRegistroAtualizacao"); } //joga faturamentogrupocronogramamensal na sessao para comparacao de concorrencia FiltroFaturamentoGrupoCronogramaMensal filtroFaturamentoGrupoCronogramaMensalSessao = new FiltroFaturamentoGrupoCronogramaMensal(); filtroFaturamentoGrupoCronogramaMensalSessao.adicionarParametro( new ParametroSimples(FiltroFaturamentoGrupoCronogramaMensal.ID,idFaturamentoGrupoCronogramaMensal)); Collection colecaoFaturamentoGrupoCronogramaMensal = fachada.pesquisar( filtroFaturamentoGrupoCronogramaMensalSessao, FaturamentoGrupoCronogramaMensal.class.getName()); if(!colecaoFaturamentoGrupoCronogramaMensal.isEmpty()){ FaturamentoGrupoCronogramaMensal faturamentoGrupoCronogramaMensalSessao = (FaturamentoGrupoCronogramaMensal)colecaoFaturamentoGrupoCronogramaMensal.iterator().next(); sessao.setAttribute("faturamentoGrupoCronogramaMensalSessao", faturamentoGrupoCronogramaMensalSessao); } sessao.setAttribute("idGrupoFaturamento", idFaturamentoGrupoCronogramaMensal); FiltroFaturamentoGrupo filtroFaturamentoGrupo = new FiltroFaturamentoGrupo(); filtroFaturamentoGrupo.adicionarParametro(new ParametroSimples( FiltroFaturamentoGrupo.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); Collection faturamentoGrupos = fachada.pesquisar(filtroFaturamentoGrupo, FaturamentoGrupo.class.getName()); if (!faturamentoGrupos.isEmpty()) { sessao.setAttribute("faturamentoGrupos", faturamentoGrupos); } else { throw new ActionServletException("erro.naocadastrado", null, "grupo de faturamento"); } FiltroFaturamentoGrupoCronogramaMensal filtroFaturamentoGrupoCronogramaMensal = new FiltroFaturamentoGrupoCronogramaMensal(); FiltroFaturamentoAtividadeCronograma filtroFaturamentoAtividadeCronograma = new FiltroFaturamentoAtividadeCronograma(); Collection faturamentoGrupoCronogramaMensais = null; Collection faturamentoAtividadeCronogramas = new ArrayList(); if (idFaturamentoGrupoCronogramaMensal != null && !idFaturamentoGrupoCronogramaMensal.trim().equalsIgnoreCase("")) { filtroFaturamentoGrupoCronogramaMensal.adicionarParametro( new ParametroSimples(FiltroFaturamentoGrupoCronogramaMensal.ID, idFaturamentoGrupoCronogramaMensal)); //Pesquisa Faturamento Grupo Cronograma Mensal faturamentoGrupoCronogramaMensais = fachada.pesquisar(filtroFaturamentoGrupoCronogramaMensal, FaturamentoGrupoCronogramaMensal.class.getName()); if (!faturamentoGrupoCronogramaMensais.isEmpty()) { //Pesquisa Faturamento Atividade Cronograma do Faturamento // Grupo Cronograma Mensal filtroFaturamentoAtividadeCronograma .adicionarParametro(new ParametroSimples( FiltroFaturamentoAtividadeCronograma.FATURAMENTO_GRUPO_CRONOGRAMA_MENSAL_ID, idFaturamentoGrupoCronogramaMensal)); filtroFaturamentoAtividadeCronograma.adicionarCaminhoParaCarregamentoEntidade("faturamentoAtividade"); faturamentoAtividadeCronogramas = fachada.pesquisar(filtroFaturamentoAtividadeCronograma, FaturamentoAtividadeCronograma.class.getName()); if (!faturamentoAtividadeCronogramas.isEmpty()) { FaturamentoGrupoCronogramaMensal faturamentoGrupoCronogramaMensal = (FaturamentoGrupoCronogramaMensal) faturamentoGrupoCronogramaMensais.iterator().next(); //Seta os valores no form faturamentoActionForm.setIdFaturamentoGrupoCronogramaMensal(idFaturamentoGrupoCronogramaMensal); faturamentoActionForm.setIdGrupoFaturamento( faturamentoGrupoCronogramaMensal.getFaturamentoGrupo().getId().toString()); faturamentoActionForm.setMesAno(faturamentoGrupoCronogramaMensal.getMesAno()); sessao.setAttribute("mesAno", faturamentoGrupoCronogramaMensal.getMesAno()); } } } //Pega as atividade q ainda nao estao associadas aum faturamento // cronograma atividade FiltroFaturamentoAtividade filtroFaturamentoAtividade = new FiltroFaturamentoAtividade(); filtroFaturamentoAtividade.adicionarParametro(new ParametroSimples( FiltroFaturamentoAtividade.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); filtroFaturamentoAtividade.setCampoOrderBy(FiltroFaturamentoAtividade.ORDEM_REALIZACAO); Iterator iteratorFaturamentoAtividadeCronogramas = faturamentoAtividadeCronogramas.iterator(); FaturamentoAtividadeCronograma faturamentoAtividadeCronograma = null; while (iteratorFaturamentoAtividadeCronogramas.hasNext()) { faturamentoAtividadeCronograma = (FaturamentoAtividadeCronograma) iteratorFaturamentoAtividadeCronogramas.next(); filtroFaturamentoAtividade.adicionarParametro( new ParametroSimplesDiferenteDe(FiltroFaturamentoAtividade.ID, faturamentoAtividadeCronograma.getFaturamentoAtividade().getId())); } //pesquisa as atividades q ainda nao fazem parte do cronograma Collection faturamentoAtividades = fachada.pesquisar(filtroFaturamentoAtividade, FaturamentoAtividade.class.getName()); //intera a colecao montando objetos do tipo FaturamentoAtividadeCronograma //e os coloca em uma cole��o nova Iterator iteratorFaturamentoAtividades = faturamentoAtividades.iterator(); Collection colecaoFaturamentoAtividadeCronogramaNovo = new ArrayList(); FaturamentoAtividadeCronograma faturamentoAtividadeCronogramaNovo = null; while(iteratorFaturamentoAtividades.hasNext()){ faturamentoAtividadeCronogramaNovo = new FaturamentoAtividadeCronograma(); faturamentoAtividadeCronogramaNovo.setFaturamentoAtividade( (FaturamentoAtividade)iteratorFaturamentoAtividades.next()); colecaoFaturamentoAtividadeCronogramaNovo.add(faturamentoAtividadeCronogramaNovo); } //jun��o das cole��es para ordena��o colecaoFaturamentoAtividadeCronogramaNovo.addAll(faturamentoAtividadeCronogramas); //ordena��o atrav�s do sort Collections.sort((List) colecaoFaturamentoAtividadeCronogramaNovo, new Comparator() { public int compare(Object a, Object b) { Integer faturamentoAtividadeCronograma1 = new Integer(((FaturamentoAtividadeCronograma) a).getFaturamentoAtividade().getOrdemRealizacao()); Integer faturamentoAtividadeCronograma2 = new Integer(((FaturamentoAtividadeCronograma) b).getFaturamentoAtividade().getOrdemRealizacao()); return faturamentoAtividadeCronograma1.compareTo(faturamentoAtividadeCronograma2); } }); Collection colecaoAtividadeCronogramaAtualizarHelp = new ArrayList(); FiltroFaturamentoGrupoCronogramaMensal filtroCronogramaMensal = new FiltroFaturamentoGrupoCronogramaMensal(); filtroCronogramaMensal.adicionarParametro(new ParametroSimples( FiltroFaturamentoGrupoCronogramaMensal.FATURAMENTO_GRUPO, faturamentoActionForm.getIdGrupoFaturamento())); String anoMes = Util .formatarMesAnoParaAnoMesSemBarra(faturamentoActionForm .getMesAno()); Integer anoMesMenosUm = Util.subtraiAteSeisMesesAnoMesReferencia( new Integer(anoMes), 1); filtroCronogramaMensal.adicionarParametro(new ParametroSimples( FiltroFaturamentoGrupoCronogramaMensal.REFERENCIA, anoMesMenosUm)); Collection colecaoCronogramaMensal = fachada.pesquisar( filtroCronogramaMensal, FaturamentoGrupoCronogramaMensal.class .getName()); FaturamentoGrupoCronogramaMensal faturamentoGrupoCronogramaMensal = (FaturamentoGrupoCronogramaMensal) Util .retonarObjetoDeColecao(colecaoCronogramaMensal); Integer idFatGrupoCronogramaMensal = null; if( faturamentoGrupoCronogramaMensal != null ){ idFatGrupoCronogramaMensal = faturamentoGrupoCronogramaMensal .getId(); } for (Iterator iter = colecaoFaturamentoAtividadeCronogramaNovo .iterator(); iter.hasNext();) { FaturamentoAtividadeAtualizarHelp faturamentoAtividadeAtualizarHelp = new FaturamentoAtividadeAtualizarHelp(); FaturamentoAtividadeCronograma atividadeCronograma = (FaturamentoAtividadeCronograma) iter .next(); if( atividadeCronograma != null && atividadeCronograma.getId() == null ){ continue; } FaturamentoAtividadeCronograma fatAtividadeCronograma = null; if( idFatGrupoCronogramaMensal != null ){ FiltroFaturamentoAtividadeCronograma filtroAtividadeCronograma = new FiltroFaturamentoAtividadeCronograma(); filtroAtividadeCronograma.adicionarParametro(new ParametroSimples( FiltroFaturamentoAtividadeCronograma.FATURAMENTO_GRUPO_CRONOGRAMA_MENSAL_ID, idFatGrupoCronogramaMensal)); filtroAtividadeCronograma.adicionarParametro(new ParametroSimples( FiltroFaturamentoAtividadeCronograma.FATURAMENTO_ATIVIDADE_ID, atividadeCronograma.getFaturamentoAtividade().getId())); Collection colecaoAtividadeCronograma = fachada.pesquisar( filtroAtividadeCronograma, FaturamentoAtividadeCronograma.class.getName()); fatAtividadeCronograma = (FaturamentoAtividadeCronograma) Util .retonarObjetoDeColecao(colecaoAtividadeCronograma); } Date dataRealizacaoMesAnterior = null; if( fatAtividadeCronograma != null && fatAtividadeCronograma.getDataRealizacao() != null){ dataRealizacaoMesAnterior = fatAtividadeCronograma.getDataRealizacao(); } if( dataRealizacaoMesAnterior == null && fatAtividadeCronograma != null && fatAtividadeCronograma.getDataPrevista() != null ){ dataRealizacaoMesAnterior = fatAtividadeCronograma.getDataPrevista(); } Date dataRealizacaoMesAtual = null; Integer qtdDias = null; if( atividadeCronograma != null && atividadeCronograma.getDataRealizacao() != null ){ dataRealizacaoMesAtual = atividadeCronograma.getDataRealizacao(); }else if( dataRealizacaoMesAtual == null && atividadeCronograma != null && atividadeCronograma.getDataPrevista() != null ){ dataRealizacaoMesAtual = atividadeCronograma.getDataPrevista(); }else if( dataRealizacaoMesAtual == null ){ dataRealizacaoMesAtual = new Date(); } if(fatAtividadeCronograma == null || dataRealizacaoMesAnterior == null ){ dataRealizacaoMesAnterior = dataRealizacaoMesAtual; } if (atividadeCronograma != null && fatAtividadeCronograma !=null) { qtdDias = Util.obterQuantidadeDiasEntreDuasDatas(dataRealizacaoMesAnterior , dataRealizacaoMesAtual); faturamentoAtividadeAtualizarHelp.setFaturamentoAtividadeCronograma(atividadeCronograma); faturamentoAtividadeAtualizarHelp.setQuantidadeDias(qtdDias.toString()); faturamentoAtividadeAtualizarHelp.setId(fatAtividadeCronograma.getId()); faturamentoAtividadeAtualizarHelp.setDataRealizacaoMesAnterior(Util.formatarData(dataRealizacaoMesAnterior)); faturamentoAtividadeAtualizarHelp.setIdFaturamentoAtividade(atividadeCronograma.getFaturamentoAtividade().getId().toString()); colecaoAtividadeCronogramaAtualizarHelp.add(faturamentoAtividadeAtualizarHelp); } else { qtdDias = Util.obterQuantidadeDiasEntreDuasDatas( dataRealizacaoMesAnterior , dataRealizacaoMesAtual); faturamentoAtividadeAtualizarHelp.setFaturamentoAtividadeCronograma(atividadeCronograma); faturamentoAtividadeAtualizarHelp.setQuantidadeDias(qtdDias.toString()); faturamentoAtividadeAtualizarHelp.setDataRealizacaoMesAnterior(Util.formatarData(dataRealizacaoMesAnterior)); faturamentoAtividadeAtualizarHelp.setIdFaturamentoAtividade(atividadeCronograma.getFaturamentoAtividade().getId().toString()); if ( atividadeCronograma != null ) { faturamentoAtividadeAtualizarHelp.setId(atividadeCronograma.getId()); } colecaoAtividadeCronogramaAtualizarHelp.add(faturamentoAtividadeAtualizarHelp); } } sessao.setAttribute("colecaoFaturamentoAtividadeCronograma", colecaoAtividadeCronogramaAtualizarHelp); /** * Autor: Hugo Leonardo * Data: 22/06/2010 * CRC: 4694 * Analista: Eduardo Borges * comentardo o c�digo abaixo */ // Desabilita o check caso o AnoMes informado seja superior ao AnoMes do FaturamentoGrupo. if(faturamentoActionForm.getMesAno() != null && !faturamentoActionForm.getMesAno().toString().equals("")){ FiltroFaturamentoGrupo filtroFatGrupo= new FiltroFaturamentoGrupo(); filtroFatGrupo.adicionarParametro(new ParametroSimples( FiltroFaturamentoGrupo.ID, faturamentoActionForm.getIdGrupoFaturamento())); Collection colecaoFaturamentoGrupo = fachada.pesquisar(filtroFatGrupo, FaturamentoGrupo.class.getName()); FaturamentoGrupo faturamentoGrupo = (FaturamentoGrupo) Util.retonarObjetoDeColecao(colecaoFaturamentoGrupo); if(Util.compararAnoMesReferencia(anoMes, faturamentoGrupo.getAnoMesReferencia().toString(), ">")){ sessao.setAttribute("desabilitaCheck", true); }else{ sessao.removeAttribute("desabilitaCheck"); } } /* // Author:Hugo Amorim Data:28/04/2010 CRC:4040 // // Em Gsan, Faturamento, cronograma, manter cronograma, // coluna "comandar" todos os checkbox�s venham por default desmarcados. // (Isso s� deve ocorre quando a empresa for cosanpa) // if(sistemaParametro.getNomeAbreviadoEmpresa().equalsIgnoreCase("COSANPA")){ sessao.setAttribute("EmpresaCosanpa", true); }else{ sessao.removeAttribute("EmpresaCosanpa"); } */ return retorno; } }