package gcom.gui.cobranca; import gcom.cadastro.sistemaparametro.FiltroSistemaParametro; import gcom.cadastro.sistemaparametro.SistemaParametro; import gcom.cobranca.CobrancaAcao; import gcom.cobranca.CobrancaAcaoAtividadeCronograma; import gcom.cobranca.CobrancaAcaoCronograma; import gcom.cobranca.CobrancaAtividade; import gcom.cobranca.CobrancaGrupo; import gcom.cobranca.CobrancaGrupoCronogramaMes; import gcom.cobranca.FiltroCobrancaAtividade; import gcom.cobranca.FiltroCobrancaGrupo; import gcom.cobranca.FiltroCobrancaGrupoCronogramaMes; import gcom.cobranca.bean.AcaoEAtividadeCobrancaHelper; import gcom.cobranca.bean.CobrancaCronogramaHelper; import gcom.fachada.Fachada; import gcom.faturamento.FaturamentoGrupo; import gcom.faturamento.FiltroFaturamentoGrupo; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.util.ConstantesSistema; import gcom.util.Util; import gcom.util.filtro.ParametroNulo; import gcom.util.filtro.ParametroSimples; 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; /** * * @author Administrador */ public class InserirCobrancaCronogramaAction 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("telaSucesso"); CobrancaActionForm cobrancaActionForm = (CobrancaActionForm) actionForm; Fachada fachada = Fachada.getInstancia(); // Mudar isso quando tiver esquema de seguran�a HttpSession sessao = httpServletRequest.getSession(false); String confirmacao = httpServletRequest.getParameter("confirmado"); // Collection acoesCobranca = (Collection) sessao.getAttribute("acoesCobranca"); Collection atividadesCobranca = (Collection) sessao.getAttribute("atividadesCobranca"); // Collection atividadesCobrancaObrigatoriedadeAtivo = (Collection) sessao.getAttribute("atividadesCobrancaObrigatoriedadeAtivo"); Collection colecaoAcaoEAtividadeCobranca = (Collection)sessao.getAttribute("colecaoAcaoEAtividadeCobranca"); Iterator iterAcaoEAtividadeCobranca = colecaoAcaoEAtividadeCobranca.iterator(); Collection cobrancasAtividadesParaInsercao = new ArrayList(); Collection colecaoCobrancaCronogramaHelper = new ArrayList(); CobrancaAcao cobrancaAcao = null; CobrancaAtividade cobrancaAtividade = null; CobrancaGrupoCronogramaMes cobrancaGrupoCronogramaMes = null; CobrancaAcaoCronograma cobrancaAcaoCronograma = null; CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma = null; CobrancaGrupo cobrancaGrupo = new CobrancaGrupo(); CobrancaCronogramaHelper cobrancaCronogramaHelper = null; cobrancaGrupo.setId(new Integer(cobrancaActionForm.getIdGrupoCobranca())); // Iterator iteratorAcaoCobranca = acoesCobranca.iterator(); String idAcaoCobranca = ""; String qtdMaximaDocumentos = ""; String dataPrevista = ""; String anoMes = ""; String mesAno = ""; //se n�o vem da p�gina de confirma��o if (confirmacao == null || !confirmacao.trim().equalsIgnoreCase("ok")){ int contadorAtividades = 0; while (iterAcaoEAtividadeCobranca.hasNext()) { AcaoEAtividadeCobrancaHelper helper = (AcaoEAtividadeCobrancaHelper) iterAcaoEAtividadeCobranca.next(); cobrancaAcao = helper.getAcaoCobranca(); atividadesCobranca = helper.getAtividadesCobranca(); // } // while (iteratorAcaoCobranca.hasNext()) { Iterator iteratorAtividadesCobranca = atividadesCobranca.iterator(); cobrancaCronogramaHelper = new CobrancaCronogramaHelper(); cobrancasAtividadesParaInsercao = new ArrayList(); // cobrancaAcao = (CobrancaAcao) iteratorAcaoCobranca.next(); // ----seta os valores no objeto CobrancaGrupoCronogramaMes cobrancaGrupoCronogramaMes = new CobrancaGrupoCronogramaMes(); cobrancaGrupoCronogramaMes.setCobrancaGrupo(cobrancaGrupo); mesAno = cobrancaActionForm.getMesAno(); String mes = mesAno.substring(0, 2); String ano = mesAno.substring(3, 7); anoMes = ano + "" + mes; cobrancaGrupoCronogramaMes.setAnoMesReferencia(Integer.parseInt(anoMes)); // cobrancaGrupoCronogramaMes.setUltimaAlteracao(new Date()); cobrancaCronogramaHelper.setCobrancaGrupoCronogramaMes(cobrancaGrupoCronogramaMes); // ----contador utilizado para verificar se ha alguma atividade com // data preenchida quando comandaer for nulo int verificaDataPreenchida = 0; // ----seta os valores no objeto CobrancaAcaoCronograma cobrancaAcaoCronograma = new CobrancaAcaoCronograma(); cobrancaAcaoCronograma.setCobrancaAcao(cobrancaAcao); cobrancaCronogramaHelper.setCobrancaAcaoCronograma(cobrancaAcaoCronograma); // ------ se o indicador de obrigatoriedade for igual a sim(1) /** * Caso o usu�rio n�o informe data prevista para todas as atividades * das a��es que obrigatoriamente devem constar no * cronograma(CBAC_ICOBRIGATORIEDADE=1), exibir a mensagem "� * necess�rio informar a data prevista para as atividades das a��es * que obrigatoriamente devem constar no cronograma" e retornar para * o passo correspodente no fluxo principal. */ if (cobrancaAcao.getIndicadorObrigatoriedade().intValue() == 1) { while (iteratorAtividadesCobranca.hasNext()) { contadorAtividades += 1; cobrancaAtividade = (CobrancaAtividade) iteratorAtividadesCobranca.next(); qtdMaximaDocumentos = (String) httpServletRequest.getParameter("qtd_a" + cobrancaAcao.getId().toString() + "n" + cobrancaAtividade.getId().toString()); dataPrevista = ""; dataPrevista = (String) httpServletRequest.getParameter("a" + cobrancaAcao.getId().toString() + "n" + cobrancaAtividade.getId().toString()); if (dataPrevista.trim().equals("") && cobrancaAtividade.getIndicadorObrigatoriedade() == 1) { throw new ActionServletException("atencao.cobranca.data_prevista_acao_obrigatoria"); } else { // cobrancaAcao = // (CobrancaAcao)iteratorAcaoCobranca.next(); // --------pega o valor de comandar.Ex: comandar2 idAcaoCobranca = (String) httpServletRequest.getParameter("comandar" + cobrancaAcao.getId().toString() + "atividade" + cobrancaAtividade.getId()); // -------- separa o id da string comandar // ----seta os valores no objeto // CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma = new CobrancaAcaoAtividadeCronograma(); cobrancaAcaoAtividadeCronograma.setCobrancaAtividade(cobrancaAtividade); // Verifica se foi preenchido o campo de quantidade maxima de documento e // seta no objeto if (qtdMaximaDocumentos != null && !qtdMaximaDocumentos.equals("")){ cobrancaAcaoAtividadeCronograma.setQuantidadeMaximaDocumentos(new Integer(qtdMaximaDocumentos)); } if (!dataPrevista.trim().equals("")) { Date DataPrevistaAcao = Util.converteStringParaDate(dataPrevista); // [FS0004] Validar Datas Previstas // Caso o usu�rio informe uma data prevista para qualquer atividade de qualquer a��o // com o m�s/ano menor que o m�s/ano da data atual, exibir a mensagem // 'Data Prevista deve ser maior do que a data atual.' e retornar para o passo // correspondente no fluxo principal if(DataPrevistaAcao.compareTo(Util.formatarDataSemHora(new Date()))<0){ throw new ActionServletException("atencao.data_prevista_menor_data_atual"); } cobrancaAcaoAtividadeCronograma.setDataPrevista(Util.converteStringParaDate(dataPrevista)); if (idAcaoCobranca != null && idAcaoCobranca.trim().equals("1")) { cobrancaAcaoAtividadeCronograma.setComando(Util .converteStringParaDateHora(dataPrevista + " " + Util.formatarHoraSemData(new Date()))); } else { cobrancaAcaoAtividadeCronograma.setComando(null); } cobrancasAtividadesParaInsercao.add(cobrancaAcaoAtividadeCronograma); } } } } else { verificaDataPreenchida = 0; while (iteratorAtividadesCobranca.hasNext()) { contadorAtividades += 1; cobrancaAtividade = (CobrancaAtividade) iteratorAtividadesCobranca.next(); qtdMaximaDocumentos = (String) httpServletRequest.getParameter("qtd_a" + cobrancaAcao.getId().toString() + "n" + cobrancaAtividade.getId().toString()); dataPrevista = ""; dataPrevista = (String) httpServletRequest.getParameter("a" + cobrancaAcao.getId().toString() + "n" + cobrancaAtividade.getId().toString()); cobrancaAcaoAtividadeCronograma = new CobrancaAcaoAtividadeCronograma(); cobrancaAcaoAtividadeCronograma.setCobrancaAtividade(cobrancaAtividade); // Verifica se foi preenchido o campo de quantidade maxima de documento e seta no objeto if (qtdMaximaDocumentos != null && !qtdMaximaDocumentos.equals("")){ cobrancaAcaoAtividadeCronograma.setQuantidadeMaximaDocumentos(new Integer(qtdMaximaDocumentos)); } if (!dataPrevista.trim().equals("") || cobrancaAtividade.getIndicadorObrigatoriedade() .equals(CobrancaAtividade.INDICADOR_OBRIGATORIEDADE_ATIVO)) { verificaDataPreenchida += 1; if (!dataPrevista.trim().equals("")) { Date DataPrevistaAcao = Util.converteStringParaDate(dataPrevista); // [FS0004] Validar Datas Previstas // Caso o usu�rio informe uma data prevista para qualquer atividade de qualquer a��o // com o m�s/ano menor que o m�s/ano da data atual, exibir a mensagem // 'Data Prevista deve ser maior do que a data atual.' e retornar para o passo // correspondente no fluxo principal if(DataPrevistaAcao.compareTo(Util.formatarDataSemHora(new Date()))<0){ throw new ActionServletException("atencao.data_prevista_menor_data_atual"); } // --------pega o valor de comandar.Ex: comandar2 idAcaoCobranca = (String) httpServletRequest.getParameter("comandar" + cobrancaAcao.getId().toString() + "atividade" + cobrancaAtividade.getId()); // -------- separa o id da string comandar // ----seta os valores no objeto // CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma.setDataPrevista(Util.converteStringParaDate(dataPrevista)); if (idAcaoCobranca != null && idAcaoCobranca.trim().equals("1")) { cobrancaAcaoAtividadeCronograma .setComando(Util.converteStringParaDateHora(dataPrevista + " " + Util.formatarHoraSemData(new Date()))); } else { cobrancaAcaoAtividadeCronograma.setComando(null); } } } else { cobrancaAcaoAtividadeCronograma.setDataPrevista(null); cobrancaAcaoAtividadeCronograma.setComando(null); } if (cobrancaAcaoAtividadeCronograma.getDataPrevista() != null && !cobrancaAcaoAtividadeCronograma.getDataPrevista().equals("")) { cobrancasAtividadesParaInsercao.add(cobrancaAcaoAtividadeCronograma); } } /** * Caso o usuario informe a data prevista somente para algumas * atividades da acao, exibir a mensagem "� necess�rio informar * a data prevista para todas as atividades da a��o." */ if (verificaDataPreenchida > 0) { FiltroCobrancaAtividade filtroCobrancaAtividade = new FiltroCobrancaAtividade(); filtroCobrancaAtividade.adicionarParametro(new ParametroSimples(FiltroCobrancaAtividade.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); filtroCobrancaAtividade.adicionarParametro(new ParametroSimples(FiltroCobrancaAtividade.INDICADOR_CRONOGRAMA, CobrancaAtividade.ATIVO_CRONOGRAMA)); filtroCobrancaAtividade.adicionarParametro(new ParametroSimples(FiltroCobrancaAtividade.INDICADOR_OBRIGATORIEDADE, CobrancaAtividade.INDICADOR_OBRIGATORIEDADE_ATIVO)); filtroCobrancaAtividade.setCampoOrderBy(FiltroCobrancaAtividade.ORDEM_REALIZACAO); filtroCobrancaAtividade.adicionarParametro(new ParametroSimples( FiltroCobrancaAtividade.ID_COBRANCA_ACAO, cobrancaAcao.getId())); Collection atividadesCobrancaObrigatoriedadeAtivo = fachada.pesquisar(filtroCobrancaAtividade, CobrancaAtividade.class.getName()); if(atividadesCobrancaObrigatoriedadeAtivo == null || atividadesCobrancaObrigatoriedadeAtivo.isEmpty()){ filtroCobrancaAtividade = new FiltroCobrancaAtividade(); filtroCobrancaAtividade.adicionarParametro(new ParametroSimples(FiltroCobrancaAtividade.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); filtroCobrancaAtividade.adicionarParametro(new ParametroSimples(FiltroCobrancaAtividade.INDICADOR_CRONOGRAMA, CobrancaAtividade.ATIVO_CRONOGRAMA)); filtroCobrancaAtividade.adicionarParametro(new ParametroSimples(FiltroCobrancaAtividade.INDICADOR_OBRIGATORIEDADE, CobrancaAtividade.INDICADOR_OBRIGATORIEDADE_ATIVO)); filtroCobrancaAtividade.setCampoOrderBy(FiltroCobrancaAtividade.ORDEM_REALIZACAO); filtroCobrancaAtividade.adicionarParametro(new ParametroNulo(FiltroCobrancaAtividade.ID_COBRANCA_ACAO)); atividadesCobrancaObrigatoriedadeAtivo = fachada.pesquisar(filtroCobrancaAtividade, CobrancaAtividade.class.getName()); } if(verificaDataPreenchida < atividadesCobrancaObrigatoriedadeAtivo.size()){ throw new ActionServletException("atencao.cobranca.data_prevista_algumas_atividades"); } } } cobrancaCronogramaHelper.setCritica1(false); cobrancaCronogramaHelper.setCritica2(false); cobrancaCronogramaHelper.setCritica3(false); cobrancaCronogramaHelper.setCobrancasAtividadesParaInsercao(cobrancasAtividadesParaInsercao); colecaoCobrancaCronogramaHelper.add(cobrancaCronogramaHelper); } if (contadorAtividades == 0) { throw new ActionServletException("atencao.cobranca.nenhuma_atividade"); } }else{ colecaoCobrancaCronogramaHelper = (Collection) sessao.getAttribute("colecaoCobrancaCronogramaHelper"); cobrancaGrupo = (CobrancaGrupo) sessao.getAttribute("cobrancaGrupo"); mesAno = (String) sessao.getAttribute("mesAno"); cobrancaGrupoCronogramaMes = (CobrancaGrupoCronogramaMes) sessao.getAttribute("cobrancaGrupoCronogramaMes"); } for (Iterator iterCobrancacronogramaHelper = colecaoCobrancaCronogramaHelper.iterator(); iterCobrancacronogramaHelper .hasNext();) { CobrancaCronogramaHelper cobrancaCronogramaHelperAux = (CobrancaCronogramaHelper) iterCobrancacronogramaHelper.next(); //[FS0006] - Verificar a��o predecessora // se a��o tem predecessora if (cobrancaCronogramaHelperAux.getCobrancaAcaoCronograma().getCobrancaAcao().getCobrancaAcaoPredecessora() != null){ for (Iterator iterCobrancaAcaoAtividadeCronograma = cobrancaCronogramaHelperAux.getCobrancasAtividadesParaInsercao() .iterator(); iterCobrancaAcaoAtividadeCronograma.hasNext();) { CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma2 = (CobrancaAcaoAtividadeCronograma) iterCobrancaAcaoAtividadeCronograma.next(); //se a atividade for EMITIR if (cobrancaAcaoAtividadeCronograma2.getCobrancaAtividade().getId().intValue() == CobrancaAtividade.EMITIR){ //Caso a atividade EMITIR da a��o predecessora j� tenha perdido a validade CobrancaAcao cobrancaAcaoPredecessora = cobrancaCronogramaHelperAux .getCobrancaAcaoCronograma().getCobrancaAcao().getCobrancaAcaoPredecessora(); //recupera cobrancaAcaoAtividadeCronograma referente a a��o predecessora da a��o em quest�o cobrancaAcaoAtividadeCronograma = recuperaAcaoPredecessora(cobrancaAcaoPredecessora.getId(), colecaoCobrancaCronogramaHelper); if (cobrancaCronogramaHelperAux.getCritica1() == false){ if (cobrancaAcaoAtividadeCronograma != null){ //data de vencimento da a��o predecessora Date dataVencimentoAcaoPredecessora = Util.adicionarNumeroDiasDeUmaData(cobrancaAcaoAtividadeCronograma.getDataPrevista(), cobrancaAcaoPredecessora.getNumeroDiasValidade().intValue()); if (!(cobrancaAcaoAtividadeCronograma2.getDataPrevista().compareTo(dataVencimentoAcaoPredecessora) <= 0)){ //seta os atributos na sess�o para uso posterior //colecaoCobrancaCronogramaHelper.remove(cobrancaCronogramaHelperAux); cobrancaCronogramaHelperAux.setCritica1(true); //colecaoCobrancaCronogramaHelper.add(cobrancaCronogramaHelperAux); sessao.setAttribute("colecaoCobrancaCronogramaHelper", colecaoCobrancaCronogramaHelper); sessao.setAttribute("cobrancaGrupo", cobrancaGrupo); sessao.setAttribute("mesAno", mesAno); sessao.setAttribute("cobrancaGrupoCronogramaMes", cobrancaGrupoCronogramaMes); sessao.setAttribute("reexibirCritica", "true"); // mapear para p�gina de confirma��o httpServletRequest.setAttribute("caminhoActionConclusao","/gsan/inserirCobrancaCronogramaAction.do"); // Monta a p�gina de confirma��o // Exibe a pergunta: Confirma data da atividade para a a��o <<descri��o da a��o>> ? // Se o usu�rio confirmar prosseguir, caso contr�rio aguardar a // informa��o da nova data return montarPaginaConfirmacao( "atencao.data_validade_acao_predecessora_vencido", httpServletRequest, actionMapping, new String[] {cobrancaAcaoPredecessora.getDescricaoCobrancaAcao(), cobrancaCronogramaHelperAux.getCobrancaAcaoCronograma().getCobrancaAcao().getDescricaoCobrancaAcao()}); } } } if (cobrancaCronogramaHelperAux.getCritica2() == false){ //Caso a data informada para a atividade EMITIR n�o seja maior que NN dias da atividade EMITIR da a��o predecessora if (cobrancaAcaoAtividadeCronograma != null){ //data de vencimento da a��o predecessora //if colocado pois bases de algumas empresas esse campo //est� nulo para a��es que s�o predecessoras de outra if (cobrancaAcaoPredecessora.getNumeroDiasMinimoAcaoPrecedente() != null){ Date dataVencimentoAcaoPredecessora = Util.adicionarNumeroDiasDeUmaData(cobrancaAcaoAtividadeCronograma.getDataPrevista(), cobrancaAcaoPredecessora.getNumeroDiasMinimoAcaoPrecedente()); if (!(cobrancaAcaoAtividadeCronograma2.getDataPrevista().compareTo(dataVencimentoAcaoPredecessora) >= 0)){ //seta os atributos na sess�o para uso posterior //colecaoCobrancaCronogramaHelper.remove(cobrancaCronogramaHelperAux); cobrancaCronogramaHelperAux.setCritica2(true); //colecaoCobrancaCronogramaHelper.add(cobrancaCronogramaHelperAux); sessao.setAttribute("colecaoCobrancaCronogramaHelper", colecaoCobrancaCronogramaHelper); sessao.setAttribute("cobrancaGrupo", cobrancaGrupo); sessao.setAttribute("mesAno", mesAno); sessao.setAttribute("cobrancaGrupoCronogramaMes", cobrancaGrupoCronogramaMes); sessao.setAttribute("reexibirCritica", "true"); //mapear para p�gina de confirma��o httpServletRequest.setAttribute("caminhoActionConclusao", "/gsan/inserirCobrancaCronogramaAction.do"); // Monta a p�gina de confirma��o // Exibe a pergunta: Confirma data da atividade para a a��o <<descri��o da a��o>> ? // Se o usu�rio confirmar prosseguir, caso contr�rio aguardar a // informa��o da nova data return montarPaginaConfirmacao( "atencao.intervalo_dias_minimo_entre_acao_e_predecessora", httpServletRequest, actionMapping, new String[] { cobrancaAcaoPredecessora.getDescricaoCobrancaAcao(), cobrancaCronogramaHelperAux.getCobrancaAcaoCronograma().getCobrancaAcao().getDescricaoCobrancaAcao() ,cobrancaCronogramaHelperAux.getCobrancaAcaoCronograma().getCobrancaAcao().getDescricaoCobrancaAcao()}); } } } } break; } } }else{ //[FS0010] - Verificar a��o sem predecessora // Para cada A��o de Cobran�a que n�o tenha a��o predecessora (CBAC_IDACAOPRECEDENTE com valor igual a nulo): for (Iterator iterCobrancaAcaoAtividadeCronograma = cobrancaCronogramaHelperAux.getCobrancasAtividadesParaInsercao() .iterator(); iterCobrancaAcaoAtividadeCronograma.hasNext();) { CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma2 = (CobrancaAcaoAtividadeCronograma) iterCobrancaAcaoAtividadeCronograma.next(); if (cobrancaAcaoAtividadeCronograma2.getCobrancaAtividade().getId().intValue() == CobrancaAtividade.EMITIR || cobrancaAcaoAtividadeCronograma2.getCobrancaAtividade().getId().intValue() == CobrancaAtividade.SIMULAR){ FiltroFaturamentoGrupo filtroFaturamentoGrupo = new FiltroFaturamentoGrupo(); filtroFaturamentoGrupo.adicionarParametro(new ParametroSimples( FiltroFaturamentoGrupo.ID, new Integer(cobrancaActionForm.getIdGrupoCobranca()))); Collection colecaoFaturamentoGrupo = fachada.pesquisar(filtroFaturamentoGrupo, FaturamentoGrupo.class.getName()); FaturamentoGrupo faturamentoGrupo = (FaturamentoGrupo) Util.retonarObjetoDeColecao(colecaoFaturamentoGrupo); /*Caso exista grupo de faturamento, ou seja, possua registro (na tabela FATURAMENTO_GRUPO * onde FTGR_ID = CBGR_ID da tabela da tabela COBRANCA_GRUPO e FTGR_AMREFERENCIA <> NULL * e FTGR_NNDIAVENCIMENTO <> NULL) */ if (faturamentoGrupo != null && faturamentoGrupo.getAnoMesReferencia() != null && faturamentoGrupo.getDiaVencimento() != null){ /*Caso a data de vencimento das contas do �ltimo ciclo de faturamento do grupo de * faturamento correspondente ao grupo de cobran�a para o qual est� sendo informado * o cronograma (compor a data de vencimento com o dia de vencimento + m�s/ano de * refer�ncia da tabela FATURAMENT_GRUPO) somada ao n�mero de dias para considerar * d�bito, obtido na tabela SISTEMA_PARAMETROS, maior ou igual a data informada * para a atividade EMITIR OU SIMULAR da a��o em quest�o*/ int diaVencimentoGrupo = faturamentoGrupo.getDiaVencimento(); int mesVencimentoGrupo = new Integer(faturamentoGrupo.getAnoMesReferencia().toString().substring(4)).intValue(); int anoVencimentoGrupo = new Integer(faturamentoGrupo.getAnoMesReferencia().toString().substring(0,4)).intValue(); Date dateVencimentoGrupo = Util.criarData(diaVencimentoGrupo, mesVencimentoGrupo, anoVencimentoGrupo); FiltroSistemaParametro filtroSistemaParametro= new FiltroSistemaParametro(); Collection colecaoSistemaParametro = fachada.pesquisar(filtroSistemaParametro, SistemaParametro.class.getName()); if (colecaoSistemaParametro != null && !colecaoSistemaParametro.isEmpty()) { SistemaParametro sistemaParametro = (SistemaParametro) colecaoSistemaParametro.iterator().next(); dateVencimentoGrupo = Util.adicionarNumeroDiasDeUmaData(dateVencimentoGrupo, sistemaParametro.getNumeroDiasVencimentoCobranca().intValue()); if (cobrancaCronogramaHelperAux.getCritica3() == false){ if (cobrancaAcaoAtividadeCronograma2.getDataPrevista().compareTo(dateVencimentoGrupo) < 0){ // colecaoCobrancaCronogramaHelper.remove(cobrancaCronogramaHelperAux); cobrancaCronogramaHelperAux.setCritica3(true); // colecaoCobrancaCronogramaHelper.add(cobrancaCronogramaHelperAux); sessao.setAttribute("colecaoCobrancaCronogramaHelper", colecaoCobrancaCronogramaHelper); sessao.setAttribute("cobrancaGrupo", cobrancaGrupo); sessao.setAttribute("mesAno", mesAno); sessao.setAttribute("cobrancaGrupoCronogramaMes", cobrancaGrupoCronogramaMes); sessao.setAttribute("reexibirCritica", "true"); // mapear para p�gina de confirma��o httpServletRequest.setAttribute("caminhoActionConclusao", "/gsan/inserirCobrancaCronogramaAction.do"); // Monta a p�gina de confirma��o // Exibe a pergunta: Confirma data da atividade para a a��o <<descri��o da a��o>> ? // Se o usu�rio confirmar prosseguir, caso contr�rio aguardar a // informa��o da nova data return montarPaginaConfirmacao( "atencao.acao_nao_contemplara_contas", httpServletRequest, actionMapping, new String[] {cobrancaCronogramaHelperAux.getCobrancaAcaoCronograma().getCobrancaAcao().getDescricaoCobrancaAcao(), Util.formatarAnoMesParaMesAno(faturamentoGrupo.getAnoMesReferencia())}); } } } } } } } } // -----Chama o metodo inserirCobrancaCronograma da fachada fachada.inserirCobrancaCronograma(colecaoCobrancaCronogramaHelper, this .getUsuarioLogado(httpServletRequest)); FiltroCobrancaGrupo filtroCobrancaGrupo = new FiltroCobrancaGrupo(); filtroCobrancaGrupo.adicionarParametro(new ParametroSimples(FiltroCobrancaGrupo.ID, cobrancaGrupo.getId())); Collection colecaoCobrancaGrupo = fachada.pesquisar(filtroCobrancaGrupo, CobrancaGrupo.class.getName()); CobrancaGrupo cobrancaGrupoExibicao = (CobrancaGrupo) colecaoCobrancaGrupo.iterator().next(); FiltroCobrancaGrupoCronogramaMes filtroCobrancaGrupoCronogramaMes = new FiltroCobrancaGrupoCronogramaMes(); filtroCobrancaGrupoCronogramaMes.adicionarParametro(new ParametroSimples( FiltroCobrancaGrupoCronogramaMes.ID_COBRANCA_GRUPO, cobrancaGrupo.getId())); filtroCobrancaGrupoCronogramaMes.adicionarParametro(new ParametroSimples( FiltroCobrancaGrupoCronogramaMes.ANO_MES_REFERENCIA, Util.formatarMesAnoParaAnoMesSemBarra(mesAno))); Collection colecaoCobrancaGrupoCronogramaMes = fachada.pesquisar( filtroCobrancaGrupoCronogramaMes, CobrancaGrupoCronogramaMes.class.getName()); CobrancaGrupoCronogramaMes cobrancaGrupoCronogramaMesAtualizacao = null; cobrancaGrupoCronogramaMesAtualizacao = (CobrancaGrupoCronogramaMes) colecaoCobrancaGrupoCronogramaMes.iterator().next(); //remove da sess�o objetos n�o mais utiliz�veis sessao.removeAttribute("colecaoCobrancaCronogramaHelper"); sessao.removeAttribute("cobrancaGrupo"); sessao.removeAttribute("mesAno"); sessao.removeAttribute("cobrancaGrupoCronogramaMes"); sessao.removeAttribute("reexibirCritica"); montarPaginaSucesso(httpServletRequest, "Cronograma de Cobran�a do " + cobrancaGrupoExibicao.getDescricao() + " referente a " + Util.formatarAnoMesParaMesAno(cobrancaGrupoCronogramaMes.getAnoMesReferencia()) + " inserido com sucesso.", "Inserir outro Cronograma de Cobran�a", "exibirInserirCronogramaCobrancaAction.do?menu=sim", "exibirAtualizarCobrancaCronogramaAction.do?filtro=S&menu=sim&idRegistroAtualizacao=" + cobrancaGrupoCronogramaMesAtualizacao.getId().toString(), "Atualizar o Cronograma de Cobran�a inserido"); return retorno; } private CobrancaAcaoAtividadeCronograma recuperaAcaoPredecessora(int idCobrancaAcao, Collection colecaoCobrancaCronogramaHelper){ CobrancaAcaoAtividadeCronograma retorno = null; for (Iterator iter = colecaoCobrancaCronogramaHelper.iterator(); iter .hasNext();) { CobrancaCronogramaHelper cobrancaCronogramaHelper = (CobrancaCronogramaHelper) iter.next(); if (cobrancaCronogramaHelper.getCobrancaAcaoCronograma() != null){ if (cobrancaCronogramaHelper.getCobrancaAcaoCronograma().getCobrancaAcao().getId().intValue() == idCobrancaAcao){ for (Iterator iterator = cobrancaCronogramaHelper.getCobrancasAtividadesParaInsercao() .iterator(); iterator.hasNext();) { CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma = (CobrancaAcaoAtividadeCronograma) iterator.next(); if (cobrancaAcaoAtividadeCronograma.getCobrancaAtividade().getId().intValue() == CobrancaAtividade.EMITIR){ retorno = cobrancaAcaoAtividadeCronograma; break; } } break; } } } return retorno; } }