Name
sn_service_builder.ASBDeleteOffering
Description
No description available
Script
var ASBDeleteOffering = Class.create();
ASBDeleteOffering.prototype = {
initialize: function() {
this.CONSTANTS = new sn_service_builder.ASBConstants();
},
/**
* Method that deletes offerings.
* @param {string} offeringIds - Comma separated offering ids to delete
* @return {object} - Object that returns succesful (count) and unsuccessful deletes (sys id array)
*/
deleteOfferings: function(offeringIds) {
var gr = new GlideRecord('service_offering');
gr.addQuery('sys_id', 'IN', offeringIds);
gr.addQuery('state', '!=', this.CONSTANTS.FIELD_VALUE.PUBLISHED);
gr.query();
var offeringsDeleted = [];
var offeringsFailedToDelete = [];
while (gr.next()) {
var tempOffering = {
name: gr.getValue('name'),
publishedRef: gr.getValue('published_ref')
};
var result = gr.deleteRecord();
if (result) {
offeringsDeleted.push(tempOffering);
} else {
offeringsFailedToDelete.push({
name: gr.getValue('name')
});
}
}
// switch checkout flag to false
if (offeringsDeleted.length > 0) {
var publishedRefs = offeringsDeleted.map(function(o) {
return o.publishedRef;
}).join(',');
var grPubRef = new GlideRecord(this.CONSTANTS.TABLE.OFFERING);
grPubRef.addQuery('sys_id', 'IN', publishedRefs);
grPubRef.setValue('checkout', false);
grPubRef.updateMultiple();
}
if (offeringsFailedToDelete.length > 0)
gs.info('[ASB] Failed to delete offerings (' + offeringsFailedToDelete.length + ') - ' + JSON.stringify(offeringsFailedToDelete));
return {
successful: offeringsDeleted,
unsuccessful: offeringsFailedToDelete
};
},
type: 'ASBDeleteOffering'
};
Sys ID
80d7b8d353732010efc7ddeeff7b123a