Exemple #1
0
        public void SyncMagentoTransactionsToSales()
        {
            System.Globalization.NumberFormatInfo provider = new System.Globalization.NumberFormatInfo();

            using (MyDataContext.Default = new MyDataContext(Effort.EntityConnectionFactory.CreateTransient("name=MyDataContext")))
            {
                this.InitializeDatabase();

                var magentoSyncer = new MagentoSalesSyncer();
                var magentoSale   = CreateMagentoSale();

                magentoSyncer.SyncToSale(magentoSale);

                var sale = MyDataContext.Default.Sales.First();

                Assert.AreEqual(TimeZoneInfo.ConvertTimeToUtc(new DateTime(2015, 08, 25, 14, 59, 00)), sale.DateOfPayment);
                Assert.AreEqual(TimeZoneInfo.ConvertTimeToUtc(new DateTime(2015, 08, 24, 14, 59, 00)), sale.DateOfSale);
                Assert.AreEqual("*****@*****.**", sale.EMailAddress);
                Assert.AreEqual("billing city", sale.InvoiceCity);
                Assert.AreEqual("billing country id", sale.InvoiceCountry);
                Assert.AreEqual("billing firstname billing lastname", sale.InvoiceName);
                Assert.AreEqual("billing postcode", sale.InvoicePostcode);
                Assert.AreEqual("billing region", sale.InvoiceRegion);
                Assert.AreEqual("billing street 1", sale.InvoiceStreet1);
                Assert.AreEqual("billing street 2", sale.InvoiceStreet2);
                Assert.AreEqual("123", sale.SourceId);
                Assert.AreEqual("billing firstname billing lastname", sale.NameOfBuyer);
                Assert.AreEqual("0049 171 1234567", sale.PhoneNumber);
                Assert.AreEqual("magento - 123", sale.ProtocolNumber);

                Assert.AreEqual("shipping city", sale.ShippingCity);
                Assert.AreEqual("shipping country id", sale.ShippingCountry);
                Assert.AreEqual("shipping firstname shipping lastname", sale.ShippingName);
                Assert.AreEqual("shipping postcode", sale.ShippingPostcode);
                Assert.AreEqual("shipping region", sale.ShippingRegion);
                Assert.AreEqual("shipping street 1", sale.ShippingStreet1);
                Assert.AreEqual("shipping street 2", sale.ShippingStreet2);
                Assert.AreEqual(SaleSources.Magento, sale.Source);
                Assert.AreEqual(58.90m, sale.TotalPriceGross);

                var saleItem = sale.SaleItems.First();
                Assert.AreEqual(-1, saleItem.EbaySalesRecordNumber);
                Assert.AreEqual("item name", saleItem.ExternalArticleName);
                Assert.AreEqual("1234567", saleItem.ExternalArticleNumber);
                Assert.AreEqual("sku", saleItem.InternalArticleNumber);
                Assert.AreEqual(2, saleItem.Amount);
                Assert.AreEqual(19m, saleItem.TaxRate);
                Assert.AreEqual(29.45m, saleItem.SinglePriceGross);
                Assert.AreEqual(String.Empty, saleItem.EbayOrderLineItemID);

                // Item is already synced, so no new entry should be created
                var noOfSales     = MyDataContext.Default.Sales.Count();
                var noOfSaleItems = MyDataContext.Default.SaleItems.Count();

                magentoSyncer.SyncToSale(magentoSale);

                Assert.AreEqual(noOfSales, MyDataContext.Default.Sales.Count());
                Assert.AreEqual(noOfSaleItems, MyDataContext.Default.SaleItems.Count());
            }
        }
Exemple #2
0
        public void DoNotSyncMailedOrInvoicedItemsFromMagento()
        {
            using (MyDataContext.Default = new MyDataContext(Effort.EntityConnectionFactory.CreateTransient("name=MyDataContext")))
            {
                this.InitializeDatabase();

                var magentoSyncer = new MagentoSalesSyncer();
                var magentoSale   = CreateMagentoSale();

                magentoSyncer.SyncToSale(magentoSale);

                var sale = MyDataContext.Default.Sales.First();

                // Items which are shipped shouldn't be synced again
                var newDateTime = new DateTime(2015, 01, 01, 14, 59, 00);
                magentoSale.created_at = newDateTime;

                Mailing.CreateFromUnsentSales();
                magentoSyncer.SyncToSale(magentoSale);

                Assert.AreNotSame(newDateTime, sale.DateOfSale);

                // Items which are invoiced shouldn't be synced again
                Invoice.CreateFromUnbilledSales();
                magentoSale.created_at = newDateTime;
                magentoSyncer.SyncToSale(magentoSale);

                Assert.AreNotSame(newDateTime, sale.DateOfSale);
            }
        }
