Name

global.ContractManagementUtilsAJAX

Description

Common util for any Ajax calls from the client side

Script

var ContractManagementUtilsAJAX = Class.create();
ContractManagementUtilsAJAX.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
  _validateStartDate: function (startDate, startDateLabel) {
  	if (!startDate) {
  		return '';
  	}
  	var startDateInternal;
  	try {
  		startDateInternal = global.AssetUtils.getInternalDate(startDate,
  			gs.getSession().getUser().getDateFormat()).getNumericValue();
  	} catch (error) {
  		return gs.getEscapedMessage('{0} is invalid', startDateLabel);
  	}
  	var currentDateInternal = new GlideDateTime().getLocalDate().getNumericValue();
  	if (startDateInternal < currentDateInternal) {
  		return gs.getEscapedMessage("{0} needs to be at least today's date", startDateLabel);
  	}
  	return '';
  },

  _validateEndDate: function (startDate, startDateLabel, endDate, endDateLabel) {
  	if (!endDate) {
  		return '';
  	}
  	var startDateInternal;
  	var endDateInternal;
  	var userDateFormat = gs.getSession().getUser().getDateFormat();
  	if (startDate) {
  		try {
  			startDateInternal = global.AssetUtils.getInternalDate(startDate,
  				userDateFormat).getNumericValue();
  		} catch (error) {
  			return gs.getEscapedMessage('{0} is invalid', startDateLabel);
  		}
  	}

  	try {
  		endDateInternal = global.AssetUtils.getInternalDate(endDate,
  			userDateFormat).getNumericValue();
  	} catch (error) {
  		return gs.getEscapedMessage('{0} is invalid', endDateLabel);
  	}

  	var currentDateInternal = new GlideDateTime().getLocalDate().getNumericValue();

  	if (gs.nil(startDateInternal) && endDateInternal <= currentDateInternal) {
  		return gs.getEscapedMessage("{0} needs to be at least after today's date", endDateLabel);
  	}

  	if (!gs.nil(startDateInternal) && endDateInternal <= startDateInternal) {
  		return gs.getEscapedMessage('{0} must be after {1}', [endDateLabel, startDateLabel]);
  	}

  	return '';
  },

  validateStartEndDates: function () {
  	var startDate = this.getParameter('sysparm_start_date');
  	var endDate = this.getParameter('sysparm_end_date');
  	var startDateLabel = this.getParameter('sysparm_start_date_label');
  	var endDateLabel = this.getParameter('sysparm_end_date_label');

  	if (!startDate || !endDate) {
  		return '';
  	}

  	var output = '';
  	output = this._validateStartDate(startDate, startDateLabel);
  	if (gs.nil(output)) {
  		output = this._validateEndDate(startDate, startDateLabel, endDate, endDateLabel);
  	}

  	return output;
  },

  calculateRenewalEndDatesUsingOptions: function () {
  	var output = {
  		startDate: '',
  		endDate: '',
  		errorMessage: '',
  	};

  	var C_OPTION_MAPPING = {
  		'1 year': {
  			y: 1,
  			m: 0,
  			d: 0,
  		},
  		'2 years': {
  			y: 2,
  			m: 0,
  			d: 0,
  		},
  		'3 years': {
  			y: 3,
  			m: 0,
  			d: 0,
  		},
  	};

  	var startDate = this.getParameter('sysparm_start_date');
  	var startDateLabel = this.getParameter('sysparm_start_date_label');
  	var renewalOptions = this.getParameter('sysparm_renewal_options');
  	var endDate = this.getParameter('sysparm_end_date');
  	var endDateLabel = this.getParameter('sysparm_end_date_label');
  	var errors = '';
  	if (!startDate) {
  		return JSON.stringify(output);
  	}
  	errors = this._validateStartDate(startDate, startDateLabel);
  	if (gs.nil(errors)) {
  		output.startDate = startDate;
  		if (renewalOptions !== '') {
  			if (typeof C_OPTION_MAPPING[renewalOptions] !== 'undefined') {
  				var years = C_OPTION_MAPPING[renewalOptions].y;
  				var months = C_OPTION_MAPPING[renewalOptions].m;
  				var days = C_OPTION_MAPPING[renewalOptions].d;
  				var endDateObject = new GlideDateTime(startDate);
  				endDateObject.addDays(days - 1);
  				endDateObject.addMonths(months);
  				endDateObject.addYears(years);
  				output.endDate = endDateObject.getDate().getDisplayValue();
  			}
  		} else {
  			errors = this._validateEndDate(startDate, startDateLabel, endDate, endDateLabel);
  			if (gs.nil(errors)) {
  				output.endDate = endDate;
  			}
  		}
  	} else {
  		output.errorMessage = errors;
  	}
  	return JSON.stringify(output);
  },
  cancelContract: function() {
  	var sysId = this.getParameter('sysparm_sys_id');
  	var gr = new GlideRecord('ast_contract');
  	gr.get(sysId);
  	new global.ContractManagementUtils().activateRateCards(gr, false);
  	gr.state = 'cancelled';
  	gr.substate = '';
  	gr.update();
  },
  type: 'ContractManagementUtilsAJAX',
});

Sys ID

afbec8ef53960110001cddeeff7b12bb

Offical Documentation

Official Docs: