package gcom.gui.faturamento.conta; import gcom.cadastro.imovel.Imovel; import gcom.cadastro.sistemaparametro.SistemaParametro; import gcom.fachada.Fachada; import gcom.faturamento.FaturamentoGrupo; import gcom.faturamento.FiltroVencimentoAlternativo; import gcom.faturamento.VencimentoAlternativo; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.interceptor.RegistradorOperacao; import gcom.seguranca.acesso.Operacao; import gcom.seguranca.acesso.usuario.Usuario; import gcom.seguranca.acesso.usuario.UsuarioAcao; import gcom.seguranca.acesso.usuario.UsuarioAcaoUsuarioHelper; import gcom.util.ConstantesSistema; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collection; import java.util.Date; 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 InserirDiaVencimentoAlternativoAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { // Seta o mapeamento de retorno ActionForward retorno = actionMapping.findForward("telaSucesso"); Fachada fachada = Fachada.getInstancia(); // Mudar isso quando tiver esquema de seguran�a HttpSession sessao = httpServletRequest.getSession(false); Usuario usuarioLogado = (Usuario)sessao.getAttribute(Usuario.USUARIO_LOGADO); // Inst�ncia do formul�rio que est� sendo utilizado InformarVencimentoAlternativoActionForm informarVencimentoAlternativoActionForm = (InformarVencimentoAlternativoActionForm) actionForm; Imovel imovel = (Imovel) sessao.getAttribute("imovel"); VencimentoAlternativo vencimentoAlternativo = (VencimentoAlternativo) sessao .getAttribute("vencimentoAlternativo"); SistemaParametro sistemaParametro = fachada.pesquisarParametrosDoSistema(); Collection vencimentosAlternativos = new ArrayList(); if(vencimentoAlternativo == null || vencimentoAlternativo.equals("")) { FiltroVencimentoAlternativo filtroVencimentoAlternativo = new FiltroVencimentoAlternativo(FiltroVencimentoAlternativo.DATA_IMPLANTACAO); filtroVencimentoAlternativo .adicionarParametro(new ParametroSimples( FiltroVencimentoAlternativo.IMOVEL_ID, imovel .getId())); vencimentosAlternativos = fachada.pesquisar( filtroVencimentoAlternativo, VencimentoAlternativo.class .getName()); if (vencimentosAlternativos != null && !vencimentosAlternativos.isEmpty()) { vencimentoAlternativo = (VencimentoAlternativo) Util .retonarObjetoDeColecao(vencimentosAlternativos); Date dataVencimento = vencimentoAlternativo .getDataImplantacao(); SimpleDateFormat dataFormato = new SimpleDateFormat( "dd/MM/yyyy"); String dataVencimentoString = null; if (dataVencimento != null) { dataVencimentoString = dataFormato.format(dataVencimento); } informarVencimentoAlternativoActionForm .setDataAlteracaoVencimento(dataVencimentoString == null ? "" : "" + dataVencimentoString); } }else{ Short numeroMesesMinimoVencimentoAlternativo = sistemaParametro.getNumeroMesesMinimoAlteracaoVencimento(); /*Calendar calendarVencimentoAlternativo = new GregorianCalendar(); calendarVencimentoAlternativo.setTime(vencimentoAlternativo .getDataImplantacao()); int mesVencimentoAlternativo = calendarVencimentoAlternativo .get(Calendar.MONTH); Calendar calendarAtual = new GregorianCalendar(); int mesAtual = calendarAtual.get(Calendar.MONTH);*/ //verifica se usuario possue permiss�o especial para informar //o vencimento alternativo antes do per�odo v�lido boolean temPermissaoInformarVencimentoAlternativoAntesDoPeriodoValido = fachada .verificarPermissaoInformarVencimentoAlternativoAntesDoPeriodoValido(usuarioLogado); Date dataImplantacao = vencimentoAlternativo.getDataImplantacao(); Date dataAtual = new Date(); int diferencaMes = Util.dataDiff(dataAtual,dataImplantacao); if (diferencaMes < numeroMesesMinimoVencimentoAlternativo && !temPermissaoInformarVencimentoAlternativoAntesDoPeriodoValido) { throw new ActionServletException( "atencao.imovel.vencimento.alterado", null, numeroMesesMinimoVencimentoAlternativo.toString()); } else { vencimentoAlternativo.setDateExclusao(new Date()); vencimentoAlternativo.setUltimaAlteracao(new Date()); fachada.atualizar(vencimentoAlternativo); } } Short novoDiaVencimento = null; novoDiaVencimento = new Short(informarVencimentoAlternativoActionForm .getNovoDiaVencimento()); //Short indicadorVencimentoMesSeguinte = null; //indicadorVencimentoMesSeguinte = null ; if (imovel != null && !imovel.equals("")) { imovel.setDiaVencimento(novoDiaVencimento); imovel.setUltimaAlteracao(new Date()); //Alterado por R�mulo Aur�lio Data: 24/08/2010 //Analista: Ana Cristina //Altera��o: Retirada do layout da funcionalidade o indicador �Vencimento � para m�s seguinte: SIM ou N�O�. FaturamentoGrupo faturamentoGrupo = fachada.recuperaGrupoFaturamentoDoImovel(imovel.getId()); if(faturamentoGrupo.getDiaVencimento() > novoDiaVencimento){ imovel.setIndicadorVencimentoMesSeguinte(ConstantesSistema.INDICADOR_USO_ATIVO); }else{ imovel.setIndicadorVencimentoMesSeguinte(ConstantesSistema.INDICADOR_USO_DESATIVO); } fachada.atualizar(imovel); } VencimentoAlternativo vencimentoAlternativoInserir = new VencimentoAlternativo(); if (imovel != null && !imovel.equals("")) { vencimentoAlternativoInserir.setImovel(imovel); } vencimentoAlternativoInserir.setDataImplantacao(new Date()); vencimentoAlternativoInserir.setDateVencimento(novoDiaVencimento); vencimentoAlternativoInserir.setDateExclusao(null); vencimentoAlternativoInserir.setUltimaAlteracao(new Date()); // ------------ REGISTRAR TRANSA��O ---------------- RegistradorOperacao registradorOperacao = new RegistradorOperacao( Operacao.OPERACAO_INSERIR_VENCIMENTO_ALTERNATIVO, vencimentoAlternativoInserir.getImovel().getId(), vencimentoAlternativoInserir.getImovel().getId(), new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); // ------------ REGISTRAR TRANSA��O ---------------- registradorOperacao.registrarOperacao(vencimentoAlternativoInserir); fachada.inserir(vencimentoAlternativoInserir); sessao.removeAttribute("colecaoNovoDiaVencimento"); sessao.removeAttribute("imovel"); sessao.removeAttribute("vencimentoAlternativo"); montarPaginaSucesso(httpServletRequest, "Vencimento Alternativo para o im�vel " + informarVencimentoAlternativoActionForm.getIdImovel() + " inserido com sucesso.", "Informar outro Vencimento Alternativo", "exibirInformarVencimentoAlternativoAction.do?menu=sim"); return retorno; } }