public static Money CalculateDefaultPriceReduction(Money originalPrice, int itemQuantity, IPromotionData data) { Money priceReduction = null; Money promotionPrice = new Money(originalPrice, 0); promotionPrice.Amount = data.PromotionAmount; promotionPrice.Multiply(itemQuantity); switch (data.PromotionAmountType) { case PromotionAmountType.PercentReduction: if (data.PromotionAmount <= 100 && data.PromotionAmount > 0) { priceReduction = new Money(originalPrice); priceReduction.RoundingMode = RoundingMode.AlwaysRoundUp; priceReduction.Multiply(data.PromotionAmount / 100); } else { priceReduction = originalPrice; } break; case PromotionAmountType.AbsolutePrice: priceReduction = new Money(originalPrice); priceReduction.Subtract(promotionPrice); break; case PromotionAmountType.AbsoluteReduction: priceReduction = promotionPrice; break; default: LogManager.GetLogger(typeof(GenericPromotion)).Error("Unknown PromotionAmountType"); break; } return priceReduction; }
protected string RenderSubTotal() { Money SubTotal = new Money(); SubTotal.Add(CurrentBasket.SubTotal); SubTotal.Subtract(CurrentBasket.DeliveryPrice); return HtmlFormatUtils.FormatMoney(SubTotal); }
public void TestSubtract() { Money money1 = new Money(2.23M); Money money2 = new Money(1.11M); money1.Subtract(money2); Assert.IsTrue(money1.Amount == 1.12M, "Subtraction failed (" + money2.ToString() + " != 1.12"); }