Exemple #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="product"></param>
        /// <param name="props"></param>
        /// <returns></returns>
        private bool CreateProperties(Product product, List <BProductProperty> props)
        {
            if (this.CurrentUserPermission.UPDATE_PRODUCT == 0)
            {
                throw new KMJXCException("没有权限更新产品");
            }

            if (product == null || product.Product_ID <= 0)
            {
                throw new KMJXCException("产品不存在");
            }
            bool result = false;

            Product newProduct = new Product();

            newProduct.Create_Time      = DateTimeUtil.ConvertDateTimeToInt(DateTime.Now);
            newProduct.Code             = product.Code;
            newProduct.Name             = product.Name;
            newProduct.Parent_ID        = product.Parent_ID;
            newProduct.Price            = product.Price;
            newProduct.Product_Class_ID = product.Product_Class_ID;
            newProduct.Product_ID       = 0;
            newProduct.Product_Unit_ID  = product.Product_Unit_ID;
            newProduct.Shop_ID          = product.Shop_ID;
            newProduct.User_ID          = this.CurrentUser.ID;

            using (KuanMaiEntities db = new KuanMaiEntities())
            {
                db.Product.Add(newProduct);
                db.SaveChanges();
                if (newProduct.Product_ID <= 0)
                {
                    throw new KMJXCException("创建属性失败");
                }

                Stock_Pile stockPile = new Stock_Pile();
                stockPile.LastLeave_Time = 0;
                stockPile.Price          = 0;
                stockPile.Product_ID     = newProduct.Product_ID;
                stockPile.Quantity       = 0;
                stockPile.Shop_ID        = this.Shop.Shop_ID;
                stockPile.StockHouse_ID  = 0;
                stockPile.StockPile_ID   = 0;
                this.stockManager.CreateDefaultStockPile(stockPile);

                if (props != null)
                {
                    foreach (BProductProperty p in props)
                    {
                        Product_Specifications ps = new Product_Specifications();
                        ps.User_ID               = this.CurrentUser.ID;
                        ps.Created               = (int)newProduct.Create_Time;
                        ps.Product_ID            = newProduct.Product_ID;
                        ps.Product_Spec_ID       = p.PID;
                        ps.Product_Spec_Value_ID = p.PVID;
                        db.Product_Specifications.Add(ps);
                    }

                    db.SaveChanges();
                }

                result = true;
            }
            return(result);
        }