Exemple #3
0
        public void DoNotSyncCanceldOrChangedItemsFromMagento()
        {
            using (MyDataContext.Default = new MyDataContext(Effort.EntityConnectionFactory.CreateTransient("name=MyDataContext")))
            {
                this.InitializeDatabase();

                var magentoSyncer = new MagentoSalesSyncer();
                var magentoSale   = CreateMagentoSale();

                magentoSyncer.SyncToSale(magentoSale);

                var sale = MyDataContext.Default.Sales.First();

                // Canceled items shouldn't be synced
                var newDateOfSale = new DateTime(2015, 01, 01, 14, 59, 00);
                magentoSale.created_at = newDateOfSale;

                sale         = MyDataContext.Default.Sales.First();
                sale.Invoice = null;
                sale.Mailing = null;
                foreach (var item in sale.SaleItems)
                {
                    item.CancelDate = DateTime.Now;
                }
                MyDataContext.Default.SaveChanges();
                magentoSale.created_at = newDateOfSale;
                magentoSyncer.SyncToSale(magentoSale);

                Assert.AreNotSame(newDateOfSale, sale.DateOfSale);
                foreach (var item in sale.SaleItems)
                {
                    item.CancelDate = null;
                }

                // Items which have been changed manually shouldn't be synced either
                sale = MyDataContext.Default.Sales.First();
                sale.ManuallyChanged = true;
                MyDataContext.Default.SaveChanges();
                magentoSale.created_at = newDateOfSale;
                magentoSyncer.SyncToSale(magentoSale);

                Assert.AreNotSame(newDateOfSale, sale.DateOfSale);
            }
        }
        static void Main(String[] args)
        {
            MyDataContext.Default = new MyDataContext();

            try
            {
                ShopperConfiguration.Default = ShopperConfigurationReader.FromWebConfig();
                System.Diagnostics.Trace.Listeners.Add(new Models.Syncer.SyncerTraceListener());
                System.Diagnostics.Trace.Listeners.Add(new System.Diagnostics.ConsoleTraceListener());
                System.Diagnostics.Trace.AutoFlush = true;

                if (args.Contains(SyncProcessRemote.SyncTypes.Stock.ToString()))
                {
                    StockSyncer syncer = new StockSyncer();
                    syncer.PerformInMutex(() =>
                    {
                        System.Diagnostics.Trace.WriteLine("Stock sync started...");
                        syncer.SyncStock();
                        System.Diagnostics.Trace.WriteLine("Stock sync finished!");
                    });
                }

                if (args.Contains(SyncProcessRemote.SyncTypes.TrackingNumber.ToString()))
                {
                    TrackingNumberSyncer syncer = new TrackingNumberSyncer();
                    syncer.PerformInMutex(() =>
                    {
                        System.Diagnostics.Trace.WriteLine("TrackingNumber sync started...");
                        syncer.SyncTrackingNumbersWithEbay();
                        System.Diagnostics.Trace.WriteLine("TrackingNumber sync finished!");
                    });
                }

                if (args.Contains(SyncProcessRemote.SyncTypes.Sales.ToString()))
                {
                    SalesSyncer syncer = new SalesSyncer();
                    syncer.PerformInMutex(() =>
                    {
                        System.Diagnostics.Trace.WriteLine("Sales sync started...");

                        DateTime from  = DateTime.Now.Date.AddDays(ShopperConfiguration.Default.ImportDaysBack * -1);
                        DateTime until = DateTime.Now.Date.AddDays(1);
                        System.Diagnostics.Trace.WriteLine("Loading Magento transactions...");

                        try
                        {
                            var magentoItems  = MagentoController.LoadMagentoTransactions(from);
                            var magentoSyncer = new MagentoSalesSyncer();
                            magentoSyncer.Import(magentoItems);
                        }
                        catch (Exception ex)
                        {
                            System.Diagnostics.Trace.WriteLine("Magento could's not be synced: " + ex.Message);
                        }

                        try
                        {
                            System.Diagnostics.Trace.WriteLine("Loading ebay transactions...");
                            var ebayItems = EbayController.LoadEbayTransactions(from, until);
                            System.Diagnostics.Trace.WriteLine("Ebay transactions loaded!");

                            var ebaySyncer = new EbaySalesSyncer();
                            ebaySyncer.Import(ebayItems);
                        }
                        catch (Exception ex)
                        {
                            System.Diagnostics.Trace.WriteLine("Ebay could's not be synced: " + ex.Message);
                        }

                        System.Diagnostics.Trace.WriteLine("Sales sync finished!");
                    });
                }

                if (args.Contains(SyncProcessRemote.SyncTypes.Articles.ToString()))
                {
                    var products = EbayController.LoadEbaySellingManagerProducts();
                    EbayController.ReviseSellingManagerTemplates(products);
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Trace.WriteLine(ex.DeepParse());
            }
        }