Each Motorprise user has a default shipping address and an alternate list of authorized shipping addresses. These addresses are held in the Profile and Organization properties defaultShippingAddress
and shippingAddrs
. In Motorprise, they are inherited from the parent organization, and can only be modified by administrators from that organization. Other buyers cannot enter new shipping addresses or modify existing ones. You could configure the ability to edit shipping addresses differently in your own site.
Motorprise allows users to choose among various shipping options to meet their complex business needs. They can:
ship all items in an order to their default shipping address.
select a different address from their list of alternates.
split the line items in an order among various shipping addresses.
choose among various shipping methods such as two-day or overnight shipping for each address.
All Motorprise products are hard goods that require physical addresses. These addresses are associated with the Order in the form of HardgoodShippingGroup
objects. We used /atg/commerce/order/purchase/ShippingGroupDroplet
on checkout/shipping.jsp
to create HardgoodShippingGroups
based on the addresses found in the profile. This component also creates a default HardgoodShippingGroup
with an address based on the user’s defaultShippingAddress
profile property.
These ShippingGroups
are added to the ShippingGroupMapContainer
, which is used during the purchase process to store the user’s shipping groups. This container is instantiated by Nucleus and is located at /atg/commerce/order/purchase/ShippingGroupContainerService
.
Additionally, for each line item in the order, the ShippingGroupDroplet
creates a CommerceItemShippingInfo
object and adds it to the CommerceItemShippingInfoContainer
. The CommerceItemShippingInfo
is a helper object that keeps track of relationships between the order’s line items and the HardgoodShippingGroups
that represent the shipping information. We use it to track the quantity of each item that belongs to each ShippingGroup
. The container is used during the purchase process to store the helper objects for the user.
For more information on the ShippingGroupMapContainer
, see the ATG Platform API Reference documentation for class atg.commerce.order.purchase.ShippingGroupContainerService
.
You can look at checkout/shipping.jsp
to see how we used the ShippingGroupDroplet
. For more information, see the Core Commerce Programming Guide.