Exemple #1
0
        public DataOperation(List<Model.MigrationDataSet> mds, MainForm form)
        {
            this.mds = mds;
            this.connectionString = System.Configuration.ConfigurationSettings.AppSettings["MySqlConnectionString"];
            prod = new Product();
            pItem = new ProductItem();
            pM = new PriceMaster();
            iPrice = new ItemPrice();
            categorySet = new ProductCategorySet();
            pMap = new ProductMigrationMap();
            _prodMgr = new ProductMgr(this.connectionString);
            _priceMgr = new PriceMasterMgr(this.connectionString);
            _prodItemMgr = new ProductItemMgr(this.connectionString);
            _itemPriceMgr = new ItemPriceMgr(this.connectionString);
            _vendorBrandMgr = new VendorBrandMgr(this.connectionString);
            _vendorMgr = new VendorMgr(this.connectionString);
            _pMap = new ProductMigrationMgr(this.connectionString);
            _productCategorySetMgr = new ProductCategorySetMgr(this.connectionString);
            _productNoticeSetMgr = new ProductNoticeSetMgr(this.connectionString);
            _productTagSetMgr = new ProductTagSetMgr(this.connectionString);
            _productPictureMgr = new ProductPictureMgr(this.connectionString);
            _proStatusHistoryMgr = new ProductStatusHistoryMgr(connectionString);
            _proSpecMgr = new ProductSpecMgr(connectionString);
            _siteMgr = new SiteMgr(connectionString);
            this.form = form;

        }
        public HttpResponseBase GetPriceMaster()
        {
            string json = string.Empty;
            try
            {
                if (!string.IsNullOrEmpty(Request.Params["ProductId"]))
                {
                    uint productId = uint.Parse(Request.Params["ProductId"]);

                    _priceMasterMgr = new PriceMasterMgr(connectionString);
                    List<PriceMasterCustom> proSiteCustom = _priceMasterMgr.Query(new PriceMaster { product_id = productId, child_id = Convert.ToInt32(productId) });
                    StringBuilder strJson = new StringBuilder("[");
                    if (proSiteCustom != null)
                    {
                        _itemPriceMgr = new ItemPriceMgr(connectionString);
                        ItemPrice query = new ItemPrice { IsPage = true, Limit = 1 };
                        foreach (var item in proSiteCustom)
                        {
                            strJson.Append("{");
                            strJson.AppendFormat("price_master_id:{0},product_id:{1},site_id:{2},site_name:\"{3}\"", item.price_master_id, item.product_id, item.site_id, item.site_name);
                            strJson.AppendFormat(",product_name:\"{0}\",product_name_format:\"{1}\",bonus_percent:{2},default_bonus_percent:{3}", item.product_name, PriceMaster.Product_Name_Op(item.product_name), item.bonus_percent, item.default_bonus_percent);
                            strJson.AppendFormat(",user_level_name:\"{0}\",user_email:\"{1}\",user_level:{2}", item.user_level_name, item.user_email, item.user_level);
                            strJson.AppendFormat(",event_start:\"{0}\",user_id:{1}", item.event_start, item.user_id);
                            strJson.AppendFormat(",event_end:\"{0}\"", item.event_end);
                            strJson.AppendFormat(",cost:\"{0}\"", item.cost);
                            strJson.AppendFormat(",event_cost:\"{0}\"", item.event_cost);
                            strJson.AppendFormat(",price_status:\"{0}\"", item.price_status);
                            //if (item.same_price == 1)//edit by hufeng0813w 2014/06/16 Reason:所有單一商品規格不同價時 也去master表中的價格和活動價格
                            //{
                            strJson.AppendFormat(",price:\"{0}\"", item.price);
                            strJson.AppendFormat(",event_price:\"{0}\"", item.event_price);
                            //}
                            strJson.AppendFormat(",status:\"{0}\",accumulated_bonus:{1},bonus_percent_start:\"{2}\",bonus_percent_end:\"{3}\",same_price:{4},valid_start:\"{5}\",valid_end:\"{6}\"", item.status, item.accumulated_bonus, item.bonus_percent_start, item.bonus_percent_end, item.same_price, item.valid_start, item.valid_end);
                            strJson.Append("}");
                        }
                    }
                    strJson.Append("]");
                    json = strJson.ToString().Replace("}{", "},{");
                }
            }
            catch (Exception ex)
            {
                Log4NetCustom.LogMessage logMessage = new Log4NetCustom.LogMessage();
                logMessage.Content = string.Format("TargetSite:{0},Source:{1},Message:{2}", ex.TargetSite.Name, ex.Source, ex.Message);
                logMessage.MethodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
                log.Error(logMessage);
                json = "[]";
            }
            this.Response.Clear();
            this.Response.Write(json);
            this.Response.End();
            return this.Response;
        }
        public void CreateList(List<MakePriceCustom> PriceStore, PriceMaster pMaster, PriceMasterTemp pMasterTemp, string same_price, List<List<ItemPrice>> ItemPList, List<PriceMasterTemp> pMasterListT,
            List<PriceMaster> pMasterList, List<ItemPrice> update)
        {
            _productItemMgr = new ProductItemMgr(connectionString);

            if (PriceStore.Count > 0)
            {
                //先遍歷群組
                var piles = PriceStore.GroupBy(rec => rec.Pile_Id).ToList();
                piles.ForEach(rec =>
                {
                    if (same_price == "1")
                    {
                        //循環grid的每一行
                        rec.ToList().ForEach(row =>
                        {
                            //生成price_master
                            if (pMasterTemp != null)
                            {
                                PriceMasterTemp pmT = pMasterTemp.Clone() as PriceMasterTemp;
                                pmT.product_name = row.Product_Name;
                                pmT.child_id = row.Child_Id.ToString();
                                pmT.price = int.Parse(row.item_money.ToString());
                                pmT.max_price = int.Parse(row.item_money.ToString());   //edit by xinglu0624w reason 子商品需要给 max_price 值
                                pmT.max_event_price = 0;
                                pmT.cost = int.Parse(row.item_cost.ToString());
                                pmT.event_price = int.Parse(row.event_money.ToString());
                                pmT.event_cost = int.Parse(row.event_cost.ToString());
                                pmT.valid_start = pMasterTemp.valid_start;
                                pmT.valid_end = pMasterTemp.valid_end;
                                pMasterListT.Add(pmT);
                            }
                            else
                            {
                                PriceMaster priceMa = pMaster.Clone() as PriceMaster;
                                priceMa.product_name = row.Product_Name;
                                priceMa.child_id = int.Parse(row.Child_Id.ToString());
                                priceMa.price = int.Parse(row.item_money.ToString());
                                priceMa.max_price = int.Parse(row.item_money.ToString());
                                priceMa.max_event_price = 0;
                                priceMa.cost = int.Parse(row.item_cost.ToString());
                                priceMa.event_price = int.Parse(row.event_money.ToString());
                                priceMa.event_cost = int.Parse(row.event_cost.ToString());
                                priceMa.price_master_id = row.price_master_id;
                                pMasterList.Add(priceMa);
                            }
                            if (row.price_master_id == 0)//新增
                            {

                                //生成item_price
                                List<ProductItem> piList = _productItemMgr.Query(new ProductItem { Product_Id = row.Child_Id });
                                List<ItemPrice> iList = new List<ItemPrice>();
                                piList.ForEach(item =>
                                {
                                    ItemPrice iP = new ItemPrice();
                                    iP.item_id = item.Item_Id;
                                    iP.item_money = row.item_money;
                                    iP.item_cost = row.item_cost;
                                    iP.event_money = row.event_money;
                                    iP.event_cost = row.event_cost;
                                    iList.Add(iP);
                                });
                                ItemPList.Add(iList);
                            }
                            else //更新
                            {
                                ItemPrice ip = new ItemPrice();
                                ip.item_price_id = row.item_price_id;
                                ip.price_master_id = row.price_master_id;
                                ip.item_money = row.item_money;
                                ip.item_cost = row.item_cost;
                                ip.event_money = row.event_money;
                                ip.event_cost = row.event_cost;
                                update.Add(ip);
                            }
                        });
                    }
                    else   //處理各自定價-規格不同價
                    {

                        var children = rec.GroupBy(c => c.Child_Id).ToList();
                        children.ForEach(c =>
                        {
                            List<ItemPrice> differentPrice = new List<ItemPrice>();
                            //生成price_mater
                            var rowData = (from ci in c where ci.Child_Id == c.Key select new { ci.Product_Name, ci.price_master_id }).ToList().First();
                            if (pMasterTemp != null)
                            {
                                PriceMasterTemp pmT = pMasterTemp.Clone() as PriceMasterTemp;
                                pmT.product_name = rowData.Product_Name;
                                pmT.child_id = c.Key.ToString();
                                pmT.price = int.Parse(c.FirstOrDefault().item_money.ToString());
                                pmT.max_price = int.Parse(c.FirstOrDefault().item_money.ToString());
                                //edit by hufeng0813w 2014/06/16 Reason:規格不同價時子商品也需要cost,event_cost,event_money
                                pmT.max_event_price = int.Parse(c.FirstOrDefault().event_money.ToString());
                                pmT.cost = int.Parse(c.FirstOrDefault().item_cost.ToString());
                                pmT.event_price = int.Parse(c.FirstOrDefault().event_money.ToString());
                                pmT.event_cost = int.Parse(c.FirstOrDefault().event_cost.ToString());
                                //edit by hufeng0813w 2014/06/16
                                pMasterListT.Add(pmT);
                            }
                            else
                            {
                                PriceMaster priceMa = pMaster.Clone() as PriceMaster;
                                priceMa.price_master_id = uint.Parse(rowData.price_master_id.ToString());
                                priceMa.product_name = rowData.Product_Name;
                                priceMa.child_id = int.Parse(c.Key.ToString());
                                priceMa.price = int.Parse(c.FirstOrDefault().item_money.ToString());
                                priceMa.max_price = int.Parse(c.FirstOrDefault().item_money.ToString());
                                //edit by hufeng0813w 2014/06/16 Reason:規格不同價時子商品也需要cost,event_cost,event_money
                                priceMa.max_event_price = int.Parse(c.FirstOrDefault().event_money.ToString());
                                priceMa.cost = int.Parse(c.FirstOrDefault().item_cost.ToString());
                                priceMa.event_price = int.Parse(c.FirstOrDefault().event_money.ToString());
                                priceMa.event_cost = int.Parse(c.FirstOrDefault().event_cost.ToString());
                                //edit by hufeng0813w 2014/06/16
                                pMasterList.Add(priceMa);
                            }
                            c.ToList().ForEach(row =>
                            {
                                //生成item_price
                                ItemPrice iP = new ItemPrice();
                                iP.item_id = row.item_id;
                                iP.item_money = row.item_money;
                                iP.item_cost = row.item_cost;
                                iP.event_money = row.event_money;
                                iP.event_cost = row.event_cost;
                                iP.item_price_id = row.item_price_id;
                                iP.price_master_id = row.price_master_id;
                                differentPrice.Add(iP);
                                update.Add(iP);
                            });
                            ItemPList.Add(differentPrice);
                        });

                    }
                });

            }
            //為保證ItemPList.Count=pMasterListT.Count
            ItemPList.Add(null);

        }
        public HttpResponseBase specTempSave()
        {
            string resultStr = "{success:true}";
            bool result = true;
            try
            {

                Caller _caller = (Session["caller"] as Caller);
                string specType = Request.Params["specType"];
                string spec1Name = Request.Params["spec1Name"];
                string spec1Result = Request.Params["spec1Result"];
                string spec2Name = "";
                string spec2Result;

                _specMgr = new ProductSpecMgr(connectionString);
                _specTempMgr = new ProductSpecTempMgr(connectionString);
                _productTempMgr = new ProductTempMgr(connectionString);
                _productItemMgr = new ProductItemMgr(connectionString);
                _productItemTempMgr = new ProductItemTempMgr(connectionString);
                _serialMgr = new SerialMgr(connectionString);

                if (!string.IsNullOrEmpty(Request.Params["ProductId"]))
                {
                    uint proId = uint.Parse(Request.Params["ProductId"]);

                    _functionMgr = new FunctionMgr(connectionString);
                    string function = Request.Params["function"] ?? "";
                    Function fun = _functionMgr.QueryFunction(function, "/Product/ProductSave");
                    int functionid = fun == null ? 0 : fun.RowId;
                    HistoryBatch batch = new HistoryBatch { functionid = functionid };
                    batch.batchno = Request.Params["batch"] ?? "";
                    batch.kuser = (Session["caller"] as Caller).user_email;

                    #region 正式表修改
                    List<ProductSpec> spec1List = null;
                    List<ProductSpec> spec2List = null;
                    List<ProductSpec> specUpdateList = new List<ProductSpec>();
                    List<ProductSpec> specAddList = new List<ProductSpec>();
                    JavaScriptSerializer jss = new JavaScriptSerializer();
                    spec1List = jss.Deserialize<List<ProductSpec>>(spec1Result);
                    if (spec1List != null)
                    {
                        //規格一處理
                        spec1List.ForEach(m =>
                        {
                            m.product_id = proId;
                            m.spec_type = 1;
                            if (m.spec_id != 0)
                            {
                                specUpdateList.Add(m);
                            }
                            else
                            {
                                specAddList.Add(m);
                            }
                        });
                    }

                    //規格二處理
                    if (specType.Equals("2"))
                    {
                        spec2Name = Request.Params["spec2Name"];
                        spec2Result = Request.Params["spec2Result"];
                        spec2List = jss.Deserialize<List<ProductSpec>>(spec2Result);

                        spec2List.ForEach(m =>
                        {
                            m.product_id = proId;
                            m.spec_type = 2;
                            if (m.spec_id != 0)
                            {
                                specUpdateList.Add(m);
                            }
                            else
                            {
                                specAddList.Add(m);
                            }
                        });
                    }

                    Product proModel = new Product();
                    _productMgr = new ProductMgr(connectionString);
                    _tableHistoryMgr = new TableHistoryMgr(connectionString);
                    proModel = _productMgr.Query(new Product { Product_Id = proId }).FirstOrDefault();
                    proModel.Spec_Title_1 = spec1Name;
                    proModel.Spec_Title_2 = spec2Name;

                    if (specUpdateList.Count() > 0)
                    {
                        for (int i = 0, j = specUpdateList.Count(); i < j; i++)
                        {
                            ArrayList sqls = new ArrayList();
                            sqls.Add(_specMgr.Update(specUpdateList[i]));
                            if (i == 0)
                            {
                                sqls.Add(_productMgr.Update(proModel));
                            }
                            if (!_tableHistoryMgr.SaveHistory<ProductSpec>(specUpdateList[i], batch, sqls))
                            {
                                result = false;
                            }
                        }
                    }

                    if (specAddList.Count() > 0)
                    {

                        List<ProductItem> saveItemList = new List<ProductItem>();
                        List<ProductSpec> spec1ExistList = spec1List.Where(m => m.spec_id != 0).ToList();     //規格一中原本就存在的規格
                        specAddList.ForEach(p => p.spec_id = uint.Parse(_serialMgr.NextSerial(18).ToString()));
                        ProductItem saveTemp;
                        List<PriceMaster> list_price = new List<PriceMaster>();
                        PriceMasterMgr pm = new PriceMasterMgr(connectionString);
                        list_price = pm.GetPriceMasterInfoByID2(proId.ToString());//獲取同一個ID下其他產品的價格信息
                        PriceMaster _p = list_price.FirstOrDefault();//add by wangwei0216w 2014/9/19 獲取同一個ID下其他產品的信息
                        //List<ProductItem> pro_list = new List<ProductItem>();
                        //ProductItemMgr pig = new ProductItemMgr(connectionString);
                        //pro_list = pig.GetProductItemByID(Convert.ToInt32(proId));
                        //ProductItem _product = pro_list.FirstOrDefault();//獲取同一個ID下其他產品的信息
                        foreach (var m in specAddList)
                        {
                            if (specType.Equals("1"))
                            {
                                if (m.spec_type == 1)
                                {
                                    saveTemp = new ProductItem();
                                    if (_p.same_price == 1)             //add by wangwei 0216w 2014/9/19 如果同價 就將價格賦予新增規格
                                    {
                                        //saveTemp.Item_Cost = Convert.ToUInt32(_p.cost);
                                        //saveTemp.Item_Money = Convert.ToUInt32(_p.price);
                                    }
                                    else
                                    {
                                        resultStr = "{success:true,Msg:true}";
                                    }
                                    saveTemp.Spec_Id_1 = m.spec_id;
                                    saveTemp.Product_Id = proId;
                                    // saveTemp.Item_Stock = 10;
                                    saveTemp.Item_Alarm = 1;
                                    saveItemList.Add(saveTemp);
                                }
                                else
                                {
                                    saveTemp = new ProductItem();
                                    if (_p.same_price == 1)             //add by wangwei 0216w 2014/9/19 如果同價 就將價格賦予新增規格
                                    {
                                        //saveTemp.Item_Cost = Convert.ToUInt32(_p.cost);
                                        //saveTemp.Item_Money = Convert.ToUInt32(_p.price);
                                    }
                                    else
                                    {
                                        resultStr = "{success:true,Msg:true}";
                                    }
                                    saveTemp.Spec_Id_2 = m.spec_id;
                                    saveTemp.Product_Id = proId;
                                    //saveTemp.Item_Stock = 10;
                                    saveTemp.Item_Alarm = 1;
                                    saveItemList.Add(saveTemp);
                                }
                            }
                            else
                            {
                                if (m.spec_type == 1)
                                {
                                    foreach (ProductSpec item in spec2List)
                                    {
                                        saveTemp = new ProductItem();
                                        if (_p.same_price == 1)             //add by wangwei 0216w 2014/9/19 如果同價 就將價格賦予新增規格
                                        {
                                            //saveTemp.Item_Cost = Convert.ToUInt32(_p.cost);
                                            //saveTemp.Item_Money = Convert.ToUInt32(_p.price);
                                        }
                                        else
                                        {
                                            resultStr = "{success:true,Msg:true}";
                                        }
                                        saveTemp.Spec_Id_1 = m.spec_id;
                                        saveTemp.Spec_Id_2 = item.spec_id;
                                        //saveTemp.Item_Stock = 10;
                                        saveTemp.Item_Alarm = 1;
                                        saveTemp.Product_Id = proId;
                                        saveItemList.Add(saveTemp);
                                    }
                                }
                                else
                                {
                                    foreach (ProductSpec item2 in spec1ExistList)
                                    {
                                        saveTemp = new ProductItem();
                                        if (_p.same_price == 1)             //add by wangwei 0216w 2014/9/19 如果同價 就將價格賦予新增規格
                                        {
                                            //saveTemp.Item_Cost = Convert.ToUInt32(_p.cost);
                                            //saveTemp.Item_Money = Convert.ToUInt32(_p.price);
                                        }
                                        else
                                        {
                                            resultStr = "{success:true,Msg:true}";
                                        }
                                        saveTemp.Spec_Id_1 = item2.spec_id;
                                        saveTemp.Spec_Id_2 = m.spec_id;
                                        //saveTemp.Item_Stock = 10;
                                        saveTemp.Item_Alarm = 1;
                                        saveTemp.Product_Id = proId;
                                        saveItemList.Add(saveTemp);
                                    }

                                }
                            }
                        }

                        _specMgr.Save(specAddList);
                        _productItemMgr.Save(saveItemList);
                        ProductItem pro;
                        if (proModel.Product_Status != 0) //add by wangwei0216w 2014/9/18 作用:將Export_flag的值設置為1
                        {
                            pro = new ProductItem() { Product_Id = proModel.Product_Id, Export_flag = 1 };
                            _productItemMgr.UpdateExportFlag(pro);
                        }
                        if (result) //如果之前保存規格,插入臨時表登操作有誤,則不執行插入itemprice的操作
                        {
                            List<ProductItem> item_list = _productItemMgr.GetProductNewItem_ID(Convert.ToInt32(proModel.Product_Id));   //得到product_item的新增ID
                            ItemPrice i = new ItemPrice();
                            ItemPriceMgr ipm = new ItemPriceMgr(connectionString);
                            ArrayList liststr = new ArrayList();
                            foreach (PriceMaster p in list_price)
                            {
                                foreach (ProductItem pi in item_list)
                                {
                                    if (p.same_price == 1)
                                    {
                                        i.price_master_id = p.price_master_id;
                                        i.item_id = pi.Item_Id;
                                        i.item_money = Convert.ToUInt32(p.price);
                                        i.item_cost = Convert.ToUInt32(p.cost);
                                        i.event_cost = Convert.ToUInt32(p.event_cost);
                                        i.event_money = Convert.ToUInt32(p.event_price);
                                    }
                                    else
                                    {
                                        i.price_master_id = p.price_master_id;
                                        i.item_id = pi.Item_Id;
                                        i.item_money = 0;
                                        i.item_cost = 0;
                                        i.event_money = 0;
                                        i.event_cost = 0;
                                        resultStr = "{success:true,Msg:true}";
                                    }
                                    liststr.Add(ipm.Save(i));
                                }
                            }
                            ipm.AddItemPricBySpec(liststr, connectionString);
                        }
                    }
                    //若為單一商品,則把product_item.export_flag改為2 edit by xiangwang0413w 2014/06/30
                    //if (proModel.Combination == 1)
                    //{
                    //    _productItemMgr = new ProductItemMgr(connectionString);
                    //    ProductItem pro_Item = new ProductItem() { Product_Id = proModel.Product_Id, Export_flag = 2 };
                    //    _productItemMgr.UpdateExportFlag(pro_Item);
                    //}

                    #endregion
                }
                else
                {
                    #region 臨時表修改
                    _productTempMgr = new ProductTempMgr(connectionString); //add by xiangwang 2014.09.26 可修改庫存預設值為99

                    string product_id = "0";
                    if (!string.IsNullOrEmpty(Request.Form["OldProductId"]))
                    {
                        product_id = Request.Form["OldProductId"];
                    }

                    //add by xiangwang 2014.09.26 可修改庫存預設值為99
                    ProductTemp query = _productTempMgr.GetProTemp(new ProductTemp { Writer_Id = _caller.user_id, Combo_Type = COMBO_TYPE, Product_Id = product_id });


                    if (!specType.Equals("0") && !string.IsNullOrEmpty(specType))
                    {
                        #region 有規格
                        List<ProductSpecTemp> spec1List;
                        List<ProductSpecTemp> spec2List;
                        List<ProductSpecTemp> specAllList = new List<ProductSpecTemp>();

                        JavaScriptSerializer jss = new JavaScriptSerializer();
                        spec1List = jss.Deserialize<List<ProductSpecTemp>>(spec1Result);

                        foreach (ProductSpecTemp item in spec1List)
                        {
                            //   specid = _serialMgr.NextSerial(18);
                            //item.spec_id = uint.Parse(specid.ToString());
                            item.Writer_Id = _caller.user_id;
                            item.product_id = product_id;
                            item.spec_type = 1;
                            item.spec_image = "";
                            specAllList.Add(item);
                        }

                        if (specType.Equals("2"))
                        {
                            spec2Name = Request.Params["spec2Name"];
                            spec2Result = Request.Params["spec2Result"];
                            spec2List = jss.Deserialize<List<ProductSpecTemp>>(spec2Result);

                            foreach (ProductSpecTemp item in spec2List)
                            {
                                // specid = _serialMgr.NextSerial(18);
                                //item.spec_id = uint.Parse(specid.ToString());
                                item.Writer_Id = _caller.user_id;
                                item.product_id = product_id;
                                item.spec_type = 2;
                                item.spec_image = "";
                                specAllList.Add(item);
                            }
                        }

                        List<ProductSpecTemp> tempList = _specTempMgr.Query(new ProductSpecTemp { Writer_Id = _caller.user_id, product_id = product_id });
                        if (tempList == null || tempList.Count() <= 0)
                        {
                            #region 保存

                            specAllList.ForEach(p => p.spec_id = uint.Parse(_serialMgr.NextSerial(18).ToString()));

                            bool saveSpecResult = _specTempMgr.Save(specAllList);

                            if (saveSpecResult)
                            {
                                _productItemTempMgr.Delete(new ProductItemTemp { Writer_Id = _caller.user_id, Product_Id = product_id });
                                #region 保存ProductItemTemp

                                List<ProductSpecTemp> specAllResultList = _specTempMgr.Query(new ProductSpecTemp { Writer_Id = _caller.user_id, product_id = product_id });
                                List<ProductSpecTemp> spec1ResultList = specAllResultList.Where(m => m.spec_type == 1).ToList();
                                List<ProductSpecTemp> spec2ResultList = specAllResultList.Where(m => m.spec_type == 2).ToList();

                                List<ProductItemTemp> saveItemList = new List<ProductItemTemp>();

                                if (specType.Equals("1"))
                                {
                                    foreach (ProductSpecTemp specTemp1 in spec1ResultList)
                                    {
                                        ProductItemTemp itemTemp = new ProductItemTemp();
                                        itemTemp.Writer_Id = _caller.user_id;
                                        itemTemp.Product_Id = product_id;
                                        itemTemp.Spec_Id_1 = specTemp1.spec_id;
                                        //itemTemp.Item_Stock = 10;
                                        itemTemp.Item_Alarm = 1;
                                        saveItemList.Add(itemTemp);

                                    }
                                }
                                else if (specType.Equals("2"))
                                {
                                    foreach (ProductSpecTemp specTemp1 in spec1ResultList)
                                    {
                                        foreach (ProductSpecTemp specTemp2 in spec2ResultList)
                                        {
                                            ProductItemTemp itemTemp = new ProductItemTemp();
                                            itemTemp.Writer_Id = _caller.user_id;
                                            itemTemp.Product_Id = product_id;
                                            itemTemp.Spec_Id_1 = specTemp1.spec_id;
                                            itemTemp.Spec_Id_2 = specTemp2.spec_id;
                                            //itemTemp.Item_Stock = 10;
                                            itemTemp.Item_Alarm = 1;
                                            itemTemp.Item_Code = "";
                                            itemTemp.Barcode = "";
                                            saveItemList.Add(itemTemp);
                                        }
                                    }
                                }

                                //add by xiangwang 2014.09.26 可修改庫存預設值為99
                                //saveItemList.ForEach(m => m.SetDefaultItemStock(query));

                                bool saveItemResult = _productItemTempMgr.Save(saveItemList);

                                if (!saveItemResult)
                                {
                                    result = false;
                                }

                                #endregion

                            }
                            else
                            {
                                result = false;
                            }
                            #endregion
                        }
                        else
                        {
                            #region 更新
                            string strSpecInit = Request.Params["specInit"];
                            string[] specs = strSpecInit.Split(',');

                            List<ProductSpecTemp> addList = specAllList.Where(p => p.spec_id == 0).ToList();
                            if (addList.Count() > 0)
                            {
                                addList.ForEach(p => p.spec_id = uint.Parse(_serialMgr.NextSerial(18).ToString()));

                                List<ProductSpecTemp> specAllResultList = _specTempMgr.Query(new ProductSpecTemp { Writer_Id = _caller.user_id, product_id = product_id });
                                List<ProductSpecTemp> spec1ResultList = specAllResultList.Where(m => m.spec_type == 1).ToList();
                                List<ProductSpecTemp> spec2ResultList = specAllResultList.Where(m => m.spec_type == 2).ToList();
                                List<ProductItemTemp> saveItemList = new List<ProductItemTemp>();
                                foreach (ProductSpecTemp item in addList)
                                {
                                    if (specType.Equals("1"))
                                    {
                                        if (item.spec_type == 1)
                                        {
                                            ProductItemTemp saveTemp = new ProductItemTemp();
                                            saveTemp.Writer_Id = _caller.user_id;
                                            saveTemp.Spec_Id_1 = item.spec_id;
                                            saveTemp.Product_Id = product_id;
                                            //saveTemp.Item_Stock = 10;
                                            saveTemp.Item_Alarm = 1;
                                            saveItemList.Add(saveTemp);
                                        }
                                        else
                                        {
                                            ProductItemTemp saveTemp = new ProductItemTemp();
                                            saveTemp.Writer_Id = _caller.user_id;
                                            saveTemp.Spec_Id_2 = item.spec_id;
                                            saveTemp.Product_Id = product_id;
                                            // saveTemp.Item_Stock = 10;
                                            saveTemp.Item_Alarm = 1;
                                            saveItemList.Add(saveTemp);
                                        }
                                    }
                                    else
                                    {
                                        if (item.spec_type == 1)
                                        {
                                            foreach (ProductSpecTemp item1 in spec2ResultList)
                                            {
                                                ProductItemTemp saveTemp = new ProductItemTemp();
                                                saveTemp.Writer_Id = _caller.user_id;
                                                saveTemp.Spec_Id_1 = item.spec_id;
                                                saveTemp.Spec_Id_2 = item1.spec_id;
                                                //saveTemp.Item_Stock = 10;
                                                saveTemp.Item_Alarm = 1;
                                                saveTemp.Product_Id = product_id;
                                                saveItemList.Add(saveTemp);
                                            }

                                            foreach (ProductSpecTemp item1 in addList.Where(p => p.spec_type == 2).ToList())
                                            {
                                                ProductItemTemp saveTemp = new ProductItemTemp();
                                                saveTemp.Writer_Id = _caller.user_id;
                                                saveTemp.Spec_Id_1 = item.spec_id;
                                                saveTemp.Spec_Id_2 = item1.spec_id;
                                                //saveTemp.Item_Stock = 10;
                                                saveTemp.Item_Alarm = 1;
                                                saveTemp.Product_Id = product_id;
                                                saveItemList.Add(saveTemp);
                                            }
                                        }
                                        else
                                        {
                                            foreach (ProductSpecTemp item2 in spec1ResultList)
                                            {
                                                ProductItemTemp saveTemp = new ProductItemTemp();
                                                saveTemp.Writer_Id = _caller.user_id;
                                                saveTemp.Spec_Id_1 = item2.spec_id;
                                                saveTemp.Spec_Id_2 = item.spec_id;
                                                saveTemp.Product_Id = product_id;
                                                // saveTemp.Item_Stock = 10;
                                                saveTemp.Item_Alarm = 1;
                                                saveItemList.Add(saveTemp);
                                            }

                                        }
                                    }
                                }
                                _specTempMgr.Save(addList);

                                //add by xiangwang 2014.09.26 可修改庫存預設值為99
                                //saveItemList.ForEach(m => m.SetDefaultItemStock(query));

                                _productItemTempMgr.Save(saveItemList);

                            }

                            if (specs.Length > 0)
                            {
                                List<ProductSpecTemp> updateList = new List<ProductSpecTemp>();
                                foreach (string initSpecId in specs)
                                {
                                    ProductSpecTemp nowItem = specAllList.Where(p => p.spec_id == uint.Parse(initSpecId)).FirstOrDefault();
                                    if (nowItem != null)
                                    {
                                        updateList.Add(nowItem);
                                    }
                                    else
                                    {

                                        ProductItemTemp delTemp = new ProductItemTemp { Writer_Id = _caller.user_id, Product_Id = product_id };
                                        uint spectype = _specTempMgr.Query(new ProductSpecTemp { spec_id = uint.Parse(initSpecId), product_id = product_id })[0].spec_type;
                                        if (spectype == 1)
                                        {
                                            delTemp.Spec_Id_1 = uint.Parse(initSpecId);
                                        }
                                        else if (spectype == 2)
                                        {
                                            delTemp.Spec_Id_2 = uint.Parse(initSpecId);
                                        }
                                        if (!_productItemTempMgr.Delete(delTemp))
                                        {
                                            result = false;
                                        }
                                        if (!_specTempMgr.Delete(new ProductSpecTemp { spec_id = uint.Parse(initSpecId), Writer_Id = _caller.user_id, product_id = product_id }))
                                        {
                                            result = false;
                                        }
                                        DeletePicOnServer(false, true, false, uint.Parse(initSpecId), product_id);
                                    }

                                }
                                if (!_specTempMgr.Update(updateList, "spec"))
                                {
                                    result = false;
                                }
                            }

                            #endregion
                        }

                        #region 更新Product

                        ProductTemp proTemp = new ProductTemp();
                        proTemp.Writer_Id = _caller.user_id;
                        proTemp.Product_Spec = uint.Parse(specType);
                        proTemp.Spec_Title_1 = spec1Name;
                        proTemp.Spec_Title_2 = spec2Name;
                        proTemp.Combo_Type = COMBO_TYPE;
                        proTemp.Product_Id = product_id;
                        bool saveProductResult = _productTempMgr.SpecInfoSave(proTemp);
                        if (!saveProductResult)
                        {
                            result = false;
                        }
                        #endregion

                        #endregion
                    }
                    else
                    {
                        #region 無規格
                        List<ProductItemTemp> saveList = new List<ProductItemTemp>();
                        //如果原數據有規格
                        if (query.Product_Spec != 0)
                        {
                            //刪除服務器上對應的圖片
                            DeletePicOnServer(false, true, false, 0, product_id);

                            _productItemTempMgr.Delete(new ProductItemTemp { Writer_Id = _caller.user_id, Product_Id = product_id });

                            _specTempMgr.Delete(new ProductSpecTemp { Writer_Id = _caller.user_id, product_id = product_id });

                            _productTempMgr.SpecInfoSave(new ProductTemp { Product_Spec = 0, Spec_Title_1 = "", Spec_Title_2 = "", Writer_Id = _caller.user_id, Combo_Type = COMBO_TYPE, Product_Id = product_id });

                            saveList = new List<ProductItemTemp>();
                            saveList.Add(new ProductItemTemp { Writer_Id = _caller.user_id, Product_Id = product_id/*, Item_Stock = 10*/, Item_Alarm = 1 });
                        }
                        else
                        {
                            List<ProductItemTemp> itemQuery = _productItemTempMgr.Query(new ProductItemTemp { Writer_Id = _caller.user_id, Product_Id = product_id });
                            if (itemQuery.Count() <= 0)
                            {
                                saveList = new List<ProductItemTemp>();
                                saveList.Add(new ProductItemTemp { Writer_Id = _caller.user_id, Product_Id = product_id, /*Item_Stock = 10,*/ Item_Alarm = 1 });
                                // _productItemTempMgr.Save(saveList);
                            }
                        }

                        //add by xiangwang 2014.09.26 可修改庫存預設值為99
                        //saveList.ForEach(m => m.SetDefaultItemStock(query));
                        _productItemTempMgr.Save(saveList);

                        #endregion
                    }
                    #endregion

                    #region 調度或自出商品,商品庫存預設為99
                    var proditemTemp = new ProductItemTemp { Product_Id = product_id, Writer_Id = _caller.user_id };
                    proditemTemp.SetDefaultItemStock(query);
                    _productItemTempMgr.UpdateItemStock(proditemTemp);
                    #endregion
                }
            }
            catch (Exception ex)
            {
                result = false;
                Log4NetCustom.LogMessage logMessage = new Log4NetCustom.LogMessage();
                logMessage.Content = string.Format("TargetSite:{0},Source:{1},Message:{2}", ex.TargetSite.Name, ex.Source, ex.Message);
                logMessage.MethodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
                log.Error(logMessage);
            }

            if (!result)
            {
                resultStr = "{success:false,Msg:false}";
            }

            this.Response.Clear();
            this.Response.Write(resultStr);
            this.Response.End();
            return this.Response;
        }
        public HttpResponseBase PriceVerify()
        {
            string json = string.Empty;
            try
            {
                _pMaster = new PriceMasterMgr(connectionString);
                _pMasterTsMgr = new PriceMasterTsMgr(connectionString);
                _itemPriceMgr = new ItemPriceMgr("");
                _itemPriceTsMgr = new ItemPriceTsMgr("");
                _prodMgr = new ProductMgr(connectionString);
                _tableHistoryMgr = new TableHistoryMgr(connectionString);
                _pHMgr = new PriceUpdateApplyHistoryMgr(connectionString);

                List<PriceMaster> priceMasters = JsonConvert.DeserializeObject<List<PriceMaster>>(Request.Params["priceMasters"]);

                List<PriceUpdateApplyHistory> pHList = new List<PriceUpdateApplyHistory>();

                _functionMgr = new FunctionMgr(connectionString);
                string function = Request.Params["function"] ?? "";
                Function fun = _functionMgr.QueryFunction(function, "/ProductList/PriceVerifyList");
                int functionid = fun == null ? 0 : fun.RowId;
                HistoryBatch batch = new HistoryBatch { functionid = functionid, kuser = (Session["caller"] as Caller).user_email };
                string batchNo = CommonFunction.GetPHPTime().ToString() + "_" + (Session["caller"] as Caller).user_id + "_";

                int operationType = int.Parse(Request.Params["type"]);
                //edit by xiangwang0413w 2014/08/12 批量審核價格
                foreach (var item in priceMasters)
                {
                    //加上price_master 表中同一個product_id的所有價格 add by hufeng0813w 2014/06/12 Reason 各自定價父商品和子商品的價格狀態要同時更新
                    List<PriceMaster> ListpM = _pMasterTsMgr.QueryByApplyId(new PriceMaster { product_id = item.product_id, apply_id = item.apply_id });

                    //價格審核詳情
                    PriceUpdateApplyHistory pH = new PriceUpdateApplyHistory();
                    pH.user_id = (Session["caller"] as Caller).user_id;
                    pH.type = operationType;
                    pH.apply_id = (int)ListpM[0].apply_id;
                    foreach (var pM in ListpM)
                    {
                        ArrayList aList = new ArrayList();
                        uint applyId = pM.apply_id;
                        batch.batchno = batchNo + pM.product_id;
                        ItemPrice ip = new ItemPrice { price_master_id = pM.price_master_id, apply_id = pM.apply_id };
                        if (operationType == 1)//核可
                        {
                            pM.apply_id = 0;
                            pM.price_status = 1;

                            pH.price_status = 1; // 價格狀態為 1 :上架
                            pH.type = 2; //操作動作為2:核可
                            pHList.Add(pH);

                            aList.Add(_pMaster.Update(pM));//核可更新price_master表
                            if (pM.product_id != pM.child_id)
                            {
                                aList.Add(_itemPriceMgr.UpdateFromTs(ip));  //將Item_price_ts相對應數據導入Item_price表
                                aList.Add(_itemPriceTsMgr.DeleteTs(ip)); //更新成功後,刪除item_price_ts相應數據
                            }
                        }
                        else//駁回
                        {
                            pM.price_status = 3;
                            pH.price_status = 3; //加個狀態為 申請駁回
                            pH.type = 3; //操作動作為 3:駁回
                            pH.remark = Request.Params["reason"];
                            pHList.Add(pH);
                            if (pM.product_id != pM.child_id)
                            {
                                aList.Add(_itemPriceTsMgr.DeleteTs(ip)); //更新成功後,刪除item_price_ts相應數據
                            }
                        }
                        aList.Add(_pMasterTsMgr.DeleteTs(new PriceMaster { price_master_id = pM.price_master_id, apply_id = applyId }));//審核完成後刪除price_master_ts表
                        _tableHistoryMgr.SaveHistory<PriceMaster>(pM, batch, aList);
                    }
                }

                if (operationType == 1)//核可
                {
                    string[] prodList = (from p in priceMasters select p.product_id.ToString()).ToArray();

                    //將 獲取 時間 代碼提前  是後面獲得的 時間 相同
                    uint TimeNow = uint.Parse(CommonFunction.GetPHPTime(DateTime.Now.ToString()).ToString());

                    for (int i = 0; i < prodList.Length; i++)
                    {
                        ArrayList pList = new ArrayList();
                        //查詢product
                        Product product = _prodMgr.Query(new Product() { Product_Id = uint.Parse(prodList[i]) })[0];
                        if (product.Product_Start < TimeNow && product.Product_End > TimeNow)
                        {
                            product.Product_Start = TimeNow;
                        }
                        //p.Product_Status = 5; //價格審核不應該更改商品狀態 edit by xiangwang0413w 20140826
                        pList.Add(_prodMgr.Update(product));
                        batch.batchno = batchNo + product.Product_Id;
                        _tableHistoryMgr.SaveHistory<Product>(product, batch, pList);
                    }

                }
                //價格審核記錄
                _pHMgr.Save(pHList);
                json = "{success:true}";
            }
            catch (Exception ex)
            {
                Log4NetCustom.LogMessage logMessage = new Log4NetCustom.LogMessage();
                logMessage.Content = string.Format("TargetSite:{0},Source:{1},Message:{2}", ex.TargetSite.Name, ex.Source, ex.Message);
                logMessage.MethodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
                log.Error(logMessage);
                json = "{success:false}";
            }
            this.Response.Clear();
            this.Response.Write(json);
            this.Response.End();
            return this.Response;
        }
