示例#1
0
        public void ImportProducts(DataTable dt)
        {
            /*dt.Columns[0].ColumnName = "Num";
             * dt.Columns[1].ColumnName = "VendorCode";
             * dt.Columns[2].ColumnName = "ProductName";
             * dt.Columns[3].ColumnName = "Count";
             * dt.Columns[5].ColumnName = "Price";*/
            try
            {
                Products.Clear();
                List <ImportedProduct> products = new List <ImportedProduct>();
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    var pr = new ImportedProduct
                    {
                        Product = new Product
                        {
                            Name       = dt.Rows[i]["ProductName"].ToString(),
                            Price      = Convert.ToDecimal(dt.Rows[i]["Price"].ToString().Replace(".", ",")),
                            VendorCode = dt.Rows[i]["VendorCode"].ToString()
                        },
                        Count      = Convert.ToInt32(dt.Rows[i]["Count"].ToString()),
                        Additional = Convert.ToDecimal(dt.Rows[i]["Additional"].ToString().Replace(".", ","))
                    };
                    using (UserContext db = new UserContext(Settings.constr))
                    {
                        var code = db.ProductAttributes.FirstOrDefault(x =>
                                                                       x.VendorCode == pr.Product.VendorCode.ToUpper());
                        if (code != null)
                        {
                            pr.TNVEDCode  = code.TNVEDCode;
                            pr.TNVEDValue = code.TNVEDValue;
                        }
                        else
                        {
                            FailedImportedProducts.Add(pr);
                        }
                    }
                    products.Add(pr);
                }

                Products = products;
            }
            catch (Exception e)
            {
                MessageBox.Show("Ошибка при импорте!");
            }
        }
示例#2
0
        private string ParseExpression(ImportedProduct product, CalculationItem item, List <CalculatedValue> caclulatedValues)
        {
            Dictionary <string, string> replace = new Dictionary <string, string>();


            string itemPattern = @"item\[\d+\]";

            foreach (Match match in Regex.Matches(item.Expression, itemPattern))
            {
                string pattern = @"\d+";

                var itemId = Convert.ToInt32(Regex.Match(match.Value, pattern).ToString());

                var itemValue = caclulatedValues.FirstOrDefault(x => x.Item.ID == itemId);
                if (itemValue != null)
                {
                    if (!replace.ContainsKey(match.Value))
                    {
                        replace.Add(match.Value, itemValue.Value.ToString());
                    }
                }
            }

            string constantPattern = @"constant\[\d+\]";

            foreach (Match match in Regex.Matches(item.Expression, constantPattern))
            {
                string pattern    = @"\d+";
                var    constantId = Convert.ToInt32(Regex.Match(match.Value, pattern).ToString());

                var constantValue = _usedConstatns.FirstOrDefault(x => x.ID == constantId);
                if (constantValue != null)
                {
                    if (!replace.ContainsKey(match.Value))
                    {
                        replace.Add(match.Value, constantValue.Value.ToString());
                    }
                }
            }

            string sumPattern = @"sum\[\d+\]";

            foreach (Match match in Regex.Matches(item.Expression, sumPattern))
            {
                string pattern = @"\d+";

                var itemId   = Convert.ToInt32(Regex.Match(match.Value, pattern).ToString());
                var sumValue = ItemSumList.FirstOrDefault(x => x.Item.ID == itemId);
                if (sumValue != null)
                {
                    if (!replace.ContainsKey(match.Value))
                    {
                        replace.Add(match.Value, sumValue.Value.ToString());
                    }
                }
            }

            string dynamicPattern = @"dynamic\[\d+\]";

            foreach (Match match in Regex.Matches(item.Expression, dynamicPattern))
            {
                string pattern = @"\d+";

                var dynamicId    = Convert.ToInt32(Regex.Match(match.Value, pattern).ToString());
                var dynamicValue = CalculatedDynamics.FirstOrDefault(x => x.Dynamic.ID == dynamicId);
                if (dynamicValue != null)
                {
                    if (!replace.ContainsKey(match.Value))
                    {
                        replace.Add(match.Value, dynamicValue.Value.ToString());
                    }
                }
            }


            replace.Add("price", product.Product.Price.ToString());
            replace.Add("count", product.Count.ToString());
            replace.Add("TNVEDCode", product.TNVEDCode.ToString());
            replace.Add("TNVEDValue", product.TNVEDValue.ToString());
            replace.Add("Additional", product.Additional.ToString());
            var ret = item.Expression;

            foreach (var i in replace)
            {
                ret = ret.Replace(i.Key, i.Value);
            }
            return(ret);
        }