public List <PurchaseOrder> GetPurchaseOrdersByStatus(string queryStatus)
        {
            var manager = CommerceServerCore.GetPoManager();

            System.Data.DataSet searchableProperties = manager.GetSearchableProperties(CultureInfo.CurrentUICulture.ToString());
            // set what to search
            SearchClauseFactory searchClauseFactory = manager.GetSearchClauseFactory(searchableProperties, "PurchaseOrder");
            // Get a list of the returnable properties - debug only
            //DataSet ret = manager.GetReturnableProperties("EN");
            //StringBuilder props = new StringBuilder();
            //foreach (DataRow row in ret.Tables[0].Rows)
            //{
            //    if (props.Length > 0) props.Append(",");
            //    props.Append(row.ItemArray[0].ToString());
            //}
            // set what field/value to search for
            SearchClause clause = searchClauseFactory.CreateClause(ExplicitComparisonOperator.Equal, "Status", queryStatus);
            // set what fields to return
            DataSet results = manager.SearchPurchaseOrders(clause, new SearchOptions()
            {
                NumberOfRecordsToReturn = 100, PropertiesToReturn = "OrderGroupId,TrackingNumber"
            });

            int c = results.Tables.Count;

            List <PurchaseOrder> Pos   = new List <PurchaseOrder>();
            List <string>        poTNs = new List <string>();

            foreach (DataRow row in results.Tables[0].Rows)
            {
                poTNs.Add(row["TrackingNumber"].ToString());
            }
            // Get the XML representation of the purchase orders.
            if (poTNs.Count > 0)
            {
                foreach (string trackingNumber in poTNs)
                {
                    PurchaseOrder po = ReadPurchaseOrderByTrackingNumber(trackingNumber);
                    Pos.Add(po);
                }
            }
            return(Pos);
        }
        public List <PurchaseOrder> ReadPurchaseOrderHeadersByCustomerId(Guid customerId)
        {
            var manager = CommerceServerCore.GetPoManager();

            System.Data.DataSet searchableProperties = manager.GetSearchableProperties(CultureInfo.CurrentUICulture.ToString());
            // set what to search
            SearchClauseFactory searchClauseFactory = manager.GetSearchClauseFactory(searchableProperties, "PurchaseOrder");
            // set what field/value to search for
            SearchClause clause = searchClauseFactory.CreateClause(ExplicitComparisonOperator.Equal, "SoldToId", customerId.ToCommerceServerFormat());
            // set what fields to return
            DataSet results = manager.SearchPurchaseOrders(clause,
                                                           new SearchOptions()
            {
                PropertiesToReturn = "OrderGroupId,TrackingNumber,Created"
            });

            List <PurchaseOrder> Pos   = new List <PurchaseOrder>();
            List <string>        poTNs = new List <string>();

            foreach (DataRow row in results.Tables[0].Rows)
            {
                DateTime created = (DateTime)row["Created"];
                if (created > DateTime.Now.AddDays(int.Parse(Configuration.PurchaseOrdersGetLatestHowManyDays) * -1))
                {
                    poTNs.Add(row["TrackingNumber"].ToString());
                }
            }
            if (poTNs.Count > 0)
            {
                foreach (string trackingNumber in poTNs)
                {
                    PurchaseOrder po = ReadPurchaseOrderByTrackingNumber(trackingNumber);
                    Pos.Add(po);
                }
            }
            return(Pos);
        }