本文整理汇总了C#中Nop.Core.Domain.Catalog.Product.GetTotalStockQuantity方法的典型用法代码示例。如果您正苦于以下问题:C# Product.GetTotalStockQuantity方法的具体用法?C# Product.GetTotalStockQuantity怎么用?C# Product.GetTotalStockQuantity使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Nop.Core.Domain.Catalog.Product
的用法示例。
在下文中一共展示了Product.GetTotalStockQuantity方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Can_calculate_total_quantity_when_we_do_use_multiple_warehouses_without_reserved
public void Can_calculate_total_quantity_when_we_do_use_multiple_warehouses_without_reserved()
{
var product = new Product
{
ManageInventoryMethod = ManageInventoryMethod.ManageStock,
UseMultipleWarehouses = true,
StockQuantity = 6,
};
product.ProductWarehouseInventory.Add(new ProductWarehouseInventory
{
WarehouseId = 1,
StockQuantity = 7,
ReservedQuantity = 4,
});
product.ProductWarehouseInventory.Add(new ProductWarehouseInventory
{
WarehouseId = 2,
StockQuantity = 8,
ReservedQuantity = 1,
});
product.ProductWarehouseInventory.Add(new ProductWarehouseInventory
{
WarehouseId = 3,
StockQuantity = -2,
});
var result = product.GetTotalStockQuantity(false);
result.ShouldEqual(13);
}
示例2: Can_calculate_total_quantity_when_we_do_not_use_multiple_warehouses
public void Can_calculate_total_quantity_when_we_do_not_use_multiple_warehouses()
{
var product = new Product
{
ManageInventoryMethod = ManageInventoryMethod.ManageStock,
UseMultipleWarehouses = false,
StockQuantity = 6,
};
product.ProductWarehouseInventory.Add(new ProductWarehouseInventory
{
WarehouseId = 1,
StockQuantity = 7,
});
product.ProductWarehouseInventory.Add(new ProductWarehouseInventory
{
WarehouseId = 2,
StockQuantity = 8,
});
product.ProductWarehouseInventory.Add(new ProductWarehouseInventory
{
WarehouseId = 3,
StockQuantity = -2,
});
var result = product.GetTotalStockQuantity(true);
result.ShouldEqual(6);
}
示例3: AdjustInventory
/// <summary>
/// Adjust inventory
/// </summary>
/// <param name="product">Product</param>
/// <param name="quantityToChange">Quantity to increase or descrease</param>
/// <param name="attributesXml">Attributes in XML format</param>
public virtual void AdjustInventory(Product product, int quantityToChange, string attributesXml = "")
{
if (product == null)
throw new ArgumentNullException("product");
if (quantityToChange == 0)
return;
if (product.ManageInventoryMethod == ManageInventoryMethod.ManageStock)
{
//previous stock
var prevStockQuantity = product.GetTotalStockQuantity();
//update stock quantity
if (product.UseMultipleWarehouses)
{
//use multiple warehouses
if (quantityToChange < 0)
ReserveInventory(product, quantityToChange);
else
UnblockReservedInventory(product, quantityToChange);
}
else
{
//do not use multiple warehouses
//simple inventory management
product.StockQuantity += quantityToChange;
UpdateProduct(product);
}
//qty is reduced. check if minimum stock quantity is reached
if (quantityToChange < 0 && product.MinStockQuantity >= product.GetTotalStockQuantity())
{
//what should we do now? disable buy button, unpublish the product, or do nothing? check "Low stock activity" property
switch (product.LowStockActivity)
{
case LowStockActivity.DisableBuyButton:
product.DisableBuyButton = true;
product.DisableWishlistButton = true;
UpdateProduct(product);
break;
case LowStockActivity.Unpublish:
product.Published = false;
UpdateProduct(product);
break;
default:
break;
}
}
//qty is increased. product is back in stock (minimum stock quantity is reached again)?
if (_catalogSettings.PublishBackProductWhenCancellingOrders)
{
if (quantityToChange > 0 && prevStockQuantity <= product.MinStockQuantity && product.MinStockQuantity < product.GetTotalStockQuantity())
{
switch (product.LowStockActivity)
{
case LowStockActivity.DisableBuyButton:
product.DisableBuyButton = false;
product.DisableWishlistButton = false;
UpdateProduct(product);
break;
case LowStockActivity.Unpublish:
product.Published = true;
UpdateProduct(product);
break;
default:
break;
}
}
}
//send email notification
if (quantityToChange < 0 && product.GetTotalStockQuantity() < product.NotifyAdminForQuantityBelow)
{
_workflowMessageService.SendQuantityBelowStoreOwnerNotification(product, _localizationSettings.DefaultAdminLanguageId);
}
}
if (product.ManageInventoryMethod == ManageInventoryMethod.ManageStockByAttributes)
{
var combination = _productAttributeParser.FindProductAttributeCombination(product, attributesXml);
if (combination != null)
{
combination.StockQuantity += quantityToChange;
_productAttributeService.UpdateProductAttributeCombination(combination);
//send email notification
if (quantityToChange < 0 && combination.StockQuantity < combination.NotifyAdminForQuantityBelow)
{
_workflowMessageService.SendQuantityBelowStoreOwnerNotification(combination, _localizationSettings.DefaultAdminLanguageId);
}
}
}
//.........这里部分代码省略.........
示例4: GetStandardWarnings
//.........这里部分代码省略.........
//quantity validation
var hasQtyWarnings = false;
if (quantity < product.OrderMinimumQuantity)
{
warnings.Add(string.Format(_localizationService.GetResource("ShoppingCart.MinimumQuantity"), product.OrderMinimumQuantity));
hasQtyWarnings = true;
}
if (quantity > product.OrderMaximumQuantity)
{
warnings.Add(string.Format(_localizationService.GetResource("ShoppingCart.MaximumQuantity"), product.OrderMaximumQuantity));
hasQtyWarnings = true;
}
var allowedQuantities = product.ParseAllowedQuatities();
if (allowedQuantities.Length > 0 && !allowedQuantities.Contains(quantity))
{
warnings.Add(string.Format(_localizationService.GetResource("ShoppingCart.AllowedQuantities"), string.Join(", ", allowedQuantities)));
}
var validateOutOfStock = shoppingCartType == ShoppingCartType.ShoppingCart || !_shoppingCartSettings.AllowOutOfStockItemsToBeAddedToWishlist;
if (validateOutOfStock && !hasQtyWarnings)
{
switch (product.ManageInventoryMethod)
{
case ManageInventoryMethod.DontManageStock:
{
//do nothing
}
break;
case ManageInventoryMethod.ManageStock:
{
if (product.BackorderMode == BackorderMode.NoBackorders)
{
int maximumQuantityCanBeAdded = product.GetTotalStockQuantity();
if (maximumQuantityCanBeAdded < quantity)
{
if (maximumQuantityCanBeAdded <= 0)
warnings.Add(_localizationService.GetResource("ShoppingCart.OutOfStock"));
else
warnings.Add(string.Format(_localizationService.GetResource("ShoppingCart.QuantityExceedsStock"), maximumQuantityCanBeAdded));
}
}
}
break;
case ManageInventoryMethod.ManageStockByAttributes:
{
var combination = _productAttributeParser.FindProductAttributeCombination(product, attributesXml);
if (combination != null)
{
//combination exists
//let's check stock level
if (!combination.AllowOutOfStockOrders && combination.StockQuantity < quantity)
{
int maximumQuantityCanBeAdded = combination.StockQuantity;
if (maximumQuantityCanBeAdded <= 0)
{
warnings.Add(_localizationService.GetResource("ShoppingCart.OutOfStock"));
}
else
{
warnings.Add(string.Format(_localizationService.GetResource("ShoppingCart.QuantityExceedsStock"), maximumQuantityCanBeAdded));
}
}
}
else
{
示例5: PrepareProductDetailsPageModel
//.........这里部分代码省略.........
model.ShowVendor = true;
model.VendorModel = new VendorBriefInfoModel
{
Id = vendor.Id,
Name = vendor.GetLocalized(x => x.Name),
SeName = vendor.GetSeName(),
};
}
}
#endregion
#region Page sharing
if (_catalogSettings.ShowShareButton && !String.IsNullOrEmpty(_catalogSettings.PageShareCode))
{
var shareCode = _catalogSettings.PageShareCode;
if (_webHelper.IsCurrentConnectionSecured())
{
//need to change the addthis link to be https linked when the page is, so that the page doesnt ask about mixed mode when viewed in https...
shareCode = shareCode.Replace("http://", "https://");
}
model.PageShareCode = shareCode;
}
#endregion
#region Back in stock subscriptions
if (product.ManageInventoryMethod == ManageInventoryMethod.ManageStock &&
product.BackorderMode == BackorderMode.NoBackorders &&
product.AllowBackInStockSubscriptions &&
product.GetTotalStockQuantity() <= 0)
{
//out of stock
model.DisplayBackInStockSubscription = true;
}
#endregion
#region Breadcrumb
//do not prepare this model for the associated products. anyway it's not used
if (_catalogSettings.CategoryBreadcrumbEnabled && !isAssociatedProduct)
{
var breadcrumbCacheKey = string.Format(ModelCacheEventConsumer.PRODUCT_BREADCRUMB_MODEL_KEY,
product.Id,
_workContext.WorkingLanguage.Id,
string.Join(",", _workContext.CurrentCustomer.GetCustomerRoleIds()),
_storeContext.CurrentStore.Id);
model.Breadcrumb = _cacheManager.Get(breadcrumbCacheKey, () =>
{
var breadcrumbModel = new ProductDetailsModel.ProductBreadcrumbModel
{
Enabled = _catalogSettings.CategoryBreadcrumbEnabled,
ProductId = product.Id,
ProductName = product.GetLocalized(x => x.Name),
ProductSeName = product.GetSeName()
};
var productCategories = _categoryService.GetProductCategoriesByProductId(product.Id);
if (productCategories.Count > 0)
{
var category = productCategories[0].Category;
if (category != null)
{
示例6: AddProductTokens
public virtual void AddProductTokens(IList<Token> tokens, Product product, int languageId)
{
tokens.Add(new Token("Product.ID", product.Id.ToString()));
tokens.Add(new Token("Product.Name", product.GetLocalized(x => x.Name, languageId)));
tokens.Add(new Token("Product.ShortDescription", product.GetLocalized(x => x.ShortDescription, languageId), true));
tokens.Add(new Token("Product.SKU", product.Sku));
tokens.Add(new Token("Product.StockQuantity", product.GetTotalStockQuantity().ToString()));
//TODO add a method for getting URL (use routing because it handles all SEO friendly URLs)
var productUrl = string.Format("{0}{1}", GetStoreUrl(), product.GetSeName());
tokens.Add(new Token("Product.ProductURLForCustomer", productUrl, true));
//event notification
_eventPublisher.EntityTokensAdded(product, tokens);
}
示例7: AdjustInventory
/// <summary>
/// Adjust inventory
/// </summary>
/// <param name="product">Product</param>
/// <param name="quantityToChange">Quantity to increase or descrease</param>
/// <param name="attributesXml">Attributes in XML format</param>
public virtual void AdjustInventory(Product product, int quantityToChange, string attributesXml = "")
{
if (product == null)
throw new ArgumentNullException("product");
if (quantityToChange == 0)
return;
//var prevStockQuantity = product.GetTotalStockQuantity();
if (product.ManageInventoryMethod == ManageInventoryMethod.ManageStock)
{
var prevStockQuantity = product.GetTotalStockQuantity();
//update stock quantity
if (product.UseMultipleWarehouses)
{
//use multiple warehouses
if (quantityToChange < 0)
ReserveInventory(product, quantityToChange);
else
UnblockReservedInventory(product, quantityToChange);
}
else
{
//do not use multiple warehouses
//simple inventory management
product.StockQuantity += quantityToChange;
UpdateStockProduct(product);
}
//check if minimum quantity is reached
if (quantityToChange < 0 && product.MinStockQuantity >= product.GetTotalStockQuantity())
{
switch (product.LowStockActivity)
{
case LowStockActivity.DisableBuyButton:
product.DisableBuyButton = true;
product.DisableWishlistButton = true;
var filter = Builders<Product>.Filter.Eq("Id", product.Id);
var update = Builders<Product>.Update
.Set(x => x.DisableBuyButton, product.DisableBuyButton)
.Set(x => x.DisableWishlistButton, product.DisableWishlistButton)
.CurrentDate("UpdateDate");
_productRepository.Collection.UpdateOneAsync(filter, update);
//cache
_cacheManager.RemoveByPattern(string.Format(PRODUCTS_BY_ID_KEY, product.Id));
//event notification
_eventPublisher.EntityUpdated(product);
//UpdateProduct(product);
break;
case LowStockActivity.Unpublish:
product.Published = false;
var filter2 = Builders<Product>.Filter.Eq("Id", product.Id);
var update2 = Builders<Product>.Update
.Set(x => x.Published, product.Published)
.CurrentDate("UpdateDate");
_productRepository.Collection.UpdateOneAsync(filter2, update2);
//cache
_cacheManager.RemoveByPattern(string.Format(PRODUCTS_BY_ID_KEY, product.Id));
if(product.ShowOnHomePage)
_cacheManager.RemoveByPattern(PRODUCTS_SHOWONHOMEPAGE);
//event notification
_eventPublisher.EntityUpdated(product);
//UpdateProduct(product);
break;
default:
break;
}
}
//qty is increased. product is back in stock (minimum stock quantity is reached again)?
if (_catalogSettings.PublishBackProductWhenCancellingOrders)
{
if (quantityToChange > 0 && prevStockQuantity <= product.MinStockQuantity && product.MinStockQuantity < product.GetTotalStockQuantity())
{
switch (product.LowStockActivity)
{
case LowStockActivity.DisableBuyButton:
//product.DisableBuyButton = false;
//product.DisableWishlistButton = false;
//UpdateProduct(product);
var filter = Builders<Product>.Filter.Eq("Id", product.Id);
var update = Builders<Product>.Update
.Set(x => x.DisableBuyButton, product.DisableBuyButton)
.Set(x => x.DisableWishlistButton, product.DisableWishlistButton)
.CurrentDate("UpdateDate");
_productRepository.Collection.UpdateOneAsync(filter, update);
//cache
_cacheManager.RemoveByPattern(string.Format(PRODUCTS_BY_ID_KEY, product.Id));
//.........这里部分代码省略.........