package gcom.gui.faturamento.conta; import gcom.cadastro.sistemaparametro.SistemaParametro; import gcom.fachada.Fachada; import gcom.faturamento.conta.Conta; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.seguranca.acesso.PermissaoEspecial; import gcom.seguranca.acesso.usuario.Usuario; import gcom.util.Util; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Collection; import java.util.Date; import java.util.GregorianCalendar; 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 AlterarVencimentoContaAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { //Seta o mapeamento de retorno ActionForward retorno = actionMapping .findForward("exibirManterConta"); HttpSession sessao = httpServletRequest.getSession(false); //Inst�ncia do formul�rio que est� sendo utilizado AlterarVencimentoContaActionForm alterarVencimentoContaActionForm = (AlterarVencimentoContaActionForm) actionForm; Fachada fachada = Fachada.getInstancia(); SistemaParametro sistemaParametro = fachada.pesquisarParametrosDoSistema(); //Contas selecionadas pelo usu�rio String identificadoresConta = alterarVencimentoContaActionForm.getContaSelected(); String[] arrayIdentificadores = identificadoresConta.split(","); int flag = 0; Integer contaNaBase = null; for (int i = 0; i < arrayIdentificadores.length; i++) { // Carregando a conta que est� na base String dadosConta = arrayIdentificadores[i]; String[] idUltimaAlteracao = dadosConta.split("-"); SimpleDateFormat formatter = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss"); Calendar data = new GregorianCalendar(); data.setTimeInMillis(new Long(idUltimaAlteracao[1].trim()) .longValue()); String time = formatter.format(data.getTime()); // alterado para fazer a pesquisa por Hql e nao com filtro como estava sendo feita antes - Fernanda Paiva - 23/08/2006 contaNaBase = fachada.pesquisarExistenciaContaParaConcorrencia(idUltimaAlteracao[0],time); // Verificar atualiza��o realizada antes por outro usu�rio if (contaNaBase == null || contaNaBase.equals("")) { httpServletRequest.setAttribute("reloadPage", "OK"); flag = 1; sessao.setAttribute("erroConcorrencia","erroConcorrencia"); } } //Data de vencimento SimpleDateFormat formatoData = new SimpleDateFormat("dd/MM/yyyy"); Date dataVencimentoConta = new Date(); try { dataVencimentoConta = formatoData.parse(alterarVencimentoContaActionForm.getDataVencimento()); } catch (ParseException e) { e.printStackTrace(); } if (sessao.getAttribute("colecaoContaImovel") != null && (identificadoresConta != null && !identificadoresConta.equalsIgnoreCase("")) && flag == 0){ Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado"); Collection<Conta> colecaoContaImovel = (Collection) sessao.getAttribute("colecaoContaImovel"); // [FS0007] - Validar data de vencimento. if (dataVencimentoConta != null && Util.getAno(dataVencimentoConta) < Util.obterAno(sistemaParametro .getAnoMesFaturamento())) { throw new ActionServletException( "atencao.data_vencimento_conta_inferior_ano_faturamento"); } // ------------------------------------------------------------------------------------------- // Alterado por : Hugo Leonardo - data : 19/08/2010 // Analista : Aryed Lins. // [FS0007] - Validar data de vencimento. // ------------------------------------------------------------------------------------------- //if(sistemaParametro.getIndicadorCalculaVencimento() == 1){ //Caso data corrente seja posterior a data corrente mais a quantidade de dias parametro. Date dataCorrente = new Date(); Integer diasAdicionais = 0; if(sistemaParametro.getNumeroDiasAlteracaoVencimentoPosterior() != null){ diasAdicionais = sistemaParametro.getNumeroDiasAlteracaoVencimentoPosterior().intValue(); } Date dataCorrenteComDias = Util.adicionarNumeroDiasDeUmaData(dataCorrente, diasAdicionais.intValue()); //E o usu�rio n�o tenha permiss�o especial. boolean temPermissaoParaRetificarDataVencimentoAlemPrazoPadrao = fachada.verificarPermissaoEspecial(PermissaoEspecial.RETIFICAR_DATA_VENCIMENTO_ALEM_PRAZO_PADRAO, usuarioLogado); // 1 se a dataVencimentoConta for maior que a dataCorrenteComDias. if(Util.compararData(dataVencimentoConta, dataCorrenteComDias) == 1 && (temPermissaoParaRetificarDataVencimentoAlemPrazoPadrao == false)){ throw new ActionServletException("atencao.necessario_permissao_especial_para_data_vencimento_posterior_permitido"); } //} //------------------------------------------------------------------------------------------- //Alterando a data de vencimento de uma ou mais contas fachada.alterarVencimentoConta(colecaoContaImovel, identificadoresConta, dataVencimentoConta, usuarioLogado); //Realizar um reload na tela de manter conta httpServletRequest.setAttribute("reloadPage", "OK"); } return retorno; } }