package gcom.gui.arrecadacao.banco; import gcom.arrecadacao.ArrecadacaoForma; import gcom.arrecadacao.Arrecadador; import gcom.arrecadacao.ArrecadadorContrato; import gcom.arrecadacao.FiltroArrecadacaoForma; import gcom.arrecadacao.FiltroArrecadadorContrato; import gcom.arrecadacao.FiltroAvisoDeducoes; import gcom.arrecadacao.aviso.AvisoBancario; import gcom.arrecadacao.aviso.AvisoDeducoes; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.util.Util; import gcom.util.filtro.ParametroNulo; import gcom.util.filtro.ParametroSimples; import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.Iterator; 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; public class ExibirProcessoTresInserirAvisoBancarioAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { ActionForward retorno = actionMapping .findForward("exibirInserirAvisoBancarioProcessoTres"); Fachada fachada = Fachada.getInstancia(); HttpSession sessao = httpServletRequest.getSession(false); InserirAvisoBancarioActionForm form = (InserirAvisoBancarioActionForm) actionForm; Arrecadador arrecadador = (Arrecadador) sessao .getAttribute("arrecadador"); form.setNomeArrecadador(arrecadador.getCliente().getNome()); Short numeroSequencial = null; SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy"); Date dataLancamento = null; Collection colecaoAvisoDeducao = null; try { dataLancamento = formato.parse(form.getDataLancamento()); } catch (ParseException e) { } if (form.getAvisoBancario() == null) { numeroSequencial = fachada.pesquisarValorMaximoNumeroSequencial( dataLancamento, arrecadador.getId().toString()); if (numeroSequencial != null) { numeroSequencial = new Short("" + (numeroSequencial.intValue() + 1)); } else { numeroSequencial = 1; } form.setNumeroSequencial("" + numeroSequencial); } else { if (sessao.getAttribute("avisoBancario") != null) { AvisoBancario avisoBancarioTemp = (AvisoBancario) sessao .getAttribute("avisoBancario"); form.setNumeroSequencial("" + avisoBancarioTemp.getNumeroSequencial()); form.setTipoAviso("" + avisoBancarioTemp.getIndicadorCreditoDebito()); httpServletRequest.setAttribute("avisoSelecionado", true); if (sessao.getAttribute("colecaoAvisoDeducao") == null) { FiltroAvisoDeducoes filtroAvisoDeducoes = new FiltroAvisoDeducoes(); filtroAvisoDeducoes .adicionarCaminhoParaCarregamentoEntidade("deducaoTipo"); filtroAvisoDeducoes .adicionarParametro(new ParametroSimples( FiltroAvisoDeducoes.AVISO_BANCARIO_ID, avisoBancarioTemp.getId())); colecaoAvisoDeducao = fachada.pesquisar( filtroAvisoDeducoes, AvisoDeducoes.class.getName()); sessao.setAttribute("colecaoAvisoDeducao", colecaoAvisoDeducao); } } else { numeroSequencial = fachada .pesquisarValorMaximoNumeroSequencial(dataLancamento, arrecadador.getId().toString()); if (numeroSequencial != null) { numeroSequencial = new Short("" + (numeroSequencial.intValue() + 1)); } else { numeroSequencial = 1; } form.setNumeroSequencial("" + numeroSequencial); } } sessao.setAttribute("idArrecadador", form.getCodigoArrecadador()); if (form.getIdContaBancaria() == null || form.getIdContaBancaria().equals("")){ FiltroArrecadadorContrato filtroArrecadadorContrato = new FiltroArrecadadorContrato(); filtroArrecadadorContrato.adicionarParametro(new ParametroSimples( FiltroArrecadadorContrato.ARRECADADOR_CODIGO_AGENTE, form .getCodigoArrecadador())); filtroArrecadadorContrato.adicionarParametro(new ParametroNulo( FiltroArrecadadorContrato.DATA_CONTRATO_ENCERRAMENTO)); filtroArrecadadorContrato.adicionarParametro(new ParametroSimples( FiltroArrecadadorContrato.CODIGO_CONVENIO, form.getCodigoConvenio())); filtroArrecadadorContrato .adicionarCaminhoParaCarregamentoEntidade("contaBancariaDepositoArrecadacao.agencia.banco"); Collection colecaoArrecadadorContrato = fachada.pesquisar( filtroArrecadadorContrato, ArrecadadorContrato.class .getName()); if (colecaoArrecadadorContrato != null && !colecaoArrecadadorContrato.isEmpty()) { ArrecadadorContrato arrecadadorContrato = (ArrecadadorContrato) colecaoArrecadadorContrato .iterator().next(); form.setIdContaBancaria(arrecadadorContrato .getContaBancariaDepositoArrecadacao().getId().toString()); form .setNumeroConta(arrecadadorContrato .getContaBancariaDepositoArrecadacao() .getNumeroConta()); form.setNumeroBanco("" + arrecadadorContrato .getContaBancariaDepositoArrecadacao() .getAgencia().getBanco().getId()); form.setNumeroAgencia("" + arrecadadorContrato .getContaBancariaDepositoArrecadacao() .getAgencia().getCodigoAgencia()); } else{ throw new ActionServletException("atencao.arrecadador.sem.contrato"); } } // Pesquisar ArrecadacaoForma FiltroArrecadacaoForma filtroArrecadacaoForma = new FiltroArrecadacaoForma(); filtroArrecadacaoForma.setConsultaSemLimites(true); filtroArrecadacaoForma.setCampoOrderBy(FiltroArrecadacaoForma.DESCRICAO); Collection collectionArrecadacaoForma = fachada.pesquisar(filtroArrecadacaoForma, ArrecadacaoForma.class.getName()); httpServletRequest.setAttribute("collectionArrecadacaoForma", collectionArrecadacaoForma); // Recupera da sessao os aviso deducao que vem do popup if (sessao.getAttribute("collectionAvisoDeducao") == null || ((Collection) sessao.getAttribute("collectionAvisoDeducao")) .isEmpty()) { if (sessao.getAttribute("collectionAvisoDeducao") == null) { Collection<AvisoDeducoes> collectionAvisoDeducaoPopUp = new ArrayList(); sessao.setAttribute("collectionAvisoDeducao", collectionAvisoDeducaoPopUp); } } else { Collection<AvisoDeducoes> collectionAvisoDeducaoPopUp = new ArrayList(); collectionAvisoDeducaoPopUp = (ArrayList) sessao .getAttribute("collectionAvisoDeducao"); AvisoDeducoes avisoDeducoesPopUp = ((AvisoDeducoes) ((List) collectionAvisoDeducaoPopUp) .get(0)); colecaoAvisoDeducao = (Collection) sessao .getAttribute("colecaoAvisoDeducao"); if (colecaoAvisoDeducao == null || colecaoAvisoDeducao.isEmpty()) { colecaoAvisoDeducao = new ArrayList(); colecaoAvisoDeducao.add(((List) collectionAvisoDeducaoPopUp) .get(0)); collectionAvisoDeducaoPopUp .remove(((List) collectionAvisoDeducaoPopUp).get(0)); sessao.setAttribute("colecaoAvisoDeducao", colecaoAvisoDeducao); } else { Iterator colecaoAvisoDeducaoIterator = colecaoAvisoDeducao .iterator(); while (colecaoAvisoDeducaoIterator.hasNext()) { AvisoDeducoes avisoDeducoes = (AvisoDeducoes) colecaoAvisoDeducaoIterator .next(); if (avisoDeducoes.getDeducaoTipo().getDescricaoAbreviado() .equalsIgnoreCase( avisoDeducoesPopUp.getDeducaoTipo() .getDescricaoAbreviado())) { collectionAvisoDeducaoPopUp .remove(((List) collectionAvisoDeducaoPopUp) .get(0)); throw new ActionServletException( "atencao.deducao_tipo.existente"); } } /* * FiltroAvisoDeducoes filtroAvisoDeducoes = new * FiltroAvisoDeducoes(); * filtroAvisoDeducoes.adicionarParametro(new ParametroSimples( * FiltroAvisoDeducoes.DEDUCAO_TIPO_ID, avisoDeducoesPopUp * .getDeducaoTipo().getId())); * filtroAvisoDeducoes.adicionarParametro(new ParametroSimples( * FiltroAvisoDeducoes.AVISO_BANCARIO_ARRECADADOR_CODIGO, * form.getCodigoArrecadador())); * filtroAvisoDeducoes.adicionarParametro(new ParametroSimples( * FiltroAvisoDeducoes.AVISO_BANCARIO_DATA_LANCAMENTO, * Util.converteStringParaDate(form.getDataLancamento()))); * filtroAvisoDeducoes.adicionarParametro(new ParametroSimples( * FiltroAvisoDeducoes.AVISO_BANCARIO_NUMERO_SEQUENCIAL, * form.getNumeroSequencial())); * * Collection colecaoAvisoDeducoesPesquisada = * fachada.pesquisar( filtroAvisoDeducoes, * AvisoDeducoes.class.getName()); * * if (colecaoAvisoDeducoesPesquisada != null && * !colecaoAvisoDeducoesPesquisada.isEmpty()) { throw new * ActionServletException( * "atencao.deducao_tipo.aviso_bancario.existente"); } else { */ colecaoAvisoDeducao.add(((List) collectionAvisoDeducaoPopUp) .get(0)); collectionAvisoDeducaoPopUp .remove(((List) collectionAvisoDeducaoPopUp).get(0)); sessao.setAttribute("colecaoAvisoDeducao", colecaoAvisoDeducao); // } } } // Recupera da sessao os aviso deducao que vem do popup // Remocao de Objeto da collection if (httpServletRequest.getParameter("timestamp") != null && !httpServletRequest.getParameter("timestamp").equals("")) { colecaoAvisoDeducao = (Collection) sessao .getAttribute("colecaoAvisoDeducao"); Iterator iterator = colecaoAvisoDeducao.iterator(); long timestamp = new Long(httpServletRequest .getParameter("timestamp")).longValue(); while (iterator.hasNext()) { AvisoDeducoes avisoDeducoes = (AvisoDeducoes) iterator.next(); if (GcomAction.obterTimestampIdObjeto(avisoDeducoes) == timestamp) { iterator.remove(); } } } BigDecimal valorDeducao = null; if (sessao.getAttribute("colecaoAvisoDeducao") != null) { colecaoAvisoDeducao = (Collection) sessao .getAttribute("colecaoAvisoDeducao"); Iterator colecaoAvisoDeducaoIterator = colecaoAvisoDeducao .iterator(); while (colecaoAvisoDeducaoIterator.hasNext()) { AvisoDeducoes avisoDeducoesCalculo = (AvisoDeducoes) colecaoAvisoDeducaoIterator .next(); if (valorDeducao == null) { valorDeducao = new BigDecimal("0.00"); } valorDeducao = valorDeducao.add(avisoDeducoesCalculo .getValorDeducao()); } if (valorDeducao != null) { form.setValorDeducoes(Util.formatarMoedaReal(valorDeducao)); } else { form.setValorDeducoes(""); } } BigDecimal valorAviso = null; if (form.getValorArrecadacao() != null && !form.getValorArrecadacao().equals("")) { valorAviso = new BigDecimal(form.getValorArrecadacao().replace(".", "").replace(",", ".")); } if (form.getValorDevolucao() != null && !form.getValorDevolucao().equals("")) { if (valorAviso == null) { valorAviso = new BigDecimal("0.00"); } valorAviso = valorAviso.subtract(new BigDecimal(form .getValorDevolucao().replace(".", "").replace(",", "."))); } if (valorDeducao != null) { if (valorAviso == null) { valorAviso = new BigDecimal("0.00"); } valorAviso = valorAviso.subtract(valorDeducao); } if (valorAviso != null) { form.setValorAviso(Util.formatarMoedaReal(valorAviso)); } else { form.setValorAviso(""); } // if (sessao.getAttribute()) // Remocao de Objeto da collection httpServletRequest.setAttribute("nomeCampo","numeroDocumento"); return retorno; } }