public void Execute() { _logger.Information("START SYNC TO BALANCE"); var BDOSyncSettings = _settingService.LoadSetting <BDOBalanceSettings>(); var BConnector = new BalanceLib.BalanceConnector(BDOSyncSettings.BalanceServiceURL, BDOSyncSettings.BalanceUserName, BDOSyncSettings.BalanceUserPass); if (BDOSyncSettings.DownloadQuanity) { UpdateStockProuctStock(BConnector, BDOSyncSettings.UnpublishProductWhenLovStock); } _logger.Information("END SYNC"); }
private void UpdateStockProuctStock(BalanceLib.BalanceConnector conn, bool unpublish = false) { var BDOSyncSettings = _settingService.LoadSetting <BDOBalanceSettings>(); _logger.Information("Start stock sync"); List <BalanceLib.StockItem> StockData = null; List <BalanceLib.ProdItem> BProducts = null; try { StockData = conn.GetStock(); BProducts = conn.GetItems(); } catch (Exception ex) { _logger.Error(ex.Message, ex); return; } if (StockData == null) { _logger.Information("No stock data received."); return; } _logger.Information($"Received {StockData.Count()} records."); var prods = _productService.SearchProducts().ToList(); if (prods != null) { foreach (var p in prods) { var bdoProd = BProducts.Where(x => x.ExtCode.ToUpper() == p.Id.ToString()).FirstOrDefault(); if (bdoProd == null) { _logger.Information($"Product ID:{p.Id}. not found in BDO Products (ExtCode)."); } else { var s = StockData.Where(x => x.Item == bdoProd.uid).FirstOrDefault(); if (s == null) { _logger.Information($"BDO Product UID:{bdoProd.uid} not found in ERP Stock."); } else { try { decimal bq = decimal.Parse(s.Quantity.Replace(" ", "").Replace(',', '.')); if (!string.IsNullOrEmpty(BDOSyncSettings.BalanceWeightUnitName) && bdoProd.Unit == BDOSyncSettings.BalanceWeightUnitName) { if (p.Weight > 0) { bq = bq / p.Weight; } } p.StockQuantity = (int)bq; _productService.UpdateProduct(p); } catch (Exception ex) { _logger.Error("Asigne quantity Error: " + ex.Message, ex); } } } } } else { _logger.Warning("No products found in store?"); } }
private void button1_Click(object sender, EventArgs e) { List <string> res = new List <string>(); res.Add(Properties.Settings.Default.HEADER); statusStrip1.Items[0].Text = "Get BDO Records..."; Application.DoEvents(); BalanceLib.BalanceConnector conn = new BalanceLib.BalanceConnector(Properties.Settings.Default.BDOUrl, Properties.Settings.Default.BDOUser, Properties.Settings.Default.BDOPass); try { var items = conn.GetItems(); foreach (var p in items.Where(x => !x.IsGroup)) { //if (Properties.Settings.Default.BDOGroupFilter != "" && p.Group == new Guid(Properties.Settings.Default.BDOGroupFilter)) if (!string.IsNullOrEmpty(p.Barcode)) { string price = p.Price.Replace(",", "."); if (Properties.Settings.Default.PriceDevider > 1) { decimal lpr = 0; try { lpr = decimal.Parse(price); lpr = lpr / Properties.Settings.Default.PriceDevider; } catch { lpr = 0; } if (lpr > 0) { price = lpr.ToString("0.##"); } } string oldPrice = ""; string isPromo = ""; if (!string.IsNullOrEmpty(p.AdditionalRequisites1)) { decimal lpr = 0; try { lpr = decimal.Parse(p.AdditionalRequisites1.Replace(",", ".")); if (p.Unit != "ცალი") { lpr = lpr / Properties.Settings.Default.PriceDevider; } } catch { lpr = 0; } if (lpr > 0) { oldPrice = lpr.ToString("0.##"); } } if (!string.IsNullOrEmpty(p.AdditionalRequisites2)) { try { isPromo = p.AdditionalRequisites2.ToUpper() == "TRUE" ? "promo" : ""; } catch { } } string szUnit = "100 გრ."; if ((p.Barcode.Length >= 8 && !p.Barcode.StartsWith("22")) || p.Unit == "ცალი") { szUnit = ""; price = p.Price.Replace(",", "."); } string enName = ""; if (string.IsNullOrEmpty(p.AdditionalRequisites3)) { enName = p.FullName.Replace(",", " "); } else { enName = p.AdditionalRequisites3.Replace(",", " "); } string ns = $"{p.Barcode.Replace(",", " ")},{p.Name.Replace(","," ")},{enName},{price.Replace(",", ".")},₾,{isPromo},{szUnit.Replace(",", ".")},{oldPrice.Replace(",", " ")}"; //string ns = $"\"{p.Barcode}\",\"{p.Name.Replace(",", " ")}\",\"{p.FullName.Replace(",", " ")}\",\"{price.Replace(",", ".")}\",\"₾\",\"{isPromo}\",\"{szUnit.Replace(",", ".")}\",\"{oldPrice}\""; res.Add(ns); } } } catch (Exception ex) { statusStrip1.Items[0].Text = ex.Message; return; } statusStrip1.Items[0].Text = "Writing file..."; Application.DoEvents(); string path = Path.GetTempPath(); DateTime d = DateTime.Now; //string fname = $"import_{d.Year}{d.Month}{d.Day}{d.Hour}{d.Minute}{d.Second}.csv"; string fname = string.Format("import_{0:0000}{1:00}{2:00}{3:00}{4:00}{5:00}.csv", d.Year, d.Month, d.Day, d.Hour, d.Minute, d.Second); string fullfilename = Path.Combine(path, fname); tbFileName.Text = fullfilename; StreamWriter sw = new StreamWriter(fullfilename, false, Encoding.Unicode); foreach (var i in res) { sw.WriteLine(i); } sw.Close(); if (checkBox1.Checked) { statusStrip1.Items[0].Text = $"Uploading To FTP: {Properties.Settings.Default.OutputFTPUrl}"; Application.DoEvents(); string url = $"{Properties.Settings.Default.OutputFTPUrl}/{Properties.Settings.Default.Folder}"; Upload(url, Properties.Settings.Default.FTPUser, Properties.Settings.Default.FTPPass, fullfilename); } else { File.Copy(fullfilename, Path.Combine(Properties.Settings.Default.DirectFilePath, fname)); } statusStrip1.Items[0].Text = "Finish"; }