When a purchase is submitted by a customer, the cart is converted to a PurchaseOrder. This is done by calling the Cart.SaveAsPurchaseOrder method. When this method is called, an order number (PurchaseOrder.TrackingNumber property) is automatically assigned to the new PurchaseOrder using a default algorithm. However, the algorithm can be overridden so that an order number that is more appropriate to your implementation is set for the TrackingNumber property.
Classes referred to here are available in the following namespaces:
How it works
The Cart has a public delegate property called CreateOrderNumber.
Example: the delegate signature for CreateOrderNumber
C#
public delegate string CreateOrderNumber(Cart cart);
This delegate is null by default. When the SaveAsPurchaseOrder method is executed and no delegate is set, the default delegate is created and executed.
However, if the delegate is set with a custom method prior to executing the SaveAsPurchaseOrder method, the custom delegate will be run.
Example: the part of the SaveAsPurchaseOrder method that runs the custom delegate
C#
if (this.OrderNumberMethod == null)
{
this.OrderNumberMethod = new CreateOrderNumber(GenerateOrderNumber);
}
purchaseOrder.TrackingNumber = OrderNumberMethod(this);
Example: implementing a custom order number generator
C#
private string CustomOrderNumber(Cart cart)
{
}
...
CartHelper.Cart.OrderNumberMethod = new CreateOrderNumber(CustomOrderNumber);
CartHelper.Cart.SaveAsPurchaseOrder();
Do you find this information helpful? Please log in to provide feedback.