Understand view model support for split shipping
This section provides information on the view models that contain data related to split shipping and the APIs you use to interact with them.
This section applies to Storefront Classic only.
Affected view models
The class diagram below shows the properties and methods added to the view models to support multiple shipping groups. Detailed descriptions of these APIs follow the diagram.
CartViewModel.isSplitShipping
The property that indicates if split shipping is activated. When the shopper chooses the split shipping option, this property must be set to true. You should also use this property to control the visibility of split shipping/single shipping UI elements.
ShippingGroupRelationship
The
view model class that represents an association between a cart item and a shipping
group. Strictly speaking, shipping group relationships associate a specified
quantity of a cart item with a shipping address and shipping method (not a shipping
group). However, the shipping groups array that supports split shipping is directly
generated from the ShippingGroupRelationship
instances. When the
shopper selects a shipping address and shipping method for a quantity of a given
cart item, it is this class that captures those selections. See Understand REST support for split shipping for more details on the shipping groups array.
CartItem.shippingGroupRelationships
The collection of ShippingGroupRelationship
instances
for a cart item. By default, there is one ShippingGroupRelationship
instance per cart item, meaning that each cart item will be associated with at least
one shipping group.
CartItem.addShippingGroupRelationship
In order to ship the same cart item (SKU) to several different addresses (shipping groups), it is necessary to create several associations (shipping group relationships) between a cart item and the different shipping groups. This method creates additional shipping group relationship instances, allowing multiple associations per single cart item. The maximum number of shipping group relationship instances is equal to the cart item quantity, beyond which it is not possible to split the cart item any further (as there would be more associations than cart items available).
CartItem.canAddShippingGroupRelationship
Determines if it is possible to add another shipping group relationship instance (that is, associate the cart item with another shipping group). The maximum number of shipping group relationship instances is equal to the cart item quantity, beyond which it is not possible to split the cart item any further (as there would be more associations than cart items available).
CartItem.removeShippingGroupRelationship
Removes a ShippingGroupRelationship
instance from the
cart item’s shippingGroupRelationships
array.
CartViewModel.hasSingleShippingInformation
When in single shipping mode (that is, isSplitShipping
is false), determines if the single shipping address and shipping method are
populated.
CartViewModel.hasSplitShippingInformation
When in split shipping mode (that is, isSplitShipping
is true), determines if all shipping group relationships are populated with shipping
addresses and shipping methods, and the shippingGroupRelationships
array is valid. See ShippingGroupsRelationships array validation for
details.
CartViewModel.hasShippingInformation
This property is true if either hasSplitShippingInformation
or
hasSingleShippingInformation
is true, otherwise it is
false.
CartViewModel.priceCartForCheckout
The
method that calls the Store priceOrder
endpoint to price the
shopping cart only if the cart has shipping information; that is,
hasShippingInformation
is true. This method’s internal logic
accounts for both single and split shipping scenarios.
CartViewModel.orderShippingGroups
The latest shipping groups array (if any) returned from a web service call. See Understand REST support for split shipping for more details on this array