package gcom.gui.cobranca.contratoparcelamento; import java.math.BigDecimal; import java.sql.Date; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import gcom.arrecadacao.Arrecadador; import gcom.arrecadacao.FiltroArrecadador; import gcom.cadastro.cliente.Cliente; import gcom.cadastro.cliente.FiltroCliente; import gcom.cobranca.CobrancaForma; import gcom.cobranca.contratoparcelamento.InformarPagamentoContratoParcelamentoPorClienteHelper; import gcom.cobranca.parcelamento.ParcelamentoSituacao; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; 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; /** * [UC1146] Informar Pagamento Contrato de Parcelamento por Cliente * * @author Mariana Victor * @since 27/05/2011 */ public class ExibirInformarPagamentoContratoParcelamentoPorClienteAction extends GcomAction { /** * * @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("exibirInformarPagamentoContratoParcelamentoPorCliente"); //String pagina = httpServletRequest.getParameter("page.offset"); InformarPagamentoContratoParcelamentoPorClienteActionForm form = (InformarPagamentoContratoParcelamentoPorClienteActionForm) actionForm; Fachada fachada = Fachada.getInstancia(); HttpSession sessao = httpServletRequest.getSession(false); //Recupera o usuario que est� logado na aplica��o //Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado"); // Limpar Cliente if (httpServletRequest.getParameter("limpar") != null && httpServletRequest.getParameter("limpar").equalsIgnoreCase("sim")) { form.setIdCliente(""); form.setNomeCliente(""); form.setTotalSelecionado(""); form.setIdRegistro(""); form.setIdArrecadador(""); form.setNomeArrecadador(""); form.setNumeroParcela(""); form.setValorParcelado(""); form.setDataPagamento(""); sessao.removeAttribute("colecaoInformarPagamentoContratoParcelamentoPorClienteHelper"); sessao.removeAttribute("confirmarPagamento"); // Limpar Lista de Contratos } else if (httpServletRequest.getParameter("limparContratos") != null && httpServletRequest.getParameter("limparContratos").equalsIgnoreCase("sim")) { form.setTotalSelecionado(""); form.setIdRegistro(""); form.setIdArrecadador(""); form.setNomeArrecadador(""); form.setNumeroParcela(""); form.setValorParcelado(""); form.setDataPagamento(""); sessao.removeAttribute("colecaoInformarPagamentoContratoParcelamentoPorClienteHelper"); sessao.removeAttribute("confirmarPagamento"); // Limpar Cliente } else if (httpServletRequest.getParameter("limpar") != null && httpServletRequest.getParameter("limpar").equalsIgnoreCase("sim")) { // Pesquisar Dados do Contrato Selecionado } else if (httpServletRequest.getParameter("selecionarDadosContrato") != null && httpServletRequest.getParameter("selecionarDadosContrato").equalsIgnoreCase("sim") && httpServletRequest.getParameter("idContrato") != null && !httpServletRequest.getParameter("idContrato").equalsIgnoreCase("")) { Integer idContrato = new Integer(httpServletRequest.getParameter("idContrato")); Object[] dadosContrato = fachada.pesquisarDadosContratoParcelamentoPorClienteSelecionado(idContrato); if (dadosContrato != null){ if (dadosContrato[0] != null) { Integer numeroParcela = (Integer) dadosContrato[0]; form.setNumeroParcela(numeroParcela.toString()); } if (dadosContrato[1] != null) { BigDecimal valorParcela = (BigDecimal) dadosContrato[1]; form.setValorParcelado(Util.formatarMoedaReal(valorParcela)); } if (dadosContrato[2] != null) { Date dataVencimento = (Date) dadosContrato[2]; form.setDataPagamento(Util.formatarData(dataVencimento)); } } } else { this.pesquisarCamposEnter(httpServletRequest,form, this.getFachada(), sessao); } if(form.getIdCliente() != null && !form.getIdCliente().equals("")) { this.selecionarContratos(httpServletRequest, form, fachada, sessao); } return retorno; } private void pesquisarCamposEnter( HttpServletRequest httpServletRequest, InformarPagamentoContratoParcelamentoPorClienteActionForm form, Fachada fachada, HttpSession sessao) { String idCliente = form.getIdCliente(); // Pesquisa o cliente if (idCliente != null && !idCliente.trim().equals("")) { FiltroCliente filtroCliente = new FiltroCliente(); filtroCliente.adicionarParametro(new ParametroSimples( FiltroCliente.ID, idCliente)); Collection colecaoCliente = fachada.pesquisar(filtroCliente, Cliente.class.getName()); //[FS0004] - Validar cliente if (colecaoCliente != null && !colecaoCliente.isEmpty()) { Cliente cliente = (Cliente) Util .retonarObjetoDeColecao(colecaoCliente); form.setIdCliente(cliente.getId() .toString()); form.setNomeCliente(cliente .getDescricao()); httpServletRequest.setAttribute("nomeCampo", "idEmpresa"); Collection<Object[]> colecaoDadosContrato = fachada.pesquisarDadosContratoParcelamentoPorCliente(new Integer(idCliente)); //[FS0005] � Verificar exist�ncia de contratos para o cliente //Caso n�o existam contratos para o c�digo do cliente informado if (colecaoDadosContrato == null || colecaoDadosContrato.isEmpty()) { form.setTotalSelecionado(""); sessao.removeAttribute("colecaoInformarPagamentoContratoParcelamentoPorClienteHelper"); sessao.removeAttribute("confirmarPagamento"); throw new ActionServletException( "atencao.contrato_parcelamento_por_cliente.inexistente.selecione_outro_cliente", new String[] {cliente.getNome()}); } Collection<InformarPagamentoContratoParcelamentoPorClienteHelper> colecaoHelper = new ArrayList(); Iterator iterator = colecaoDadosContrato.iterator(); while (iterator.hasNext()) { InformarPagamentoContratoParcelamentoPorClienteHelper helper = new InformarPagamentoContratoParcelamentoPorClienteHelper(); Object[] dadosContrato = (Object[]) iterator.next(); helper.setIdContrato(((Integer) dadosContrato[0]).toString()); helper.setNumeroContrato(((Integer) dadosContrato[1]).toString()); helper.setValorParcelado(Util.formatarMoedaReal((BigDecimal) dadosContrato[2])); helper.setNumeroParcelas(((Integer) dadosContrato[3]).toString()); helper.setValorPago(Util.formatarMoedaReal((BigDecimal) dadosContrato[4])); Integer numeroParcelasPagas = fachada.pesquisarDadosContratoParcelamentoNumeroParcelasPagas((Integer) dadosContrato[0]); if (numeroParcelasPagas != null) { helper.setNumeroParcelasPagas(numeroParcelasPagas.toString()); } else { helper.setNumeroParcelasPagas(""); } colecaoHelper.add(helper); } form.setTotalSelecionado("sim"); sessao.setAttribute("confirmarPagamento", true); sessao.setAttribute("colecaoInformarPagamentoContratoParcelamentoPorClienteHelper",colecaoHelper); } else { form.setIdCliente(""); form.setNomeCliente("Cliente inexistente. Informe ou pesquise outro Cliente."); } } else { form.setIdCliente(""); form.setNomeCliente(""); } String numeroContrato = form.getNumeroContrato(); // Pesquisa o contrato if (numeroContrato != null && !numeroContrato.trim().equals("") && (httpServletRequest.getParameter("limpar") == null || !httpServletRequest.getParameter("limpar").equalsIgnoreCase("sim"))) { Object[] dadosContrato = fachada.pesquisarDadosContratoParcelamento(numeroContrato); //[FS0003] � Validar contrato //Caso n�o exista o contrato de parcelamento por cliente com o n�mero informado if (dadosContrato == null || dadosContrato[0] == null) { form.setTotalSelecionado(""); sessao.removeAttribute("colecaoInformarPagamentoContratoParcelamentoPorClienteHelper"); sessao.removeAttribute("confirmarPagamento"); throw new ActionServletException( "atencao.contrato_parcelamento_por_cliente.inexistente", new String[] {numeroContrato}); } //Caso a forma de pagamento do contrato n�o seja �Cobran�a por ICMS� if (((Integer)dadosContrato[2]).compareTo(CobrancaForma.COBRANCA_POR_ICMS) != 0) { form.setTotalSelecionado(""); sessao.removeAttribute("colecaoInformarPagamentoContratoParcelamentoPorClienteHelper"); sessao.removeAttribute("confirmarPagamento"); throw new ActionServletException( "atencao.contrato_parcelamento_por_cliente.nao_possivel.informar_pagamento", new String[] {numeroContrato, (String) dadosContrato[3]}); } //Caso o contrato esteja pago if (dadosContrato[4] == null || ((BigDecimal)dadosContrato[4]).compareTo(BigDecimal.ZERO) == 0) { form.setTotalSelecionado(""); sessao.removeAttribute("colecaoInformarPagamentoContratoParcelamentoPorClienteHelper"); sessao.removeAttribute("confirmarPagamento"); throw new ActionServletException( "atencao.contrato_parcelamento_por_cliente.ja_pago", new String[] {numeroContrato}); } //Caso o contrato esteja encerrado if (((Integer)dadosContrato[5]).compareTo(ParcelamentoSituacao.NORMAL) != 0) { form.setTotalSelecionado(""); sessao.removeAttribute("colecaoInformarPagamentoContratoParcelamentoPorClienteHelper"); sessao.removeAttribute("confirmarPagamento"); throw new ActionServletException( "atencao.contrato_parcelamento_por_cliente.encerrado", new String[] {numeroContrato, (String)dadosContrato[6]}); } Integer numeroParcelasPagas = fachada.pesquisarDadosContratoParcelamentoNumeroParcelasPagas((Integer) dadosContrato[0]); Collection<InformarPagamentoContratoParcelamentoPorClienteHelper> colecaoHelper = new ArrayList(); InformarPagamentoContratoParcelamentoPorClienteHelper helper = new InformarPagamentoContratoParcelamentoPorClienteHelper(); helper.setIdContrato(((Integer) dadosContrato[0]).toString()); helper.setNumeroContrato((dadosContrato[1]).toString()); helper.setValorParcelado(Util.formatarMoedaReal((BigDecimal) dadosContrato[7])); helper.setNumeroParcelas(((Integer) dadosContrato[8]).toString()); helper.setValorPago(Util.formatarMoedaReal((BigDecimal) dadosContrato[9])); if (numeroParcelasPagas != null) { helper.setNumeroParcelasPagas(numeroParcelasPagas.toString()); } else { helper.setNumeroParcelasPagas(""); } colecaoHelper.add(helper); form.setTotalSelecionado("sim"); sessao.setAttribute("confirmarPagamento", true); sessao.setAttribute("colecaoInformarPagamentoContratoParcelamentoPorClienteHelper",colecaoHelper); } String idArrecadador = form.getIdArrecadador(); // Pesquisa o arrecadador if (idArrecadador != null && !idArrecadador.trim().equals("")) { FiltroArrecadador filtroArrecadador = new FiltroArrecadador(); filtroArrecadador.adicionarParametro(new ParametroSimples( FiltroArrecadador.CODIGO_AGENTE,idArrecadador)); filtroArrecadador.adicionarCaminhoParaCarregamentoEntidade("cliente"); Collection colecaoArrecadador = this.getFachada().pesquisar( filtroArrecadador, Arrecadador.class.getName()); //[FS0007] - Verificar exist�ncia do arrecadador if (colecaoArrecadador != null && !colecaoArrecadador.isEmpty()) { Arrecadador arrecadador = (Arrecadador) Util.retonarObjetoDeColecao(colecaoArrecadador); form.setIdArrecadador(arrecadador.getCodigoAgente().toString()); form.setNomeArrecadador(arrecadador.getCliente().getNome()); httpServletRequest.setAttribute( "idArrecadadorNaoEncontrado", "true"); } else { form.setIdArrecadador(""); form.setNomeArrecadador("Arrecadador inexistente. Informe ou pesquise o arrecadador"); httpServletRequest.setAttribute( "idArrecadadorNaoEncontrado", "exception"); } } } private void selecionarContratos( HttpServletRequest httpServletRequest, InformarPagamentoContratoParcelamentoPorClienteActionForm form, Fachada fachada, HttpSession sessao) { } }