public void Generate(IPriceList priceList, FileInfo template, string outputFileName)
        {
            lock (WordApplication.SyncRoot)
            {
                WordApplication application = WordApplication.Instance;

                try
                {
                    WordDocument document = application.OpenDocument(template.FullName);
                    _replacements.Apply(document.Content, priceList);
                    foreach (WordSection section in document.Sections)
                    {
                        foreach (var header in section.Headers)
                        {
                            _replacements.Apply(header.Range, priceList);
                        }
                        foreach (var footer in section.Footers)
                        {
                            _replacements.Apply(footer.Range, priceList);
                        }
                    
                    }
                    document.Content.UpdateFields();
                    document.SaveAs(outputFileName, WdSaveFormat.wdFormatPDF);
                    document.Close(false);
                }
                finally
                {
                    application.Quit(false);
                }
            }
        }
예제 #2
0
 public Checkout(IPricingRules pricingRules, IPriceList priceList)
 {
     _client       = pricingRules.GetClient();
     _offers       = pricingRules.GetPricingRules();
     _prices       = priceList.GetPriceList();
     _itemCounters = new Dictionary <Product, int>();
 }
        public void Generate(IPriceList priceList, FileInfo template, string outputFileName)
        {
            lock (WordApplication.SyncRoot)
            {
                WordApplication application = WordApplication.Instance;

                try
                {
                    WordDocument document = application.OpenDocument(template.FullName);
                    _replacements.Apply(document.Content, priceList);
                    foreach (WordSection section in document.Sections)
                    {
                        foreach (var header in section.Headers)
                        {
                            _replacements.Apply(header.Range, priceList);
                        }
                        foreach (var footer in section.Footers)
                        {
                            _replacements.Apply(footer.Range, priceList);
                        }
                    }
                    document.Content.UpdateFields();
                    document.SaveAs(outputFileName, WdSaveFormat.wdFormatPDF);
                    document.Close(false);
                }
                finally
                {
                    application.Quit(false);
                }
            }
        }
예제 #4
0
        private void ScanMultipleItems(IPricingRules pricingRules, IPriceList priceList, string items, double total)
        {
            // Arrange
            var checkout = new Checkout(pricingRules, priceList);
            var list     = items.Split(',');

            // Act
            foreach (var t in list)
            {
                Product result;
                Enum.TryParse(t, true, out result);
                checkout.Add(result);
            }

            // Assert
            Assert.AreEqual(total, checkout.Total);
        }
예제 #5
0
        //protected Dictionary<string, Decimal> PriceList = new Dictionary<string, decimal>() { { "APPLE", 0.45M }, { "ORANGE", 0.65M } };

        public Decimal Price(string[] items, IPriceList priceList, bool isCombineSameOffer = true)
        {
            // prep for combined special pricing
            priceList.Clear();

            var unique = items.Distinct();

            foreach (var u in unique)
            {
                if (isCombineSameOffer)
                {
                    priceList.Price(u, items.Where(x => x == u).Count());
                }
                else
                {
                    priceList.PriceNotCombined(u, items.Where(x => x == u).Count());
                }
            }

            return(priceList.GetPrice());
        }
예제 #6
0
 public InvoicesProducer(IInvoicesRepository repository, IPriceList priceList)
 {
     this.repository = repository;
     this.priceList  = priceList;
 }
 public FoCateringOperations(IPriceList priceList)
 {
     PriceList = priceList;
 }
예제 #8
0
 public OptimalPackageCalculator(IOptimalPackageRepository repository, IPriceList priceList)
 {
     this.repository = repository;
     this.priceList  = priceList;
 }
예제 #9
0
 public FoCateringOperations(IPriceList priceList)
 {
     PriceList = priceList;
 }
예제 #10
0
 public Decimal Price(string itemName, IPriceList priceList, bool isCombineSameOffer = true)
 {
     shoppingList.Add(itemName);
     return(_shopCart.Price(shoppingList.ToArray(), priceList, isCombineSameOffer));
 }