Example #1
0
 protected sealed override decimal CalculateImpl(IDiscountCalculationCartInfo cartInfo)
 {
     if (cartInfo.TryGet(ProductSerialNumber, out ProductAmount pa))
     {
         // Här borde vi assert amount >= 0 egentligen!
         int rebateCount = Math.Max(0, pa.Amount) / BuyX;
         return(rebateCount * (BuyX - PayY) * pa.Product.Price);
     }
     return(0);
 }
        //private decimal Sum(IReadOnlyDictionary<Product, int> cart)
        //    => cart.Sum(kvp => kvp.Key.Price * kvp.Value);

        protected sealed override decimal CalculateImpl(IDiscountCalculationCartInfo cartInfo)
        {
            var sum = cartInfo.ArticleValue - cartInfo.AccumulatedDiscount();

            return(sum >= MinCartValue ? sum * Percentage : 0);
        }
Example #3
0
 protected abstract decimal CalculateImpl(IDiscountCalculationCartInfo cartInfo);
Example #4
0
 public decimal Calculate(IDiscountCalculationCartInfo cartInfo)
 => Math.Round(CalculateImpl(cartInfo), 2, MidpointRounding.AwayFromZero);