//[TestMethod] public void CreateProductTest() { var target = new N11Service(); //target.GetShipmentTemplates(); var prod = new ProductModel { stockCode = "91.000015", title = "TIMBERLAND 18617 KADIN AYAKKABI", label = "TIMBERLAND 18617 KADIN AYAKKABI", details = "TIMBERLAND 18617 KADIN AYAKKABI<br />", displayPrice = 209, picture1Path = "http://www.elektrostil.com/modules/catalog/products/pr_01_3448119_max.jpg?rev=1382934834", stockAmount = 23 }; target.CreateProduct(prod, 1520, null); Assert.IsTrue(true); }
public List<ProductModel> ex_GetSourceProductsXml(string xmlPath, string priceColumn) { //var xmlPath = @"C:\Users\Ertan\Downloads\N11-XML.xml"; //var xmlPath = @"http://www.elektrostil.com/index.php?do=catalog/output&pCode=9211982202"; var dt = new DataTable("ProductsXml"); var xdoc = XDocument.Load(xmlPath); //XDocument xdoc = null; //if (xmlPath.StartsWith("http")) //{ // var tempFile = Path.GetTempFileName(); // //var wr = (HttpWebRequest) WebRequest.Create(xmlPath); // var wc = new WebClient(); // var data = wc.DownloadData(xmlPath); // System.IO.File.WriteAllBytes(tempFile, data); // xdoc = XDocument.Load(tempFile); // System.IO.File.Delete(tempFile); //} //else //{ // xdoc = XDocument.Load(xmlPath); //} var q = from d in xdoc.Root.Descendants("item") select d; var list = q.ToList(); foreach (var xElement in list) { var valueList = new List<object>(); foreach (var attr in xElement.Elements()) { if (dt.Columns[attr.Name.LocalName] == null) dt.Columns.Add(attr.Name.LocalName); } var dr = dt.NewRow(); foreach (var attr in xElement.Elements()) { dr[attr.Name.LocalName] = attr.Value; } dt.Rows.Add(dr); } var kurTable = GetDovizKurlari(); var usdKur = kurTable["USD"]; var eurKur = kurTable["EUR"]; var karAmount = 0; if (usdKur < 1 || eurKur < 1) { throw new Exception("Kurlarda bir hata var."); } var productList = new List<ProductModel>(); Func<string, string, string, decimal> calculatePrice = (x, curr, kdv) => { var price = decimal.Parse(x.Replace(".", ",")); if (curr == "USD") price = price * usdKur; else if (curr == "EUR") price = price * eurKur; else if (curr != "TL") throw new NotImplementedException(); price = price * (int.Parse(kdv) + 100) / 100; price = Math.Round(price * 100) / 100; price += karAmount; return price; }; foreach (DataRow dr in dt.Rows) { var prod = new ProductModel { //id = dr["id"], title = (string)dr["label"], stockCode = (string)dr["stockCode"], displayPrice = calculatePrice((string)dr[priceColumn], (string)dr["currencyAbbr"], (string)dr["tax"]), stockAmount = int.Parse(dr["stockAmount"].ToString()), label = (string)dr["label"], brand = (string)dr["brand"], mainCategory = (string)dr["mainCategory"], category = (string)dr["category"], subCategory = (string)dr["subCategory"], picture1Path = (string)dr["picture1Path"], //picture2Path = (string)dr["picture2Path"], //picture3Path = (string)dr["picture3Path"], //picture4Path = (string)dr["picture4Path"], details = (string)dr["details"], //rebatedPriceWithoutTax = (string)dr["rebatedPriceWithoutTax"], }; productList.Add(prod); // Stok değeri 1 olan ürünleri kaldır. var subList = productList.Where(x => x.stockAmount == 1).ToList(); productList.RemoveAll(x => subList.Any(y => y == x)); } return productList; }
private void bgw_DoWork(object sender, DoWorkEventArgs e) { var i = 0; if (btnProcessNew.Checked) { bgw.ReportProgress(0, "Yeni ürünler kaydediliyor."); foreach (DataRow dr in newProductsTable.Rows) { i++; var percent = (int) Math.Round((double) (i*100/newProductsTable.Rows.Count)); if (dr["n11Category"] == System.DBNull.Value || String.IsNullOrWhiteSpace(dr["n11Category"].ToString())) { bgw.ReportProgress(percent, String.Format("{0} için kategori seçilmedi.", dr["stockCode"])); continue; } if (!rowAttributeTable.ContainsKey((string) dr["stockCode"])) { bgw.ReportProgress(percent, String.Format("{0} için özellikler seçilmedi.", dr["stockCode"])); continue; } var prod = new ProductModel { stockCode = (string) dr["stockCode"], label = (string) dr["label"], brand = (string) dr["brand"], title = (string) dr["label"], //dr["category"] = String.Format("{0} / {1} / {2}", sourceProd.mainCategory, sourceProd.category, sourceProd.subCategory); displayPrice = (decimal) dr["price"], stockAmount = (int) dr["stockAmount"], picture1Path = (string) dr["picture1Path"], details = (string) dr["details"] }; //var catId = long.Parse(((string)dr["n11Category"]).Split('-')[0]); var catIdStr = ((string) dr["n11Category"]).Split('-')[0]; //var cat = categoryTable[catId]; var cat = categoryTable.Values.First(x => x.Code == catIdStr); var attList = rowAttributeTable[(string) dr["stockCode"]]; var result = n11Service.CreateProduct(prod, long.Parse(cat.Code), attList); if (result == false) { result.GetType(); } bgw.ReportProgress(percent, String.Format("{0} / {1} ({2} %)", i, newProductsTable.Rows.Count, percent)); if (bgw.CancellationPending) return; } } if (btnProcessUpdates.Checked) { i = 0; bgw.ReportProgress(0, "Ürün fiyat ve stok miktarları güncelleniyor."); foreach (DataRow dr in updateProductsTable.Rows) { i++; var percent = (int) Math.Round((double) (i*100/updateProductsTable.Rows.Count)); var stockCode = (string) dr["stockCode"]; var oldPrice = (decimal) dr["oldPrice"]; var newPrice = (decimal) dr["newPrice"]; var oldStock = (int) dr["oldStock"]; var newStock = (int) dr["newStock"]; var diff = (decimal) dr["diff"]; if (btnFiyatGuncelle.Checked && oldPrice != newPrice) { // update price if (diff > 10) diff.GetType(); if (!n11Service.UpdateProduct(stockCode, newPrice)) oldPrice.GetType(); } if (btnStokGuncelle.Checked && oldStock != newStock) { // update stock n11Service.UpdateProductStock(stockCode, newStock); } bgw.ReportProgress(percent, String.Format("{0} / {1} ({2} %)", i, updateProductsTable.Rows.Count, percent)); } } if (btnProcessDelete.Checked) { i = 0; bgw.ReportProgress(0, "N11deki eski ürünlerin stok bilgileri sıfırlanıyor."); foreach (DataRow dr in oldProductsTable.Rows) { i++; var percent = (int) Math.Round((double) (i*100/oldProductsTable.Rows.Count)); var productStockCode = (string) dr["stockCode"]; var productTitle = (string) dr["label"]; if (productTitle.Contains("Timberland")) { bgw.ReportProgress(percent, String.Format("{0} / {1} ({2} %) {3} SIFIRLANMADI.", i, oldProductsTable.Rows.Count, percent, productTitle)); if (bgw.CancellationPending) return; continue; } var sourceProd = sourceList.FirstOrDefault(x => productStockCode.Contains("_" + x.stockCode + "_")); if (sourceProd == null) { // Remove n11Service.RemoveProduct(productStockCode); bgw.ReportProgress(percent, String.Format("{0} / {1} ({2} %)", i, oldProductsTable.Rows.Count, percent)); Debug.WriteLine("{0} sıfırlandı\t{1}\t{2}", i, productStockCode, productTitle); } else { bgw.ReportProgress(percent, String.Format("{0} / {1} ({2} %) Ürün ES'de mevcut, sıfırlanmıyor.", i, oldProductsTable.Rows.Count, percent)); sourceProd.GetType(); } if (bgw.CancellationPending) return; } } bgw.ReportProgress(100, "Bitti"); }