Exemple #1
0
        public AddedExpenseResult(AddedExpense addedExpense)
        {
            AddedExpense = addedExpense;

            if (AddedExpense.Type == ExpenseType.Percentage)
            {
                Result = AddedExpense.Value * AddedExpense.ForProduct.Price;
            }
            else if (AddedExpense.Type == ExpenseType.Monetary)
            {
                Result = AddedExpense.Value;
            }
        }
        static void Main(string[] args)
        {
            ProductsForPricing products = new ProductsForPricing();

            ProductPriceFactory.UPCDiscounts.Add(new UPCDiscount()
            {
                Discount = 0.19m, UPC = 12345
            });
            ProductPriceFactory.UPCDiscounts.Add(new UPCDiscount()
            {
                Discount = 0.29m, UPC = 56789
            });

            AddedExpense Packaging = new AddedExpense()
            {
                Name = "Packaging", Value = 0.05m, Type = ExpenseType.Percentage
            };
            AddedExpense BubbleWrap = new AddedExpense()
            {
                Name = "Bubble Wrap", Value = 0.02m, Type = ExpenseType.Percentage
            };

            Product buddha = new Product("Buddha Figurine", 12345, 42.25m);

            products.Add(ProductPriceFactory.ForProduct(buddha).WithAddedExpense(Packaging).WithAddedExpense(BubbleWrap).GetFactoryResult());

            Product book = new Product("Ken Wilber Book", 56789, 12.22m);

            products.Add(ProductPriceFactory.ForProduct(book).WithTaxRate(.22m).GetFactoryResult());

            Product chair = new Product("Aeron Chair", 34567, 1000m);

            products.Add(ProductPriceFactory.ForProduct(chair).WithTaxRate(.2m).WithDiscountRate(.15m).GetFactoryResult());

            Product shoes = new Product("Salomon Trail Runners", 123, 145m);

            products.Add(ProductPriceFactory.ForProduct(shoes).WithTaxRate(.07m).WithDiscountRate(.15m).WithAddedExpense(BubbleWrap).GetFactoryResult());

            products.DisplayAllProducts();

            Console.ReadLine();
        }
 public ProductPriceFactory WithAddedExpense(AddedExpense expense)
 {
     expense.ForProduct = ProductPricing.Product;
     ProductPricing.AddedExpenses.Add(new AddedExpenseResult(expense));
     return(this);
 }