/**
   * (non-Javadoc)
   *
   * @see com.santander.supernet.jbServices.MovimientoService#getDetalleComprobanteSpei(ClienteBean,
   *     Date, String)
   */
  public DetalleComprobanteBitacoraBean getDetalleComprobanteSpei(
      ClienteBean cliente, Date fecha, String referencia) throws BusinessException {

    DetalleComprobanteBitacoraBean detalleComprobanteBitacoraBean =
        new DetalleComprobanteBitacoraBean();

    SantanderDetalleBitacoraService sdbs = new SantanderDetalleBitacoraService();
    sdbs.setFecha(Utils.sdfMovimientos.format(fecha));
    sdbs.setReferencia(referencia);
    sdbs.setUsuario(cliente.getClaveCliente());
    sdbs.ejecuta();
    String strRefTrans;
    if (sdbs.getCodigoEstatus() == 0) {
      Hashtable htDatos = sdbs.getDatos();
      String stComprobante = (String) htDatos.get("comprobante");
      strRefTrans = ((String) htDatos.get("creditos")).substring(0, 7);
      if (!stComprobante.equals("")) {
        String tab[] = stComprobante.split("\\|", -1);
        String fec[] = tab[0].split("-");
        detalleComprobanteBitacoraBean.setFechaOper(fec[2] + "/" + fec[1] + "/" + fec[0]);
        detalleComprobanteBitacoraBean.setHoraOper(tab[1]);
        detalleComprobanteBitacoraBean.setFechaApli(tab[2]);
        detalleComprobanteBitacoraBean.setRefSuperNet(tab[3]);
        detalleComprobanteBitacoraBean.setConcepto(tab[4]);
        detalleComprobanteBitacoraBean.setRefCliente(tab[5]);
        detalleComprobanteBitacoraBean.setCuentaOrigen(tab[6]);
        detalleComprobanteBitacoraBean.setCuentaExterna(tab[7]);
        detalleComprobanteBitacoraBean.setBanco(tab[8]);
        detalleComprobanteBitacoraBean.setImporte(tab[9]);
        detalleComprobanteBitacoraBean.setCosto(tab[10]);
        detalleComprobanteBitacoraBean.setRfc(tab[11]);
        detalleComprobanteBitacoraBean.setIva(tab[12]);
        detalleComprobanteBitacoraBean.setTipoTransf(tab[13]);
        detalleComprobanteBitacoraBean.setFin(tab[14]);
        detalleComprobanteBitacoraBean.setCveRastreo("");
        if (isNumeric(strRefTrans)) {
          ResConTranfer resTrans =
              getStatus2SPEI(detalleComprobanteBitacoraBean.getFechaOper(), strRefTrans);
          if (resTrans.getEstatus().equals("Error")) {
            detalleComprobanteBitacoraBean.setEstatus("NO DISPONIBLE");
            // throw new BusinessException("h-3"); //No se puede ejecutar intente más tarde
          } else {
            detalleComprobanteBitacoraBean.setEstatus(resTrans.getEstatus());
            detalleComprobanteBitacoraBean.setCveRastreo(resTrans.getCveRastreo());
          }
        } else {
          throw new BusinessException("BIT-1");
          // detalleComprobanteBitacoraBean.setCveRastreo("");
        }
      } else {
        throw new BusinessException("BIT-1"); // No hay información del comprobante
      }
    } else {
      throw new BusinessException("h-3");
    }
    return detalleComprobanteBitacoraBean;
  }
 /**
  * Metodo para obtener los estatus de las transferencias SPEI
  *
  * @param strFecha Fecha
  * @param referencia Referencia
  * @return Bean con las transferencias
  */
 private ResConTranfer getStatus2SPEI(String strFecha, String referencia) {
   SantanderServicioTransferInterBancarias servicioTIB =
       new SantanderServicioTransferInterBancarias();
   servicioTIB.setNumReferencia(referencia);
   try {
     Date fecha = Utils.sdfSocket.parse(strFecha);
     servicioTIB.setFecha(Utils.sdfEsProgramada.format(fecha));
   } catch (Exception e) {
   }
   servicioTIB.ejecuta();
   ResConTranfer resTrans = new ResConTranfer();
   resTrans.setEstatus("Error");
   if (servicioTIB.getCodigoEstatus() == 0) {
     resTrans.setEstatus(servicioTIB.getEstatus());
     resTrans.setCveRastreo(servicioTIB.getCveRastreo());
   }
   servicioTIB = null;
   return resTrans;
 }
  /**
   * (non-Javadoc)
   *
   * @see
   *     com.santander.supernet.jbServices.MovimientoService#obtenerMovimientosTransferencias(ClienteBean,
   *     OperacionesBitacoraBean, BitacoraBean)
   */
  public List<ConsultaBitacoraBean> obtenerMovimientosTransferencias(
      OperacionesBitacoraBean opBitacora, BitacoraBean bitacora) throws BusinessException {
    SantanderConsultarBitacoraService sbs = new SantanderConsultarBitacoraService();
    boolean sinMovimientos = true;

    sbs.setCuentaFiltro(opBitacora.getCuentaFiltro());
    sbs.setNumeroCliente(opBitacora.getNumeroCliente());
    sbs.setNumeroCuenta(opBitacora.getNumeroCuenta());

    try {
      sbs.setFechaInicio(Utils.sdfSocket.format(Utils.sdf.parse(opBitacora.getFechaInicio())));
      sbs.setFechaFin(Utils.sdfSocket.format(Utils.sdf.parse(opBitacora.getFechaFin())));
    } catch (Exception e) {
      throw new BusinessException("PAR-01");
    }

    sbs.setTipoOperacion("1");
    sbs.setImporteInicial(opBitacora.getImporteInicial());
    sbs.setImporteFinal(opBitacora.getImporteFinal());
    sbs.setTipoEstatus(" ");

    sbs.ejecuta();

    if (sbs.getCodigoEstatus() == 99
        || sbs.getConsultaBita() == null
        || sbs.getConsultaBita().isEmpty()) {
      throw new BusinessException("MOVC-TRNI-1");
    } else if (sbs.getCodigoEstatus() == NO_MOVIMIENTOS) {
      throw new BusinessException("mov-1");
    } else if (sbs.getCodigoEstatus() != 0) {
      throw new BusinessException("ERROR_SERVICIO");
    }

    Iterator registros = sbs.getConsultaBita().iterator();

    List<ConsultaBitacoraBean> bitacoraResp = new ArrayList<ConsultaBitacoraBean>();

    for (Iterator iter = registros; iter.hasNext(); ) {
      String arrTabla[] = (String[]) iter.next();
      if (StringUtils.contains(arrTabla[5], "TEF")
          || StringUtils.contains(arrTabla[5], "SPEI")
          || StringUtils.contains(arrTabla[5], "TRANSFERENCIAS ENTRE CUENTAS INTERBAN")
          || StringUtils.contains(arrTabla[5], "TRANSFERENCIAS TELEFONO MOVIL DE OTROS BANCOS")) {
        if (StringUtils.containsIgnoreCase(arrTabla[18], "RECHAZADA")
            || StringUtils.containsIgnoreCase(arrTabla[18], "ACEPTADA")) {
          ConsultaBitacoraBean bean = new ConsultaBitacoraBean();
          sinMovimientos = false;

          bean.setConcepto(arrTabla[19]);
          bean.setCuentaDestino(arrTabla[11].trim().equals("0000000000000000") ? "" : arrTabla[11]);
          bean.setCuentaOrigen(arrTabla[10].trim().equals("0000000000000000") ? "" : arrTabla[10]);
          bean.setCuentaReferencia(
              arrTabla[4].trim().equals("0000000000000000") ? "" : arrTabla[4]);
          bean.setDescripcionReferencia(arrTabla[5]);
          String estatus = Utils.estatusTranferenciaInterbancaria(arrTabla[18]);
          bean.setEstatus(estatus);
          bean.setFecha(arrTabla[0]);
          bean.setHora(arrTabla[1]);
          bean.setImporte(arrTabla[17]);
          bean.setNumeroReferencia(arrTabla[2]);

          int auxT = arrTabla[19].trim().indexOf("TC0");

          if (auxT >= 0) {
            bean.setTipoCambio(arrTabla[19].trim().substring(auxT + 3, auxT + 8));
          }

          if (arrTabla[3].trim().equals("PGSE")
              || arrTabla[3].trim().equals("PGSP")
              || arrTabla[3].trim().equals("PSTP")) {
            bean.setTipoOperacion(arrTabla[3]);
          }

          String strRefTrans =
              getTranferReference2SPEI(
                      bean.getFecha(), bean.getNumeroReferencia(), opBitacora.getNumeroCliente())
                  .substring(0, 7);
          if (isNumeric(strRefTrans)) {
            ResConTranfer resTrans = getStatus2SPEI(bean.getFecha(), strRefTrans);
            if (resTrans.getEstatus().equals("Error")) {
              bean.setEstatus("NO DISPONIBLE");
              // throw new BusinessException("h-3");
            } else {
              bean.setEstatus(resTrans.getEstatus());
            }
          }

          arrTabla = null;
          bitacoraResp.add(bean);
        }
      }
    }

    if (sinMovimientos) {
      throw new BusinessException("MOVC-TRNI-1");
    }

    // TODO: falta registrar en bitacora.

    return bitacoraResp;
  }