public Article(string name, string barCode, LogisticUnit unit, IUnitPrice price) { Name = name; BarCode = barCode; Unit = unit.ThrowIfNull(nameof(unit)); Price = price.ThrowIfNull(nameof(price)); }
private static double GetUnitPriceOfItem(AddItemRequestModel item) { var UnitsFactory = new UnitPriceFactory(); IUnitPrice unitPriceOfItem = UnitsFactory.GetUnitPrice(item.ItemType); var unitPrice = unitPriceOfItem.GetUnitPrice(); return(unitPrice); }
/// <summary>Constructor</summary> /// <param name="unitPrice">Unit Price used</param> /// <param name="measureItem">Measure Item used</param> /// <param name="currencyItem">Currency Item used</param> /// <exception cref="PriceException">Thrown when no conversion defined between currency units</exception> /// <exception cref="MeasureException">Thrown when Measure Units have different types</exception> public ItemPrice(IUnitPrice unitPrice, IMeasureItem measureItem, ICurrencyItem currencyItem = null) { // unit calculus: [C1] = [C2/M1] * [M2 * (M1/M2)] * [C1/C2] // C1, C2 - currency units; M1, M2 - measure units Prepare(unitPrice, currencyItem); MeasureItem = measureItem.ThrowIfNull(nameof(measureItem)); MeasureRate = MeasureItem.AmountOf(UnitPrice.MeasureUnit); Amount = MeasureItem.Amount; }
/// <summary>Constructor</summary> /// <param name="unitPrice">Unit Price used</param> /// <param name="amount">Number of Measure Units (same as MeasureUnit in unitPrice)</param> /// <param name="currencyItem">Currency Item used</param> /// <exception cref="PriceException">Thrown when no conversion defined between currency units</exception> public ItemPrice(IUnitPrice unitPrice, decimal amount = 1, ICurrencyItem currencyItem = null) { // unit calculus: [C1] = [C2/M1] * [M1] * [C1/C2] // C1, C2 - currency units; M1 - measure unit Prepare(unitPrice, currencyItem); MeasureItem = null; MeasureRate = amount; Amount = amount; }
/// <summary>Constructor helper</summary> /// <param name="unitPrice">Unit Price used</param> /// <param name="currencyItem">Currency Item used</param> /// <exception cref="PriceException">Thrown when no conversion defined between currency units</exception> private void Prepare(IUnitPrice unitPrice, ICurrencyItem currencyItem) { UnitPrice = unitPrice.ThrowIfNull(nameof(unitPrice)); CurrencyItem = currencyItem; VATrate = UnitPrice.VATrate; CurrencyUnit = CurrencyItem != null ? CurrencyItem.Unit : UnitPrice.CurrencyUnit; if (CurrencyItem != null && CurrencyItem.Base != UnitPrice.CurrencyUnit) { throw new PriceException(PriceException.NO_CURRENCY_CONVERSION); } }
public void Setup() { _unitPrice = new UnitPrice(); _activePromotions = new ActivePromotions(); _unitPrice.AddPrice('A', 50); _unitPrice.AddPrice('B', 30); _unitPrice.AddPrice('C', 20); _unitPrice.AddPrice('D', 15); _activePromotions.AddPromotions("3A", 130); _activePromotions.AddPromotions("2B", 45); }
public PromotionEngine(IUnitPrice unitPrice, IActivePromotions activePromotions) { _unitPrice = unitPrice; _activePromotions = activePromotions; }
public void Cleanup() { _unitPrice = null; _activePromotions = null; _promotionEngine = null; }