package gcom.gui.arrecadacao; import gcom.arrecadacao.ArrecadacaoForma; import gcom.arrecadacao.Arrecadador; import gcom.arrecadacao.ArrecadadorContratoTarifa; import gcom.arrecadacao.FiltroArrecadacaoForma; import gcom.arrecadacao.FiltroArrecadador; import gcom.arrecadacao.banco.ContaBancaria; import gcom.arrecadacao.banco.FiltroContaBancaria; import gcom.cadastro.cliente.Cliente; import gcom.cadastro.cliente.FiltroCliente; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.util.ConstantesSistema; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import java.math.BigDecimal; import java.util.ArrayList; 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; /** * Descri��o da classe * * @author Marcio Roberto * @date 13/03/2007 */ public class ExibirInserirContratoArrecadadorAction extends GcomAction { /** * [UC0509] Inserir Contrato Arrecadador * * @author Marcio Roberto * @date 13/03/2007 * * @param actionMapping * @param actionForm * @param httpServletRequest * @param httpServletResponse * @return */ public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { ActionForward retorno = actionMapping.findForward("contratoArrecadadorInserir"); Collection colecaoPesquisa = null; InserirContratoArrecadadorActionForm inserirContratoArrecadadorActionForm = (InserirContratoArrecadadorActionForm) actionForm; // Instancia da Fachada Fachada fachada = Fachada.getInstancia(); // Obt�m a sess�o HttpSession sessao = httpServletRequest.getSession(false); // Campos do formulario String idCliente = inserirContratoArrecadadorActionForm.getIdCliente(); // Arrecadador FiltroArrecadador filtroArrecadador = new FiltroArrecadador(); // Ordena filtro de arrecadador por id do cliente filtroArrecadador.setCampoOrderBy(FiltroArrecadador.CLIENTE_ID); // Inclui a obejeto de cliente no filtro de arrecadador filtroArrecadador.adicionarCaminhoParaCarregamentoEntidade("cliente"); // Preenche colecao de arrecadador Collection<Arrecadador> colecaoArrecadador = fachada.pesquisar(filtroArrecadador, Arrecadador.class.getName()); if (colecaoArrecadador == null || colecaoArrecadador.isEmpty()) { throw new ActionServletException("atencao.entidade_sem_dados_para_selecao", null,"Arrecadador"); } else { FiltroCliente filtroCliente = new FiltroCliente(); Iterator iteratorColecaoArrecadador = colecaoArrecadador.iterator(); Cliente cliente = new Cliente(); while (iteratorColecaoArrecadador.hasNext()) { Arrecadador arrecadador = (Arrecadador) iteratorColecaoArrecadador.next(); cliente = arrecadador.getCliente(); filtroCliente.adicionarParametro(new ParametroSimples(FiltroCliente.ID, cliente.getId(),ParametroSimples.CONECTOR_OR)); } Collection colecaoClienteArrecadador = fachada.pesquisar(filtroCliente, Cliente.class.getName()); if(colecaoClienteArrecadador.isEmpty()){ sessao.setAttribute("colecaoClienteArrecadador", colecaoClienteArrecadador); }else{ sessao.setAttribute("colecaoClienteArrecadador", colecaoClienteArrecadador); } } String objetoConsulta = (String) httpServletRequest .getParameter("objetoConsulta"); if (objetoConsulta != null && !objetoConsulta.trim().equalsIgnoreCase("")) { switch (Integer.parseInt(objetoConsulta)) { // Cliente case 1: //Recebe o valor do campo bancoID do formul�rio. String clienteID = inserirContratoArrecadadorActionForm .getIdCliente(); FiltroCliente filtroCliente1 = new FiltroCliente(); filtroCliente1 .adicionarParametro(new ParametroSimples( FiltroCliente.ID, clienteID)); filtroCliente1 .adicionarParametro(new ParametroSimples( FiltroCliente.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); //Retorna Cliente colecaoPesquisa = fachada.pesquisar(filtroCliente1, Cliente.class.getName()); if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) { //Setor censitario nao encontrado //Limpa o campo clienteID do formul�rio inserirContratoArrecadadorActionForm.setIdCliente(""); inserirContratoArrecadadorActionForm .setNomeCliente("Cliente inexistente."); httpServletRequest.setAttribute("existeCliente", "exception"); httpServletRequest.setAttribute("nomeCampo", "clienteID"); } else { Cliente objetoCliente = (Cliente) Util .retonarObjetoDeColecao(colecaoPesquisa); inserirContratoArrecadadorActionForm.setIdCliente(String .valueOf(objetoCliente.getId())); inserirContratoArrecadadorActionForm .setNomeCliente(objetoCliente .getDescricao()); httpServletRequest.setAttribute("existeCliente", "valor"); httpServletRequest.setAttribute("nomeCampo", "clienteID"); } break; default: break; } } // Verificar se o n�mero do cliente n�o est� cadastrado if (idCliente != null && !idCliente.trim().equals("")) { // Filtro para descobrir id do Cliente FiltroCliente filtroCliente = new FiltroCliente(); filtroCliente.adicionarParametro(new ParametroSimples(FiltroCliente.ID, idCliente)); filtroCliente.adicionarCaminhoParaCarregamentoEntidade("clienteTipo"); Collection colecaoCliente = fachada.pesquisar(filtroCliente,Cliente.class.getName()); if (colecaoCliente == null || colecaoCliente.isEmpty()) { inserirContratoArrecadadorActionForm.setIdCliente(""); httpServletRequest.setAttribute("existeCliente", "exception"); throw new ActionServletException("atencao.cliente.inexistente"); } else { Cliente cliente = (Cliente) Util.retonarObjetoDeColecao(colecaoCliente); //[FS0004]-Verificar se pessoa f�sica if(cliente.getClienteTipo().getIndicadorPessoaFisicaJuridica() != null && cliente.getClienteTipo().getIndicadorPessoaFisicaJuridica().equals(new Short("2"))){ throw new ActionServletException("atencao.cliente_arrecadador_pessoa_fisica"); } inserirContratoArrecadadorActionForm.setIdCliente(cliente.getId().toString()); httpServletRequest.setAttribute("nomeCampo", "idCliente"); } } /** * Inserir Arrecadador Contrato Tarifa * @date 28/05/09 * @author Arthur Carvalho */ if (inserirContratoArrecadadorActionForm.getFormaDeArrecadacao() == null || inserirContratoArrecadadorActionForm.getFormaDeArrecadacao().equals("")) { FiltroArrecadacaoForma filtroArrecadadorForma = new FiltroArrecadacaoForma(); filtroArrecadadorForma.setCampoOrderBy(FiltroArrecadacaoForma.CODIGO); Collection colecaoArrecadacaoForma = fachada.pesquisar( filtroArrecadadorForma, ArrecadacaoForma.class.getName() ); if (colecaoArrecadacaoForma == null || colecaoArrecadacaoForma.isEmpty()) { throw new ActionServletException( "atencao.pesquisa.nenhum_registro_tabela", null, "Forma de Arrecada��o"); } else { sessao.setAttribute("colecaoFormaArrecadacao", colecaoArrecadacaoForma); } } ArrayList colecaoArrecadadorContratoTarifaSelecionados ; ArrecadadorContratoTarifa arrecadadorContratoTarifa = new ArrecadadorContratoTarifa(); //Forma de Arrecadacao if (inserirContratoArrecadadorActionForm.getFormaDeArrecadacao() != null && !"-1".equals( inserirContratoArrecadadorActionForm.getFormaDeArrecadacao() ) ) { FiltroArrecadacaoForma filtroArrecadadorForma = new FiltroArrecadacaoForma(); filtroArrecadadorForma.adicionarParametro(new ParametroSimples(FiltroArrecadacaoForma.CODIGO, inserirContratoArrecadadorActionForm.getFormaDeArrecadacao())); Collection colecaoArrecadacaoForma = fachada.pesquisar( filtroArrecadadorForma, ArrecadacaoForma.class.getName() ); if (colecaoArrecadacaoForma != null && !colecaoArrecadacaoForma.isEmpty()) { ArrecadacaoForma arrecadacaoForma = (ArrecadacaoForma) Util.retonarObjetoDeColecao(colecaoArrecadacaoForma); arrecadadorContratoTarifa.setArrecadacaoForma(arrecadacaoForma); } } //Valor Tarifa BigDecimal valorTarifa = null; if (inserirContratoArrecadadorActionForm.getValorTarifa() != null && !"".equals( inserirContratoArrecadadorActionForm.getValorTarifa() ) ) { valorTarifa = Util.formatarMoedaRealparaBigDecimal( inserirContratoArrecadadorActionForm.getValorTarifa() ) ; arrecadadorContratoTarifa.setValorTarifa( valorTarifa ); } //Valor Tarifa Percentual BigDecimal valorTarifaPercentual = null; if ( inserirContratoArrecadadorActionForm.getValorTarifaPercentual() != null && !inserirContratoArrecadadorActionForm.getValorTarifaPercentual().equals("")){ valorTarifaPercentual = Util.formatarMoedaRealparaBigDecimal(inserirContratoArrecadadorActionForm.getValorTarifaPercentual()); arrecadadorContratoTarifa.setValorTarifaPercentual(valorTarifaPercentual); } //Numero de dias Float Short nmDiasFloat = null; if (inserirContratoArrecadadorActionForm.getNumeroDiaFloat() != null && !"".equals( inserirContratoArrecadadorActionForm.getNumeroDiaFloat() ) ) { nmDiasFloat = new Short( inserirContratoArrecadadorActionForm.getNumeroDiaFloat() ) ; arrecadadorContratoTarifa.setNumeroDiaFloat(nmDiasFloat); } if( (inserirContratoArrecadadorActionForm.getIdContaBancariaArrecadador2() != null && !inserirContratoArrecadadorActionForm.getIdContaBancariaArrecadador2().equals("")) ) { ContaBancaria contaBancaria = new ContaBancaria(); contaBancaria.setId(Integer.parseInt(inserirContratoArrecadadorActionForm.getIdContaBancariaArrecadador2())); arrecadadorContratoTarifa.setContaBancariaDepositoArrecadacao(contaBancaria); } //Agencia String agArrecadadorConta2; if(inserirContratoArrecadadorActionForm.getAgArrecadadorConta2() != null && !inserirContratoArrecadadorActionForm.getAgArrecadadorConta2().equals("")) { agArrecadadorConta2 = inserirContratoArrecadadorActionForm.getAgArrecadadorConta2(); arrecadadorContratoTarifa.setAgArrecadadorConta2(agArrecadadorConta2); } //Numero da Conta String numeroArrecadadorConta2; if(inserirContratoArrecadadorActionForm.getNumeroArrecadadorConta2() != null && !inserirContratoArrecadadorActionForm.getNumeroArrecadadorConta2().equals("")) { numeroArrecadadorConta2 = inserirContratoArrecadadorActionForm.getNumeroArrecadadorConta2(); arrecadadorContratoTarifa.setNumeroArrecadadorConta2(numeroArrecadadorConta2); } //Adiciona o Arrecadador Contrato Tarifa a Colecao if (sessao.getAttribute("colecaoArrecadadorContratoTarifaSelecionados") != null){ colecaoArrecadadorContratoTarifaSelecionados = (ArrayList) sessao .getAttribute("colecaoArrecadadorContratoTarifaSelecionados"); }else{ colecaoArrecadadorContratoTarifaSelecionados = new ArrayList(); } //Verifica se a Data Final � maior que a Inicial if ( inserirContratoArrecadadorActionForm.getDtFimContrato() != null && !inserirContratoArrecadadorActionForm.getDtFimContrato().equals("") && inserirContratoArrecadadorActionForm.getDtInicioContrato() != null && !inserirContratoArrecadadorActionForm.getDtInicioContrato().equals("")){ Date dtInicial = Util.converteStringParaDate(inserirContratoArrecadadorActionForm.getDtInicioContrato()); Date dtFinal = Util.converteStringParaDate(inserirContratoArrecadadorActionForm.getDtFimContrato()); if (Util.compararData(dtFinal, dtInicial)== -1){ throw new ActionServletException("atencao.data.intervalo.invalido", null ,"Data Invalida" ); } } //Verifica se o usuario clicou no botao adicionar if ( httpServletRequest.getParameter("acao") != null && httpServletRequest.getParameter("acao").equals("adicionar") && !inserirContratoArrecadadorActionForm.getFormaDeArrecadacao().equals("-1") && ( !inserirContratoArrecadadorActionForm.getValorTarifa().equals("") || !inserirContratoArrecadadorActionForm.getValorTarifaPercentual().equals("") ) && !inserirContratoArrecadadorActionForm.getNumeroDiaFloat().equals("") ) { arrecadadorContratoTarifa.setUltimaAlteracao(new Date()); Iterator iteratorColecaoArrecadadorContratoTarifa = colecaoArrecadadorContratoTarifaSelecionados.iterator(); ArrecadadorContratoTarifa contratoTarifa = null; if ( inserirContratoArrecadadorActionForm.getValorTarifaPercentual() != null && !inserirContratoArrecadadorActionForm.getValorTarifaPercentual().equals("")){ //Valida��o do valor da tarifa percentual BigDecimal valorTarifaPerc = Util.formatarMoedaRealparaBigDecimal (inserirContratoArrecadadorActionForm.getValorTarifaPercentual()); //Variaveis para comparar valorTarifaPercentual BigDecimal igualZero = new BigDecimal(0); BigDecimal maiorQue100 = new BigDecimal(100); if (valorTarifaPerc.compareTo(igualZero) == 0){ throw new ActionServletException("atencao.tarifa_invalida", null ,"Tarifa de Contrato" ); }else if ( valorTarifaPerc.compareTo(maiorQue100) == 1){ throw new ActionServletException("atencao.tarifa_invalida", null ,"Tarifa de Contrato" ); } } //Valida se ja existe forma de arrecadacao while (iteratorColecaoArrecadadorContratoTarifa.hasNext()) { contratoTarifa = (ArrecadadorContratoTarifa) iteratorColecaoArrecadadorContratoTarifa.next(); if ( arrecadadorContratoTarifa.getArrecadacaoForma().getId().intValue() == contratoTarifa.getArrecadacaoForma().getId().intValue() ) { throw new ActionServletException("atencao.forma_ja_cadastrada", null ,"Tarifa de Contrato" ); } } colecaoArrecadadorContratoTarifaSelecionados.add(arrecadadorContratoTarifa); inserirContratoArrecadadorActionForm.setTamanhoColecao("" + colecaoArrecadadorContratoTarifaSelecionados.size()); inserirContratoArrecadadorActionForm.setNumeroDiaFloat(""); inserirContratoArrecadadorActionForm.setValorTarifa(""); inserirContratoArrecadadorActionForm.setValorTarifaPercentual(""); inserirContratoArrecadadorActionForm.setBcoArrecadadorConta2(""); inserirContratoArrecadadorActionForm.setAgArrecadadorConta2(""); inserirContratoArrecadadorActionForm.setNumeroArrecadadorConta2(""); inserirContratoArrecadadorActionForm.setFormaDeArrecadacao("-1"); } //Remover o Contrato Tarifa da Colecao if ( httpServletRequest.getParameter("acao") != null && httpServletRequest.getParameter("acao").equals("remover") ) { int obj = new Integer(httpServletRequest.getParameter("id")).intValue(); if (colecaoArrecadadorContratoTarifaSelecionados.size() >= obj) { colecaoArrecadadorContratoTarifaSelecionados.remove(obj-1); } } //Limpar Form if ( httpServletRequest.getParameter("acao") != null && httpServletRequest.getParameter("acao").equals("limparForm") ) { colecaoArrecadadorContratoTarifaSelecionados.removeAll(colecaoArrecadadorContratoTarifaSelecionados); } sessao.setAttribute("colecaoArrecadadorContratoTarifaSelecionados", colecaoArrecadadorContratoTarifaSelecionados ); inserirContratoArrecadadorActionForm.setFormaDeArrecadacao("-1"); inserirContratoArrecadadorActionForm.setTamanhoMaximoIdentificacaoImovel("8"); return retorno; } }