public ProductCostsReport(ProductCostsReport costs) { Tax = costs.Tax; Discounts = costs.Discounts; Expenses = costs.Expenses; Total = costs.Total; }
public static ProductCostsReport CalculateTotal(this ProductCostsReport costs, IProduct product, IProductModifiersBuilder priceModifiers) { var finalPrice = (product.Price + costs.Tax + costs.Expenses - costs.Discounts) .WithPrecision(priceModifiers.CalculationPrecision) .WithFormat(priceModifiers.CurrencyFormat); return(costs.WithTotal(finalPrice)); }
public static ProductCostsReport CalculateExpenses(this ProductCostsReport costs, IProduct product, IProductModifiersBuilder priceModifiers) { var aditionalExpenses = priceModifiers .GetModifiersOfType <IExpense>() .SumExpenses(product) .WithPrecision(priceModifiers.CalculationPrecision); return(costs.WithExpenses(aditionalExpenses)); }
public static ProductCostsReport CalculateDiscounts(this ProductCostsReport costs, IProduct product, IProductModifiersBuilder priceModifiers) { decimal discountsSum = priceModifiers .GetDiscountsWithoutPrecedenceDiscount() .ApplyDiscountCalculationStrategy(priceModifiers.DiscountCalculationMode, product) .ApplyDiscountCap(priceModifiers.DiscountCap, product) .WithPrecision(priceModifiers.CalculationPrecision); return(costs.WithDiscounts(new Money(discountsSum))); }