Script Access Examples

Consider the following examples, taken from the SiteGenesis application:

Pipeline

The following is an example of using the EVAL pipelet in a pipeline to evaluate an expression, which in this case is confirms the order status.

Pipeline: COPlaceOrder-PlaceOrder

Pipelet: EVAL: Confirm order

Expression: Order.setConfirmationStatus(Order.CONFIRMATION_STATUS_CONFIRMED)

Pipelet: Custom

The continueshopping.ds script file is called by a Script pipelet in the Cart-ContinueShipping pipeline to find the last catalog click and return it as the target for the continue shopping button redirect.

/**
* The script finds the last catalog click and returns it
* as the target for a redirect.
*
* @output Location : String
*/
 importPackage( dw.system );
 importPackage( dw.web );
 importPackage( dw.util );
 function execute( pdict : PipelineDictionary ) : Number
{
 // find the last catalog related click
 var list : List = session.clickStream.clicks;
 for( var i = list.size()-1; i >= 0; i-- )
{
 var click : ClickStreamEntry = list[i];
 switch( click.pipelineName )
{
 case "Product-Show":
 // product detail page click
 pdict.Location = click.url.replace(/source=/g, "src=").replace(/format=/g, "frmt=");
 // hack to change product URL if it was viewed from search
 return PIPELET_NEXT;
 case "Search-Show":
 // catalog related click
 pdict.Location = click.url.replace(/source=/g, "src=").replace(/format=/g, "frmt=");
 // avoid showing product grid only
 return PIPELET_NEXT;
}
}
 // nothing found, go to the home page
 pdict.Location = URLUtils.httpHome().toString();
 return PIPELET_NEXT;
} 

In the above example, the script imports and uses API calls from dw.system, dw.web, and dw.util. The JavaScript class URLUtils.url is located in the dw.util package.

Pipelet: Standard

The JavaScript used in a standard pipelet isn't public. For example, the GetProduct pipelet returns the product that is identified by a supplied product ID. The actual internal JavaScript code is unavailable to the developer.

Template

The following portion of the ordertotals.isml template uses <isscript> to calculate order-level discounts as part of the order total.

<iscomment>calculate order level discounts</iscomment>
<isscript>
	var merchTotalExclOrderDiscounts : dw.value.Money = LineItemCtnr.getAdjustedMerchandizeTotalPrice(false);
	var merchTotalInclOrderDiscounts : dw.value.Money = LineItemCtnr.getAdjustedMerchandizeTotalPrice(true);
	var orderDiscount : dw.value.Money = merchTotalExclOrderDiscounts.subtract( merchTotalInclOrderDiscounts );
 </isscript>

The above example uses the getAdjustedMerchandizeTotalPrice method.