Exemple #2
0
        /// <summary>
        /// Create single parent or child product which can contains Properties combination
        /// </summary>
        /// <param name="product"></param>
        /// <returns></returns>
        public void CreateProduct(BProduct product)
        {
            if (this.CurrentUserPermission.ADD_PRODUCT == 0)
            {
                throw new KMJXCException("没有权限创建产品");
            }

            Product dbProduct = new Product();

            dbProduct.Code        = product.Code;
            dbProduct.Create_Time = DateTimeUtil.ConvertDateTimeToInt(DateTime.Now);
            dbProduct.Name        = product.Title;
            dbProduct.Parent_ID   = product.ParentID;
            dbProduct.Quantity    = 0;
            dbProduct.Description = product.Description;
            if (product.Category != null)
            {
                dbProduct.Product_Class_ID = product.Category.ID;
            }
            dbProduct.Product_ID = 0;
            dbProduct.Price      = product.Price;
            if (product.Unit != null)
            {
                dbProduct.Product_Unit_ID = product.Unit.Product_Unit_ID;
            }
            dbProduct.Shop_ID = this.Shop.Shop_ID;
            dbProduct.User_ID = this.MainUser.ID;

            if (product.Parent != null && product.Parent.ID > 0)
            {
                dbProduct.Parent_ID = product.Parent.ID;
            }

            using (KuanMaiEntities db = new KuanMaiEntities())
            {
                db.Product.Add(dbProduct);
                db.SaveChanges();
                if (dbProduct.Product_ID <= 0)
                {
                    throw new KMJXCException("产品创建失败");
                }
                product.ID = dbProduct.Product_ID;
                //Update product images
                if (product.Images != null && product.Images.Count > 0)
                {
                    List <int> img_ids = new List <int>();
                    foreach (Image img in product.Images)
                    {
                        img_ids.Add(img.ID);
                    }

                    List <Image> dbImages = (from img in db.Image where img_ids.Contains(img.ID) select img).ToList <Image>();
                    foreach (Image image in dbImages)
                    {
                        image.ProductID = product.ID;
                    }

                    db.SaveChanges();
                }
                Stock_Batch batch = null;
                if (dbProduct.Parent_ID == 0)
                {
                    batch = new Stock_Batch()
                    {
                        Name = "P0", ProductID = dbProduct.Product_ID, Price = 0, ShopID = dbProduct.Shop_ID, Desc = "", Created_By = this.CurrentUser.ID
                    };
                    batch.Created         = DateTimeUtil.ConvertDateTimeToInt(DateTime.Now);
                    batch.ParentProductID = dbProduct.Parent_ID;
                    db.Stock_Batch.Add(batch);
                    db.SaveChanges();
                }
                else
                {
                    batch = (from b in db.Stock_Batch where b.ProductID == dbProduct.Parent_ID select b).FirstOrDefault <Stock_Batch>();
                }

                Store_House        defaultStoreHouse = null;
                List <Store_House> storeHouses       = (from h in db.Store_House where (h.Shop_ID == dbProduct.Shop_ID || h.Shop_ID == this.Main_Shop.Shop_ID) select h).ToList <Store_House>();

                if (storeHouses.Count == 0)
                {
                    defaultStoreHouse             = new Store_House();
                    defaultStoreHouse.Shop_ID     = dbProduct.Shop_ID;
                    defaultStoreHouse.Title       = "默认仓库";
                    defaultStoreHouse.Address     = "";
                    defaultStoreHouse.Phone       = "";
                    defaultStoreHouse.User_ID     = this.CurrentUser.ID;
                    defaultStoreHouse.Create_Time = DateTimeUtil.ConvertDateTimeToInt(DateTime.Now);
                    defaultStoreHouse.Default     = true;
                    defaultStoreHouse.Guard       = 0;
                    db.Store_House.Add(defaultStoreHouse);
                    db.SaveChanges();
                }
                else
                {
                    defaultStoreHouse = (from h in storeHouses where h.Default == true select h).FirstOrDefault <Store_House>();
                    if (defaultStoreHouse == null)
                    {
                        defaultStoreHouse         = storeHouses[0];
                        defaultStoreHouse.Default = true;
                    }
                }

                Stock_Pile stockPile = new Stock_Pile();
                stockPile.LastLeave_Time = 0;
                stockPile.Price          = 0;
                stockPile.Product_ID     = product.ID;
                stockPile.Quantity       = 0;
                stockPile.Shop_ID        = dbProduct.Shop_ID;
                stockPile.StockHouse_ID  = defaultStoreHouse.StoreHouse_ID;
                stockPile.StockPile_ID   = 0;
                stockPile.Batch_ID       = batch.ID;

                db.Stock_Pile.Add(stockPile);

                if (product.Properties != null && product.Properties.Count > 0)
                {
                    foreach (BProductProperty pro in product.Properties)
                    {
                        Product_Specifications ps = new Product_Specifications();
                        ps.Product_ID            = dbProduct.Product_ID;
                        ps.Product_Spec_ID       = pro.PID;
                        ps.Product_Spec_Value_ID = pro.PVID;
                        ps.User_ID = this.CurrentUser.ID;
                        ps.Created = DateTimeUtil.ConvertDateTimeToInt(DateTime.Now);
                        db.Product_Specifications.Add(ps);
                    }

                    //db.SaveChanges();
                }

                if (product.Suppliers != null)
                {
                    foreach (Supplier su in product.Suppliers)
                    {
                        Product_Supplier ps = new Product_Supplier();
                        ps.Product_ID  = product.ID;
                        ps.Supplier_ID = su.Supplier_ID;
                        db.Product_Supplier.Add(ps);
                    }

                    //db.SaveChanges();
                }

                if (product.Children != null)
                {
                    foreach (BProduct p in product.Children)
                    {
                        if (p.Parent == null)
                        {
                            p.ParentID = dbProduct.Product_ID;
                            p.Parent   = new BProduct()
                            {
                                ID = product.ID
                            };
                        }
                        p.Children = null;
                        this.CreateProduct(p);
                    }
                }
                else
                {
                    base.CreateActionLog(new BUserActionLog()
                    {
                        Shop = new BShop {
                            ID = dbProduct.Shop_ID
                        }, Action = new BUserAction()
                        {
                            Action_ID = UserLogAction.CREATE_PRODUCT
                        }, Description = ""
                    });
                }

                db.SaveChanges();
            }
        }