private Collection<CuentaTO> wrapperCuenta(
      Collection<com.bancoazteca.elite.beans.CuentaTO> cuentasOrigen) {
    Collection<CuentaTO> cuentasDestino = new ArrayList<CuentaTO>();
    for (com.bancoazteca.elite.beans.CuentaTO cuenta : cuentasOrigen) {
      CuentaTO cuentaTO = new CuentaTO();
      String subProduct = cuenta.getSubproducto();
      if (!Validator.isEmptyData(subProduct)) {
        cuentaTO.setNumero_cuenta(cuenta.getCuentaFormateada().replaceAll(" ", ""));
        cuentaTO.setCuenta_clabe(cuenta.getClabe());

        double retenido = getCantidad(cuenta.getRetenido());
        double disponible = getCantidad(cuenta.getDisponible());
        double saldoTotal = retenido + disponible;

        cuentaTO.setSaldo_retenido(String.valueOf(retenido));
        cuentaTO.setSaldo_disponible(String.valueOf(disponible));
        cuentaTO.setSaldo_total(String.valueOf(saldoTotal));

        cuentaTO.setProducto(cuenta.getDescripcion());

        cuentasDestino.add(cuentaTO);
      }
    }
    return cuentasDestino;
  }
  public Response ejecucion(Session session) throws Exception {
    Response response = new Response();
    ResourceFacadeSL facadeSL = getDelegate();
    LoginResponseTO loginResponseTO = null;

    LoginRequestTO loginRequestTO = new LoginRequestTO();
    ClienteTO clienteTO = (ClienteTO) session.getAttribute(CLIENTE_TO);
    String userName = clienteTO.getUserName();
    loginRequestTO.setUser(userName);

    loginResponseTO = facadeSL.getCuentasUsuario(loginRequestTO);

    clienteTO = loginResponseTO.getClienteTO();
    clienteTO.setUserName(userName);

    CuentasTO cuentasTO = new CuentasTO();
    Collection<CuentaTO> cuentaCollectionTO = new ArrayList<CuentaTO>();

    //		Collection<com.bancoazteca.elite.beans.CuentaTO> cuentasActuales=new
    // ArrayList<com.bancoazteca.elite.beans.CuentaTO>();
    if (clienteTO.getCuentas() != null) {
      for (com.bancoazteca.elite.beans.CuentaTO cuentaEliteTO : clienteTO.getCuentas()) {
        String cuentaFormateada = cuentaEliteTO.getCuentaFormateada().replace(" ", "");

        if (isContrato(cuentaFormateada)) {
          continue;
        }

        CuentaTO cuentaTO = new CuentaTO();

        //				double retenido = getCantidad(cuentaEliteTO.getRetenido());
        //				double disponible = getCantidad(cuentaEliteTO.getDisponible());
        //				double saldoTotal = retenido + disponible;

        cuentaTO.setNumero_cuenta(cuentaFormateada);

        cuentaTO.setCuenta_clabe(cuentaEliteTO.getClabe());
        //				cuentaTO.setSaldo_retenido(String.valueOf(retenido));
        //				cuentaTO.setSaldo_disponible(String.valueOf(disponible));
        //				cuentaTO.setSaldo_total(String.valueOf(saldoTotal));
        cuentaTO.setSaldo_total(String.valueOf(cuentaEliteTO.getBalance()));
        cuentaTO.setSaldo_retenido(String.valueOf(cuentaEliteTO.getRetenido()));
        cuentaTO.setSaldo_disponible(String.valueOf(cuentaEliteTO.getDisponible()));
        cuentaTO.setProducto(cuentaEliteTO.getDescripcion());

        cuentaCollectionTO.add(cuentaTO);

        //				cuentaEliteTO.setBalance(saldoTotal);
        //				cuentasActuales.add(cuentaEliteTO);

      }
    }
    //		clienteTO.setCuentas(cuentasActuales);

    Collection<com.bancoazteca.elite.beans.CreditoTO> creditos = clienteTO.getCreditos();
    if (creditos != null) {
      Collection<com.bancoazteca.eservice.command.base.beans.CreditoTO> creditosColeccion =
          new ArrayList<com.bancoazteca.eservice.command.base.beans.CreditoTO>();
      for (com.bancoazteca.elite.beans.CreditoTO credit : clienteTO.getCreditos()) {
        com.bancoazteca.eservice.command.base.beans.CreditoTO credito_TO =
            new com.bancoazteca.eservice.command.base.beans.CreditoTO();
        credito_TO.setEstatus(credit.getEstatus());
        credito_TO.setFecha_proximo_pago(Formatter.formatoFecha(credit.getFechaProxPago()));
        credito_TO.setIndex(credit.getIndex());
        credito_TO.setNumero_credito(credit.getNumCredito());
        credito_TO.setNumero_cuenta(credit.getNumCuenta());
        credito_TO.setPagos_pendientes(credit.getPagosPendientes());
        credito_TO.setPagos_realizados(credit.getPagosRealizados());
        credito_TO.setSaldo_actual(credit.getSaldoActual());
        credito_TO.setTipo_credito(credit.getTipo());
        credito_TO.setTotal_pagos(credit.getTotalPagos());
        creditosColeccion.add(credito_TO);
      }

      cuentasTO.setColeccion_creditos(creditosColeccion);
    }

    cuentasTO.setColeccion_cuentas(cuentaCollectionTO);
    cuentasTO.setColeccion_tarjetas(obtenerTarjetas(clienteTO));

    try {
      Inversion_mercado_dineroTO inversion_mercado_dinero = getMercadoDinero(clienteTO, session);
      cuentasTO.setInversion_mercado_dinero(inversion_mercado_dinero);
    } catch (Exception e) {
      e.printStackTrace();
    }

    cuentasTO.setAlias(clienteTO.getUserName());
    cuentasTO.setEmail(clienteTO.getEmail());
    cuentasTO.setNombre_completo(clienteTO.getNombreCompleto());

    CuentasTO clasificacionCuentas = filtrarCuentas(clienteTO);
    if (clasificacionCuentas != null) {
      cuentasTO.setColeccion_cuentas(clasificacionCuentas.getColeccion_cuentas());
      cuentasTO.setColeccion_inversiones(clasificacionCuentas.getColeccion_inversiones());
    }

    session.addAttribute(CLIENTE_TO, clienteTO);
    response.addAttribute(cuentasTO);

    return response;
  }
  private CuentasTO filtrarCuentas(ClienteTO clienteTO) {
    CuentasTO cuentasTO = new CuentasTO();
    Collection<com.bancoazteca.elite.beans.CuentaTO> cuentas = clienteTO.getCuentas();
    Collection<com.bancoazteca.elite.beans.CuentaTO> cuentasCaptacion =
        new ArrayList<com.bancoazteca.elite.beans.CuentaTO>();
    Collection<com.bancoazteca.elite.beans.CuentaTO> cuentasInversion =
        new ArrayList<com.bancoazteca.elite.beans.CuentaTO>();

    if (cuentas != null) {
      for (com.bancoazteca.elite.beans.CuentaTO cuentaTO : cuentas) {
        String producto = cuentaTO.getProducto();
        String subProducto = cuentaTO.getSubproducto();
        if (producto == null) {
          producto = "";
        }
        if (subProducto == null) {
          subProducto = "";
        }

        // DescripcionAbreviada = "CPE CLIENTES"
        if (producto.equals("01") && subProducto.equals("0020")) {
          cuentasCaptacion.add(cuentaTO);
        }
        // DescripcionAbreviada = "NOMINA GPO SALI"
        else if (producto.equals("01") && subProducto.equals("0050")) {
          cuentasCaptacion.add(cuentaTO);
        }
        // DescripcionAbreviada = "TARJETA AZTECA"
        else if (producto.equals("01") && subProducto.equals("0099")) {
          cuentasCaptacion.add(cuentaTO);
        }
        // DescripcionAbreviada = "EJE PLATA"
        else if (producto.equals("01") && subProducto.equals("0003")) {
          cuentasCaptacion.add(cuentaTO);
        }
        // DescripcionAbreviada = "MI PLATA EN BOVEDA"
        else if (producto.equals("04") && subProducto.equals("0001")) {
          cuentasInversion.add(cuentaTO);
        }
        // DescripcionAbreviada = "SOCIO EMPLEADO"
        else if (producto.equals("01") && subProducto.equals("0010")) {
          cuentasCaptacion.add(cuentaTO);
        }
        // DescripcionAbreviada = "CUENTA SOCIO"
        else if (producto.equals("02") && subProducto.equals("0003")) {
          cuentasCaptacion.add(cuentaTO);
        }
        // DescripcionAbreviada = "GUARDADITO VIST"
        else if (producto.equals("13") && subProducto.equals("0017")) {
          cuentasCaptacion.add(cuentaTO);
        }
        // DescripcionAbreviada = "CTA EVOLUCION"
        else if (producto.equals("13") && subProducto.equals("0025")) {
          cuentasCaptacion.add(cuentaTO);
        }
        // DescripcionAbreviada = "SOCIO PLUS"
        else if (producto.equals("97") && subProducto.equals("00")) {
          cuentasInversion.add(cuentaTO);
        }
        // DescripcionAbreviada = "PAGARE 364 DIAS"
        else if (producto.equals("07") && subProducto.equals("0060")) {
          cuentasInversion.add(cuentaTO);
        }
        // DescripcionAbreviada = "INV AZTECA 360"
        else if (producto.equals("14") && subProducto.equals("0016")) {
          cuentasInversion.add(cuentaTO);
        }
        // DescripcionAbreviada = "CUENTA DE MEDIOS DE"
        else if (producto.equals("70") && subProducto.equals("")) {
          cuentasCaptacion.add(cuentaTO);
        } else {
          cuentasCaptacion.add(cuentaTO);
        }
      }
    }

    cuentasTO.setColeccion_inversiones(wrapperCuenta(cuentasInversion));
    cuentasTO.setColeccion_cuentas(wrapperCuenta(cuentasCaptacion));

    return cuentasTO;
  }