package gcom.gui.arrecadacao; import gcom.arrecadacao.Devolucao; import gcom.arrecadacao.FiltroAvisoBancario; import gcom.arrecadacao.GuiaDevolucao; import gcom.arrecadacao.aviso.AvisoBancario; import gcom.cadastro.cliente.Cliente; import gcom.cadastro.imovel.FiltroImovel; import gcom.cadastro.imovel.Imovel; import gcom.cadastro.localidade.Localidade; import gcom.cadastro.sistemaparametro.SistemaParametro; import gcom.fachada.Fachada; import gcom.faturamento.debito.DebitoTipo; 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.text.ParseException; import java.text.SimpleDateFormat; import java.util.Collection; import java.util.Date; import java.util.List; 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; /** * Descri��o da classe * * @author Fernanda Paiva * @date 10/03/2006 */ public class InserirDevolucoesAction extends GcomAction { /** * Permite a Inclusao de Devolucoes * * [UC0271] Inserir Devolucoes * * @author Fernanda Paiva * @date 10/03/2006 * * @param actionMapping * @param actionForm * @param httpServletRequest * @param httpServletResponse * @return */ public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { // Seta o mapeamento de retorno ActionForward retorno = actionMapping.findForward("telaSucesso"); // Obt�m a inst�ncia da fachada Fachada fachada = Fachada.getInstancia(); // Obt�m a sess�o HttpSession sessao = httpServletRequest.getSession(false); Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado"); InserirDevolucoesActionForm inserirDevolucoesActionForm = (InserirDevolucoesActionForm) actionForm; // -----------8/- REGISTRAR TRANSA��O ---------------- RegistradorOperacao registradorOperacao = new RegistradorOperacao( Operacao.OPERACAO_DEVOLUCOES_INSERIR, new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); Operacao operacao = new Operacao(); operacao.setId(Operacao.OPERACAO_DEVOLUCOES_INSERIR); OperacaoEfetuada operacaoEfetuada = new OperacaoEfetuada(); operacaoEfetuada.setOperacao(operacao); //------------ REGISTRAR TRANSA��O ---------------- // Campos do Formulario String valorDevolucaoAntes = inserirDevolucoesActionForm.getValorDevolucao().toString().replace(".",""); String valorDevolucao = valorDevolucaoAntes.replace(",","."); String dataDevolucao = inserirDevolucoesActionForm.getDataDevolucao(); Integer idAvisoBancario = new Integer(inserirDevolucoesActionForm.getAvisoBancario()); String confirmado = httpServletRequest.getParameter("confirmado"); SimpleDateFormat dataFormatada = new SimpleDateFormat("dd/MM/yyyy"); // Criando o objeto Devolucao Devolucao devolucao = new Devolucao(); // Criando o objeto Referencia Devolucao if (inserirDevolucoesActionForm.getReferenciaDevolucaoClone() != null && !inserirDevolucoesActionForm.getReferenciaDevolucaoClone().equals("")) { String referenciaDevolucao = inserirDevolucoesActionForm .getReferenciaDevolucaoClone(); String mes = referenciaDevolucao.substring(0, 2); String ano = referenciaDevolucao.substring(3, 7); String mesAno = ano + mes; devolucao.setAnoMesReferenciaDevolucao(new Integer(mesAno)); } else { devolucao.setAnoMesReferenciaDevolucao(null); } // Criando o objeto Referencia Arrecadacao if (inserirDevolucoesActionForm.getDataDevolucao() != null && !inserirDevolucoesActionForm.getDataDevolucao().equals("")) { // Concatena ano mes para insercao String mesDataDevolucao = dataDevolucao.substring(3, 5); String anoDataDevolucao = dataDevolucao.substring(6, 10); String mesAnoDataDevolucao = anoDataDevolucao + mesDataDevolucao; SistemaParametro sistemaParametro = null; sistemaParametro = fachada.pesquisarParametrosDoSistema(); if (new Integer(mesAnoDataDevolucao) > sistemaParametro.getAnoMesArrecadacao()) { devolucao.setAnoMesReferenciaArrecadacao(new Integer(mesAnoDataDevolucao)); } else { devolucao.setAnoMesReferenciaArrecadacao(sistemaParametro.getAnoMesArrecadacao()); } } else { devolucao.setAnoMesReferenciaArrecadacao(0); } FiltroAvisoBancario filtroAvisoBancario = new FiltroAvisoBancario(); filtroAvisoBancario.adicionarParametro(new ParametroSimples( FiltroAvisoBancario.ID, idAvisoBancario)); Collection avisoBancario = fachada.pesquisar(filtroAvisoBancario, AvisoBancario.class.getName()); if (avisoBancario != null && !avisoBancario.isEmpty()) { AvisoBancario dadosAvisoBancario = (AvisoBancario) ((List) avisoBancario).get(0); BigDecimal valorDevolucaoInserir = dadosAvisoBancario.getValorDevolucaoCalculado().add(new BigDecimal(valorDevolucao)); fachada.atualizaValorArrecadacaoAvisoBancaraio(valorDevolucaoInserir, idAvisoBancario); } devolucao.setValorDevolucao(new BigDecimal(valorDevolucao)); // Criando o objeto DataDevolucao Date dataDevolucoesFormatada = null; try { dataDevolucoesFormatada = dataFormatada.parse(dataDevolucao); } catch (ParseException ex) { throw new ActionServletException("erro.sistema"); } devolucao.setDataDevolucao(dataDevolucoesFormatada); devolucao.setDevolucaoSituacaoAnterior(null); devolucao.setDevolucaoSituacaoAtual(null); AvisoBancario avisoBancarioSetarId = new AvisoBancario(); avisoBancarioSetarId.setId(idAvisoBancario); devolucao.setAvisoBancario(avisoBancarioSetarId); Integer retornoLocalidade = null; if (inserirDevolucoesActionForm.getLocalidade() != null && !inserirDevolucoesActionForm.getLocalidade().equals("")) { retornoLocalidade = fachada.verificarExistenciaLocalidade(new Integer(inserirDevolucoesActionForm.getLocalidade())); if(retornoLocalidade == null || retornoLocalidade == 0) { throw new ActionServletException( "atencao.localidade.inexistente"); } } Integer retornoGuia = null; if (inserirDevolucoesActionForm.getGuiaDevolucao() != null && !inserirDevolucoesActionForm.getGuiaDevolucao().equals("")) { retornoGuia = fachada.verificarExistenciaGuiaDevolucao(new Integer(inserirDevolucoesActionForm.getGuiaDevolucao())); if(retornoGuia == null || retornoGuia == 0) { throw new ActionServletException( "atencao.pesquisa.guia.inexistente"); } } // Criando o objeto Guia Devolucao if (inserirDevolucoesActionForm.getGuiaDevolucao() != null && !inserirDevolucoesActionForm.getGuiaDevolucao().equals("")) { Integer idGuiaDevolucao = new Integer(inserirDevolucoesActionForm.getGuiaDevolucao()); GuiaDevolucao guiaDevolucao = new GuiaDevolucao(); guiaDevolucao.setId(idGuiaDevolucao); devolucao.setGuiaDevolucao(guiaDevolucao); } else { devolucao.setGuiaDevolucao(null); } // Criando o objeto Localidade if (inserirDevolucoesActionForm.getLocalidadeClone() != null && !inserirDevolucoesActionForm.getLocalidadeClone().equals("")) { Integer idLocalidade = new Integer(inserirDevolucoesActionForm.getLocalidadeClone()); Localidade localidade = new Localidade(); localidade.setId(idLocalidade); devolucao.setLocalidade(localidade); } else if (inserirDevolucoesActionForm.getLocalidade() != null && !inserirDevolucoesActionForm.getLocalidade().equals("")) { Integer idLocalidade = new Integer(inserirDevolucoesActionForm.getLocalidade()); Localidade localidade = new Localidade(); localidade.setId(idLocalidade); devolucao.setLocalidade(localidade); } // Criando o objeto Imovel if (inserirDevolucoesActionForm.getCodigoImovelClone() != null && !inserirDevolucoesActionForm.getCodigoImovelClone().equals("")) { Integer idImovel = new Integer(inserirDevolucoesActionForm.getCodigoImovelClone()); Imovel imovel = new Imovel(); imovel.setId(idImovel); devolucao.setImovel(imovel); } else if ((inserirDevolucoesActionForm.getCodigoImovel() != null && !inserirDevolucoesActionForm.getCodigoImovel().equals("")) && (inserirDevolucoesActionForm.getCodigoCliente() == null)) { Integer idImovel = new Integer(inserirDevolucoesActionForm.getCodigoImovel()); Imovel imovel = new Imovel(); imovel.setId(idImovel); devolucao.setImovel(imovel); } else { devolucao.setImovel(null); } Integer retornoCliente = null; if (inserirDevolucoesActionForm.getCodigoCliente() != null && !inserirDevolucoesActionForm.getCodigoCliente().equals("")) { retornoCliente = fachada.verificarExistenciaCliente(new Integer(inserirDevolucoesActionForm.getCodigoCliente())); if(retornoCliente == null || retornoCliente == 0) { throw new ActionServletException( "atencao.cliente.inexistente"); } } // Criando o objeto Cliente if (inserirDevolucoesActionForm.getCodigoClienteClone() != null && !inserirDevolucoesActionForm.getCodigoClienteClone().equals("")) { Integer idCliente = new Integer(inserirDevolucoesActionForm.getCodigoClienteClone()); Cliente cliente = new Cliente(); cliente.setId(idCliente); devolucao.setCliente(cliente); } else if ((inserirDevolucoesActionForm.getCodigoCliente() != null && !inserirDevolucoesActionForm.getCodigoCliente().equals("")) && (inserirDevolucoesActionForm.getCodigoImovel() == null)) { Integer idCliente = new Integer(inserirDevolucoesActionForm.getCodigoCliente()); Cliente cliente = new Cliente(); cliente.setId(idCliente); devolucao.setCliente(cliente); } else { devolucao.setCliente(null); } Integer retornoDebito = null; if (inserirDevolucoesActionForm.getTipoDebito() != null && !inserirDevolucoesActionForm.getTipoDebito().equals("")) { retornoDebito = fachada.verificarExistenciaDebitoTipo(new Integer(inserirDevolucoesActionForm.getTipoDebito())); if(retornoDebito == null || retornoDebito == 0) { throw new ActionServletException( "atencao.pesquisa.debitoTipo.inexistente"); } } // Criando o objeto TipoDebito if (inserirDevolucoesActionForm.getTipoDebitoClone() != null && !inserirDevolucoesActionForm.getTipoDebitoClone().equals("")) { Integer idTipoDebito = new Integer(inserirDevolucoesActionForm.getTipoDebitoClone()); DebitoTipo tipoDebito = new DebitoTipo(); tipoDebito.setId(idTipoDebito); devolucao.setDebitoTipo(tipoDebito); } else if (inserirDevolucoesActionForm.getTipoDebito() != null && !inserirDevolucoesActionForm.getTipoDebito().equals("")) { Integer idTipoDebito = new Integer(inserirDevolucoesActionForm.getTipoDebito()); DebitoTipo tipoDebito = new DebitoTipo(); tipoDebito.setId(idTipoDebito); devolucao.setDebitoTipo(tipoDebito); } else { devolucao.setDebitoTipo(null); } // Verifica se a localidade pertence ao im�vel digitado if(inserirDevolucoesActionForm.getCodigoImovel() != null && !inserirDevolucoesActionForm.getCodigoImovel().equals("")) { FiltroImovel filtroImovel = new FiltroImovel(); filtroImovel .adicionarCaminhoParaCarregamentoEntidade("localidade"); filtroImovel.adicionarParametro(new ParametroSimples( FiltroImovel.ID, inserirDevolucoesActionForm.getCodigoImovel())); Collection imovelEncontrado = fachada.pesquisar(filtroImovel, Imovel.class.getName()); if (imovelEncontrado != null && !imovelEncontrado.isEmpty()) { String codigoDigitadoLocalidadeEnter = ((Imovel) ((List) imovelEncontrado).get(0)).getLocalidade().getId().toString(); if(inserirDevolucoesActionForm.getLocalidade() != null && !inserirDevolucoesActionForm.getLocalidade().equals("") && !inserirDevolucoesActionForm.getLocalidade().equals(codigoDigitadoLocalidadeEnter)) { throw new ActionServletException( "atencao.pesquisa.localidade.imovel.diferente","" + codigoDigitadoLocalidadeEnter, inserirDevolucoesActionForm.getLocalidade()); } } } String retornoImovel = null; if (inserirDevolucoesActionForm.getCodigoImovel() != null && !inserirDevolucoesActionForm.getCodigoImovel().equals("")) { retornoImovel = fachada.pesquisarInscricaoImovel(new Integer(inserirDevolucoesActionForm.getCodigoImovel())); if(retornoImovel == null || retornoImovel.equalsIgnoreCase("")) { throw new ActionServletException( "atencao.imovel.inexistente"); } } // verifica se o valor da devolucao � maior que o valor da guia da devolucao if(inserirDevolucoesActionForm.getValorGuiaDevolucao() != null && !inserirDevolucoesActionForm.getValorGuiaDevolucao().equalsIgnoreCase("") && Util.formatarMoedaRealparaBigDecimal(inserirDevolucoesActionForm.getValorDevolucao()).compareTo(Util.formatarMoedaRealparaBigDecimal(inserirDevolucoesActionForm.getValorGuiaDevolucao())) == 1) { if (confirmado == null || !confirmado.trim().equalsIgnoreCase("ok")){ httpServletRequest.setAttribute("caminhoActionConclusao", "/gsan/inserirDevolucoesAction.do"); // Monta a p�gina de confirma��o para perguntar se o usu�rio // quer inserir // a devolu��o mesmo com o valor da devolu��o sendo superior ao da guia da devolu��o return montarPaginaConfirmacao( "atencao.valor_devolucao_maior_valor_guia_devolucao.confirmacao", httpServletRequest, actionMapping, inserirDevolucoesActionForm.getValorDevolucao(),inserirDevolucoesActionForm.getValorGuiaDevolucao()); } } // �ltima Altera��o devolucao.setUltimaAlteracao(new Date()); //------------ REGISTRAR TRANSA��O ---------------- devolucao.setOperacaoEfetuada(operacaoEfetuada); devolucao.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacao.registrarOperacao(devolucao); //------------ REGISTRAR TRANSA��O ---------------- fachada.inserir(devolucao); montarPaginaSucesso(httpServletRequest, "Devolu��o de c�digo " + devolucao.getId() + " inserida com sucesso.", "Inserir outra Devolu��o", "exibirInserirDevolucoesAction.do?menu=sim", "exibirAtualizarDevolucaoAction.do?idRegistroAtualizacao=" + devolucao.getId(), "Atualizar Devolu��o Inserida"); return retorno; } }