Script: Class dw.order.BasketMgr

Class BasketMgr

Provides static helper methods for managing baskets.

Properties

baskets : List Read Only

Retrieve all open baskets for the logged in customer including the temporary baskets.

Restricted to agent scenario use cases: The returned list contains all agent baskets created with createAgentBasket() and the current storefront basket which can also be retrieved with getCurrentBasket(). This method will result in an exception if called by a user without permission Create_Order_On_Behalf_Of or if no customer is logged in the session.

Please notice that baskets are invalidated after a certain amount of time and may not be returned anymore.

currentBasket : Basket Read Only

This method returns the current valid basket of the session customer or null if no current valid basket exists.

The methods getCurrentBasket() and getCurrentOrNewBasket() work based on the selected basket persistence, which can be configured in the Business Manager site preferences / baskets section. A basket is valid for the configured basket lifetime.

The current basket, if one exists, is usually updated by the method. In particular the last-modified date is updated. The lifetime of a basket can be extended in 2 ways:

  • The basket is modified in some way, e.g. a product is added resulting in the basket total being newly calculated. This results in the basket lifetime being reset.
  • The basket has not been modified for 60 minutes, then using this method to access the basket will also reset the basket lifetime.

Personal data held inside the basket such as addresses, email addresses and payment settings is associated with the customer to whom the basket belongs. If the basket being updated belongs to a different customer this data is removed. This happens when a registered customer logs in after having previously created a basket as an anonymous customer. After the customer logs out, the previous basket is stored (where applicable) and the method returns null. Personal data is also cleared when the session times out for an anonymous customer.

The following personal data is cleared.

  • product line items that were added from a wish list
  • shipping method
  • coupon line items
  • gift certificate line items
  • billing and shipping addresses
  • payment instruments
  • buyer email

If the session currency no longer matches the basket currency, the basket currency should be updated with Basket.updateCurrency().

Typical usage:

