in src/Foundation/CommerceServer/code/Managers/CartManager.cs [927:972]
protected virtual void UpdateStockInformation([NotNull] CommerceStorefront storefront, [NotNull] IVisitorContext visitorContext, [NotNull] CommerceCartLine cartLine, [NotNull] string catalogName)
{
Assert.ArgumentNotNull(cartLine, "cartLine");
var products = new List<InventoryProduct> { new CommerceInventoryProduct { ProductId = cartLine.Product.ProductId, CatalogName = catalogName } };
var stockInfoResult = this._inventoryManager.GetStockInformation(storefront, products, StockDetailsLevel.Status).ServiceProviderResult;
if (stockInfoResult.StockInformation == null || !stockInfoResult.StockInformation.Any())
{
return;
}
var stockInfo = stockInfoResult.StockInformation.FirstOrDefault();
var orderableInfo = new OrderableInformation();
if (stockInfo != null && stockInfo.Status != null)
{
if (Equals(stockInfo.Status, StockStatus.PreOrderable))
{
var preOrderableResult = this._inventoryManager.GetPreOrderableInformation(storefront, products).ServiceProviderResult;
if (preOrderableResult.OrderableInformation != null && preOrderableResult.OrderableInformation.Any())
{
orderableInfo = preOrderableResult.OrderableInformation.FirstOrDefault();
}
}
else if (Equals(stockInfo.Status, StockStatus.BackOrderable))
{
var backOrderableResult = this._inventoryManager.GetBackOrderableInformation(storefront, products).ServiceProviderResult;
if (backOrderableResult.OrderableInformation != null && backOrderableResult.OrderableInformation.Any())
{
orderableInfo = backOrderableResult.OrderableInformation.FirstOrDefault();
}
}
}
if (stockInfo != null)
{
cartLine.Product.StockStatus = stockInfo.Status;
}
if (orderableInfo == null)
{
return;
}
cartLine.Product.InStockDate = orderableInfo.InStockDate;
cartLine.Product.ShippingDate = orderableInfo.ShippingDate;
}