/**
   * Obtiene informacion de cuenta 123 de cliente
   *
   * @param cliente Bean de datos de cliente
   * @param beanCte Bean de programa 123 asociado al cliente
   * @param tipoOper Tipo Operacion a registrar
   * @param btaBean bean de bitacora
   * @return bean de cuenta 123
   * @throws Excepcion de negocio si falla la operacion al insertar baja de cuentas
   */
  public Map<String, String> insertaBajaCuentas123(
      ClienteBean cliente, Cuenta123Bean beanCte, String tipoOper, BitacoraBean btaBean)
      throws BusinessException {
    Map<String, String> mp = new HashMap<String, String>();
    String resp = "";
    String cuenta = "";
    String ctainv = "";
    String motivo = beanCte.getMotivo();

    SantanderCuenta123 servicio =
        new SantanderCuenta123(
            Santander123ConstantesService.BEA0,
            Santander123ConstantesService.E_BEA0,
            Santander123ConstantesService.L_BEA0);
    StringBuffer tramArea = new StringBuffer("");
    servicio.obtenerTramaEntrada(tramArea);
    try {
      tramArea.append(SantanderUtileriasService.rellenar("0014", 4, ' ', 'I'));
      tramArea.append(SantanderUtileriasService.rellenar("SN", 2, ' ', 'I'));
      tramArea.append(SantanderUtileriasService.rellenar("SN", 2, ' ', 'I'));
      tramArea.append(
          SantanderUtileriasService.rellenar(
              Santander123ConstantesService.PROGRAMA123, 4, ' ', 'I'));
      tramArea.append(SantanderUtileriasService.rellenar(cliente.getClaveCliente(), 8, ' ', 'I'));
      tramArea.append(SantanderUtileriasService.rellenar(tipoOper, 1, ' ', 'I'));
      tramArea.append(SantanderUtileriasService.rellenar(cuenta, 23, ' ', 'D'));
      tramArea.append(SantanderUtileriasService.rellenar(ctainv, 23, ' ', 'D'));
      tramArea.append(SantanderUtileriasService.rellenar(motivo, 80, ' ', 'I'));
      servicio.setTrama(tramArea.toString());
      servicio.ejecutaBaja("@AVBEA0005", false);
      if (servicio.getCodStatus() != 0) {
        LOG.info("insertaBajaCuentas123: Error Codigo: " + servicio.getCodStatus());
        int[] estatusValidos = {22};
        if (ArrayUtils.contains(estatusValidos, servicio.getCodStatus())) {
          LOG.info("insertaBajaCuentas123: Error Codigo0000: " + servicio.getCodStatus());
          throw new BusinessException("SAN123-22" + servicio.getCodStatus());
        }
      }
      resp = servicio.getRespuesta();

      if (!resp.isEmpty()) {
        registraBajaBita(btaBean, cliente, servicio, mp, cuenta);
      } else {
        throw new BusinessException("BEA0-ERR", servicio.getMsgStatus());
      }
    } catch (BusinessException e) {
      LOG.error("error: " + e.getMessage());
      throw e;
    }
    return mp;
  }
  /**
   * Obtiene informacion de cuenta 123 de cliente
   *
   * @param cliente Bean de datos de cliente
   * @return bean de cuenta 123
   * @throws BusinessException por si falla la operacion de obtencion de cuentas.
   */
  public Cuenta123Bean getCuentas123(String cliente) throws BusinessException {
    Cuenta123Bean bean = new Cuenta123Bean();

    SantanderCuenta123 servicio =
        new SantanderCuenta123(
            Santander123ConstantesService.BEA0,
            Santander123ConstantesService.E_BEA0,
            Santander123ConstantesService.L_BEA0);

    StringBuffer tramArea = new StringBuffer("");
    servicio.obtenerTramaEntrada(tramArea);

    tramArea.append(
        SantanderUtileriasService.rellenar(Santander123ConstantesService.ENTIDAD, 4, ' ', 'I'));
    tramArea.append(
        SantanderUtileriasService.rellenar(Santander123ConstantesService.SN, 2, ' ', 'I'));
    tramArea.append(
        SantanderUtileriasService.rellenar(Santander123ConstantesService.SN, 2, ' ', 'I'));
    tramArea.append(
        SantanderUtileriasService.rellenar(Santander123ConstantesService.PROGRAMA123, 4, ' ', 'I'));
    tramArea.append(SantanderUtileriasService.rellenar(cliente, 8, ' ', 'I'));
    tramArea.append(SantanderUtileriasService.rellenar("C", 1, ' ', 'I'));
    tramArea.append(SantanderUtileriasService.rellenar(" ", 23, ' ', 'D'));
    tramArea.append(SantanderUtileriasService.rellenar(" ", 23, ' ', 'D'));
    tramArea.append(SantanderUtileriasService.rellenar(" ", 80, ' ', 'I'));

    servicio.setClaveUsuario(cliente);
    servicio.setTrama(tramArea.toString());
    servicio.ejecuta("@DCBEMSA01", true);
    if (servicio.getCodStatus() != 0) {
      LOG.info("getCuentas123: Error Codigo: " + servicio.getCodStatus());
    }

    bean = servicio.getBean();

    if (bean == null && servicio.getCodStatus() == 99) {
      LOG.info("getCuentas123: Error respuesta nula");
      throw new BusinessException(Santander123ConstantesService.B123N);
    }

    return bean;
  }
  /**
   * Obtiene informacion de cuenta 123 de cliente
   *
   * @param cliente Bean de datos de cliente
   * @param beanCte Bean de programa 123 asociado al cliente
   * @param tipoOper Tipo Operacion a registrar
   * @param btaBean bean de bitacora
   * @return bean de cuenta 123
   * @throws Excepcion de negocio si falla la operacion
   */
  public Map<String, String> insertaActualizaCuentas123(
      ClienteBean cliente, Cuenta123Bean beanCte, String tipoOper, BitacoraBean btaBean)
      throws BusinessException {
    Map<String, String> mp = new HashMap<String, String>();
    ConsultaBitacoraBean beanB = new ConsultaBitacoraBean();
    String resp = "";
    String cuenta = beanCte.getCuenta();
    SantanderCuenta123 servicio =
        new SantanderCuenta123(
            Santander123ConstantesService.BEA0,
            Santander123ConstantesService.E_BEA0,
            Santander123ConstantesService.L_BEA0);
    StringBuffer tramArea = new StringBuffer("");
    servicio.obtenerTramaEntrada(tramArea);
    try {
      tramArea.append(SantanderUtileriasService.rellenar("0014", 4, ' ', 'I'));
      tramArea.append(SantanderUtileriasService.rellenar("SN", 2, ' ', 'I'));
      tramArea.append(SantanderUtileriasService.rellenar("SN", 2, ' ', 'I'));
      tramArea.append(
          SantanderUtileriasService.rellenar(
              Santander123ConstantesService.PROGRAMA123, 4, ' ', 'I'));
      tramArea.append(SantanderUtileriasService.rellenar(cliente.getClaveCliente(), 8, ' ', 'I'));
      tramArea.append(SantanderUtileriasService.rellenar(tipoOper, 1, ' ', 'I'));
      tramArea.append(SantanderUtileriasService.rellenar(cuenta, 23, ' ', 'D'));
      tramArea.append(SantanderUtileriasService.rellenar(beanCte.getCtaInv(), 23, ' ', 'D'));
      tramArea.append(SantanderUtileriasService.rellenar(" ", 80, ' ', 'I'));

      servicio.setTrama(tramArea.toString());
      servicio.ejecuta("@DCBEMSA01", false);
      if (servicio.getCodStatus() != 0) {
        LOG.info("insertaActualizaCuentas123: Error Codigo: " + servicio.getCodStatus());
        int[] estatusValidos = {19};

        if (ArrayUtils.contains(estatusValidos, servicio.getCodStatus())) {
          throw new BusinessException("SAN123-" + servicio.getCodStatus());
        }
      }

      resp = servicio.getRespuesta();

      if (!resp.isEmpty()) {
        SantanderReferenciaService srs = commonService.getReferencia(btaBean.getNombreClase());
        btaBean.setClaveUsuario(cliente.getClaveCliente());
        btaBean.setMensaje("MODIFICACION CUENTA 123");
        btaBean.setCuentaDestino(cuenta);
        btaBean.setNumeroReferencia(srs.getNumReferencia());
        btaBean.setClaveConcepto("M123" + servicio.getMsgStatus().substring(4));
        commonService.registrarBitacora(btaBean);

        Date fechaOperacion = new Date();
        UtilsFormateaFechas util = new UtilsFormateaFechas();
        beanB.setFecha(util.fechaToString("dd/MM/yyyy", fechaOperacion));
        beanB.setHora(util.fechaToString("HH:mm", fechaOperacion));

        mp.put("horaOP", beanB.getHora());
        mp.put("refSuper", Integer.toString(btaBean.getNumeroReferencia()));
        mp.put("fechaOP", beanB.getFecha());

        notificaModificacion(cliente, srs, "modificacionP123", cuenta);
      } else {
        throw new BusinessException("BEA0-ERR", servicio.getMsgStatus());
      }
    } catch (BusinessException e) {
      LOG.error("error: " + e.getMessage());
      throw e;
    }
    return mp;
  }