Ejemplo n.º 1
0
        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");
        }
Ejemplo n.º 2
0
        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?");
            }
        }
Ejemplo n.º 3
0
        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";
        }