Manoj Kumawat
Mar 17, 2021
  2610
(4 votes)

Getting Purchase Orders filtered via date from OrderContext

In this blog post I'll be sharing my experience with OrderContext using date b/w condition. 

What was the need ?

Get the PurchaseOrders from Commerce based on dates (with between condition) and status. 

What was done ?

The following pattern is the simplest way to execute order search in Episerver Commerce using the API.

Begin the search code with:

OrderSearchOptions searchOptions = new OrderSearchOptions();
searchOptions.StartingRecord = 0; //or whatever you want to specify for paging purposes
searchOptions.RecordsToRetrieve = 10000

To retrieve only Purchase Orders specify 'PurchaseOrder' as a search parameter - 

 searchOptions.Classes.Add("PurchaseOrder");

The next thing is to build parameters against the table - 

// initializes search parameter options to be used while querying against db.
OrderSearchParameters parameters = new OrderSearchParameters(); 

StringBuilder metaWhere = new StringBuilder();

// specify your conditions, my case it should be the orders with GersOrderNumber column!=null
metaWhere.Append("NOT META.GersOrderNumber IS NULL"); 

//the dates against the Created Column of OrderGroup_PurchaseOrder table
metaWhere.Append($" AND META.Created>='{startDate}' AND META.Created<='{endDate}'");

parameters.SqlMetaWhereClause = metaWhere.ToString();

// Get the inner query to have OrderGroupId from PurchaseOrder table.
parameters.SqlWhereClause = "OrderGroupId IN (Select ObjectId FROM OrderGroup_PurchaseOrder)";

The last thing is to call the API - 

PurchaseOrder[] purchaseOrderCollection = OrderContext.Current.Search<PurchaseOrder>(parameters, searchOptions);

The API would return all Purchase orders within specified conditions.

Mar 17, 2021

Comments

Please login to comment.
Latest blogs
Forcing Lowercase URLs in Optimizely CMS During Auto-Translation

Learn how to fix uppercase and punctuation issues in Optimizely CMS 12 URL segments caused by LanguageManager auto-translation using a custom...

Stuart | Apr 2, 2026 |

Stott Robots Handler v7 for Optimizely CMS 13

Stott Robots Handler version 7 is now available for  Optimizely PaaS CMS 13 . This is includes updates to support the switch from a Site based...

Mark Stott | Apr 2, 2026

Automating Block Translations in Optimizely

Stop manual block-by-block translations. Learn how to use the TranslateOrCopyContentAreaChildrenBlockForTypes config to automate Optimizely CMS...

Stuart | Apr 1, 2026 |

How to Disable automatic indexing in Optimizely Search & Navigation

Learn how automatic event-based indexing works in Optimizely Search & Navigation and how you can temporarily disable it.

Tomas Hensrud Gulla | Apr 1, 2026 |