var basket : Basket = BasketMgr.getCurrentBasket(); if (basket) { // do something with basket }

Constraints:

  • The method only accesses the basket for the session customer, an exception is thrown when the session customer is null.
  • Method getCurrentOrNewBasket() only creates a basket when method getCurrentBasket() returns null.

currentOrNewBasket : Basket Read Only

This method returns the current valid basket of the session customer or creates a new one if no current valid basket exists. See getCurrentBasket() for more details.

storedBasket : Basket Read Only

This method returns the stored basket of the session customer or null if none is found. A stored basket is returned in the following situation:

  1. During one visit, a customer-X logs in and receives a basket-A.
  2. In a later visit, a second basket-B is created for an anonymous customer who then logs in as customer-X.

In this case basket-B is reassigned to him and basket-A is accessible as the stored basket. Now it is possible to merge the information from the stored basket to the active basket.

A stored basket will exist only if the corresponding setting is selected in the Business Manager site preferences' baskets section. A basket is valid for the configured basket lifetime.

Typical usage:

var currentBasket : Basket = BasketMgr.getCurrentOrNewBasket(); var storedBasket : Basket = BasketMgr.getStoredBasket(); if (storedBasket) { // transfer all the data needed from the stored to the active basket }

temporaryBaskets : List Read Only

Retrieve all open temporary baskets for the logged in customer.

Please notice that baskets are invalidated after a certain amount of time and may not be returned anymore.

Constructor Summary

This class does not have a constructor, so you cannot create it directly.

Method Summary

static createAgentBasket() : Basket

Creates a new agent basket for the current session customer.

static createBasketFromOrder(order : Order) : Basket

Creates a Basket from an existing Order for the purposes of changing an Order.

static createTemporaryBasket() : Basket

Creates a new temporary basket for the current session customer.

static deleteBasket(basket : Basket) : void

Remove a customer basket including a temporary basket.

static deleteTemporaryBasket(basket : Basket) : void

Remove a customer temporary basket.

static getBasket(uuid : String) : Basket

This method returns a valid basket of the session customer or null if none is found.

static getBaskets() : List

Retrieve all open baskets for the logged in customer including the temporary baskets.

static getCurrentBasket() : Basket

This method returns the current valid basket of the session customer or null if no current valid basket exists.

static getCurrentOrNewBasket() : Basket

This method returns the current valid basket of the session customer or creates a new one if no current valid basket exists.

static getStoredBasket() : Basket

This method returns the stored basket of the session customer or null if none is found.

static getTemporaryBasket(uuid : String) : Basket

This method returns a valid temporary basket of the session customer or null if none is found.

static getTemporaryBaskets() : List

Retrieve all open temporary baskets for the logged in customer.

Methods inherited from class Object

assign, create, create, defineProperties, defineProperty, entries, freeze, fromEntries, getOwnPropertyDescriptor, getOwnPropertyNames, getOwnPropertySymbols, getPrototypeOf, hasOwnProperty, is, isExtensible, isFrozen, isPrototypeOf, isSealed, keys, preventExtensions, propertyIsEnumerable, seal, setPrototypeOf, toLocaleString, toString, valueOf, values

Method Detail

createAgentBasket

static createAgentBasket() : Basket

Creates a new agent basket for the current session customer.

By default only 4 open agent baskets are allowed per customer. If this is exceeded a CreateAgentBasketLimitExceededException will be thrown.

This method will result in an exception if called by a user without permission Create_Order_On_Behalf_Of or if no customer is logged in the session.

Returns:

the newly created basket for the customer which is logged in

Throws:

CreateAgentBasketLimitExceededException - indicates that no agent basket could be created because the agent basket limit is already exceeded

createBasketFromOrder

static createBasketFromOrder(order : Order) : Basket

Creates a Basket from an existing Order for the purposes of changing an Order. When an Order is later created from the Basket, the original Order is changed to status Order.ORDER_STATUS_REPLACED. Restricted to agent scenario use cases: In case a storefront customer is using it the created storefront basket cannot be retrieved via

Baskets containing an "orderNumberBeingEdited" are explicitly excluded from the list of baskets that can be retrieved. Responsible for this behaviour (this kind of basket cannot be used as general purpose shopping baskets) - see Basket.getOrderNoBeingEdited() / Basket.getOrderBeingEdited().

In case a Business Manager user is logged in into the session the basket will be marked as an agent basket. See Basket.isAgentBasket().

Any inventory reservation associated with the order will be canceled either early when Basket.reserveInventory() is called for the new basket or (later) when a new replacement order is created from the basket. Consider reserving the basket following its creation.

The method only succeeds for an Order

  • without gift certificates,
  • status is not cancelled,
  • was not previously replaced and
  • was not previously exported.

Failures are indicated by throwing an APIException of type CreateBasketFromOrderException which provides one of these errorCodes:

Usage:

var order : Order; // known try { var basket : Basket = BasketMgr.createBasketFromOrder(order); } catch (e) { if (e instanceof APIException && e.type === 'CreateBasketFromOrderException') { // handle e.errorCode } }

Parameters:

order - Order to create a Basket for

Returns:

a new Basket

Throws:

CreateBasketFromOrderException - indicates the Order is in an invalid state.


createTemporaryBasket

static createTemporaryBasket() : Basket

Creates a new temporary basket for the current session customer. Temporary baskets are separate from shopper storefront and agent baskets, and are intended for use to perform calculations or create an order without disturbing a shopper's open storefront basket. Temporary baskets are automatically deleted after a time duration of 15 minutes.

By default only 4 open temporary baskets are allowed per customer. If this is exceeded a CreateTemporaryBasketLimitExceededException will be thrown.

Returns:

the newly created basket for the current session customer


deleteBasket

static deleteBasket(basket : Basket) : void

Remove a customer basket including a temporary basket.

This method will result in an exception if called by a user without permission Create_Order_On_Behalf_Of or if no customer is logged in the session.

Parameters:

basket - the basket to be removed

See Also:

AgentUserMgr.loginAgentUser(String, String)

AgentUserMgr.loginOnBehalfOfCustomer(Customer)


deleteTemporaryBasket

static deleteTemporaryBasket(basket : Basket) : void

Remove a customer temporary basket.

Parameters:

basket - the temporary basket to be removed


getBasket

static getBasket(uuid : String) : Basket

This method returns a valid basket of the session customer or null if none is found. This method can also be used to get a temporary basket for the session customer.

If the basket does not belong to the session customer, the method returns null.

If the registered customer is not logged in, the method returns null.

Restricted to agent scenario use cases: This method will result in an exception if called by a user without permission Create_Order_On_Behalf_Of or if no customer is logged in the session.

The basket, if accessible, is usually updated in the same way as getCurrentBasket().

If the session currency no longer matches the basket currency, the basket currency should be updated with Basket.updateCurrency().

Parameters:

uuid - the id of the requested basket.

Returns:

the basket or null


getBaskets

static getBaskets() : List

Retrieve all open baskets for the logged in customer including the temporary baskets.

Restricted to agent scenario use cases: The returned list contains all agent baskets created with createAgentBasket() and the current storefront basket which can also be retrieved with getCurrentBasket(). This method will result in an exception if called by a user without permission Create_Order_On_Behalf_Of or if no customer is logged in the session.

Please notice that baskets are invalidated after a certain amount of time and may not be returned anymore.

Returns:

all open baskets


getCurrentBasket

static getCurrentBasket() : Basket

This method returns the current valid basket of the session customer or null if no current valid basket exists.

The methods getCurrentBasket() and getCurrentOrNewBasket() work based on the selected basket persistence, which can be configured in the Business Manager site preferences / baskets section. A basket is valid for the configured basket lifetime.

The current basket, if one exists, is usually updated by the method. In particular the last-modified date is updated. The lifetime of a basket can be extended in 2 ways:

  • The basket is modified in some way, e.g. a product is added resulting in the basket total being newly calculated. This results in the basket lifetime being reset.
  • The basket has not been modified for 60 minutes, then using this method to access the basket will also reset the basket lifetime.

Personal data held inside the basket such as addresses, email addresses and payment settings is associated with the customer to whom the basket belongs. If the basket being updated belongs to a different customer this data is removed. This happens when a registered customer logs in after having previously created a basket as an anonymous customer. After the customer logs out, the previous basket is stored (where applicable) and the method returns null. Personal data is also cleared when the session times out for an anonymous customer.

The following personal data is cleared.

  • product line items that were added from a wish list
  • shipping method
  • coupon line items
  • gift certificate line items
  • billing and shipping addresses
  • payment instruments
  • buyer email

If the session currency no longer matches the basket currency, the basket currency should be updated with Basket.updateCurrency().

Typical usage:

var basket : Basket = BasketMgr.getCurrentBasket(); if (basket) { // do something with basket }

Constraints:

  • The method only accesses the basket for the session customer, an exception is thrown when the session customer is null.
  • Method getCurrentOrNewBasket() only creates a basket when method getCurrentBasket() returns null.

Returns:

the current basket or null if no valid current basket exists.


getCurrentOrNewBasket

static getCurrentOrNewBasket() : Basket

This method returns the current valid basket of the session customer or creates a new one if no current valid basket exists. See getCurrentBasket() for more details.

Returns:

the basket, existing or newly created


getStoredBasket

static getStoredBasket() : Basket

This method returns the stored basket of the session customer or null if none is found. A stored basket is returned in the following situation:

  1. During one visit, a customer-X logs in and receives a basket-A.
  2. In a later visit, a second basket-B is created for an anonymous customer who then logs in as customer-X.

In this case basket-B is reassigned to him and basket-A is accessible as the stored basket. Now it is possible to merge the information from the stored basket to the active basket.

A stored basket will exist only if the corresponding setting is selected in the Business Manager site preferences' baskets section. A basket is valid for the configured basket lifetime.

Typical usage:

var currentBasket : Basket = BasketMgr.getCurrentOrNewBasket(); var storedBasket : Basket = BasketMgr.getStoredBasket(); if (storedBasket) { // transfer all the data needed from the stored to the active basket }

Returns:

the stored basket or null if no valid stored basket exists.


getTemporaryBasket

static getTemporaryBasket(uuid : String) : Basket

This method returns a valid temporary basket of the session customer or null if none is found.

If the basket does not belong to the session customer, the method returns null.

If the basket is not a temporary basket, the method returns null.

The basket, if accessible, is usually updated in the same way as getCurrentBasket().

If the session currency no longer matches the basket currency, the basket currency should be updated with Basket.updateCurrency().

Parameters:

uuid - the id of the requested temporary basket.

Returns:

the temporary basket or null


getTemporaryBaskets

static getTemporaryBaskets() : List

Retrieve all open temporary baskets for the logged in customer.

Please notice that baskets are invalidated after a certain amount of time and may not be returned anymore.

Returns:

all open temporary baskets