Exemple #6
0
        public override bool Exec()
        {
            bool result = true;
            try
            {
                foreach (MigrationDataSet item in mds)
                {
                    form.change(1);
                    if (!item.Combination.Equals("199") && !item.Product_id.Equals("0"))
                    {
                        pMap = _pMap.GetSingle(new ProductMigrationMap { temp_id = item.Product_id });
                        if (pMap != null)
                        {
                            item.OutMessage = "此記錄暫時編號(product_id)已經存在;";
                            continue;
                        }
                        else
                        {
                            pMap = new ProductMigrationMap();
                        }
                    }


                    ArrayList insertList = new ArrayList();


                    //Product
                    prod = _prodMgr.Query(new Product { Product_Id = uint.Parse(item.Product_id) }).FirstOrDefault();
                    //product.user_id:同此品牌廠商之verdor.product_manage
                    if (!string.IsNullOrEmpty(item.Brand_name))
                    {
                        VendorBrand vb = _vendorBrandMgr.GetProductBrand(new VendorBrand { Brand_Id = uint.Parse(item.Brand_name) });
                        Vendor v = _vendorMgr.GetSingle(new Vendor { vendor_id = vb.Vendor_Id });
                        prod.user_id = v.product_manage;
                    }
                    if (!string.IsNullOrEmpty(item.Brand_name)) prod.Brand_Id = uint.Parse(item.Brand_name);
                    prod.Ignore_Stock = 0;        //默認false
                    if (!string.IsNullOrEmpty(item.Cate_id)) prod.Cate_Id = item.Cate_id;
                    if (!string.IsNullOrEmpty(item.Status)) prod.Product_Status = uint.Parse(item.Status);
                    if (!string.IsNullOrEmpty(item.Freight_set)) prod.Product_Freight_Set = uint.Parse(item.Freight_set);
                    if (!string.IsNullOrEmpty(item.Product_mode)) prod.Product_Mode = uint.Parse(item.Product_mode);
                    if (!string.IsNullOrEmpty(item.Tax)) prod.Tax_Type = int.Parse(item.Tax);
                    prod.Shortage = 0;    //默認false
                    if (!string.IsNullOrEmpty(item.Product_name)) prod.Product_Name = item.Product_name;
                    prod.Product_Createdate = uint.Parse(BLL.gigade.Common.CommonFunction.GetPHPTime().ToString());
                    if (!string.IsNullOrEmpty(item.Service_Fee))
                    {
                        uint bag_check_money = 0;
                        uint.TryParse(item.Service_Fee, out bag_check_money);
                        prod.Bag_Check_Money = bag_check_money;
                    }
                    prod.Combination = 1;

                    //product_item
                    List<ProductItem> piList = _prodItemMgr.Query(new ProductItem { Product_Id = uint.Parse(item.Product_id) });
                    if (piList.Count > 0)
                    {
                        piList.ForEach(rec =>
                        {
                            if (!string.IsNullOrEmpty(item.Stock)) rec.Item_Stock = int.Parse(item.Stock);
                            if (!string.IsNullOrEmpty(item.Price)) rec.Item_Money = uint.Parse(item.Price);
                            if (!string.IsNullOrEmpty(item.Cost)) rec.Item_Cost = uint.Parse(item.Cost);
                        });
                    }

                    List<PriceMaster> pmList = new List<PriceMaster>();
                    List<PriceMaster> pmaterList = _priceMgr.PriceMasterQuery(new PriceMaster { product_id = uint.Parse(item.Product_id) });
                    pM.bonus_percent = 1;
                    pM.default_bonus_percent = 1;
                    pM.price_status = 1;
                    if (string.IsNullOrEmpty(item.Price))
                    {
                        pM.price = int.Parse(piList.Min(rec => rec.Item_Money).ToString());
                    }
                    else
                    {
                        pM.price = int.Parse(item.Price);
                    }
                    if (string.IsNullOrEmpty(item.Cost))
                    {
                        pM.cost = int.Parse(piList.Min(rec => rec.Item_Cost).ToString());
                    }
                    else
                    {
                        pM.cost = int.Parse(item.Cost);
                    }
                    pM.user_level = 1;
                    pM.user_id = 0;
                    pM.product_name = prod.Product_Name;
                    pM.same_price = piList.GroupBy(rec => rec.Item_Money).Count() <= 1 ? 1 : 0;
                    pM.child_id = 0;
                    prod.Product_Price_List = uint.Parse(pM.price.ToString());
                    if (pmaterList.Count == 0)
                    {
                        //price_master
                        if (item.Site != "1")//若不為吉甲地,則將吉甲地站臺也加入
                        {
                            //先把添加非吉甲地的站臺
                            pM.site_id = uint.Parse(item.Site);
                            pmList.Add(pM);
                            //再添加吉甲地站臺且價格狀態為4(下架)
                            PriceMaster pMgigade = pM.Clone() as PriceMaster;
                            pMgigade.site_id = 1;
                            pMgigade.price_status = 4;
                            pmList.Add(pMgigade);
                        }
                        else
                        {
                            pM.site_id = 1;
                            pmList.Add(pM);
                        }
                    }
                    else
                    {
                        #region 舊商品price_master中有值
                        PriceMaster pmaster = pmaterList.Where(rec => rec.site_id == 1).FirstOrDefault();
                        List<PriceMaster> oldPriceList = pmaterList.Where(rec => rec.site_id != 1).ToList();

                        if (item.Site == "1")
                        {
                            if (pmaster != null)//存在吉甲地站臺價格
                            {
                                //更新吉甲地站臺價格
                                if (!string.IsNullOrEmpty(item.Price)) { pmaster.price = int.Parse(item.Price); prod.Product_Price_List = uint.Parse(item.Price); }
                                if (!string.IsNullOrEmpty(item.Cost)) pmaster.cost = int.Parse(item.Cost);
                                if (!string.IsNullOrEmpty(item.Product_name)) pmaster.product_name = item.Product_name;
                                pmList.Add(pmaster);
                            }
                            else
                            {
                                pM.site_id = 1;
                                pmList.Add(pM);
                                prod.Product_Price_List = uint.Parse(pM.price.ToString());
                            }

                            //將原商品其他站臺價格複製
                            if (oldPriceList.Count > 0)
                            {
                                oldPriceList.ForEach(rec => pmList.Add(rec));
                            }
                        }
                        else//需匯入的商品價格不為吉甲地站臺價格
                        {
                            if (pmaster != null)//存在吉甲地站臺價格,則複製,否,則新建
                            {
                                pmList.Add(pmaster);
                                prod.Product_Price_List = uint.Parse(pmaster.price.ToString());
                            }
                            else
                            {
                                pM.site_id = 1;
                                pmList.Add(pM);
                                prod.Product_Price_List = uint.Parse(pM.price.ToString());
                            }

                            if (oldPriceList.Count > 0)
                            {
                                //處理當前站臺價格
                                PriceMaster nowPm = oldPriceList.Where(rec => rec.site_id == uint.Parse(item.Site)).FirstOrDefault();
                                if (nowPm != null)
                                {
                                    if (!string.IsNullOrEmpty(item.Price)) { nowPm.price = int.Parse(item.Price); prod.Product_Price_List = uint.Parse(item.Price); }
                                    if (!string.IsNullOrEmpty(item.Cost)) nowPm.cost = int.Parse(item.Cost);
                                    if (!string.IsNullOrEmpty(item.Product_name)) nowPm.product_name = item.Product_name;
                                    pmList.Add(nowPm);
                                }
                                else
                                {
                                    pM.site_id = uint.Parse(item.Site);
                                    pmList.Add(pM);
                                }
                                //處理其他站臺價格
                                List<PriceMaster> otherPriceList = oldPriceList.Where(rec => rec.site_id != uint.Parse(item.Site) && rec.site_id != 1).ToList();
                                if (otherPriceList.Count > 0) otherPriceList.ForEach(rec => pmList.Add(rec));

                            }
                            else//新建當前站臺的價格(按吉甲地站臺價格記錄取值)
                            {
                                pM.site_id = uint.Parse(item.Site);
                                pmList.Add(pM);
                            }
                        }
                        #endregion
                    }


                    #region item_price
                    List<List<ItemPrice>> ipListL = new List<List<ItemPrice>>();
                    List<ItemPrice> ipList = new List<ItemPrice>();
                    if (piList.Count > 0)
                    {
                        foreach (ProductItem proItem in piList)
                        {
                            ItemPrice iP = new ItemPrice();
                            iP.item_id = proItem.Item_Id;
                            iP.item_money = proItem.Item_Money;
                            iP.item_cost = proItem.Item_Cost;
                            ipList.Add(iP);
                        }
                        pmList.ForEach(rec => ipListL.Add(ipList));
                    }

                    #endregion

                    #region product_spec
                    List<ProductSpec> proSpecs = _proSpecMgr.Query(new ProductSpec { product_id = uint.Parse(item.Product_id) });
                    ArrayList specs = new ArrayList();
                    if (proSpecs != null)
                    {
                        StringBuilder str;
                        foreach (var specItem in proSpecs)
                        {
                            str = new StringBuilder();
                            str.Append(_proSpecMgr.SaveFromSpec(new ProductSpec { product_id = specItem.product_id, spec_id = specItem.spec_id }));
                            str.Append(_prodItemMgr.UpdateCopySpecId(new ProductItem { Spec_Id_1 = specItem.spec_id, Spec_Id_2 = specItem.spec_id }));
                            specs.Add(str.ToString());
                        }
                    }
                    #endregion

                    #region product_category_set
                    if (!string.IsNullOrEmpty(item.Display))
                    {
                        string[] cateArray = item.Display.Split(',');
                        foreach (string strcate in cateArray)
                        {
                            categorySet.Brand_Id = uint.Parse(item.Brand_name);
                            categorySet.Category_Id = uint.Parse(strcate);
                            insertList.Add(_productCategorySetMgr.SaveNoPrid(categorySet));
                        }
                    }
                    else
                    {
                        insertList.Add(_productCategorySetMgr.SaveFromOtherPro(new ProductCategorySet { Product_Id = uint.Parse(item.Product_id) }));
                    }

                    #endregion

                    #region product_migration_map
                    pMap.temp_id = item.Product_id;
                    insertList.Add(_pMap.SaveNoPrid(pMap));
                    #endregion

                    //tag notice picture
                    insertList.Add(_productNoticeSetMgr.SaveFromOtherPro(new ProductNoticeSet { product_id = uint.Parse(item.Product_id) }));
                    insertList.Add(_productTagSetMgr.SaveFromOtherPro(new ProductTagSet { product_id = uint.Parse(item.Product_id) }));
                    insertList.Add(_productPictureMgr.SaveFromOtherPro(new ProductPicture { product_id = int.Parse(item.Product_id) }));
                    insertList.Add(_proStatusHistoryMgr.SaveNoProductId(new ProductStatusHistory { product_status = int.Parse(item.Status), type = 7, user_id = 0 }));     //商品歷史記錄
                    result = _prodMgr.ProductMigration(prod, pmList, piList, ipListL, insertList, specs);

                    #region 原update邏輯代碼
                    /*ArrayList saveArray = new ArrayList();
                    saveArray.Add(_prodMgr.Update(prod));

                    PriceMaster queryMaster = _priceMgr.QueryByUserId(new PriceMaster { product_id = uint.Parse(item.Product_id) }).FirstOrDefault();
                    if (queryMaster == null)            //新增
                    {
                        //price_master
                        pM.product_id = uint.Parse(item.Product_id);
                        pM.bonus_percent = 1;
                        pM.default_bonus_percent = 1;
                        pM.price_status = 1;
                        pM.cost = int.Parse(item.Cost);
                        pM.price = int.Parse(item.Price);
                        pM.user_level = 1;
                        pM.site_id = uint.Parse(item.Site);
                        pM.user_id = 0;
                        pM.product_name = item.Product_name;
                        pM.same_price = 1;
                        pM.child_id = 0;

                        //item_price
                        List<ItemPrice> ipList = new List<ItemPrice>();
                        List<ProductItem> queryList = _prodItemMgr.Query(new ProductItem { Product_Id = uint.Parse(item.Product_id) });
                        foreach (ProductItem proItem in queryList)
                        {
                            iPrice.item_id = proItem.Item_Id;
                            iPrice.item_money = uint.Parse(item.Price);
                            iPrice.item_cost = uint.Parse(item.Cost);
                            ipList.Add(iPrice);
                        }

                        //保存
                        string strError = "";
                        if (_priceMgr.Save(pM, ipList, saveArray, ref strError) <= 0)
                        {
                            result = false;
                        }
                    }
                    else      //更新
                    {
                        //price_master
                        queryMaster.cost = int.Parse(item.Cost);
                        queryMaster.price = int.Parse(item.Price);
                        queryMaster.user_level = 1;
                        queryMaster.site_id = uint.Parse(item.Site);
                        queryMaster.user_id = 0;
                        queryMaster.same_price = 1;
                        queryMaster.child_id = 0;
                        saveArray.Add(_priceMgr.Update(queryMaster));

                        //item_price
                        List<ItemPrice> itemPriceList = _itemPriceMgr.itemPriceQuery(new ItemPrice { price_master_id = queryMaster.price_master_id });
                        if (itemPriceList != null && itemPriceList.Count() > 0)     //存在item_price则更新,否则新增item_price
                        {
                            foreach (ItemPrice priceItem in itemPriceList)
                            {
                                priceItem.item_cost = uint.Parse(item.Cost);
                                priceItem.item_money = uint.Parse(item.Price);
                                saveArray.Add(_itemPriceMgr.Update(priceItem));
                            }
                        }
                        else
                        {
                            List<ProductItem> proItemList = _prodItemMgr.Query(new ProductItem { Product_Id = uint.Parse(item.Product_id) });
                            foreach (ProductItem proitemItem in proItemList)
                            {
                                iPrice.price_master_id = queryMaster.price_master_id;
                                iPrice.item_id = proitemItem.Item_Id;
                                iPrice.item_money = uint.Parse(item.Price);
                                iPrice.item_cost = uint.Parse(item.Cost);
                                saveArray.Add(_itemPriceMgr.Save(iPrice));
                            }
                        }

                        BLL.gigade.Dao.MySqlDao _mySqlDao = new BLL.gigade.Dao.MySqlDao(connectionString);
                        result = _mySqlDao.ExcuteSqls(saveArray);
                    }*/

                    #endregion

                }

            }
            catch (Exception)
            {

                throw;
            }

            return result;
        }
