package gcom.gui.arrecadacao; import gcom.arrecadacao.banco.Banco; import gcom.arrecadacao.debitoautomatico.DebitoAutomaticoMovimento; 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.ParametroSimples; import java.util.ArrayList; import java.util.Collection; import java.util.Map; 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; /** * Pre-processamento para gerar movimento de d�bito autom�tico para o banco */ public class ExibirGerarMovimentoDebitoAutomaticoBancoAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { ActionForward retorno = actionMapping.findForward("gerarMovimentoDebitoAutomatico"); GerarMovimentoDebitoAutomaticoBancoActionForm form = (GerarMovimentoDebitoAutomaticoBancoActionForm) actionForm; HttpSession sessao = httpServletRequest.getSession(false); Fachada fachada = Fachada.getInstancia(); if (httpServletRequest.getParameter("criaColecaoBanco") != null && !httpServletRequest.getParameter("criaColecaoBanco").equals("")) { boolean mesAnoValido = Util.validarMesAno(form.getMesAnoFaturamento()); if (!mesAnoValido) { throw new ActionServletException("atencao.ano_mes.invalido"); } int ano = Integer.parseInt(form.getMesAnoFaturamento().substring(3, 7)); if (ano < 2005) { throw new ActionServletException("atencao.movimento.maior.2005"); } Integer anoMesReferencia = Util.formatarMesAnoComBarraParaAnoMes(form.getMesAnoFaturamento()); // GRUPOS SELECIONADOS String dadosFaturamentoGrupo = httpServletRequest.getParameter("criaColecaoBanco"); // GERANDO COLE��O DE GRUPOS Collection colecaoIdsFaturamentoGrupo = this.obterGruposSelecionados(dadosFaturamentoGrupo, anoMesReferencia); // OBTENDO OS D�BITOS AUTOM�TICOS Map<Banco, Collection<DebitoAutomaticoMovimento>> debitosAutomaticoBancosMap = fachada.pesquisaDebitoAutomaticoMovimento( colecaoIdsFaturamentoGrupo, anoMesReferencia); if (debitosAutomaticoBancosMap != null && !debitosAutomaticoBancosMap.isEmpty()) { sessao.setAttribute("debitosAutomaticoBancosMap", debitosAutomaticoBancosMap); } else { throw new ActionServletException("atencao.nao.movimento.debito.automatico"); } } else { sessao.removeAttribute("debitosAutomaticoBancosMap"); } if (httpServletRequest.getParameter("limpaColecao") != null && !httpServletRequest.getParameter("limpaColecao").equals("")) { sessao.removeAttribute("debitosAutomaticoBancosMap"); } if (httpServletRequest.getParameter("menu") != null && !httpServletRequest.getParameter("menu").equals("")) { form.reset(actionMapping, httpServletRequest); FiltroFaturamentoGrupo filtroFaturamentoGrupo = new FiltroFaturamentoGrupo(FiltroFaturamentoGrupo.DESCRICAO); filtroFaturamentoGrupo.adicionarParametro(new ParametroSimples(FiltroFaturamentoGrupo.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); Collection colecaoFaturamentoGrupo = fachada.pesquisar(filtroFaturamentoGrupo, FaturamentoGrupo.class.getName()); sessao.setAttribute("colecaoFaturamentoGrupo", colecaoFaturamentoGrupo); } return retorno; } private Collection obterGruposSelecionados(String faturamentoGrupoStringBuffer, Integer anoMesReferencia) { Collection retorno = null; if (faturamentoGrupoStringBuffer != null && !faturamentoGrupoStringBuffer.equalsIgnoreCase("")) { retorno = new ArrayList(); String[] arrayFaturamentoGrupo = faturamentoGrupoStringBuffer.split(":"); String[] arrayGrupoEReferencia = null; Integer idFaturamentoGrupo = null; Integer anoMesFaturamentoGrupo = null; for (int x = 0; x < arrayFaturamentoGrupo.length; x++) { arrayGrupoEReferencia = arrayFaturamentoGrupo[x].split(";"); idFaturamentoGrupo = new Integer(arrayGrupoEReferencia[0]); anoMesFaturamentoGrupo = new Integer(arrayGrupoEReferencia[1]); if (anoMesReferencia > anoMesFaturamentoGrupo) { throw new ActionServletException("atencao.faturamento.posterior.faturamento.grupo"); } boolean grupoFaturado = Fachada.getInstancia().verificarAnoMesReferenciaCronogramaGrupoFaturamentoMensal( idFaturamentoGrupo, anoMesReferencia); if (!grupoFaturado) { throw new ActionServletException("atencao.grupo_nao_faturado", idFaturamentoGrupo.toString()); } retorno.add(idFaturamentoGrupo); } } return retorno; } }