package gcom.gui.arrecadacao.banco; import gcom.arrecadacao.ArrecadacaoForma; import gcom.arrecadacao.Arrecadador; import gcom.arrecadacao.aviso.AvisoBancario; import gcom.arrecadacao.aviso.AvisoDeducoes; import gcom.arrecadacao.aviso.AvisoDeducoesPK; import gcom.arrecadacao.banco.ContaBancaria; import gcom.cadastro.sistemaparametro.FiltroSistemaParametro; import gcom.cadastro.sistemaparametro.SistemaParametro; import gcom.fachada.Fachada; 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.ConstantesSistema; import gcom.util.Util; import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Collection; import java.util.Date; import java.util.Iterator; 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 InserirAvisoBancarioAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { ActionForward retorno = actionMapping.findForward("telaSucesso"); Fachada fachada = Fachada.getInstancia(); HttpSession sessao = httpServletRequest.getSession(false); Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado"); InserirAvisoBancarioActionForm form = (InserirAvisoBancarioActionForm) actionForm; Arrecadador arrecadadorSessao = (Arrecadador) sessao .getAttribute("arrecadador"); SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy"); Date dataLancamento = null; try { dataLancamento = formato.parse(form.getDataLancamento()); } catch (ParseException e) { } if (arrecadadorSessao == null || arrecadadorSessao.equals("")) { // O Arrecadador eh obrigat�rio throw new ActionServletException("atencao.informe_campo", null, "Arrecadador"); } if (dataLancamento == null || dataLancamento.equals("")) { // O Arrecadador eh obrigat�rio throw new ActionServletException("atencao.informe_campo", null, "Data do Lan�amento"); } if (form.getNumeroDocumento() == null || form.getNumeroDocumento().equals("")) { // O Arrecadador eh obrigat�rio throw new ActionServletException("atencao.informe_campo", null, "N�mero do Documento"); } if (form.getIdFormaArrecadacao() == null || form.getIdFormaArrecadacao().equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) { // Forma de Arrecadacao eh obrigatorio throw new ActionServletException("atencao.informe.campo", null, "Forma de Arrecada��o"); } if (form.getNumeroSequencial() == null || form.getNumeroSequencial().equals("")) { // O Arrecadador eh obrigat�rio throw new ActionServletException("atencao.informe_campo", null, "N�mero do Sequencial"); } System.out.println("idArrecadacaoFOrma: " + form.getIdFormaArrecadacao()); ArrecadacaoForma arrecadacaoForma = new ArrecadacaoForma(); arrecadacaoForma.setId(new Integer(form.getIdFormaArrecadacao())); Double numeroSequencial = new Double(form.getNumeroSequencial()); BigDecimal valorAviso = new BigDecimal("0"); String valorArrecadacaoFormatado = null; String valorDevolucaoFormatado = null; // In�cio do c�lculo do valor do aviso if (form.getValorArrecadacao() != null && !form.getValorArrecadacao().equals("")) { valorArrecadacaoFormatado = form.getValorArrecadacao().replace(".", "").replace(",", "."); valorAviso = valorAviso.add(new BigDecimal( valorArrecadacaoFormatado)); } if (form.getValorDevolucao() != null && !form.getValorDevolucao().equals("")) { valorDevolucaoFormatado = form.getValorDevolucao().replace(".", "") .replace(",", "."); valorAviso = valorAviso.subtract(new BigDecimal( valorDevolucaoFormatado)); } if (sessao.getAttribute("colecaoAvisoDeducao") != null && !((Collection) sessao.getAttribute("colecaoAvisoDeducao")) .isEmpty()) { Collection colecaoAvisoDeducao = (Collection) sessao .getAttribute("colecaoAvisoDeducao"); Iterator colecaoAvisoDeducaoIterator = colecaoAvisoDeducao .iterator(); while (colecaoAvisoDeducaoIterator.hasNext()) { AvisoDeducoes avisoDeducoes = (AvisoDeducoes) colecaoAvisoDeducaoIterator .next(); valorAviso = valorAviso.subtract(avisoDeducoes .getValorDeducao()); } if (form.getAvisoBancario() != null) { if (fachada.pesquisarDeducoesAvisoBancario(arrecadadorSessao .getCodigoAgente().toString(), dataLancamento, "" + numeroSequencial.shortValue()) != null) { Double valorDeducoes = fachada .pesquisarDeducoesAvisoBancario(arrecadadorSessao .getCodigoAgente().toString(), dataLancamento, "" + numeroSequencial.shortValue()); valorAviso = valorAviso.subtract(new BigDecimal( valorDeducoes.toString())); } } } // Fim do c�lculo do valor do aviso if (form.getTipoAviso().equals("" + AvisoBancario.INDICADOR_CREDITO) || form.getTipoAviso().equalsIgnoreCase("credito")) { if (valorAviso.compareTo(new BigDecimal("0.00")) < 0) { throw new ActionServletException( "atencao.valor_aviso.nao_credito", null, Util .formatarMoedaReal(valorAviso)); } } else { if (valorAviso.compareTo(new BigDecimal("0.00")) > 0) { throw new ActionServletException( "atencao.valor_aviso.nao_debito", null, Util .formatarMoedaReal(valorAviso)); } } RegistradorOperacao registradorOperacao = new RegistradorOperacao( Operacao.OPERACAO_AVISO_BANCARIO_INSERIR, new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); AvisoBancario avisoBancario = new AvisoBancario(); Operacao operacao = new Operacao(); operacao.setId(Operacao.OPERACAO_AVISO_BANCARIO_INSERIR); OperacaoEfetuada operacaoEfetuada = new OperacaoEfetuada(); operacaoEfetuada.setOperacao(operacao); // ------------ REGISTRAR TRANSA��O ---------------- registradorOperacao.registrarOperacao(avisoBancario); Date dataRealizacao = null; if (form.getDataRealizacao() != null && !form.getDataRealizacao().equals("")) { SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy"); try { dataRealizacao = format.parse(form.getDataRealizacao()); } catch (ParseException ex) { throw new ActionServletException("erro.sistema"); } } BigDecimal valorArrecadacao = new BigDecimal("0.00"); if (form.getValorArrecadacao() != null && !form.getValorArrecadacao().equals("")) { valorArrecadacao = new BigDecimal(valorArrecadacaoFormatado); } BigDecimal valorDevolucao = new BigDecimal("0.00"); if (form.getValorDevolucao() != null && !form.getValorDevolucao().equals("")) { valorDevolucao = new BigDecimal(valorDevolucaoFormatado); } ContaBancaria contaBancaria = new ContaBancaria(); if (form.getIdContaBancaria() != null && !form.getIdContaBancaria().equals("")){ contaBancaria.setId(new Integer(form.getIdContaBancaria())); }else{ throw new ActionServletException("atencao.informe_campo", null, "Conta Banc�ria"); } // Verifica se o usu�rio selecionou um aviso banc�rio se n�o tiver // selecionado insere if (form.getAvisoBancario() == null) { Short tipoAviso = null; if (form.getTipoAviso().equalsIgnoreCase("credito") || form.getTipoAviso().equals( "" + AvisoBancario.INDICADOR_CREDITO)) { tipoAviso = new Short("1"); } else { tipoAviso = new Short("2"); } FiltroSistemaParametro filtroSistemaParametro = new FiltroSistemaParametro(); Collection colecaoSistemaParametros = fachada.pesquisar( filtroSistemaParametro, SistemaParametro.class.getName()); SistemaParametro sistemaParametro = (SistemaParametro) colecaoSistemaParametros .iterator().next(); // Arrecadador arrecadador = new Arrecadador(); // // arrecadador.setId(new Integer(form.getCodigoArrecadador())); avisoBancario.setDataLancamento(dataLancamento); avisoBancario.setNumeroSequencial(numeroSequencial.shortValue()); avisoBancario.setDataPrevista(null); avisoBancario.setDataRealizada(dataRealizacao); // avisoBancario.setValorPrevisto(null); avisoBancario.setValorRealizado(valorAviso); avisoBancario.setValorArrecadacaoCalculado(new BigDecimal("0.00")); avisoBancario.setValorDevolucaoCalculado(new BigDecimal("0.00")); avisoBancario.setValorArrecadacaoInformado(valorArrecadacao); avisoBancario.setValorDevolucaoInformado(valorDevolucao); avisoBancario.setValorContabilizado(new BigDecimal("0.00")); // Alterado por S�vio Luiz data:22/03/2007 // pegar o maior anoMes entre o anoMes da dataLancamento e o // anoMesArrecadacao Integer anoMesDataLancamento = Util .recuperaAnoMesDaData(dataLancamento); if (anoMesDataLancamento > sistemaParametro.getAnoMesArrecadacao()) { avisoBancario .setAnoMesReferenciaArrecadacao(anoMesDataLancamento); } else { avisoBancario.setAnoMesReferenciaArrecadacao(sistemaParametro .getAnoMesArrecadacao()); } avisoBancario.setIndicadorCreditoDebito(new Short(tipoAviso)); avisoBancario.setNumeroDocumento(new Integer(form .getNumeroDocumento()).intValue()); avisoBancario.setArrecadacaoForma(arrecadacaoForma); avisoBancario.setArrecadador(arrecadadorSessao); avisoBancario.setContaBancaria(contaBancaria); avisoBancario.setArrecadadorMovimento(null); avisoBancario.setUltimaAlteracao(new Date()); // ------------ REGISTRAR TRANSA��O ---------------- avisoBancario.setOperacaoEfetuada(operacaoEfetuada); avisoBancario.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacao.registrarOperacao(avisoBancario); // ------------ REGISTRAR TRANSA��O ---------------- fachada.inserir(avisoBancario); } else { // Caso tenha selecionado atualiza avisoBancario = (AvisoBancario) sessao .getAttribute("avisoBancario"); avisoBancario.setDataRealizada(dataRealizacao); avisoBancario.setValorRealizado(valorAviso); /* * avisoBancario.setValorArrecadacaoCalculado(new * BigDecimal("0.00")); avisoBancario.setValorDevolucaoCalculado(new * BigDecimal("0.00")); */ avisoBancario.setValorArrecadacaoInformado(valorArrecadacao); avisoBancario.setValorDevolucaoInformado(valorDevolucao); avisoBancario.setNumeroDocumento(new Integer(form .getNumeroDocumento()).intValue()); avisoBancario.setContaBancaria(contaBancaria); avisoBancario.setUltimaAlteracao(new Date()); // ------------ REGISTRAR TRANSA��O ---------------- RegistradorOperacao registradorOperacaoAtualizar = new RegistradorOperacao( Operacao.OPERACAO_AVISO_BANCARIO_ATUALIZAR, new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); Operacao operacaoAtualizar = new Operacao(); operacaoAtualizar.setId(Operacao.OPERACAO_AVISO_BANCARIO_ATUALIZAR); OperacaoEfetuada operacaoEfetuadaAtualizar = new OperacaoEfetuada(); operacaoEfetuadaAtualizar.setOperacao(operacaoAtualizar); avisoBancario.setOperacaoEfetuada(operacaoEfetuadaAtualizar); avisoBancario.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacaoAtualizar.registrarOperacao(avisoBancario); // ------------ REGISTRAR TRANSA��O ---------------- fachada.atualizar(avisoBancario); } if (sessao.getAttribute("colecaoAvisoDeducao") != null && !((Collection) sessao.getAttribute("colecaoAvisoDeducao")) .isEmpty()) { Collection colecaoAvisoDeducao = (Collection) sessao .getAttribute("colecaoAvisoDeducao"); Iterator colecaoAvisoDeducaoIterator = colecaoAvisoDeducao .iterator(); while (colecaoAvisoDeducaoIterator.hasNext()) { AvisoDeducoes avisoDeducoes = (AvisoDeducoes) colecaoAvisoDeducaoIterator .next(); AvisoDeducoesPK avisoDeducoesPK = new AvisoDeducoesPK(); avisoDeducoes.setAvisoBancario(avisoBancario); avisoDeducoesPK.setAvisoBancarioId(avisoBancario.getId()); avisoDeducoesPK.setDeducaoTipoId(avisoDeducoes.getDeducaoTipo() .getId()); registradorOperacao.registrarOperacao(avisoDeducoes); avisoDeducoes.setComp_id(avisoDeducoesPK); fachada.inserirAvisosDeducoes(avisoDeducoes, avisoBancario); } } montarPaginaSucesso(httpServletRequest, "Aviso Banc�rio de c�digo " + avisoBancario.getId() + " com Data de Lan�amento " + form.getDataLancamento() + " e seq�encial " + form.getNumeroSequencial() + " do Arrecadador " + form.getNomeArrecadador() + " inserido com sucesso.", "Inserir outro Aviso Banc�rio", "exibirInserirAvisoBancarioAction.do?menu=sim", "ExibirAtualizarAvisoBancarioAction.do?idAvisoBancario=" + avisoBancario.getId(), "Atualizar Aviso Banc�rio Inserido"); return retorno; } }