Commerce Foundation Basket CommerceQuery
This Commerce Server 2009 operation is used to retrieve a basket and related items from the server.
Syntax
var queryBasket = new CommerceQuery<CommerceEntity>("Basket");
Parameters
Baskets whose BasketType is 0 (Cart) only support the CommerceModelSearch<Basket> search criteria. Baskets whose BasketType is 1 (Order) support both the CommerceModelSearch<Basket> and CommerceModelSearch<BasketOrderSearch> search criteria.
The following properties are supported when using the CommerceModelSearch<Basket> search criteria:
Fields |
Description |
---|---|
Request.SearchCriteria.Model.UserId |
Required. Specifies the ID of the user whose baskets will be returned. |
Request.SearchCriteria.Model.BasketType |
Required. Specifies the type of basket (0 for cart, 1 for order) to be returned. |
Request.SearchCriteria.Model.Id |
Optional. Specifies the ID of the specific basket to return. If neither ID, OrderNumber nor Name is specified, all of the user's baskets of the BasketType requested will be returned. If the ID is specified along with Name or OrderNumber, an exception will be thrown. |
Request.SearchCriteria.Model.Name |
Optional. Specifies the name of the specific basket to be returned. This property is only supported when BasketType is 0 (cart). If neither ID, OrderNumber nor Name is specified, all of the user's baskets of the BasketType requested will be returned. If the Name is specified along with OrderNumber, an exception will be thrown. |
Request.SearchCriteria.Model.OrderNumber |
Optional. Specifies the order number of the specific basket to be returned. This property is only supported when BasketType is 1 (order). If neither ID, OrderNumber nor Name is specified, all of the user's baskets of the BasketType requested will be returned. If the Name is specified along with OrderNumber, an exception will be thrown. |
Request.QueryOptions.RefreshBasket |
You can use the RefreshBasket property to refresh the contents and subtotal of a basket by creating a CommerceQuery with the TOption type CommerceBasketQueryOptionsBuilder. The default value is true. This option should only be specified when BasketType is 0 (cart). |
Request.SearchCriteria.Model.TargetingContext |
Optional. If specified, provides additional targeting information used to evaluate eligibility for discounts. This must contain a CommerceRelationship whose Target is a commerce entity with model name TargetingContext. This property is only meaningful when BasketType is 0 (cart). |
To search for an order by using a date range filter on the created date, use the following fields:
Fields |
Description |
---|---|
CommerceRequest.SearchCriteria.Model.UserId |
Required. Specifies the ID of the user whose baskets will be returned. |
CommerceRequest.SearchCriteria.Model.CreatedDateStart |
Required. Specifies the start of the date range. The time portion is ignored and the system assumes it represents the start of the day specified. |
CommerceRequest.SearchCriteria.Model.CreatedDateEnd |
Required. The time portion is ignored and the system assumes it represents the end of the day specified. |
Operation Sequence Components
Operation Sequence Component |
Description |
---|---|
BasketQueryProcessor |
Retrieves the Commerce Server basket or purchase order depending on the search criteria and puts it in the operation cache. You can retrieve the selected basket from the cache using GetCachedCommerceServerOrderGroupsOperationCacheDictionary extension method (available when you include the Microsoft.Commerce.Providers.Utility name space). |
TargetingProfilesProcessor |
Adds targeting information to the Commerce Server basket, including user profile and targeting profile information. |
RequestedPromoCodesProcessor |
Processes the query for Commerce Server promotion code records, converts them to Microsoft Multi-Channel Commerce Foundation RequestedPromoCodes, and adds them to the response. |
OrderPipelinesProcessor |
Runs the order Commerce Server pipeline on each of the Commerce Server OrderGroups in the operation cache if each is of type Cart then, if there were no errors, executes the total pipeline if the basket is in the ReadyForCheckout state. The system never runs pipelines for a basket that is already of BasketType=Order. |
BasketProcessor |
Converts the OrderGroup from the cache (potentially modified by the pipelines) to a Microsoft Multi-Channel Commerce Foundation basket and adds it to the response, depending on the supplied Options.ReturnModel. Also includes BasketErrors from the Commerce Server Basket pipeline if the pipelines were run (depending on BasketType). |
BaslketLineItemsResponseBuilder |
Updates Commerce Server line items on the Commerce Server OrderGroup in the operation response. |
BasketAddressesResponseBuilder |
Updates Commerce Server order addresses on the Commerce Server OrderGroup in the operation response. |
RequestedPromoCodesResponseBuilder |
Updates Commerce Server promotion codes on the Commerce Server OrderGroup in the operation response. |
PaymentResponseBuilder |
Updates Commerce Server payments on the Commerce Server OrderGroup in the operation response. |
ShipmentsResponseBuilder |
Updates Commerce Server shipments on the Commerce Server OrderGroup in the operation response. |
Related Operations
Related Operation |
Description |
---|---|
CommerceQueryRelatedItem<Address>(Addresses) |
Requests the retrieval of all the addresses of the parent basket. Does not support any filtering criteria. |
CommerceQueryRelatedItem<LineItem>(LineItems) |
Requests the retrieval of all the line items of the parent basket. Does not support any filtering criteria. This can operation contain child operations CommerceQueryRelatedItem<Discount> (BasketLevelDiscounts) and CommerceQueryRelatedItem<Discount> (ItemLevelDiscounts) |
CommerceQueryRelatedItem<RequestedPromoCode>(RequestedPromoCodes) |
Requests the retrieval of all the RequestedPromoCodes of the parent basket. Does not support any filtering criteria. |
CommerceQueryRelatedItem<Payment>(Payments) |
Requests the retrieval of all the payments of the parent basket. Does not support any filtering criteria. This operation can contain a child CommerceQueryRelatedItem<PaymentAccount>(PaymentAccount), and the CommerceQueryRelatedItem<PaymentAccount>(PaymentAccount) operation can contain a child CommerceQueryRelatedItem<PaymentMethod>>(PaymentMethod) |
CommerceQueryRelatedItem<Shipment>(Shipments) |
Requests the retrieval of all the shipments of the parent basket. Does not support any filtering criteria. This operation can contain child operations CommerceQueryRelatedItem<Discount>(Discounts) and CommerceQueryRelatedItem<ShippingMethod>(ShippingMethod) |
Return Value
This query returns a CommerceQueryOperationResponse containing the requested Basket commerce entities.
Exceptions
Microsoft Multi-Channel Commerce Foundation can throw the following exception during this operation:
- FaultException<GeneralOperationFault>
Performing a Basket Refresh
You can use the RefreshBasket property to refresh the contents of a basket by creating a CommerceQuery using the 3-parameter generic class. For example:
var query = new CommerceQuery<CommerceEntity, CommerceModelSearch<CommerceEntity>,
CommerceBasketQueryOptionsBuilder>("Basket");
or
var query = new CommerceQuery<CommerceEntity, CommerceModelSearch<CommerceEntity>, CommerceBasketQueryOptionsBuilder>();
query.Model.ModelName = "Basket";
query.SearchCriteria.Model.ModelName = "BasketOrderSearch";
If the CommerceBasketQueryOptionsBuilder parameter is not specified or not modified, it will default to true, indicating the basket will be refreshed by running the Commerce Server basket pipelines as part of the query, which may recalculate the basket using more recent information. While this may be appropriate for Baskets of type Cart, it is not desirable for Baskets of type Order. To prevent the Commerce Server basket pipelines from running as part of the query you can set the CommerceBasketQueryOptionsBuilder parameter to false, by specifying:
commerceQuery.QueryOptions.RefreshBasket=false;