示例#1
0
        public void EbayStockInfoInitialization()
        {
            EbayStockInfo actual = new EbayStockInfo(6 + 4, 9, 10);

            Assert.AreEqual(10, actual.TemplateAmount);
            Assert.AreEqual(9, actual.ActiveQuantity);
            Assert.AreEqual(10, actual.AvailiableQuantity);
            Assert.AreEqual(19, actual.TotalStockQuantity);
        }
        //Methods
        #region SyncSingleArticle
        private void SyncSingleArticle(Article article, DateTime now)
        {
            try
            {
                //Total
                article.SyncDate  = now;
                article.SyncTotal = (Int32)article.AmountOnStock;

                //Ebay
                EbayStockInfo ebayStockInfo = EbayController.GetEbayStockInfo(article);
                article.SyncEbayActive     = ebayStockInfo.ActiveQuantity;
                article.SyncEbayAvailiable = ebayStockInfo.AvailiableQuantity;
                article.SyncEbayTemplate   = ebayStockInfo.TemplateAmount;

                //Magento
                Int32 magentoStockAmount = (Int32)article.AmountOnStock - ebayStockInfo.TotalStockQuantity;
                magentoStockAmount  = magentoStockAmount <= 0 ? 0 : magentoStockAmount;
                article.SyncMagento = magentoStockAmount;

                //Save
                MagentoController.SetAvailiableQuantity(article, magentoStockAmount);
                article.MustSyncStockAmount = false;
                MyDataContext.Default.SaveChanges();

                //Status
                if (ebayStockInfo.TotalStockQuantity + magentoStockAmount > article.AmountOnStock)
                {
                    article.SyncTechnicalInfo = StringTable.CautionStockExceeded;
                }
                else if (this.IsRunningLowByPerformance(article))
                {
                    article.SyncTechnicalInfo = StringTable.CautionAverageAmount;
                }
                else if (this.IsRunningLowOnEbay(article))
                {
                    article.SyncTechnicalInfo = StringTable.CautionStockLow;
                }
                else if (article.AmountOnStock < 0)
                {
                    article.SyncTechnicalInfo = StringTable.CautionStockOversold;
                }
                else if ((article.SyncEbayActive + article.SyncMagento) > article.AmountOnStock)
                {
                    article.SyncTechnicalInfo = StringTable.CautionToManyOffers;
                }
                else
                {
                    article.SyncTechnicalInfo = StringTable.Okay;
                }

                System.Diagnostics.Trace.WriteLine(String.Format(StringTable.SyncSuccess, article.Id));
            }
            catch (Exception ex)
            {
                System.Diagnostics.Trace.WriteLine("===========");
                System.Diagnostics.Trace.WriteLine(ex.DeepParse());
                article.SyncTechnicalInfo = ex.DeepParse() + ex.StackTrace;
                System.Diagnostics.Trace.WriteLine(String.Format("Article: {0} - {1}", article == null ? "???" : article.Id.ToString(), ex.Message));
            }
            finally
            {
                MyDataContext.Default.SaveChanges();
            }
        }