Name

global.ChangeTaskChgManagementAPISNC

Description

Base Change Task API when State Model plugin is installed. Use the ChangeTaskChgManagementAPI script include to override functionality in this script if required

Script

var ChangeTaskChgManagementAPISNC = Class.create();

ChangeTaskChgManagementAPISNC.prototype = {
  initialize: function (changeTaskGr) {
      this._log = new GSLog(ChangeCommon.LOG_PROPERTY, this.type);
      this._gr = changeTaskGr;
  },

  /**
   * Checks whether a change task state is Pending
   */
  isPending: function () {
      return this._gr.state + "" === ChangeTaskState.PENDING;
  },

  /**
   * Checks whether the field in the record has changed to the Pending state
   */
  changesToPending: function () {
      return this._gr.state.changes() && this.isPending();
  },

  /**
   * Set the record's state to Pending but the record is not saved.
   */
  setPending: function () {
      this._gr.state = ChangeTaskState.PENDING;
  },

  /**
   * Change the state of the change task to Pending (the record is saved)
   */
  pending: function () {
      this.setPending();
      return !!this._gr.update();
  },

  /**
   * Checks whether a change task state is Open
   */
  isOpen: function () {
      return this._gr.state + "" === ChangeTaskState.OPEN;
  },

  /**
   * Checks whether the field in the record has changed to the Open state
   */
  changesToOpen: function () {
      return this._gr.state.changes() && this.isOpen();
  },

  /**
   * Set the record's state to Open but the record is not saved.
   */
  setOpen: function () {
      this._gr.state = ChangeTaskState.OPEN;
  },

  /**
   * Change the state of the change task to Open (the record is saved)
   */
  open: function () {
      this.setOpen();
      return !!this._gr.update();
  },

  /**
   * Checks whether a change task is in progress
   */
  isInProgress: function () {
      return this._gr.state + "" === ChangeTaskState.IN_PROGRESS;
  },

  /**
   * Checks whether the field in the record has changed to the In Progress state
   */
  changesToInProgress: function () {
      return this._gr.state.changes() && this.isInProgress();
  },

  /**
   * Set the record's state to In Progress but the record is not saved.
   */
  setInProgress: function () {
      this._gr.state = ChangeTaskState.IN_PROGRESS;
  },

  /**
   * Change the state of the change task to In Progress (the record is saved)
   */
  inProgress: function () {
      this.setInProgress();
      return !!this._gr.update();
  },

  /**
   * Checks whether a change task has been closed
   */
  isClosed: function () {
      return this._gr.state + "" === ChangeTaskState.CLOSED ||
          this.isClosedSuccessful() ||
          this.isClosedSuccessfulWithIssues() ||
          this.isClosedUnsuccessful();
  },

  /**
   * Checks whether the change task has been set to Closed + Successful state
   */
  isClosedSuccessful: function () {
      return this._gr.state + "" === ChangeTaskState.CLOSED_SUCCESSFUL &&
          (JSUtil.nil(this._gr.close_code) || this._gr.close_code + "" === ChangeTaskState.CLOSED_SUCCESSFUL_CODE);
  },

  /**
   * Checks whether the change task has been set to Closed + Successful with issues state
   */
  isClosedSuccessfulWithIssues: function () {
      return this._gr.state + "" === ChangeTaskState.CLOSED_SUCCESSFUL_ISSUES &&
          (JSUtil.nil(this._gr.close_code) || this._gr.close_code + "" === ChangeTaskState.CLOSED_SUCCESSFUL_ISSUES_CODE);
  },

  /**
   * Checks whether the change task has been set to Closed + Unsuccessful state
   */
  isClosedUnsuccessful: function () {
      return this._gr.state + "" === ChangeTaskState.CLOSED_UNSUCCESSFUL &&
          (JSUtil.nil(this._gr.close_code) || this._gr.close_code + "" === ChangeTaskState.CLOSED_UNSUCCESSFUL_CODE);
  },

  /**
   * Checks whether the field in the record has changed to the Closed state
   */
  changesToClosed: function () {
      return this._gr.state.changes() && this.isClosed();
  },

  /**
   * Set the record's state to closed according to the close code, but the record is not saved.
   */
  setClose: function (closeCode, closeNotes) {
      switch (closeCode) {
          case ChangeTaskState.CLOSED_SUCCESSFUL_ISSUES_CODE:
              this.setCloseSuccessfulWithIssues(closeNotes);
              break;
          case ChangeTaskState.CLOSED_UNSUCCESSFUL_CODE:
              this.setCloseUnsuccessful(closeNotes);
              break;
          default:
              this.setCloseSuccessful(closeNotes);
      }
  },

  /**
   * Set close notes for the change task, but not save the record
   */
  setCloseNotes: function (closeNotes) {
      this._gr.close_notes = closeNotes;
  },

  /**
   * Change the state of the change task to Closed (the record is saved) with the specified close code and close notes
   */
  close: function (closeCode, closeNotes) {
      this.setClose(closeCode, closeNotes);
      return !!this._gr.update();
  },

  /**
   * Change the state of the change task to Closed + Successful with the specified close notes without saving the record
   */
  setCloseSuccessful: function (closeNotes) {
      this.setCloseNotes(closeNotes ? closeNotes : "Change task closed successful");
      this._gr.state = ChangeTaskState.CLOSED_SUCCESSFUL;
      this._gr.close_code = ChangeTaskState.CLOSED_SUCCESSFUL_CODE;
  },

  /**
   * Change the state of the change task to Closed + Successful (the record is saved) with the specified close notes
   */
  closeSuccessful: function (closeNotes) {
      this.setCloseSuccessful(closeNotes);
      return !!this._gr.update();
  },

  /**
   * Change the state of the change task to Closed + Successful with issues and the specified close notes without saving the record
   */
  setCloseSuccessfulWithIssues: function (closeNotes) {
      this.setCloseNotes(closeNotes ? closeNotes : "Change task closed successful with issues");
      this._gr.state = ChangeTaskState.CLOSED_SUCCESSFUL_ISSUES;
      this._gr.close_code = ChangeTaskState.CLOSED_SUCCESSFUL_ISSUES_CODE;
  },

  /**
   * Change the state of the change task to Closed + Successful with issues (the record is saved) with the specified close notes
   */
  closeSuccessfulWithIssues: function (closeNotes) {
      this.setCloseSuccessfulWithIssues(closeNotes);
      return !!this._gr.update();
  },

  /**
   * Change the state of the change task to Closed + Unsuccessful with the specified close notes without saving the record
   */
  setCloseUnsuccessful: function (closeNotes) {
      this.setCloseNotes(closeNotes ? closeNotes : "Change task closed unsuccessful");
      this._gr.state = ChangeTaskState.CLOSED_UNSUCCESSFUL;
      this._gr.close_code = ChangeTaskState.CLOSED_UNSUCCESSFUL_CODE;
  },

  /**
   * Change the state of the change task to Closed + Unsuccessful (the record is saved) with the specified close notes
   */
  closeUnsuccessful: function (closeNotes) {
      this.setCloseUnsuccessful(closeNotes);
      return !!this._gr.update();
  },

  /**
   * Checks whether a change task is canceled
   */
  isCanceled: function () {
      return this._gr.state + "" === ChangeTaskState.CANCELED;
  },

  /**
   * Checks whether the field in the record has changed to the Canceled state
   */
  changesToCanceled: function () {
      return this._gr.state.changes() && this.isCanceled();
  },

  /**
   * Set the record's state to cancelled but the record is not saved.
   */
  setCancel: function (closeNotes) {
      this._gr.state = ChangeTaskState.CANCELED;

      if (closeNotes)
          this._gr.close_notes = closeNotes;
  },

  /**
   * Change the state of the change task to Canceled (the record is saved)
   */
  cancel: function (closeNotes) {
      this.setCancel(closeNotes);
      return !!this._gr.update();
  },

  getValue: function (name) {
      return this._gr.getValue(name);
  },

  isOnHold: function () {
      if (!ChangeTask.hasOnHoldField())
          return false;

      return this._gr.on_hold;
  },

  setOnHoldReason: function (holdReason) {
      if (!ChangeTask.hasOnHoldField())
          return false;

      this._gr.setValue('on_hold_reason', holdReason);
  },

  setOnHold: function (holdValue) {
      if (!ChangeTask.hasOnHoldField())
          return false;

      this._gr.setValue('on_hold', holdValue);
  },

  onHold: function (holdValue, holdReason) {
      if (!ChangeTask.hasOnHoldField())
          return false;

      this.setOnHold(holdValue);
      this.setOnHoldReason(holdReason);
      return !!this._gr.update();
  },

  onHoldReason: function (newValue) {
      if (!ChangeTask.hasOnHoldField())
          return false;

      this.setOnHoldReason(newValue);
      return !!this._gr.update();

  },

  clearOnHold: function () {
      if (!ChangeTask.hasOnHoldField())
          return false;

      this.setOnHold(false);
      this.setOnHoldReason('');
      return !!this._gr.update();
  },

  type: 'ChangeTaskChgManagementAPISNC'
};

Sys ID

9674aff1c323101035ae3f52c1d3aeea

Offical Documentation

Official Docs: