internal static decimal SetUnitDiscount(this Priceable @this, PriceComponent priceComponent, decimal revenueBreakDiscount) { if (priceComponent.Strategy.Class.Equals(M.DiscountComponent.ObjectType)) { var discountComponent = (DiscountComponent)priceComponent; decimal discount; if (discountComponent.Price.HasValue) { discount = discountComponent.Price.Value; @this.DerivedRoles.UnitDiscount += discount; } else { var percentage = discountComponent.Percentage ?? 0; discount = Math.Round(@this.UnitBasePrice * percentage / 100, 2); @this.DerivedRoles.UnitDiscount += discount; } } return(revenueBreakDiscount); }
public static decimal SetUnitSurcharge(this Priceable @this, PriceComponent priceComponent, decimal revenueBreakSurcharge) { if (priceComponent.Strategy.Class.Equals(M.SurchargeComponent.ObjectType)) { var surchargeComponent = (SurchargeComponent)priceComponent; decimal surcharge; if (surchargeComponent.Price.HasValue) { surcharge = surchargeComponent.Price.Value; @this.DerivedRoles.UnitSurcharge += surcharge; } else { var percentage = surchargeComponent.Percentage ?? 0; surcharge = Math.Round(@this.UnitBasePrice * percentage / 100, 2); @this.DerivedRoles.UnitSurcharge += surcharge; } } return(revenueBreakSurcharge); }