in src/Foundation/CommerceServer/code/Managers/InventoryManager.cs [72:130]
public virtual void GetProductsStockStatus([NotNull] CommerceStorefront storefront, List<ProductViewModel> productViewModels)
{
if (productViewModels == null || !productViewModels.Any())
{
return;
}
var products = new List<CommerceInventoryProduct>();
foreach (var viewModel in productViewModels)
{
if (viewModel.Variants != null && viewModel.Variants.Any())
{
foreach (var variant in viewModel.Variants)
{
products.Add(new CommerceInventoryProduct
{
ProductId = viewModel.ProductId,
CatalogName = viewModel.CatalogName,
VariantId = variant.VariantId
});
}
}
else
{
products.Add(new CommerceInventoryProduct { ProductId = viewModel.ProductId, CatalogName = viewModel.CatalogName });
}
}
if (products.Any())
{
var response = this.GetStockInformation(storefront, products, StockDetailsLevel.All);
if (response.Result != null)
{
var stockInfoList = response.Result.ToList();
foreach (var viewModel in productViewModels)
{
StockInformation foundItem = null;
if (viewModel.Variants != null && viewModel.Variants.Any())
{
foreach (var variant in viewModel.Variants)
{
foundItem = stockInfoList.Find(p => p.Product.ProductId == viewModel.ProductId && ((CommerceInventoryProduct)p.Product).VariantId == variant.VariantId);
}
}
else
{
foundItem = stockInfoList.Find(p => p.Product.ProductId == viewModel.ProductId);
}
if (foundItem != null)
{
viewModel.StockStatus = foundItem.Status;
viewModel.StockStatusName = StorefrontManager.GetProductStockStatusName(foundItem.Status);
}
}
}
}
}