// ReSharper disable InconsistentNaming
        public ActionResult AddNewSKU(CMS_SKU_Model model, MCCC mcModel, CMS_HMNUM_Model hmModel, User_Profile_Model userModel)
// ReSharper restore InconsistentNaming
        {
            try
            {
                var    skuSvr = new SKUCreateServices();
                string msg;
                var    newSkuid = skuSvr.AddProduct(model, mcModel, hmModel, userModel.User_Account, out msg);
                return(Json(new NBCMSResultJson
                {
                    Status = newSkuid > 0 ? StatusType.OK : StatusType.Error,
                    Data = newSkuid
                }));
            }
            catch (Exception ex)
            {
                NBCMSLoggerManager.Fatal(ex.Message);
                NBCMSLoggerManager.Fatal(ex.StackTrace);
                NBCMSLoggerManager.Error("");
                return(Json(new NBCMSResultJson
                {
                    Status = StatusType.Exception,
                    Data = ex.Message
                }));
            }
        }
        //
        // GET: /SKUCreate/

        public ActionResult Index(User_Profile_Model userModel)
        {
            var model = new CMS_SKU_Model {
                userInfo = userModel
            };                                                     //用于前端控制非本公司销售人员的展示字段

            return(View(model));
        }
Example #3
0
        public void UpdateStatus(CMS_SKU_Model model, string exMsg, int StatusID, string StatusDesc)
        {
            IDictionary <string, string> ls = new Dictionary <string, string>();

            ls.Add("SKUID", model.SKUID.ToString());
            ls.Add("StatusID", StatusID.ToString());
            ls.Add("StatusDesc", StatusDesc);
            ls.Add("UpdateOn", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
            ls.Add("UpdateBy", model.Modifier);
            ls.Add("Comments", exMsg == "" ? "successfully" : exMsg);
            NBCMSLoggerManager.NBCMSLogger("CMS_Ecom_Sync", "", ls);
        }
Example #4
0
        public void LogInsertEcom(CMS_SKU_Model model, string exMsg)
        {
            IDictionary <string, string> ls = new Dictionary <string, string>();

            ls.Add("SKUID", model.SKUID.ToString());
            ls.Add("ProductID", model.SKU_HM_Relation.CMS_HMNUM.ProductID.ToString());
            ls.Add("HMNUM", model.SKU_HM_Relation.CMS_HMNUM.HMNUM);
            ls.Add("SKUOrder", model.SKU);
            ls.Add("Channel", model.ChannelName);
            ls.Add("Status", "0");
            ls.Add("CreatedDate", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
            ls.Add("CreatedBy", model.Modifier);
            ls.Add("ModifiedDate", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
            ls.Add("ModifiedBy", model.Modifier);
            ls.Add("Comments", exMsg == "" ? "successfully" : exMsg);
            NBCMSLoggerManager.NBCMSLogger("CMS_Ecom_Sync_Result", "", ls);
        }
Example #5
0
        public void SKUURL_Action(CMS_SKU_Model WPModel, EcomEntities db)
        {
            if (String.IsNullOrEmpty(WPModel.URL))
            {
                return;
            }
            var query = db.SKUURL.FirstOrDefault(s => s.SKUOrder == WPModel.SKU && s.MerchantID == WPModel.ChannelName && s.URL == WPModel.URL);

            if (query == null)
            {
                db.SKUURL.Add(new SKUURL
                {
                    MerchantID = WPModel.ChannelName,
                    SKUOrder   = WPModel.SKU,
                    URL        = WPModel.URL
                });
            }
        }
        /// <summary>
        /// Change1:新增了一个MCCC的模块,你懂得 2014年1月28日16:26:45
        /// </summary>
        /// <param name="model"></param>
        /// <param name="mcModel"></param>
        /// <param name="userModel"></param>
        /// <returns></returns>
        public ActionResult UpdatedProduct([Bind(Exclude = "SKU")] CMS_SKU_Model model, MCCC mcModel, User_Profile_Model userModel)
        {
            try
            {
                if (model.SKUID == 0)
                {
                    return(Json(new NBCMSResultJson
                    {
                        Status = StatusType.Error,
                        Data = "Request is illegal."
                    }));
                }
                //User_Profile_Model userModel = new CommonController().GetCurrentUserbyCookie(Request[ConfigurationManager.AppSettings["userInfoCookiesKey"]]);

                var    pSvr = new ProductsServices();
                string msg;
                if (pSvr.UpdatedProduct(model, mcModel, userModel.User_Account, out msg))
                {
                    return(Json(new NBCMSResultJson
                    {
                        Status = StatusType.OK,
                        Data = "OK"
                    }));
                }
                return(Json(new NBCMSResultJson
                {
                    Status = StatusType.Error,
                    Data = msg == "update product failed." ? "" : msg
                }));
            }
            catch (Exception ex)
            {
                NBCMSLoggerManager.Error(ex.Message);
                NBCMSLoggerManager.Error(ex.Source);
                return(Json(new NBCMSResultJson
                {
                    Status = StatusType.Exception,
                    Data = ex.Message
                }));
            }
        }
        /// <summary>
        /// 组合产品的和基础产品的关联表,存在基础产品就更新,不存在就插入
        /// </summary>
        /// <param name="HMModel"></param>
        /// <param name="db"></param>
        public void HMNUMGroup_Action(CMS_SKU_Model skuModel, EcomEntities db, ref int pieces)
        {
            CMS_HMNUM_Model HMModel = skuModel.SKU_HM_Relation.CMS_HMNUM;

            pieces = 0;
            if (!HMModel.IsGroup)
            {
                return;
            }
            foreach (var subHM in HMModel.Children_CMS_HMNUM_List)
            {
                var subImgPath = string.Empty;
                var hmPImgObj  = subHM.MediaList.FirstOrDefault(m => m.IsPrimaryImages == true);
                if (hmPImgObj != null)
                {
                    subImgPath = Path.Combine(skuModel.CMSPhysicalPath, hmPImgObj.HMNUM + "\\" + hmPImgObj.ImgName + hmPImgObj.fileFormat);
                }
                this.HMNUM_Action(subHM, db, 1, subImgPath, decimal.Parse(skuModel.SKU_Costing.EstimateFreight, NumberStyles.Currency, new CultureInfo("en-US")));//调用内部方法,插入or更新HMNUM 2014年4月22日16:17:23
                pieces += subHM.SellSets;
                var query = db.ProductGroup.FirstOrDefault(g => g.HMNUM == subHM.HMNUM && g.HMNUMParent == HMModel.HMNUM);
                if (query == null)//【不】存在基础产品-组合产品的一条记录
                {
                    db.ProductGroup.Add(new ProductGroup
                    {
                        HMNUMParent = HMModel.HMNUM,
                        HMNUM       = subHM.HMNUM,
                        Description = subHM.ProductName,
                        SellSets    = subHM.SellSets
                    });
                }
                else//存在基础产品-组合产品的一条记录
                {
                    query.SellSets    = subHM.SellSets;
                    query.Description = subHM.ProductName;
                }
            }
        }
Example #8
0
        /// <summary>
        /// Ecom中的定义:
        /// Sellset,组合产品中的定义,在Group中,用于标识子产品在组合产品中的PCS数量
        /// Sellpack,销售数量定义,表示网站订单1QTY对应系统中销售N个产品的意思
        /// boxnum就是sellpack,一个货号我卖6个,装3箱,则:pcs 6 mp2 sellpack 3 Add Remark:2014年4月15日15:09:08
        /// </summary>
        /// <param name="WPModel"></param>
        /// <param name="db"></param>
        public void SKU_Action(CMS_SKU_Model WPModel, EcomEntities db)
        {
            if (WPModel.CMS_ShipViaType == null)//HMModel.CMS_ShipVia_Type.CMS_ShipVia_Default.SHIPVIA
            {
                throw new Exception("This SKU does not set ShipVia Type");
            }
            if (WPModel.CMS_ShipViaType.CMS_ShipVia_Default == null)
            {
                throw new Exception("This SKU does not set ShipVia");
            }

            var query = db.SKU.FirstOrDefault(s => s.SKUOrder == WPModel.SKU && s.MerchantID == WPModel.ChannelName);

            if (query == null)
            {
                var newSKU = new SKU
                {
                    MerchantID = WPModel.ChannelName,
                    HMNUM      = WPModel.SKU_HM_Relation.CMS_HMNUM.HMNUM,
                    SKUOrder   = WPModel.SKU,
                    SKUBest    = WPModel.SKU,
                    SellPack   = WPModel.SKU_HM_Relation.R_QTY / Convert.ToInt32(WPModel.SKU_HM_Relation.CMS_HMNUM.MasterPack),
                    //Description = WPModel.ProductName, eCom的Description其实是CMS的ProductName, 2014年4月9日
                    Description = WPModel.ProductName,
                    URL         = WPModel.URL,
                    UPC         = WPModel.UPC,
                    SHIPVIA     = WPModel.CMS_ShipViaType.CMS_ShipVia_Default.SHIPVIA,
                    Status      = WPModel.StatusName
                };
                db.SKU.Add(newSKU);

                db.SaveChanges();//!! 这里如果不保存,则SKUID =0 !!!

                //新增:SKU对应的Costing表
                db.Costing.Add(new Costing
                {
                    HMNUM          = newSKU.HMNUM,
                    MerchantID     = newSKU.MerchantID,
                    SKUID          = newSKU.SKUID,
                    SKUOrder       = newSKU.SKUOrder,
                    EffectiveDate  = WPModel.SKU_Costing.EffectiveDate,
                    Cost           = decimal.Parse(WPModel.SKU_Costing.SalePrice, NumberStyles.Currency, new CultureInfo("en-US")),
                    Coupon         = 0,//以后再做,Promo这一块 2014年4月24日11:53:47 (Boonie)
                    Retail         = WPModel.RetailPrice,
                    Freight        = decimal.Parse(WPModel.SKU_Costing.EstimateFreight, NumberStyles.Currency, new CultureInfo("en-US")),
                    MerchantCoupon = 0
                });
            }
            else
            {
                query.MerchantID = WPModel.ChannelName;
                query.HMNUM      = WPModel.SKU_HM_Relation.CMS_HMNUM.HMNUM;
                query.SKUOrder   = WPModel.SKU;
                query.SellPack   = WPModel.SKU_HM_Relation.R_QTY / Convert.ToInt32(WPModel.SKU_HM_Relation.CMS_HMNUM.MasterPack);
                //query.SellPack = WPModel.SKU_HM_Relation.CMS_HMNUM.IsGroup ? 1 : WPModel.SKU_HM_Relation.R_QTY;
                //query.Description = WPModel.ProductDesc;eCom的Description其实是CMS的ProductName, 2014年4月9日
                query.Description = WPModel.ProductName;
                query.URL         = WPModel.URL;
                query.UPC         = WPModel.UPC;
                //query.SHIPVIA = WPModel.CMS_ShipViaType.CMS_ShipVia_Default.SHIPVIA;

                //取出当前eCom.dbo.Costing表的数据
                var eComCostings = db.Costing.Where(s => s.SKUOrder == WPModel.SKU && s.MerchantID == WPModel.ChannelName && s.EffectiveDate != null);
                if (eComCostings.FirstOrDefault() == null)
                {
                    db.Costing.Add(new Costing
                    {
                        HMNUM          = query.HMNUM,
                        MerchantID     = query.MerchantID,
                        SKUID          = query.SKUID,
                        SKUOrder       = query.SKUOrder,
                        EffectiveDate  = WPModel.SKU_Costing.EffectiveDate,
                        Cost           = decimal.Parse(WPModel.SKU_Costing.SalePrice, NumberStyles.Currency, new CultureInfo("en-US")),
                        Coupon         = 0,//以后再做,Promo这一块 2014年4月24日11:53:47 (Boonie)
                        Retail         = WPModel.RetailPrice,
                        Freight        = decimal.Parse(WPModel.SKU_Costing.EstimateFreight, NumberStyles.Currency, new CultureInfo("en-US")),
                        MerchantCoupon = 0
                    });
                }
                else
                {
                    //如果已经存在并且不止一列,取出最大的那个时间点做比较
                    if (WPModel.SKU_Costing.EffectiveDate == eComCostings.Max(s => s.EffectiveDate).Value)//前面过滤了null值,所以这里不会出现null值了
                    {
                        //相等说明CMS没有做价格变动
                    }
                    else
                    {
                        //插入新的Costing
                        db.Costing.Add(new Costing
                        {
                            HMNUM          = query.HMNUM,
                            MerchantID     = query.MerchantID,
                            SKUID          = query.SKUID,
                            SKUOrder       = query.SKUOrder,
                            EffectiveDate  = WPModel.SKU_Costing.EffectiveDate,
                            Cost           = decimal.Parse(WPModel.SKU_Costing.SalePrice, NumberStyles.Currency, new CultureInfo("en-US")),
                            Coupon         = 0,//以后再做,Promo这一块 2014年4月24日11:53:47 (Boonie)
                            Retail         = WPModel.RetailPrice,
                            Freight        = decimal.Parse(WPModel.SKU_Costing.EstimateFreight, NumberStyles.Currency, new CultureInfo("en-US")),
                            MerchantCoupon = 0
                        });
                    }
                }

                //db.SaveChanges();为什么要在这里Save导致不能做transaction?2014年4月24日10:41:57
            }
        }
Example #9
0
        /// <summary>
        /// Change1:既然文件类型的LOG已经记录了StackTrace,那么 数据库只要记录一个Message就足够了,不要再记录StackTrace了。2014年5月14日11:24:52
        /// </summary>
        /// <param name="model"></param>
        public void Processing(CMS_SKU_Model model)
        {
            HMNUMServices hmSvr  = new HMNUMServices();
            SKUServices   skuSvr = new SKUServices();

            IDictionary <string, string> ls = new Dictionary <string, string>();

            using (EcomEntities db = new EcomEntities())
            {
                try
                {
                    int UnitQTY = 0;
                    hmSvr.HMNUMGroup_Action(model, db, ref UnitQTY);
                    hmSvr.HMNUM_Action(model.SKU_HM_Relation.CMS_HMNUM, db, UnitQTY, model.Send2eComPath,
                                       decimal.Parse(model.SKU_Costing.EstimateFreight, NumberStyles.Currency, new CultureInfo("en-US")));
                    hmSvr.Carton_Action(model.SKU_HM_Relation.CMS_HMNUM, db);
                    skuSvr.SKU_Action(model, db);
                    skuSvr.SKUURL_Action(model, db);
                    db.SaveChanges();
                    UpdateStatus(model, "", 1, "Synchronized");
                    LogInsertEcom(model, "");
                }
                catch (DbEntityValidationException ex)
                {
                    var exMsg = String.Empty;

                    foreach (var eve in ex.EntityValidationErrors)
                    {
                        NBCMSLoggerManager.Error("");
                        NBCMSLoggerManager.Error("");
                        //HMLog.Error("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",eve.Entry.Entity.GetType().Name, eve.Entry.State);
                        foreach (var ve in eve.ValidationErrors)
                        {
                            string temp = string.Format("- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage);
                            NBCMSLoggerManager.Error(temp);
                            exMsg += temp;
                        }
                        NBCMSLoggerManager.Error("");
                    }
                    exMsg += ex.Message + ":" + ex.StackTrace;
                    UpdateStatus(model, ex.Message, 2, "Failed");
                    LogInsertEcom(model, ex.Message);
                }
                catch (Exception ex)
                {
                    var  exMsg     = String.Empty;
                    bool isInnerEx = false;
                    if (ex.InnerException != null)
                    {
                        if (ex.InnerException.InnerException != null)
                        {
                            NBCMSLoggerManager.Error("InnerException.InnerException");
                            NBCMSLoggerManager.Error(ex.InnerException.InnerException.Message);
                            NBCMSLoggerManager.Error(ex.InnerException.InnerException.Source);
                            NBCMSLoggerManager.Error(ex.InnerException.InnerException.StackTrace);
                            NBCMSLoggerManager.Error("");
                            exMsg     = ex.InnerException.InnerException.Message;// +":" + ex.InnerException.InnerException.StackTrace;
                            isInnerEx = true;
                        }
                        if (!isInnerEx)
                        {
                            NBCMSLoggerManager.Error(ex.InnerException.Message);
                            NBCMSLoggerManager.Error(ex.InnerException.Source);
                            NBCMSLoggerManager.Error(ex.InnerException.StackTrace);
                            NBCMSLoggerManager.Error("");
                            exMsg = ex.InnerException.Message;// +":" + ex.InnerException.StackTrace;
                        }
                    }
                    if (!isInnerEx)
                    {
                        NBCMSLoggerManager.Error("");
                        NBCMSLoggerManager.Error(ex.Message);
                        NBCMSLoggerManager.Error(ex.StackTrace);
                        NBCMSLoggerManager.Error("");
                        exMsg = ex.Message;//+ ":" + ex.StackTrace;
                    }
                    UpdateStatus(model, exMsg, 2, "Failed");
                    LogInsertEcom(model, exMsg);
                }
            }
        }
Example #10
0
        /// <summary>
        /// 新增SKU产品
        /// CrateDate:2013年11月24日17:40:08
        /// </summary>
        /// <param name="model"></param>
        /// <param name="Modifier"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public long AddProduct(CMS_SKU_Model model, MCCC mcModel, CMS_HMNUM_Model HMModel, String Modifier, out string msg)
        {
            using (PermaisuriCMSEntities db = new PermaisuriCMSEntities())
            {
                msg = "";
                var query = db.CMS_SKU.Where(w => w.SKU == model.SKU && w.ChannelID == model.ChannelID).FirstOrDefault();
                if (query != null)
                {
                    msg = string.Format("this item is already exist");
                    return(-1);
                }

                var mat = db.CMS_SKU_Material.FirstOrDefault(s => s.MaterialName == mcModel.Material);
                if (mat == null)
                {
                    mat = new CMS_SKU_Material
                    {
                        CreateBy     = Modifier,
                        CreateOn     = DateTime.Now,
                        ModifyBy     = Modifier,
                        ModifyOn     = DateTime.Now,
                        MaterialDesc = mcModel.Material,
                        MaterialName = mcModel.Material
                    };
                    db.CMS_SKU_Material.Add(mat);
                }



                var col = db.CMS_SKU_Colour.FirstOrDefault(s => s.ColourName == mcModel.Colour);
                if (col == null)
                {
                    col = new CMS_SKU_Colour
                    {
                        CreateBy   = Modifier,
                        CreateOn   = DateTime.Now,
                        ModifyBy   = Modifier,
                        ModifyOn   = DateTime.Now,
                        ColourDesc = mcModel.Colour,
                        ColourName = mcModel.Colour
                    };
                    db.CMS_SKU_Colour.Add(col);
                }

                var cat = db.CMS_SKU_Category.FirstOrDefault(s => s.CategoryName == mcModel.Category && s.ParentID == 0);
                if (cat == null)
                {
                    cat = new CMS_SKU_Category
                    {
                        CreateBy     = Modifier,
                        CreateOn     = DateTime.Now,
                        UpdateBy     = Modifier,
                        UpdateOn     = DateTime.Now,
                        CategoryName = mcModel.Category,
                        CategoryDesc = mcModel.Category,
                        OrderIndex   = 0,
                        ParentID     = 0
                    };
                    db.CMS_SKU_Category.Add(cat);
                    db.SaveChanges();
                }

                var subCat = db.CMS_SKU_Category.FirstOrDefault(s => s.CategoryName == mcModel.SubCategory && s.ParentID != 0);
                if (subCat == null)
                {
                    subCat = new CMS_SKU_Category
                    {
                        //CategoryID = ++i,
                        CreateBy     = Modifier,
                        CreateOn     = DateTime.Now,
                        UpdateBy     = Modifier,
                        UpdateOn     = DateTime.Now,
                        CategoryName = mcModel.SubCategory,
                        CategoryDesc = mcModel.SubCategory,
                        OrderIndex   = 0,
                        //CMS_SKU_Category_Parent = cat
                        ParentID = cat.CategoryID
                    };
                    db.CMS_SKU_Category.Add(subCat);
                }

                var newCosting = new CMS_SKU_Costing
                {
                    SalePrice       = 0,
                    EstimateFreight = 0,
                    EffectiveDate   = DateTime.Now,
                    CreateBy        = Modifier,
                    CreateOn        = DateTime.Now
                };
                //db.CMS_SKU_Costing.Add(newCosting);
                //db.SaveChanges();


                CMS_SKU newProduct = new CMS_SKU
                {
                    //SKUCostID = 0, //default...为0 会导致后期查询的如果不做NULL排除,会得到意想不到的错误!
                    CMS_SKU_Costing = newCosting,
                    SKU             = model.SKU,
                    ProductName     = model.ProductName,
                    SKU_QTY         = model.SKU_QTY,
                    ChannelID       = model.ChannelID,
                    UPC             = model.UPC,
                    StatusID        = 1,//2014年3月5日 New
                    Visibility      = model.Visibility,
                    ProductDesc     = model.ProductDesc,
                    Specifications  = model.Specifications,
                    Keywords        = model.Keywords,
                    BrandID         = model.BrandID,
                    RetailPrice     = model.RetailPrice,
                    URL             = model.URL,
                    //MaterialID = mat.MaterialID,
                    //ColourID = col.ColourID,
                    //CategoryID = cat.CategoryID,
                    //SubCategoryID = subCat.CategoryID,
                    CMS_SKU_Material     = mat,
                    CMS_SKU_Colour       = col,
                    CMS_SKU_Category     = cat,
                    CMS_SKU_Category_Sub = subCat,
                    CMS_Ecom_Sync        = new CMS_Ecom_Sync
                    {
                        //SKUID = query.SKUID,坑爹啊 害死人,对象空引用!2014年4月9日
                        StatusID   = 0,
                        StatusDesc = "NeedSend",
                        UpdateBy   = Modifier,
                        UpdateOn   = DateTime.Now
                    },

                    CreateBy = Modifier,
                    CreateOn = DateTime.Now,
                    UpdateBy = Modifier,
                    UpdateOn = DateTime.Now,

                    ShipViaTypeID = model.ShipViaTypeID
                };
                //db.CMS_SKU.Add(newProduct);
                var             newHM  = db.CMS_HMNUM.Find(HMModel.ProductID);
                SKU_HM_Relation rModel = new SKU_HM_Relation
                {
                    CMS_HMNUM  = newHM,
                    CMS_SKU    = newProduct,
                    StockKeyID = newHM.StockKeyID,
                    R_QTY      = HMModel.R_QTY,
                    CreateBy   = Modifier,
                    CreateOn   = DateTime.Now,
                    UpdateBy   = Modifier,
                    UpdateOn   = DateTime.Now
                };
                db.SKU_HM_Relation.Add(rModel);

                db.SaveChanges();

                newCosting.HisSKUID = newProduct.SKUID;//经测试:如果让这个生效,一定要在此之前先发生一次db.SaveChanges(),即使是使用强类型嵌套插入也需要这样save 2 次....2014年3月10日

                db.SaveChanges();
                return(newProduct.SKUID);
            }
        }