public class ExtendedProductProvider : ProductProvider, IExtendedProductProvider { public override IProductCollection GetProducts(IProductListLoadOptions options) { Guard.ThrowIfNull(options, "options"); var request = new List<XElement>() { XParam("VisibleOnly", options.VisibleOnly), XParam("LoadRelatedSkus", options.LoadRelatedSkus), XParam("LoadVisibilityRules", options.LoadVisibilityRules), XParam("CalculatePrices", options.CalculatePrices), XParam("CalculateInventory", options.CalculateInventory), XParam("CalculateSkuPrices", options.CalculateSkuPrices), XParam("CalculateSkuInventory", options.CalculateInventory && options.CalculateSkuInventory), XParam("CheckStock", Context.Settings.CheckStock), XParam("AccountId", Context.AccountId), XParam("AccountType", Context.AccountType), XParam("MultiCurrency", options.MultiCurrency), }; IEnumerable<string> extraFields = new List<string>() { "SANAECOM_FILTER1", "SANAECOM_FILTER2", "SANAECOM_FILTER3","SANAECOM_FILTER4","SANAECOM_FILTER5" }; options.EntityFields = extraFields; AddLoadOptions(request, options); OnGetProducts(request, options); var result = ExecuteRequest("GetProducts", request); var products = Parser.ParseCollection<IProductCollection, IProduct>(result, "Product", Parser.ParseProduct); if (options.LoadRelatedSkus) { foreach (var p in products) { if (p.Variants == null) p.Variants = ObjectFactory.Create<IProductVariantCollection>(); if (p.Prepacks == null) p.Prepacks = ObjectFactory.Create<IProductPrepackCollection>(); FillVariantsDimensions(p); } } return products; } protected override void AddLoadOptions(IList<XElement> request, IEntityListLoadOptions options) { AddPagingAndSorting(request, options); request.Add(XmlHelper.CreateQueryFieldsElement(options.EntityFields)); request.Add(XmlHelper.CreateFilterElement(options.Filter)); } }
To extra fields called by CreateQueryFieldsElement method
protected override void AddLoadOptions(IList<XElement> request, IEntityListLoadOptions options) { AddPagingAndSorting(request, options); request.Add(XmlHelper.CreateQueryFieldsElement(options.EntityFields)); request.Add(XmlHelper.CreateFilterElement(options.Filter)); }
set as follow
IEnumerable<string> extraFields = new List<string>() { "SANAECOM_FILTER1", "SANAECOM_FILTER2", "SANAECOM_FILTER3","SANAECOM_FILTER4","SANAECOM_FILTER5" }; options.EntityFields = extraFields;