In this tutorial, you will learn how to add a custom property to the out-of-the-box Purchase Order object in Episerver commerce. When building an e-commerce store in Episerver, it will be very important to customise the objects to suit your needs. After a customer has placed an order, you will need to use the
PurchaseOrder class to save information about the order. If you want to store custom data for invoicing or reporting within Episerver Commerce, your best option is to add new fields using code. To add a new field you will need to use the
MetaDataPlus API. In this guide, you will learn everything you need to do that 🔥🔥🔥
In Episerver Commerce, it is also possible to add custom properties onto any of the out-of-the-box objects. If you want to know how to do that you can read these tutorials:
Adding a custom field into the commerce customer object via code
Adding Custom MetaData to the LineItem Class in Episerver Commerce via Code
Adding Custom MetaData to the Cart Class in Episerver Commerce via Code.
The code to add a custom property is shown below:
To access the API to update the
PurchaseOrder object, you will use
OrderContext.Current. Specifically, you will use the
PurchaseOrderMetaClass API. You will need to use the
AddField() method, as can be seen on Line30, to define a new field.
Before creating a new field on the
PurchaseOrder object using
AddField(), you need to check the property doesn't already exist. If it does,
AddField() will throw an exception.
After we know the field doesn't already exist we can then create it. This is done by creating a metafield, using the
OrderContext.MetaDataContext.Create (as seen on Line18). You can configure the fields details by passing in data within the method's arguments. Next, you use
OrderContext.MetaDataContext.AddField() to add the field to the object. You then persist it using
Save() to persist the object.
You now know how to use the
MetadataPlus API to add custom fields onto the
PurchaseOrder class. Happy Coding 🤘