Exemple #7
0
        public override bool Exec()
        {
            bool result = true;
            PriceMaster priceMaster = new PriceMaster();
            foreach (MigrationDataSet item in mds)
            {
                result = true;
                form.change(1);
                //如果价格档原料编号新旧为new,则从对照表取出formula对应的product_id.
                //if (item.New_old.Equals("new"))
                //{
                ProductMigrationMap mapQuery = _pMap.GetSingle(new ProductMigrationMap { temp_id = item.Formula });
                if (mapQuery != null)
                {
                    item.Formula = mapQuery.product_id.ToString();
                }
                else
                {
                    item.OutMessage = "formula對照不存在";
                    result = false;
                    continue;
                }

                //}

                #region 原逻辑
                //如果价格档中无价格,则取formula对应PriceMaster中站台为gigade的价格.
                //if (string.IsNullOrEmpty(item.Price) || string.IsNullOrEmpty(item.Cost))
                //{

                //    PriceMaster priceQuery = _priceMgr.PriceMasterQuery(new PriceMaster { product_id = uint.Parse(item.Formula), site_id = 1 }).FirstOrDefault();
                //    if (priceQuery != null)
                //    {
                //        item.Cost = priceQuery.cost.ToString();
                //        item.Price = priceQuery.price.ToString();
                //    }
                //    else
                //    {
                //        item.OutMessage = "price,cost不存在";
                //        result = false;
                //        continue;
                //    }
                //} 
                #endregion

                //获取product_id对应product_item中的价格
                if (!item.Product_id.Equals("0"))
                {
                    ProductItem itemQuery = _prodItemMgr.Query(new ProductItem { Product_Id = uint.Parse(item.Product_id) }).FirstOrDefault();
                    if (itemQuery != null)
                    {
                        item.Cost = itemQuery.Item_Cost.ToString();
                        item.Price = itemQuery.Item_Money.ToString();
                    }
                    else
                    {
                        item.OutMessage = "product_item中无product_id信息;";
                        result = false;
                        continue;
                    }
                }
                else
                {
                    item.OutMessage = "product_id不存在;";
                    result = false;
                    continue;
                }



                //price_master
                priceMaster.product_id = uint.Parse(item.Formula);
                priceMaster.cost = int.Parse(item.Cost);
                priceMaster.price = int.Parse(item.Price);
                priceMaster.price_status = 1;
                priceMaster.user_level = 1;
                priceMaster.default_bonus_percent = 1;
                priceMaster.bonus_percent = 1;
                priceMaster.site_id = uint.Parse(item.Site);
                priceMaster.user_id = 0;
                priceMaster.product_name = item.Product_name;
                priceMaster.same_price = 1;
                priceMaster.child_id = 0;

                //item_price
                List<ItemPrice> ipList = new List<ItemPrice>();
                List<ProductItem> queryList = _prodItemMgr.Query(new ProductItem { Product_Id = uint.Parse(item.Formula) });
                foreach (ProductItem proItem in queryList)
                {
                    iPrice = new ItemPrice();
                    iPrice.item_id = proItem.Item_Id;
                    iPrice.item_money = uint.Parse(item.Price);
                    iPrice.item_cost = uint.Parse(item.Cost);
                    ipList.Add(iPrice);
                }
                ArrayList others = new ArrayList();
                Site site = _siteMgr.Query(new Site { Site_Id = uint.Parse(item.Site) }).FirstOrDefault();
                if (site.Site_Name.Trim().ToLower() == "chinatrust")
                {
                    Product pro = _prodMgr.Query(new Product { Product_Id = mapQuery.product_id }).FirstOrDefault();
                    if (pro == null)
                    {
                        item.OutMessage = "商品不存在";
                        continue;
                    }
                    #region 更新該站臺商品的 product_category_set

                    string[] cateArray = item.Display.Split(',');
                    foreach (string strcate in cateArray)
                    {
                        ProductCategorySet category = new ProductCategorySet { Brand_Id = pro.Brand_Id, Category_Id = uint.Parse(strcate), Product_Id = mapQuery.product_id };
                        if (_productCategorySetMgr.Query(category).FirstOrDefault() == null)
                        {
                            others.Add(_productCategorySetMgr.Save(category));
                        }
                        else
                        {
                            item.OutMessage = "display:" + strcate + " 已存在;";
                            result = false;
                            break;
                        }
                    }
                    if (!result) continue;
                }
                    #endregion

                //保存
                string strError = "";
                if (_priceMgr.Save(priceMaster, ipList, others, ref strError) <= 0)
                {
                    result = false;
                    item.OutMessage = strError;
                    if (strError == "")
                    {
                        item.OutMessage = "匯入失敗";
                    }
                }
                else
                {
                    item.OutMessage = "匯入成功";
                }

            }
            return result;
        }