Find your people. Pick a challenge. Ship something real. The CreatorCon Hackathon is coming to the Community Pavilion for one epic night. Every skill level, every role welcome. Join us on May 5th and learn more here.

Stockrooms for new orders

Jason_DaSilva
Tera Guru

What is possibly over a year ago, our HAM manager and one of the devs set up a script in the request workflow of equipment orders that if an order is place with a 'Non Work location' that it would create a stockroom (which also creates a location) for this order.  A year later and we have over 250 locations and stock rooms that have a name prefix of 'Created for Request...'.
The parties in question have both left the company quite a while ago, and not being a HAM expert, I am trying to figure out the logic behind this.  Is there a limitation on an order that requires a stockroom?  Would it not have been a better idea to have a temp 'Holding' stockroom (and associated location) for these orders?  If this is a requirement, then at what point can we possibly trigger a clean up of the created stockroom?  Assume that everything else is OOB in the process (which is probably a bad assumption, but we are trying to get there and want as OOB a solution as possible).

Sorry if this seems like a odd issue, but our company seems to have like to take odd avenues to solve (or create) problems...

 

1 REPLY 1

Jason_DaSilva
Tera Guru

just incase you would like to see the script (or is this an OOB script?)

Spoiler
var reqSysId = current.sys_id;
var reqNumber = current.number;

var attentionTo = current.variables.epoint_purchase_attention; 
var jhprv_address1_slt = current.variables.jhprv_address1_slt;
var jhprv_address2_slt = current.variables.jhprv_address2_slt;
var jhprv_address3_slt = current.variables.jhprv_address3_slt;
var jhprv_town_slt = current.variables.jhprv_town_slt;
var jhprv_region_slt = current.variables.jhprv_region_slt;
var jhprv_postal_code_slt = current.variables.jhprv_postal_code_slt;
var jhprv_country = current.variables.jhprv_country;
var jhprv_alternative_address_cb = current.variables.jhprv_alternative_address_cb;
var epoint_purchase_shipping = current.variables.epoint_purchase_shipping;

function getRitms(reqSysId){
	
	var ritmSysIdList = [];
	gs.info('IH Update Transfer Order Lines to Requested ' + reqSysId);
	var ritmGr = new GlideRecord("sc_req_item");
		ritmGr.addQuery("request",reqSysId);
		ritmGr.query();
		while(ritmGr.next()){
			var sysId = ritmGr.getValue("sys_id");
			ritmSysIdList.push(sysId);
			
			
		}
	
}
function checkForTransferLine(ritmSysId){
	var tolSysId = '';
    gs.info('IH Update Transfer Order Lines to Requested ' + ritmSysId);
	var grTOL = new GlideRecord("alm_transfer_order_line");
		grTOL.addEncodedQuery("request_line="+ritmSysId+"^stage=requested");
    
		grTOL.query();
    while(grTOL.next()) {
		//gs.print('IH found transfer line ' + grTOL.number);
		tolSysId = grTOL.sys_id;
		gs.info('IH Update Transfer Order Lines to Requested found tolSysId ' + tolSysId);
		updateTransferOrderLineTasks(tolSysId);
    }
	
}

//Update Ready for fulfillment
function updateTransferOrderLineTasks(tolSysId){

var grTolTask = new GlideRecord("alm_transfer_order_line_task");
    grTolTask.addEncodedQuery('transfer_order_line='+tolSysId+'^state=1');
     gs.info('IH Update Transfer Order Lines to Requested found tolSysId updateTransferOrderLineTasks' + tolSysId);
    grTolTask.query();
    if (grTolTask.next()) {
		gs.info('IH found transfer line ' + grTolTask.number);
		grTolTask.description = 'Transfer approved';
		grTolTask.state = 3;
		grTolTask.update();
		
    }	
}
	

	function createLocation(reqNumber){
		
		var locGr = new GlideRecord("cmn_location");
			locGr.name = 'Created for Request ' + reqNumber;
			locGr.street = jhprv_address2_slt;
			locGr.u_address_line_2 = jhprv_address3_slt;
			
			locGr.city = jhprv_town_slt;
			locGr.state = jhprv_region_slt;
			locGr.country = jhprv_country;
			locGr.zip = jhprv_postal_code_slt;
			locGr.contact = attentionTo;
			locGr.u_work_notes = "";
		var locSysId = locGr.insert();
		gs.info('IH Create Stockroom locSysId ' + locSysId);
		createStockRoom(locSysId,reqNumber);
	}
	


	function createStockRoom(locSysId,reqNumber){

		var stockGr = new GlideRecord("alm_stockroom");
			stockGr.name = 'Created for Request ' + reqNumber;
			stockGr.location = locSysId;
			stockGr.external = true;
			stockGr.manager = attentionTo;
		var stockSysId = stockGr.insert();
				
	}
	

createLocation(reqNumber);