private void SeedSystemTestProducts()
        {
            ACM1 = Db.Context.AccountMultipliers.Where(a => a.ProductClassCode == "AM1").FirstOrDefault() ?? Db.AccountMultiplierCreate("AM1", USB1, 0.4M);
            ACM2 = Db.Context.AccountMultipliers.Where(a => a.ProductClassCode == "AM2").FirstOrDefault() ?? Db.AccountMultiplierCreate("AM2", USB2, 0.35M);
            ACM3 = Db.Context.AccountMultipliers.Where(a => a.ProductClassCode == "AM3").FirstOrDefault() ?? Db.AccountMultiplierCreate("AM3", USB3, 0.12M);
            ACM4 = Db.Context.AccountMultipliers.Where(a => a.ProductClassCode == "AM4").FirstOrDefault() ?? Db.AccountMultiplierCreate("AM4", USB4, 0.5M);
            ACM5 = Db.Context.AccountMultipliers.Where(a => a.ProductClassCode == "AM5").FirstOrDefault() ?? Db.AccountMultiplierCreate("AM5", USB5, 0.3M);
            ACM6 = Db.Context.AccountMultipliers.Where(a => a.ProductClassCode == "AM6").FirstOrDefault() ?? Db.AccountMultiplierCreate("AM6", USB6, 0.2M);

            //new DaikinServices().ImportProductData(null);

            //new DaikinServices().ImportProductAccessoriesData(null);

            //new DaikinServices().ImportDocumentData(null);

            //new DaikinServices().ImportProductDocumentData(null);

            Db.SaveChanges();
        }
        // ####################################################################################
        // Add products to a quote
        // ####################################################################################
        public void AddTestProductsToQuote(Quote quote, List <Product> products, int productSelectionVariance, AccountMultiplier multiplier)
        {
            for (int i = 0; i < products.Count; i++)
            {
                if (productSelectionVariance % (i + 1) == 0)
                {
                    var item = CreateTestQuoteItem(Db.Context, quote, products[i], i + 1, multiplier);

                    quote.QuoteItems.Add(item);
                    if (products[i].AllowCommissionScheme)
                    {
                        quote.TotalListCommission += item.ListPrice * item.Quantity;
                        quote.TotalNetCommission  += quote.TotalListCommission * ((item.Multiplier == 0) ? 1 : item.Multiplier);
                    }
                    else
                    {
                        quote.TotalListNonCommission += item.ListPrice * item.Quantity;
                        quote.TotalNetNonCommission  += quote.TotalListNonCommission * ((item.Multiplier == 0) ? 1 : item.Multiplier);
                    }
                    quote.TotalNet  = quote.TotalNetCommission;
                    quote.TotalList = quote.TotalListCommission;
                }
            }
        }
        // ####################################################################################
        // Create quote item
        // ####################################################################################
        public QuoteItem CreateTestQuoteItem(DPOContext context, Quote quote, Product product, decimal quantity, AccountMultiplier multiplier)
        {
            var item = Db.QuoteItemCreate(quote);

            item.QuoteId             = quote.QuoteId;
            item.ProductId           = product.ProductId;
            item.ProductNumber       = product.ProductNumber;
            item.Description         = product.Name;
            item.Quantity            = quantity;
            item.Multiplier          = multiplier.Multiplier;
            item.AccountMultiplierId = multiplier.AccountMultiplierId;
            item.ListPrice           = product.ListPrice;

            return(item);
        }