Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more
Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more
The order system default implementation contains many classes that you can extend with your own fields. This means that you can customize fields to all order objects to help with your business use cases.
Classes in this topic are available in the Mediachase.Commerce.Orders namespace. The order classes that you can extend are:
The default implementation uses Mediachase.MetaDataPlus for its storage of extended attributes. The list of available types for use in IExtendedPropeties.Propeties are represented in Mediachase.MetaDataPlus.Configurator.MetaDataType. The supported list for the order system is below.
MetaDataType | .NET Type |
MetaDataType.DateTime | DateTime |
MetaDataType.Date | DateTime |
MetaDataType.DictionarySingleValue | MetaDictionaryItem |
MetaDataType.EnumSingleValue | MetaDictionaryItem |
MetaDataType.Float | double |
MetaDataType.Decimal | decimal |
MetaDataType.Money | decimal |
MetaDataType.Integer | int |
MetaDataType.DictionaryMultiValue | MetaDictionaryItem[] |
MetaDataType.EnumMultiValue | MetaDictionaryItem[] |
MetaDataType.StringDictionary | MetaStringDictionary |
MetaDataType.Boolean | bool |
MetaDataType.Email | string |
MetaDataType.URL | string |
MetaDataType.ShortString | string |
MetaDataType.LongString | string |
MetaDataType.LongHtmlString | string |
MetaDataType.File | MetaFile |
MetaDataType.ImageFile | MetaFile |
When determining if an object has extended properties, see if the interface derives from EPiServer.Commerce.Storage.IExtendedProperties.
var orderRepository = ServiceLocator.Current.GetInstance();
var contactId = PrincipalInfo.CurrentPrincipal.GetContactId();
var cart = orderRepository.LoadCart(contactId, "Default");
var cartField = cart.Propeties["myfield"].ToString();
var formField = cart.GetFirstForm().Properties["myFormField"].ToString();
var paymentField = cart.GetFirstForm().Payments.First().Properties["myPaymentField"].ToString();
var shipmentField = cart.GetFirstShipment().Properties["myShipmentField"].ToString();
var lineItemField = cart.GetAllLineItems().First().Properties["myLineItemField"].ToString();
When determining if an object has extended properties, see if the interface derives from EPiServer.Commerce.Storage.IExtendedProperties.
var orderRepository = ServiceLocator.Current.GetInstance();
var contactId = PrincipalInfo.CurrentPrincipal.GetContactId();
var cart = orderRepository.LoadCart(contactId, "Default");
cart.Propeties["myfield"] = "hello";
cart.GetFirstForm().Properties["myFormField"] = 23m;
cart.GetFirstForm().Payments.First().Properties["myPaymentField"] = 11;
cart.GetFirstShipment().Properties["myShipmentField"] = 9;
cart.GetAllLineItems().First().Properties["myLineItemField"] = "yes";
To access order meta-objects, each order meta-class has a dictionary of meta-fields accessible by the root object.
Example: accessing meta-fields from different order meta-fields
Cart newCart = OrderContext.Current.GetCart("myname", newCustomer);
//This is the meta field data access
string myCartField = newCart["myField"].ToString();
string orderformField = newCart.OrderForms[0]["myOrderFormField"].ToString();
string paymentField = newCart.OrderForms[0].Payments[0]["myPaymentField"].ToString();
string shipmentField = newCart.OrderForms[0].Shipments[0]["myShipmentField"].ToString();
Last updated: Oct 12, 2015