package gcom.gui.arrecadacao.banco; import gcom.arrecadacao.ArrecadacaoForma; import gcom.arrecadacao.DeducaoTipo; import gcom.arrecadacao.FiltroArrecadacaoForma; import gcom.arrecadacao.FiltroAvisoAcerto; import gcom.arrecadacao.FiltroAvisoBancario; import gcom.arrecadacao.FiltroAvisoDeducoes; import gcom.arrecadacao.FiltroDeducaoTipo; import gcom.arrecadacao.aviso.AvisoAcerto; import gcom.arrecadacao.aviso.AvisoBancario; import gcom.arrecadacao.aviso.AvisoDeducoes; import gcom.arrecadacao.banco.ContaBancaria; import gcom.arrecadacao.banco.FiltroContaBancaria; import gcom.atendimentopublico.ordemservico.FiltroServicoTipo; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Collection; import java.util.Date; import java.util.GregorianCalendar; import java.util.Iterator; import java.util.Map; import java.util.Vector; 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; /** * Action de exibir atulizar o aviso bancario * * @author thiago toscano * @date 10/03/2006 */ public class ExibirAtualizarAvisoBancarioAction extends GcomAction { /** * M�todo responsavel por responder a requisicao * * @param actionMapping * Descri��o do par�metro * @param actionForm * Descri��o do par�metro * @param httpServletRequest * Descri��o do par�metro * @param httpServletResponse * Descri��o do par�metro * @return Descri��o do retorno */ public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { ActionForward retorno = actionMapping.findForward("exibir"); AvisoBancarioActionForm form = (AvisoBancarioActionForm) actionForm; HttpSession sessao = httpServletRequest.getSession(false); // pegando a acao a ser executada String acao = form.getAcao(); //preencherObjeto ( form, httpServletRequest); String idAvisoBancario = form.getIdAvisoBancario(); Map<String, String[]> requestMap = httpServletRequest.getParameterMap(); sessao.removeAttribute("filtrar_manter"); // Carregar a data corrente do sistema SimpleDateFormat formatoData = new SimpleDateFormat("dd/MM/yyyy"); Calendar dataCorrente = new GregorianCalendar(); // Data Corrente httpServletRequest.setAttribute("dataAtual", formatoData .format(dataCorrente.getTime())); if (idAvisoBancario == null || idAvisoBancario.equalsIgnoreCase("")){ if (httpServletRequest.getAttribute("idAvisoBancario") == null){ idAvisoBancario = (String) sessao.getAttribute("idAvisoBancario"); }else{ idAvisoBancario = httpServletRequest.getAttribute("idAvisoBancario").toString(); } } else { sessao.setAttribute("i", true); } // Pesquisar ArrecadacaoForma FiltroArrecadacaoForma filtroArrecadacaoForma = new FiltroArrecadacaoForma(); filtroArrecadacaoForma.setConsultaSemLimites(true); filtroArrecadacaoForma.setCampoOrderBy(FiltroArrecadacaoForma.DESCRICAO); Collection collectionArrecadacaoForma = Fachada.getInstancia().pesquisar(filtroArrecadacaoForma, ArrecadacaoForma.class.getName()); httpServletRequest.setAttribute("collectionArrecadacaoForma", collectionArrecadacaoForma); FiltroServicoTipo filtroTipo = new FiltroServicoTipo(); filtroTipo.adicionarParametro(new ParametroSimples( FiltroServicoTipo.INDICADORTERCEIRIZADO, 1)); filtroTipo.setConsultaSemLimites(true); filtroTipo.setCampoOrderBy(FiltroServicoTipo.DESCRICAO); sessao.setAttribute("idAvisoBancario", idAvisoBancario); String valorDeducao = form.getValorDeducao(); if ("adicionarDeducao".equals(acao)) { // adiciona a deducao String idTipoDeducao = form.getIdTipoDeducao(); //boolean jaTemDeducao = false; Collection collAvisoDeducoes = (Collection)sessao.getAttribute("avisoDeducoes"); Iterator it = collAvisoDeducoes.iterator(); while (it.hasNext()) { AvisoDeducoes avisoDeducoes = (AvisoDeducoes) it.next(); if (avisoDeducoes.getDeducaoTipo().getId().toString().equals(idTipoDeducao)){ throw new ActionServletException("atencao.avisoBancario.tipo_deducao_ja_informada"); } } FiltroDeducaoTipo filtroDeducaoTipo = new FiltroDeducaoTipo(); filtroDeducaoTipo.adicionarParametro(new ParametroSimples(FiltroDeducaoTipo.ID,idTipoDeducao)); Collection coll = Fachada.getInstancia().pesquisar(filtroDeducaoTipo, DeducaoTipo.class.getSimpleName()); AvisoDeducoes avisoDeducoes = new AvisoDeducoes(); avisoDeducoes.setDeducaoTipo((DeducaoTipo)coll.iterator().next()); avisoDeducoes.setValorDeducao(Util.formatarMoedaRealparaBigDecimal(valorDeducao)); avisoDeducoes.setUltimaAlteracao(new Date(System.currentTimeMillis())); if(avisoDeducoes.getValorDeducao().compareTo(Util.formatarMoedaRealparaBigDecimal(form.getValorArrecadacao())) == 1) { throw new ActionServletException("atencao.valor.deducao.maior.valor.arrecadacao"); } collAvisoDeducoes.add(avisoDeducoes); } else if ("removerDeducao".equals(acao)) { // remover a deducao if (sessao.getAttribute("avisoDeducoes") != null && sessao.getAttribute("avisoDeducoes") instanceof Collection && !((Collection)sessao.getAttribute("avisoDeducoes")).isEmpty()) { int posicao = -1; try { // pegando a posicao a ser removida posicao = Integer.parseInt(form.getPosicao()); Collection avisoNovo = new Vector(); Collection avisoRemover = null; // pega a colecao de objetos a ser removidos. // Caso nao tenha a colecao entao cria e coloca na sessao if (sessao.getAttribute("avisoDeducoesRemover") != null) { avisoRemover = (Collection) sessao.getAttribute("avisoDeducoesRemover"); } else { avisoRemover = new Vector(); sessao.setAttribute("avisoDeducoesRemover",avisoRemover); } // para todos os collecao deducoes Collection coll = (Collection)sessao.getAttribute("avisoDeducoes"); Iterator it = coll.iterator(); int count = 0; while (it.hasNext()) { AvisoDeducoes avisoDeducoes = (AvisoDeducoes) it.next(); if (count == posicao ) { if (avisoDeducoes.getComp_id() != null) avisoRemover.add(avisoDeducoes); } else { avisoNovo.add(avisoDeducoes); } count++; } sessao.setAttribute("avisoDeducoes",avisoNovo); sessao.setAttribute("avisoDeducoesRemover",avisoRemover); } catch (Exception e) {} // nao faz nada pois a posicao nao foi passada } } else if ("adicionarAcerto".equals(acao)) { String idContaBancaria = form.getIdContaBancaria(); String tipoAcesso = form.getTipoAcesso(); String acessar = form.getAcerto(); String dataAcerto = form.getDataAcerto(); String valorAcerto = form.getValorAcerto(); Date data = Util.converteStringParaDate(form.getDataRealizacao()); if (data == null) { throw new ActionServletException("atencao.avisoBancario.data_realizacao_acerto_invalida"); } if (Util.converteStringParaDate(dataAcerto).getTime() > new Date(System.currentTimeMillis()).getTime()) { throw new ActionServletException("atencao.avisoBancario.data_realizacao_acerto_menor_que_hoje",null,Util.formatarData(new Date(System.currentTimeMillis()))); } if (Util.converteStringParaDate(dataAcerto).getTime() < data.getTime()) { throw new ActionServletException("atencao.avisoBancario.data_realizacao_acerto_menor_que_data_realizacao",Util.formatarData(Util.converteStringParaDate(dataAcerto)), Util.formatarData(data)); } FiltroContaBancaria filtroContaBancaria = new FiltroContaBancaria(); filtroContaBancaria.adicionarParametro(new ParametroSimples(FiltroContaBancaria.ID,idContaBancaria)); filtroContaBancaria.adicionarCaminhoParaCarregamentoEntidade("agencia"); filtroContaBancaria.adicionarCaminhoParaCarregamentoEntidade("agencia.banco"); Collection coll = Fachada.getInstancia().pesquisar(filtroContaBancaria, ContaBancaria.class.getSimpleName()); AvisoAcerto avisoAcerto = new AvisoAcerto(); avisoAcerto.setContaBancaria((ContaBancaria)coll.iterator().next()); avisoAcerto.setDataAcerto(Util.converteStringParaDate(dataAcerto)); avisoAcerto.setIndicadorCreditoDebito(new Integer(tipoAcesso)); avisoAcerto.setIndicadorArrecadacaoDevolucao(new Integer(acessar)); avisoAcerto.setUltimaAlteracao(new Date(System.currentTimeMillis())); avisoAcerto.setValorAcerto(Util.formatarMoedaRealparaBigDecimal(valorAcerto)); coll = (Collection) sessao.getAttribute("avisoAcerto"); coll.add(avisoAcerto); } else if ("removerAcerto".equals(acao)) { // caso a acao seja para remover um acerto if (sessao.getAttribute("avisoAcerto") != null && sessao.getAttribute("avisoAcerto") instanceof Collection && !((Collection)sessao.getAttribute("avisoAcerto")).isEmpty()) { int posicao = -1; try { // pegando a posicao a ser removida posicao = Integer.parseInt(form.getPosicao()); Collection avisoNovo = new Vector(); Collection avisoRemover = null; // pega a colecao de objetos a ser removidos. // Caso nao tenha a colecao entao cria e coloca na sessao if (sessao.getAttribute("avisoAcertoRemover") != null) { avisoRemover = (Collection) sessao.getAttribute("avisoAcertoRemover"); } else { avisoRemover = new Vector(); } // para todos os collecao deducoes Collection coll = (Collection)sessao.getAttribute("avisoAcerto"); Iterator it = coll.iterator(); int count = 0; while (it.hasNext()) { AvisoAcerto avisoAcerto = (AvisoAcerto) it.next(); if (count == posicao ) { if (avisoAcerto.getId() != null) avisoRemover.add(avisoAcerto); } else { avisoNovo.add(avisoAcerto); } count++; } sessao.setAttribute("avisoAcerto",avisoNovo); sessao.setAttribute("avisoAcertoRemover",avisoRemover); } catch (Exception e) {} // nao faz nada pois a posicao nao foi passada } } else if (!"calcular".equals(acao)) { sessao.removeAttribute("avisoBancario"); sessao.removeAttribute("avisoDeducoes"); sessao.removeAttribute("avisoAcerto"); FiltroAvisoBancario filtroAvisoBancario = new FiltroAvisoBancario(); filtroAvisoBancario.adicionarParametro(new ParametroSimples(FiltroAvisoBancario.ID, idAvisoBancario)); filtroAvisoBancario.adicionarCaminhoParaCarregamentoEntidade(FiltroAvisoBancario.ARRECADADOR); filtroAvisoBancario.adicionarCaminhoParaCarregamentoEntidade(FiltroAvisoBancario.ARRECADADOR_CLIENTE); filtroAvisoBancario.adicionarCaminhoParaCarregamentoEntidade(FiltroAvisoBancario.CONTA_BANCARIA); filtroAvisoBancario.adicionarCaminhoParaCarregamentoEntidade(FiltroAvisoBancario.AGENCIA); filtroAvisoBancario.adicionarCaminhoParaCarregamentoEntidade(FiltroAvisoBancario.BANCO); filtroAvisoBancario.adicionarCaminhoParaCarregamentoEntidade(FiltroAvisoBancario.ARRECADACAO_FORMA); Collection coll = Fachada.getInstancia().pesquisar(filtroAvisoBancario,AvisoBancario.class.getName()); if (coll != null && !coll.isEmpty()) { AvisoBancario avisoBancario = (AvisoBancario) coll.iterator().next(); if (avisoBancario.getDataRealizada() == null) { String texto = avisoBancario.getArrecadador().getCliente().getNome() + " - " + Util.formatarData(avisoBancario.getDataLancamento()) + " - " + avisoBancario.getNumeroSequencial(); throw new ActionServletException("atencao.avisoBancario.nao_realizado",null,texto); } if (avisoBancario.getDataLancamento() != null) { sessao.setAttribute("dataLancamento",avisoBancario.getDataLancamento()); } if (avisoBancario.getValorArrecadacaoInformado() != null) { form.setValorArrecadacao(Util.formatarMoedaReal(avisoBancario.getValorArrecadacaoInformado())); } if (avisoBancario.getValorDevolucaoInformado() != null) { form.setValorDevolucao(Util.formatarMoedaReal(avisoBancario.getValorDevolucaoInformado())); } sessao.setAttribute("avisoBancario",avisoBancario); if (avisoBancario.getArrecadacaoForma() != null) { form.setIdFormaArrecadacao("" + avisoBancario.getArrecadacaoForma().getId()); } FiltroAvisoDeducoes filtroAvisoDeducoes = new FiltroAvisoDeducoes(); filtroAvisoDeducoes.adicionarCaminhoParaCarregamentoEntidade("deducaoTipo"); filtroAvisoDeducoes.adicionarCaminhoParaCarregamentoEntidade("comp_id"); filtroAvisoDeducoes.adicionarParametro(new ParametroSimples("avisoBancario.id",idAvisoBancario)); coll = Fachada.getInstancia().pesquisar(filtroAvisoDeducoes,AvisoDeducoes.class.getName()); sessao.setAttribute("avisoDeducoes",coll); FiltroAvisoAcerto filtroAvisoAcerto = new FiltroAvisoAcerto(); filtroAvisoAcerto.adicionarParametro(new ParametroSimples("avisoBancario.id",idAvisoBancario)); filtroAvisoAcerto.adicionarCaminhoParaCarregamentoEntidade("contaBancaria"); filtroAvisoAcerto.adicionarCaminhoParaCarregamentoEntidade("contaBancaria.agencia"); filtroAvisoAcerto.adicionarCaminhoParaCarregamentoEntidade("contaBancaria.agencia.banco"); coll = Fachada.getInstancia().pesquisar(filtroAvisoAcerto, AvisoAcerto.class.getName()); sessao.setAttribute("avisoAcerto",coll); } } BigDecimal valorDeducao2 = new BigDecimal("0.00"); if (sessao.getAttribute("avisoDeducoes") != null) { // if(valorDeducao != null && !valorDeducao.equalsIgnoreCase("")){ // valorDeducao2 = Util.formatarMoedaRealparaBigDecimal(valorDeducao); // } Collection colecaoAvisoDeducao = (Collection)sessao.getAttribute("avisoDeducoes"); Iterator colecaoAvisoDeducaoIterator = colecaoAvisoDeducao .iterator(); String valor = null; BigDecimal valor2 = new BigDecimal ("0.00"); int i = 0; while (colecaoAvisoDeducaoIterator.hasNext()) { AvisoDeducoes avisoDeducoesCalculo = (AvisoDeducoes) colecaoAvisoDeducaoIterator .next(); // valor minimo if (requestMap.get("posicaoAvisoDeducao_"+ i) != null){ valor = (requestMap.get("posicaoAvisoDeducao_" + i))[0]; if ( Util.verificarNaoVazio(valor)) { valor2 = Util.formatarMoedaRealparaBigDecimal(valor); if(valor2.compareTo(Util.formatarMoedaRealparaBigDecimal(form.getValorArrecadacao())) == 1) { throw new ActionServletException("atencao.valor.deducao.maior.valor.arrecadacao"); } } avisoDeducoesCalculo.setValorDeducao(valor2); valorDeducao2 = valorDeducao2.add(valor2); }else{ valorDeducao2 = valorDeducao2.add(avisoDeducoesCalculo .getValorDeducao()); } i++; } if (valorDeducao2 != null) { form.setValorDeducoes(Util.formatarMoedaReal(valorDeducao2)); } else { form.setValorDeducoes(""); } } BigDecimal valorAviso = null; if (form.getValorArrecadacao() != null && !form.getValorArrecadacao().equals("")) { valorAviso = Util.formatarMoedaRealparaBigDecimal(form.getValorArrecadacao()); AvisoBancario avisoBancario = (AvisoBancario) sessao.getAttribute("avisoBancario"); avisoBancario.setValorArrecadacaoInformado(valorAviso); } if (form.getValorDevolucao() != null && !form.getValorDevolucao().equals("")) { if (valorAviso == null) { valorAviso = new BigDecimal("0.00"); } valorAviso = valorAviso.subtract(Util.formatarMoedaRealparaBigDecimal(form.getValorDevolucao())); } if (valorDeducao2 != null) { if (valorAviso == null) { valorAviso = new BigDecimal("0.00"); } valorAviso = valorAviso.subtract(valorDeducao2); } if (valorAviso != null) { form.setValorAviso(Util.formatarMoedaReal(valorAviso)); } else { form.setValorAviso(""); } // caso ainda n�o tenha sido setado o nome campo(na primeira vez) if (httpServletRequest.getParameter("manter") != null){ sessao.setAttribute("manter", "manter"); } if (form.getDataRealizacao() != null){ sessao.setAttribute("dataRealizacao", form.getDataRealizacao()); } return retorno; } }