package gcom.gui.cadastro.imovel; import gcom.cadastro.imovel.EntidadeBeneficente; import gcom.cadastro.imovel.FiltroEntidadeBeneficente; import gcom.cadastro.imovel.Imovel; import gcom.cadastro.imovel.ImovelDoacao; import gcom.cadastro.sistemaparametro.SistemaParametro; import gcom.faturamento.conta.Conta; import gcom.faturamento.conta.FiltroConta; import gcom.faturamento.debito.DebitoTipo; import gcom.faturamento.debito.FiltroDebitoTipo; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.interceptor.RegistradorOperacao; import gcom.seguranca.acesso.Operacao; import gcom.seguranca.acesso.OperacaoEfetuada; import gcom.seguranca.acesso.usuario.Usuario; import gcom.seguranca.acesso.usuario.UsuarioAcao; import gcom.seguranca.acesso.usuario.UsuarioAcaoUsuarioHelper; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import java.math.BigDecimal; 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; /** * [UC0389] - Inserir Imovel Doacao Action respons�vel pela inser��o de um * Im�vel Doa��o * * @author C�sar Ara�jo * @created 30 de 08 de 2006 */ public class InserirImovelDoacaoAction extends GcomAction { /** * Description of the Method * * @param actionMapping * Description of the Parameter * @param actionForm * Description of the Parameter * @param httpServletRequest * Description of the Parameter * @param httpServletResponse * Description of the Parameter * @return Description of the Return Value */ public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { /*** Declara e inicializa vari�veis ***/ Imovel imovel = null; Date dataAdesao = null; ActionForward retorno = null; HttpSession sessao = null; Usuario usuarioAdesao = null; BigDecimal valorDoacao = null; ImovelDoacao imovelDoacao = null; EntidadeBeneficente entidadeBeneficente = null; /*** Procedimentos b�sicos para execu��o do m�todo ***/ retorno = actionMapping.findForward("telaSucesso"); ImovelDoacaoActionForm imovelDoacaoActionForm = (ImovelDoacaoActionForm) actionForm; sessao = this.getSessao(httpServletRequest); /*** Define os valores a serem armazenados na base de dados***/ valorDoacao = new BigDecimal( imovelDoacaoActionForm.getValorDoacao().replace(".", "").replace(",", ".")); usuarioAdesao = new Usuario(); usuarioAdesao.setId(((Usuario)sessao.getAttribute("usuarioLogado")).getId()); dataAdesao = new Date(); entidadeBeneficente = new EntidadeBeneficente(); entidadeBeneficente.setId(new Integer(imovelDoacaoActionForm.getIdEntidadeBeneficente())); imovel = new Imovel(); imovel.setId(new Integer(imovelDoacaoActionForm.getIdImovel())); //------------ REGISTRAR TRANSA��O ----------------// RegistradorOperacao registradorOperacao = new RegistradorOperacao(Operacao.OPERACAO_CATEGORIA_INSERIR, new UsuarioAcaoUsuarioHelper(usuarioAdesao,UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); Operacao operacao = new Operacao(); operacao.setId(Operacao.OPERACAO_CATEGORIA_INSERIR); OperacaoEfetuada operacaoEfetuada = new OperacaoEfetuada(); operacaoEfetuada.setOperacao(operacao); //------------ REGISTRAR TRANSA��O ----------------// /*** Verifica se a associa��o de imovel e entidade beneficente j� existe na base de dados ***/ imovelDoacao = this.getFachada().verificarExistenciaImovelDoacao( imovel.getId(), entidadeBeneficente.getId()); if (imovelDoacao != null && imovelDoacao.getId() != 0) { throw new ActionServletException("atencao.inserir_imovel_doacao_ja_existe", null, imovelDoacao.getId().toString()); } /*** Preenche as informa��es de imovel doa��o ***/ imovelDoacao = new ImovelDoacao(imovel, valorDoacao, entidadeBeneficente, dataAdesao, usuarioAdesao, new Date()); //-------HUGO NASCIMENTO------- /*** Preenche as informa��es de imovel doa��o ***/ Integer quantidadeParcela = null; if(imovelDoacaoActionForm.getQuantidadeParcela() != null && !imovelDoacaoActionForm.getQuantidadeParcela().equals("")){ quantidadeParcela = new Integer(imovelDoacaoActionForm.getQuantidadeParcela()); } SistemaParametro sistemaParametro = this.getSistemaParametro(); FiltroConta filtroConta = new FiltroConta(); filtroConta.adicionarParametro(new ParametroSimples(FiltroConta.IMOVEL_ID,imovel.getId())); filtroConta.adicionarParametro(new ParametroSimples(FiltroConta.REFERENCIA, sistemaParametro.getAnoMesFaturamento())); Collection contaEncontrado = this.getFachada().pesquisar(filtroConta,Conta.class.getName()); if (contaEncontrado != null && !contaEncontrado.isEmpty()) { imovelDoacao.setAnoMesReferenciaInicial( Util.somaMesAnoMesReferencia(sistemaParametro.getAnoMesFaturamento(), 1)); }else{ imovelDoacao.setAnoMesReferenciaInicial(sistemaParametro.getAnoMesFaturamento()); } if(quantidadeParcela != null && quantidadeParcela.intValue() > 0){ imovelDoacao.setAnoMesReferenciaFinal( Util.somaMesAnoMesReferencia( sistemaParametro.getAnoMesFaturamento(),quantidadeParcela )); } Collection<EntidadeBeneficente> colecaoEntidadeBeneficente = null; FiltroEntidadeBeneficente filtroEntidadeBeneficente = new FiltroEntidadeBeneficente(); filtroEntidadeBeneficente.adicionarParametro(new ParametroSimples(FiltroEntidadeBeneficente.ID, imovelDoacao.getEntidadeBeneficente().getId())); filtroEntidadeBeneficente.adicionarCaminhoParaCarregamentoEntidade("cliente"); colecaoEntidadeBeneficente = this.getFachada().pesquisar(filtroEntidadeBeneficente, EntidadeBeneficente.class.getName()); if (colecaoEntidadeBeneficente != null && colecaoEntidadeBeneficente.size() > 0 ){ EntidadeBeneficente entidadeBenediciente = (EntidadeBeneficente)Util.retonarObjetoDeColecao(colecaoEntidadeBeneficente); Collection<DebitoTipo> colecaoDebitoTipo = null; FiltroDebitoTipo filtroDebitoTipo = new FiltroDebitoTipo(); filtroDebitoTipo.adicionarParametro(new ParametroSimples(FiltroDebitoTipo.ID, entidadeBenediciente.getDebitoTipo().getId())); colecaoDebitoTipo = this.getFachada().pesquisar(filtroDebitoTipo, DebitoTipo.class.getName()); if (colecaoDebitoTipo.size() > 0){ DebitoTipo debitoTipo = (DebitoTipo)Util.retonarObjetoDeColecao(colecaoDebitoTipo); if(debitoTipo.getValorLimite() != null && (new Double(imovelDoacao.getValorDoacao().toEngineeringString()) > new Double(debitoTipo.getValorLimite().toEngineeringString())) ){ throw new ActionServletException("atencao.doacao.debitotipo.valorlimite", null, debitoTipo.getValorLimite().toEngineeringString()); } if(debitoTipo.getValorLimiteInferior() != null && (new Double(imovelDoacao.getValorDoacao().toEngineeringString()) < new Double(debitoTipo.getValorLimiteInferior().toEngineeringString())) ){ throw new ActionServletException("atencao.doacao.debitotipo.valorlimite.inferior", null, debitoTipo.getValorLimiteInferior().toEngineeringString()); } } } //------------ REGISTRAR TRANSA��O ----------------// imovelDoacao.setOperacaoEfetuada(operacaoEfetuada); imovelDoacao.adicionarUsuario(usuarioAdesao, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacao.registrarOperacao(imovelDoacao); //------------ REGISTRAR TRANSA��O ----------------// /** alterado por pedro alexandre dia 16/11/2006 * Recupera o usu�rio logado para passar no met�do de inserir * para verificar se o usu�rio tem abrang�ncia para inserir a doa��o */ Usuario usuarioLogado = (Usuario)sessao.getAttribute(Usuario.USUARIO_LOGADO); /*** Insere o imovel doacao - As valida��es est�o no Controlador ***/ this.getFachada().inserirImovelDoacaoRetorno(imovelDoacao, usuarioLogado); /*** Monta tela de sucesso ***/ montarPaginaSucesso(httpServletRequest, "Autoriza��o para Doa��o Mensal do Im�vel "+ imovel.getId().toString() + " inserida com sucesso.", "Inserir outra Autoriza��o para Doa��o Mensal", "exibirInserirImovelDoacaoAction.do", "exibirManterImovelDoacaoAction.do?idRegistroAtualizacao=" + imovel.getId().toString(), "Cancelar Autoriza��o para Doa��o Mensal do Im�vel "+imovel.getId().toString()); return retorno; } }