/// <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); }
/// <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(); } }