Name

global.CatalogTransactionReference

Description

Invoked when you view a reference field

Script

gs.include('PrototypeServer');
gs.include('AbstractTransaction');

var CatalogTransactionReference = Class.create();

CatalogTransactionReference.prototype = Object.extendsObject(AbstractTransaction, {

  execute: function() {
  	try {
  		var table = this.request.getParameter('sysparm_table');
  		var ref_lookup = this.request.getParameter('sysparm_ref_lookup');

  		var cart_item = this.request.getParameter('sysparm_cart_id');
  		var item_id = this.request.getParameter('sysparm_id');
  		var ci = GlideappCatalogItem.get(item_id);
  		if (!ci || !ci.canView())
  			return;

  		var cart;
  		var cartName = this.request.getParameter("sysparm_cart_name");
  		if (!JSUtil.nil(cartName))
  			cart = GlideappCart.get(cartName);
  		else
  			cart = GlideappCart.get();

  		if (cart_item)
  			cart.updateCart(this.request, cart_item);
  		else
  			cart_item = cart.addToCart(this.request);

  		// cart items for record producers shouldn't show up in your (visible) cart
  		if ("sc_cat_item_producer".equals(ci.getType())) {
  			var gr = GlideRecord.newGlideRecord('sc_cart_item', cart_item);
  			if (gr.isValid()) {
  				gr.setValue('active', false);
  				gr.update();
  			}
  		}

  		var stack = gs.getSession().getStack();
  		if (!stack.isEmpty()) {
  			var savedItem = stack.bottom() + "&sysparm_cart_edit=" + cart_item;
  			stack.pop();
  			stack.push(savedItem);
  		}

  		return table + ".do?sys_id=" + ref_lookup;
  	} catch(e) {
  		var catalogExceptionUtils = new CatalogExceptionUtils();
  		if(catalogExceptionUtils.isCartException(e)) {
  			return catalogExceptionUtils.handleCartException(e);	
  		}
  		gs.debug(e);
  	}
  }
});

Sys ID

726bf10ec0a8002700d449c6bdd4c1ad

Offical Documentation

Official Docs: