Name
global.sc_ScriptableOrderGuideFailure
Description
Wrapper class for Scriptable Order Guide failures
Script
var sc_ScriptableOrderGuideFailure = Class.create();
sc_ScriptableOrderGuideFailure.prototype = Object.extendsObject(sc_Base, {
MARKED_FOR_REPROCESSING: "Failure has been marked for processing",
REPROCESS_EVENT: "reprocess",
DELETE_EVENT: "delete",
REPROCESSING: "reprocessing",
/**
* Sets the state of the failure to "reprocessing"
*/
markForReprocessing: function() {
this._log.debug("[markForReprocessing] Marking failure for reprocessing");
this._gr.state = this.REPROCESSING;
this._gr.update();
return MARKED_FOR_REPROCESSING;
},
/**
* Reprocess the order guide failure. If a workflow created the failure, run
* it, otherwise execute the reprocessing directly.
*/
reprocess: function() {
if (this._gr.state.changesTo(this.REPROCESSING)) {
this._log.debug("[reprocess] State didn't change to 'reprocessing', exiting");
return;
}
if (this._hasWorkflow())
this._runFlow(this.REPROCESS_EVENT);
else {
this._log.debug("[reprocess] No workflow associated, executing resprocess directly");
var sog = new SNC.ScriptableOrderGuide(failure.order_guide);
sog.reprocess(this._gr);
return sog;
}
},
/**
* Calls the delete event if the failure was created by a workflow
*/
deleted: function() {
if (this._hasWorkflow())
this._runFlow(this.DELETE_EVENT);
},
_runFlow: function(eventName) {
this._log.debug("[_runFlow] Kicking off workflow event -- " + eventName);
var sourceTable = this._gr.source_table;
var sourceId = this._gr.source_document;
var sourceGR = new GlideRecord(sourceTable);
if (sourceGR.get(sourceId))
new Workflow().runFlows(sourceGR, eventName);
},
_hasWorkflow: function() {
if (!this._gr.source_table && !this._gr.source_document && !this._gr.wf_activity)
return false;
return true;
},
type: 'sc_ScriptableOrderGuideFailure'
});
Sys ID
5dae4c21373111003e7d40ed9dbe5d9e