// Helper Methods #region CreateMagentoSale private MyMagento.Models.Order CreateMagentoSale() { MyMagento.Models.Order order = new MyMagento.Models.Order(); order.increment_id = "123"; order.total_paid = 9.99; order.created_at = new DateTime(2015, 08, 24, 14, 59, 00); var billingAddress = new MyMagento.Models.OrderAddress(); billingAddress.address_type = "billing"; billingAddress.firstname = "billing firstname"; billingAddress.lastname = "billing lastname"; billingAddress.street = "billing street 1\nbilling street 2"; billingAddress.city = "billing city"; billingAddress.region = "billing region"; billingAddress.postcode = "billing postcode"; billingAddress.country_id = "billing country id"; billingAddress.email = "*****@*****.**"; var shippingAddress = new MyMagento.Models.OrderAddress(); shippingAddress.address_type = "shipping"; shippingAddress.firstname = "shipping firstname"; shippingAddress.lastname = "shipping lastname"; shippingAddress.street = "shipping street 1\nshipping street 2"; shippingAddress.city = "shipping city"; shippingAddress.region = "shipping region"; shippingAddress.postcode = "shipping postcode"; shippingAddress.country_id = "shipping country id"; shippingAddress.telephone = "0049 171 1234567"; order.addresses = new List <MyMagento.Models.OrderAddress>(); order.addresses.Add(billingAddress); order.addresses.Add(shippingAddress); var orderItem = new MyMagento.Models.OrderItem(); orderItem.qty_ordered = 2; orderItem.tax_amount = 19.0; orderItem.price = 19.95; orderItem.name = "item name"; orderItem.item_id = 1234567; orderItem.sku = "sku"; orderItem.tax_percent = 19.0; order.order_items = new List <MyMagento.Models.OrderItem>(); order.order_items.Add(orderItem); MyMagento.Models.OrderComment comment = new MyMagento.Models.OrderComment(); comment.comment = "Paid via paypal"; comment.created_at = new DateTime(2015, 08, 25, 14, 59, 00); order.order_comments = new List <MyMagento.Models.OrderComment>(); order.order_comments.Add(comment); return(order); }
public void SyncToSale(MyMagento.Models.Order order) { try { if (order.status != "canceled") { Sale sale = Sale.LoadByMagentoIncrementId(order.increment_id.ToString()); MyMagento.Models.OrderAddress billingAddress = order.addresses.Find(x => x.address_type == "billing"); MyMagento.Models.OrderAddress shippingAddress = order.addresses.Find(x => x.address_type == "shipping"); if (sale == null) { sale = Sale.Create(); System.Globalization.NumberFormatInfo provider = new System.Globalization.NumberFormatInfo(); provider.NumberDecimalSeparator = "."; sale.Source = SaleSources.Magento; sale.SourceId = order.increment_id.ToString(); sale.EbayName = String.Empty; sale.NameOfBuyer = billingAddress.firstname + " " + billingAddress.lastname; sale.PhoneNumber = shippingAddress.telephone ?? String.Empty; sale.EMailAddress = billingAddress.email; Models.MyDataContext.Default.Sales.Add(sale); var itemsWithoutCategories = order.order_items.Where(runner => runner.parent_item_id == null).ToList(); //Filters out doubles that come in with customizable products such as size or color foreach (MyMagento.Models.OrderItem currentItem in itemsWithoutCategories) { Decimal amount = Convert.ToDecimal(currentItem.qty_ordered, provider); Decimal totalTax = Convert.ToDecimal(currentItem.tax_amount, provider); Decimal singleTax = totalTax / amount; Decimal singlePriceNet = Convert.ToDecimal(currentItem.price, provider); SaleItem saleItem = new SaleItem(); saleItem.Sale = sale; saleItem.EbaySalesRecordNumber = -1; saleItem.ExternalArticleName = currentItem.name; saleItem.ExternalArticleNumber = currentItem.item_id.ToString(); saleItem.InternalArticleNumber = currentItem.sku; saleItem.Article = Article.LoadByArticleNumber(currentItem.sku); saleItem.Amount = amount; saleItem.TaxRate = Convert.ToDecimal(currentItem.tax_percent, provider); saleItem.SinglePriceGross = singleTax + singlePriceNet; saleItem.EbayOrderLineItemID = String.Empty; Models.MyDataContext.Default.SaleItems.Add(saleItem); Models.MyDataContext.Default.SaveChanges(); saleItem.DecreaseStock(); } } if (sale.CanBeSynced) { System.Globalization.NumberFormatInfo provider = new System.Globalization.NumberFormatInfo(); provider.NumberDecimalSeparator = "."; sale.InvoiceName = billingAddress.firstname + " " + billingAddress.lastname; String[] billingStreetParts = billingAddress.street.Split('\n'); sale.InvoiceStreet1 = billingStreetParts.Length >= 1 ? billingStreetParts[0] : String.Empty; sale.InvoiceStreet2 = billingStreetParts.Length >= 2 ? billingStreetParts[1] : String.Empty; sale.InvoiceCity = billingAddress.city ?? String.Empty; sale.InvoiceRegion = billingAddress.region ?? String.Empty; sale.InvoicePostcode = billingAddress.postcode ?? String.Empty; sale.InvoiceCountry = billingAddress.country_id ?? String.Empty; sale.ShippingName = shippingAddress.firstname + " " + shippingAddress.lastname; String[] shippingStreetParts = shippingAddress.street.Split('\n'); sale.ShippingStreet1 = shippingStreetParts.Length >= 1 ? shippingStreetParts[0] : String.Empty; sale.ShippingStreet2 = shippingStreetParts.Length >= 2 ? shippingStreetParts[1] : String.Empty; sale.ShippingCity = shippingAddress.city ?? String.Empty; sale.ShippingRegion = shippingAddress.region ?? String.Empty; sale.ShippingPostcode = shippingAddress.postcode ?? String.Empty; sale.ShippingCountry = shippingAddress.country_id ?? String.Empty; // FIXME: There could be a better method to figure out the payment date if (order.total_paid != null && order.order_comments != null && order.order_comments.Count > 0) { var lastComment = order.order_comments[order.order_comments.Count - 1]; sale.DateOfPayment = TimeZoneInfo.ConvertTimeToUtc(lastComment.created_at); } else { sale.DateOfPayment = null; } sale.DateOfSale = TimeZoneInfo.ConvertTimeToUtc(order.created_at); sale.ShippingPrice = Convert.ToDecimal(order.shipping_amount, provider); } MyDataContext.Default.SaveChanges(); } } catch (Exception ex) { throw new SalesImportException(String.Format("Error at Magento-Order-Number: {0} ", order.increment_id), ex); } }