예제 #1
0
 public ReturnType AddStockHouseProduct(StockHouseProduct stockHouseProduct)
 {
     try
     {
         using (AladingEntities alading = new AladingEntities(AppSettings.GetConnectionString()))
         {
             alading.AddToStockHouseProduct(stockHouseProduct);
             if (alading.SaveChanges() == 1)
             {
                 return(ReturnType.Success);
             }
             else
             {
                 return(ReturnType.PropertyExisted);
             }
         }
     }
     catch (SqlException sex)
     {
         return(ReturnType.ConnFailed);
     }
     catch (Exception ex)
     {
         return(ReturnType.OthersError);
     }
 }
예제 #2
0
        /// <summary>
        /// 库位变化
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void rICBLayout_SelectedIndexChanged(object sender, EventArgs e)
        {
            DataRow row = gvProductCheck.GetFocusedDataRow();

            if (row != null)
            {
                gvProductCheck.BeginUpdate();
                string       houseCode = (comboBoxStockHouse.Tag as Hashtable)[comboBoxStockHouse.SelectedIndex].ToString();
                ComboBoxEdit cbe       = (ComboBoxEdit)sender;
                row[gcLayoutName.FieldName] = cbe.Properties.Items[cbe.SelectedIndex].ToString();

                Hashtable table      = rICBLayout.Tag as Hashtable;
                string    layoutCode = table[cbe.SelectedIndex].ToString();
                row[gcLayoutCode.FieldName] = layoutCode;
                List <StockHouseProduct> list = StockHouseService.GetStockHouseProduct(c => c.HouseCode == houseCode && c.LayoutCode == layoutCode && c.SkuOuterID == row[gcSkuOuterID.FieldName].ToString());
                if (list.Count > 0)
                {
                    StockHouseProduct houseProduct = list.First();
                    row[gcSkuQuantity.FieldName] = houseProduct.Num;
                }
                else
                {
                    row[gcSkuQuantity.FieldName] = 0;
                }
                gvProductCheck.EndUpdate();
                CalculateProfitOrLoss();
                GetDetails();
            }
            gvProductCheck.BestFitColumns();
            gridViewDetail.BestFitColumns();
        }
예제 #3
0
 public ReturnType AddInOutAndDetails(StockInOut stockInOut, PayCharge payChage, List <StockDetail> sdList, List <StockHouseProduct> shpList, List <View_StockItemProduct> vsipList)
 {
     System.Data.Common.DbTransaction tran = null;
     using (AladingEntities alading = new AladingEntities(AppSettings.GetConnectionString()))
     {
         try
         {
             alading.Connection.Open();
             tran = alading.Connection.BeginTransaction();
             alading.AddToPayCharge(payChage);
             alading.AddToStockInOut(stockInOut);
             foreach (StockDetail sd in sdList)
             {
                 alading.AddToStockDetail(sd);
             }
             foreach (StockHouseProduct shp in shpList)
             {
                 StockHouseProduct tmpshp = alading.StockHouseProduct.FirstOrDefault(c => c.HouseProductCode == shp.HouseProductCode);
                 if (tmpshp != null)
                 {
                     tmpshp.Num = shp.Num;
                 }
                 else
                 {
                     alading.AddToStockHouseProduct(shp);
                 }
             }
             foreach (View_StockItemProduct vsip in vsipList)
             {
                 StockItem    stockItem    = alading.StockItem.FirstOrDefault(s => s.OuterID == vsip.OuterID);
                 StockProduct stockProduct = alading.StockProduct.FirstOrDefault(s => s.SkuOuterID == vsip.SkuOuterID);
                 stockItem.TotalQuantity     = Math.Round(vsip.TotalQuantity, 3);
                 stockProduct.SkuQuantity    = vsip.SkuQuantity;
                 stockProduct.LastStockPrice = vsip.LastStockPrice;
                 stockProduct.AvgStockPrice  = vsip.AvgStockPrice;
             }
             alading.SaveChanges();
             tran.Commit();
             return(ReturnType.Success);
         }
         catch (System.Exception ex)
         {
             if (tran != null)
             {
                 tran.Rollback();
             }
             return(ReturnType.SaveFailed);
         }
         finally
         {
             if (alading != null && alading.Connection.State != System.Data.ConnectionState.Closed)
             {
                 alading.Connection.Close();
             }
         }
     }
 }
예제 #4
0
        public ReturnType AddStockInOutDetail(List <Alading.Entity.StockInOut> stockInOutList, List <StockDetail> stockDetailList)
        {
            try
            {
                using (AladingEntities alading = new AladingEntities(AppSettings.GetConnectionString()))
                {
                    StockInOut stock = alading.StockInOut.FirstOrDefault(i => i.InOutCode == stockInOutList[0].InOutCode);
                    if (stock == null)
                    {
                        return(ReturnType.PropertyExisted);
                    }
                    foreach (StockInOut stockinout in stockInOutList)
                    {
                        alading.AddToStockInOut(stockinout);
                    }

                    foreach (StockDetail stockDetail in stockDetailList)
                    {
                        StockHouseProduct stockProduct = alading.StockHouseProduct.FirstOrDefault(i => i.SkuOuterID == stockDetail.ProductSkuOuterId && i.HouseCode == stockDetail.StockHouseCode && i.LayoutCode == stockDetail.StockLayOutCode);
                        if (stockProduct != null)
                        {
                            if (stockDetail.DetailType == (int)DetailType.AllocateIn)
                            {
                                stockProduct.Num += stockDetail.Quantity;
                            }
                            else if (stockDetail.DetailType == (int)DetailType.AllocateOut)
                            {
                                stockProduct.Num -= stockDetail.Quantity;
                            }
                        }
                        else
                        {
                            //从一个仓库调拨到另一个仓库中,此仓库没有此product
                            StockHouseProduct newProduct = new StockHouseProduct();
                            newProduct.HouseName        = stockDetail.HouseName;
                            newProduct.HouseCode        = stockDetail.StockHouseCode;
                            newProduct.HouseProductCode = Guid.NewGuid().ToString();
                            newProduct.LayoutCode       = stockDetail.StockLayOutCode;
                            newProduct.LayoutName       = stockDetail.LayoutName;
                            newProduct.Num        = stockDetail.Quantity;
                            newProduct.SkuOuterID = stockDetail.ProductSkuOuterId;
                            alading.AddToStockHouseProduct(newProduct);
                        }
                        alading.AddToStockDetail(stockDetail);
                    }
                    alading.SaveChanges();
                    return(ReturnType.Success);
                }
            }
            catch (Exception ex)
            {
                return(ReturnType.OthersError);
            }
        }
예제 #5
0
        /// <summary>
        /// 通过条形码获取商品
        /// </summary>
        /// <param name="barCode"></param>
        /// <param name="gridView"></param>
        /// <param name="dataTable"></param>
        /// <returns></returns>
        public bool GetProByBarCode(string barCode, GridView gridView, DataTable dataTable)
        {
            View_StockItemProduct vsip         = View_StockItemProductService.GetView_StockItemProductBySkuOuterId(barCode);
            StockHouseProduct     houseProduct = StockHouseService.GetStockHouseProduct(barCode);

            if (vsip != null)
            {
                DataRow dRow     = dataTable.NewRow();
                int     rowCount = gridView.RowCount;
                for (int i = 0; i < rowCount; i++)
                {
                    DataRow row = gridView.GetDataRow(i);
                    if (row["SkuOuterID"].ToString() == vsip.SkuOuterID)
                    {
                        return(true);
                    }
                }
                //dRow["Select"] = false;
                dRow["CatName"]       = vsip.CatName;
                dRow["StockCatName"]  = vsip.StockCatName;
                dRow["ProductName"]   = vsip.Name;
                dRow["Num"]           = vsip.SkuQuantity;
                dRow["HouseName"]     = houseProduct.HouseName;
                dRow["LayoutName"]    = houseProduct.LayoutName;
                dRow["SaleProps"]     = vsip.SkuProps_Str;
                dRow["Specification"] = vsip.Specification;
                dRow["Model"]         = vsip.Model;
                dRow["SkuOuterID"]    = barCode;
                dRow["OuterID"]       = vsip.OuterID;
                dRow["HouseCode"]     = houseProduct.HouseCode;
                dRow["LayoutCode"]    = houseProduct.LayoutCode;
                //dRow["Count"] = 0.0;
                dRow["price"]         = vsip.SkuPrice;
                dRow["StockUnitName"] = vsip.StockUnitName;
                dataTable.Rows.Add(dRow);
                gridView.BestFitColumns();
                return(true);
            }
            else
            {
                return(false);
            }
        }
예제 #6
0
 public int GetQuantity(string skuOuterID, string houseCode, string layoutCode)
 {
     try
     {
         using (AladingEntities alading = new AladingEntities(AppSettings.GetConnectionString()))
         {
             StockHouseProduct product = alading.StockHouseProduct.FirstOrDefault(i => i.SkuOuterID == skuOuterID && i.HouseCode == houseCode && i.LayoutCode == layoutCode);
             if (product != null)
             {
                 return(product.Num);
             }
             else
             {
                 return(0);
             }
         }
     }
     catch (System.Exception ex)
     {
         throw ex;
     }
 }
예제 #7
0
        /// <summary>
        /// 获取满足需求的商品列表
        /// </summary>
        /// <param name="value"></param>
        /// <param name="si"></param>
        void GetStockItem(string value, StockItemElement si)
        {
            WaitDialogForm waitForm = new WaitDialogForm(Constants.OPERATE_DB_DATA);

            waitForm.Show();
            try
            {
                table.Rows.Clear();
                List <string>            skuOuterIDList = new List <string>();
                List <StockHouseProduct> houseProList   = new List <StockHouseProduct>();//StockHouseService.GetSHProBySkuOuterID(skuOuterIDList);
                if (stockHouseCode == null)
                {
                    List <View_StockItemProduct> stockItemList;
                    if (si == StockItemElement.Name && !string.IsNullOrEmpty(value))
                    {
                        Func <View_StockItemProduct, bool> func = new Func <View_StockItemProduct, bool>(c => c.Name.Contains(value) || c.SkuOuterID.Contains(value));
                        stockItemList = View_StockItemProductService.GetView_StockItemProduct(func, currentIndex, dataPerPage, out allIndex);
                    }
                    else
                    {
                        stockItemList = View_StockItemProductService.GetView_StockItemProduct(value, currentIndex, dataPerPage, ref allIndex);
                    }
                    if (stockItemList == null)
                    {
                        waitForm.Close();
                        XtraMessageBox.Show("没有找到对应的商品!", Constants.SYSTEM_PROMPT);
                        return;
                    }
                    foreach (View_StockItemProduct stockItem in stockItemList)
                    {
                        DataRow           row          = table.NewRow();
                        StockHouseProduct houseProduct = houseProList.Find(c => c.SkuOuterID == stockItem.SkuOuterID);

                        /*读取选中的节点显示名称*/
                        row["Select"]            = false;
                        row["CatName"]           = stockItem.CatName;      //淘宝类目
                        row["Cid"]               = stockItem.Cid;          //淘宝类目
                        row["StockCatName"]      = stockItem.StockCatName; //库存类目名称
                        row["Name"]              = stockItem.Name;         //商品名称
                        row["Num"]               = stockItem.SkuQuantity;  //商品库存总数量
                        row["SaleProps"]         = stockItem.SkuProps_Str; //销售属性
                        row["SkuOuterID"]        = stockItem.SkuOuterID;   //
                        row["Model"]             = stockItem.Model;
                        row["Specification"]     = stockItem.Specification;
                        row["StockUnitName"]     = stockItem.StockUnitName;
                        row["OuterID"]           = stockItem.OuterID;//
                        row[gcTaxCode.FieldName] = stockItem.Tax;
                        //用于展示所选商品的属性
                        row["StockCid"]       = stockItem.StockCid;       //
                        row["Props"]          = stockItem.Props;          //
                        row["InputPids"]      = stockItem.InputPids;      //
                        row["InputStr"]       = stockItem.InputStr;       //
                        row["Property_Alias"] = stockItem.Property_Alias; //

                        #region 入库需要信息
                        row["SkuPrice"] = stockItem.SkuPrice;//销售价
                        if (houseProduct != null)
                        {
                            row["HouseName"]  = houseProduct.HouseName;  //仓库名称
                            row["LayoutName"] = houseProduct.LayoutName; //库位名称
                            row["HouseCode"]  = houseProduct.HouseCode;  //仓库编号
                            row["LayoutCode"] = houseProduct.LayoutCode; //库位编号
                        }
                        #endregion

                        table.Rows.Add(row);
                        skuOuterIDList.Add(stockItem.SkuOuterID);
                    }
                }
                else
                {
                    if (stockHouseCode.Trim() != string.Empty)
                    {
                        List <View_StockProductHouse> stockItemList = View_StockItemProductService.GetView_StockProductHouse(value, stockHouseCode, currentIndex, dataPerPage, ref allIndex);
                        if (stockItemList == null)
                        {
                            return;
                        }
                        if (stockHouseCode != string.Empty)
                        {
                            foreach (View_StockProductHouse stockItem in stockItemList)
                            {
                                DataRow           row          = table.NewRow();
                                StockHouseProduct houseProduct = houseProList.Find(c => c.SkuOuterID == stockItem.SkuOuterID);

                                /*读取选中的节点显示名称*/
                                row["Select"]            = false;
                                row["CatName"]           = stockItem.CatName;      //淘宝类目
                                row["StockCatName"]      = stockItem.StockCatName; //库存类目名称
                                row["Cid"]               = stockItem.Cid;          //淘宝类目
                                row["Name"]              = stockItem.Name;         //商品名称
                                row["Num"]               = stockItem.SkuQuantity;  //商品库存总数量
                                row["SaleProps"]         = stockItem.SkuProps_Str; //销售属性
                                row["SkuOuterID"]        = stockItem.SkuOuterID;   //
                                row["Model"]             = stockItem.Model;
                                row["Specification"]     = stockItem.Specification;
                                row["OuterID"]           = stockItem.OuterID;       //
                                row["StockUnitName"]     = stockItem.StockUnitName; //计量单位
                                row[gcTaxCode.FieldName] = stockItem.Tax;
                                //用于展示所选商品的属性
                                row["StockCid"]       = stockItem.StockCid;       //
                                row["Props"]          = stockItem.Props;          //
                                row["InputPids"]      = stockItem.InputPids;      //
                                row["InputStr"]       = stockItem.InputStr;       //
                                row["Property_Alias"] = stockItem.Property_Alias; //

                                #region 入库需要信息
                                row["SkuPrice"] = stockItem.SkuPrice;//销售价
                                if (houseProduct != null)
                                {
                                    row["HouseName"]  = houseProduct.HouseName;  //仓库名称
                                    row["LayoutName"] = houseProduct.LayoutName; //库位名称
                                    row["HouseCode"]  = houseProduct.HouseCode;  //仓库编号
                                    row["LayoutCode"] = houseProduct.LayoutCode; //库位编号
                                }
                                #endregion
                                table.Rows.Add(row);
                                skuOuterIDList.Add(stockItem.SkuOuterID);
                            }
                        }
                    }
                }

                gridCtrlStockItem.DataSource = table;
                gridViewSelected.BestFitColumns();
                gridViewStockItem.BestFitColumns();

                #region 判断4个分页按钮哪个的enable应为false*/
                if (allIndex <= 1)
                {
                    /*若页码总数为1,则所有分页按钮都为false*/
                    bbtnFirstIndex.Enabled    = false;
                    bbtnNextIndex.Enabled     = false;
                    bbtnPriviousIndex.Enabled = false;
                    bbtnLastIndex.Enabled     = false;
                }
                else if (currentIndex == 1)
                {
                    /*若页码总数不为1但当前页码为1*/
                    bbtnFirstIndex.Enabled    = false;
                    bbtnNextIndex.Enabled     = true;
                    bbtnPriviousIndex.Enabled = false;
                    bbtnLastIndex.Enabled     = true;
                }
                else if (currentIndex < allIndex)
                {
                    /*若页码总数不为1且当前页码不等于1且小于页码总数*/
                    bbtnFirstIndex.Enabled    = true;
                    bbtnNextIndex.Enabled     = true;
                    bbtnPriviousIndex.Enabled = true;
                    bbtnLastIndex.Enabled     = true;
                }
                else if (currentIndex == allIndex)
                {
                    bbtnFirstIndex.Enabled    = true;
                    bbtnNextIndex.Enabled     = false;
                    bbtnPriviousIndex.Enabled = true;
                    bbtnLastIndex.Enabled     = false;
                }
                #endregion

                /*显示当前页码,末尾加个空格避免触发事件*/
                bbtnComboxChangeTo.EditValue = "第" + currentIndex.ToString() + "页" + " ";
                waitForm.Close();
            }
            catch (Exception ex)
            {
                waitForm.Close();
                XtraMessageBox.Show(ex.ToString(), Constants.SYSTEM_PROMPT, MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
예제 #8
0
 public static ReturnType AddStockHouseProduct(StockHouseProduct stockHouseProduct)
 {
     return(DataProviderClass.Instance().AddStockHouseProduct(stockHouseProduct));
 }
예제 #9
0
        /// <summary>
        /// 初始化入库,将outer_id相同的商品作为同种商品处理,将成功的商品
        /// 从失败列表failedViewItemList里删除,并更新成功商品的IsAssociate为TRUE
        /// </summary>
        /// <param name="ViewItemlist"></param>
        private void InPutStock(List <ViewShopItemInherit> vItemlist, DoWorkEventArgs e)
        {
            if (vItemlist == null || vItemlist.Count == 0)
            {
                return;
            }
            //存放需要更新和关联的商品iid,outer_id
            Dictionary <string, string> itemOuterIdDic = new Dictionary <string, string>();

            //去除outer_id相同的商品
            List <ViewShopItemInherit> ViewItemlist = vItemlist.Distinct(new ShopItemComparer()).ToList();

            /*查找与数据库重复的商品,将其从入库列表中跳过*/
            List <string> dRepeatedOuterIdList = StockItemService.GetWhereInOuterIds(vItemlist.Select(v => v.outer_id).Distinct().ToList());

            ViewItemlist = ViewItemlist.SkipWhile(v => dRepeatedOuterIdList.Contains(v.outer_id)).ToList();
            /*将跳过入库的商品信息加进itemOuterIdDic中*/
            foreach (string outer_id in dRepeatedOuterIdList)
            {
                //失败列表删除与当前商品outer_id相同的所有商品
                inPutFailedViewItemList.RemoveAll(v => v.outer_id == outer_id);
                //查找所有outer_id下的商品iid并加入iidlist中
                vItemlist.FindAll(v => v.outer_id == outer_id).ForEach(a => itemOuterIdDic.Add(a.iid, a.outer_id));
            }
            if (ViewItemlist.Count > 0)
            {
                //获取cid下的所有属性值
                List <View_ItemPropValue> viewPropValueList = ItemPropValueService.GetView_ItemPropValueList(ViewItemlist.First().cid, "-1", "-1");

                /*销售属性是否有必填项*/
                bool salePropHasMust = false;
                if (viewPropValueList.Where(v => v.is_sale_prop && v.must).ToList().Count > 0)
                {
                    salePropHasMust = true;
                }

                //获取该类目下所有销售属性Id
                List <string> salePidList = viewPropValueList.Where(v => v.is_sale_prop).Select(v => v.pid).Distinct().ToList();

                /*StockInOut*/
                StockInOut stockIntOut = new StockInOut();
                #region 赋值stockInOut
                stockIntOut.AmountTax      = 0;
                stockIntOut.DiscountFee    = 0;
                stockIntOut.DueFee         = 0;
                stockIntOut.FreightCode    = string.Empty;
                stockIntOut.FreightCompany = string.Empty;
                stockIntOut.IncomeTime     = DateTime.Now;
                stockIntOut.InOutCode      = System.Guid.NewGuid().ToString();
                stockIntOut.InOutStatus    = (int)InOutStatus.AllReach;
                stockIntOut.InOutTime      = DateTime.Now;
                stockIntOut.InOutType      = (int)InOutType.InitInput;
                stockIntOut.IsSettled      = true;
                /*操作人*/
                stockIntOut.OperatorCode = string.Empty;
                stockIntOut.OperatorName = string.Empty;
                stockIntOut.PayTerm      = 0;
                stockIntOut.PayThisTime  = 0;
                stockIntOut.PayType      = (int)PayType.OTHER;
                /*模糊查询字段*/
                stockIntOut.SearchText     = string.Empty;
                stockIntOut.TradeOrderCode = string.Empty;
                stockIntOut.TransportCode  = string.Empty;
                #endregion

                //进度报告暂存值
                int temp = 0;
                #region for循环入库
                for (int j = 0; j < ViewItemlist.Count; j++)
                {
                    if (workerInput.CancellationPending)
                    {
                        e.Cancel = true;
                        break;
                    }
                    ViewShopItemInherit viewItem = ViewItemlist[j];

                    StockItem stock = new StockItem();
                    stock.HasSaleProps = !string.IsNullOrEmpty(viewItem.skus);
                    #region 赋值StockItem
                    stock.Name           = viewItem.title;
                    stock.SimpleName     = viewItem.title;
                    stock.OuterID        = viewItem.outer_id;
                    stock.TotalQuantity  = (double)viewItem.TotalQuantity;//总数量,默认值
                    stock.ProductID      = viewItem.product_id;
                    stock.CatName        = viewItem.name ?? string.Empty;
                    stock.Cid            = viewItem.cid ?? string.Empty;
                    stock.Created        = DateTime.Now;
                    stock.InputPids      = viewItem.input_pids ?? string.Empty;
                    stock.InputStr       = viewItem.input_str ?? string.Empty;
                    stock.IsConsignment  = false;
                    stock.KeyProps       = viewItem.KeyProps ?? string.Empty;
                    stock.Modified       = DateTime.Now;
                    stock.NotKeyProps    = viewItem.NotKeyProps ?? string.Empty;
                    stock.PicUrl         = viewItem.pic_url ?? string.Empty;
                    stock.Property_Alias = viewItem.property_alias ?? string.Empty;
                    stock.Props          = viewItem.props ?? string.Empty;
                    stock.SaleProps      = viewItem.StockProps ?? string.Empty;
                    /*库存类目*/
                    stock.StockCatName    = viewItem.StockCatName;
                    stock.StockCid        = viewItem.StockCid;
                    stock.StockItemCode   = System.Guid.NewGuid().ToString();
                    stock.StockItemDesc   = viewItem.desc ?? string.Empty;
                    stock.StockItemImgs   = viewItem.item_imgs ?? string.Empty;
                    stock.StockItemRemark = Constants.INIT_FROM_TOP;
                    stock.StockItemType   = (int)Alading.Core.Enum.StockItemType.FinishGoods;
                    stock.UnitCode        = viewItem.UnitCode; //单位

                    /*空值字段*/
                    stock.SearchText    = string.Empty;
                    stock.Specification = string.Empty;
                    stock.Model         = string.Empty;
                    stock.Tax           = string.Empty;
                    stock.TaxName       = string.Empty;
                    stock.StockProps    = string.Empty;//自定义属性
                    stock.StockCheckUrl = string.Empty;
                    /*辅助字段*/
                    stock.IsSelected = false;
                    #endregion

                    List <StockProduct>      stockProductList      = new List <StockProduct>();
                    List <StockDetail>       stockDetailList       = new List <StockDetail>();
                    List <StockHouseProduct> stockHouseProductList = new List <StockHouseProduct>();
                    int stockTotalQuantity = 0;
                    if (!string.IsNullOrEmpty(viewItem.props))
                    {
                        List <Taobao.Entity.Sku> skuList = new List <Taobao.Entity.Sku>();

                        SortedDictionary <string, List <string> > propValueDic = new SortedDictionary <string, List <string> >();
                        #region  照;分割,同时去掉空白项,每一项是一个pid:vid,值放进字典propValueDic里
                        List <string> propsList = viewItem.props.Split(new Char[] { ';' }, StringSplitOptions.RemoveEmptyEntries).ToList();
                        foreach (string pv in propsList)
                        {
                            string[] pvArr = pv.Split(new Char[] { ':' }, StringSplitOptions.RemoveEmptyEntries);
                            if (pvArr.Length == 2)
                            {
                                if (!propValueDic.Keys.Contains(pvArr[0]))
                                {
                                    List <string> vidlist = new List <string>();
                                    vidlist.Add(pvArr[1]);
                                    propValueDic.Add(pvArr[0], vidlist);
                                }
                                else
                                {
                                    propValueDic[pvArr[0]].Add(pvArr[1]);
                                }
                            }
                        }
                        #endregion

                        /*销售属性有两个,根据条件组合Sku*/
                        if (salePidList.Count == 2)
                        {
                            //保存有值的销售属性个数
                            int salePropValueCount = 0;
                            //将props里存在值的属性串的pid放进列表itemPidlist
                            List <string> itemPidList = propValueDic.Keys.ToList();
                            //求itemPidList与salePropIdList的交集,结果的个数表示销售属性选择的个数
                            salePropValueCount = itemPidList.Intersect(salePidList).ToList().Count;

                            #region 如果销售属性包含必选项但填写项数不为2,或者不包含必选项但选择项个数为1时,组合SKU
                            //用于存放两组vid列表
                            SortedList <string, List <string> > saleValueList = new SortedList <string, List <string> >();
                            if ((salePropHasMust && salePropValueCount != 2) || !salePropHasMust && salePropValueCount == 1)
                            {
                                #region 查询属性值放进saleValueList
                                for (int i = 0; i < 2; i++)
                                {
                                    string pid = salePidList[i];
                                    /*如果商该品选择了此销售属性,则把其值加进字典里*/
                                    if (propValueDic.Keys.Contains(pid))
                                    {
                                        saleValueList.Add(pid, propValueDic[pid]);
                                    }
                                    /*该商品没有选则此销售属性,则把此属性下的所有属性值加进字典*/
                                    else
                                    {
                                        List <string> vidlist = new List <string>();
                                        viewPropValueList.Where(v => v.is_sale_prop && v.pid == pid).Select(v => v.vid).Distinct().ToList().ForEach(a => vidlist.Add(a));
                                        saleValueList.Add(pid, vidlist);
                                    }
                                }
                                #endregion

                                #region 组合Sku,加进skuList
                                if (saleValueList.Count == 2)
                                {
                                    foreach (string vid0 in saleValueList.Values[0])
                                    {
                                        foreach (string vid1 in saleValueList.Values[1])
                                        {
                                            Taobao.Entity.Sku sku = new Taobao.Entity.Sku();
                                            sku.SkuProps = string.Format("{0}:{1};{2}:{3}", saleValueList.Keys[0], vid0, saleValueList.Keys[1], vid1);
                                            sku.Quantity = 0;
                                            sku.Price    = "0";
                                            /*sku.OuterId在这里不编码,最后统一编码*/
                                            skuList.Add(sku);
                                        }
                                    }
                                }
                                #endregion
                            }
                            #endregion
                        }

                        Alading.Taobao.Entity.Extend.Skus skus = JsonConvert.DeserializeObject <Alading.Taobao.Entity.Extend.Skus>(viewItem.skus);
                        if (skus != null && skus.Sku != null)
                        {
                            skuList.AddRange(skus.Sku);
                        }
                        if (skuList.Count == 0)
                        {
                            Taobao.Entity.Sku sku = new Taobao.Entity.Sku();
                            sku.SkuProps = string.Empty;
                            sku.Price    = viewItem.price;
                            sku.Quantity = (int)stock.TotalQuantity;
                            /*sku.OuterId在这里不编码,最后统一编码*/
                            skuList.Add(sku);
                        }
                        //根据SkuProps去重
                        skuList = skuList.Distinct(new SkuComparer()).ToList();
                        for (int i = 0; i < skuList.Count; i++)
                        {
                            Alading.Taobao.Entity.Sku sku = skuList[i];
                            StockProduct product          = new StockProduct();
                            #region 赋值StockProduct
                            product.LastStockPrice   = product.AvgStockPrice = 0;
                            product.CommissionPrice  = 0;
                            product.MaxSkuPrice      = 0;
                            product.MinSkuPrice      = 0;
                            product.OccupiedQuantity = 0;
                            product.OuterID          = stock.OuterID;
                            product.SkuQuantity      = sku.Quantity;
                            //重新计算库存总量
                            stockTotalQuantity += sku.Quantity;

                            product.SkuPrice = product.MarketPrice = sku.Price == null ? 0 : double.Parse(sku.Price);
                            //由于sku.OuterId是不允许编辑的,所有系统编码不会有重复
                            product.SkuOuterID = string.Format("{0}-{1}", product.OuterID, i + 1);
                            product.SkuProps   = sku.SkuProps;
                            //分割属性查找
                            #region 翻译销售属性组合
                            List <string> skuPropsList = product.SkuProps.Split(new Char[] { ';' }, StringSplitOptions.RemoveEmptyEntries).ToList();
                            string        propstr      = string.Empty;
                            //每个PV值都为pid:vid格式
                            foreach (string pv in skuPropsList)
                            {
                                string[] pvArr = pv.Split(new Char[] { ':' }, StringSplitOptions.RemoveEmptyEntries);
                                if (pvArr.Length == 2)
                                {
                                    View_ItemPropValue viewProp = viewPropValueList.SingleOrDefault(vv => vv.pid == pvArr[0] && vv.vid == pvArr[1]);
                                    if (viewProp != null)
                                    {
                                        //重新命名销售属性,如:1627207:28341:黑色;1627207:3232481:棕色
                                        if (!string.IsNullOrEmpty(viewItem.property_alias) && viewItem.property_alias.Contains(pv))
                                        {
                                            List <string> propertyAliasList = viewItem.property_alias.Split(new Char[] { ';' }, StringSplitOptions.RemoveEmptyEntries).ToList();
                                            foreach (string propertyAlias in propertyAliasList)
                                            {
                                                if (propertyAlias.Contains(pv))
                                                {
                                                    propstr += string.Format("{0}:{1};", viewProp.prop_name, propertyAlias.Substring(propertyAlias.LastIndexOf(':') + 1));
                                                    break;
                                                }
                                            }
                                        }
                                        else
                                        {
                                            propstr += string.Format("{0}:{1};", viewProp.prop_name, viewProp.name_alias);
                                        }
                                    }
                                }
                            }
                            propstr = propstr.TrimEnd(';');
                            if (string.IsNullOrEmpty(propstr))
                            {
                                product.SkuProps_Str = string.Empty;
                            }
                            else
                            {
                                /*重新分割,按默认排序进行排序*/
                                skuPropsList = propstr.Split(new Char[] { ';' }, StringSplitOptions.RemoveEmptyEntries).ToList();
                                skuPropsList.Sort();
                                foreach (string property in skuPropsList)
                                {
                                    product.SkuProps_Str += string.Format("{0};", property);
                                }
                                product.SkuProps_Str = product.SkuProps_Str.TrimEnd(';');
                            }
                            #endregion

                            product.ProductStatus      = 0;//
                            product.HighestNum         = 0;
                            product.IsUsingWarn        = false;
                            product.LowestNum          = 0;
                            product.PropsAlias         = string.Empty;
                            product.StockProductRemark = Constants.INIT_FROM_TOP;
                            product.WarningCount       = 0;
                            product.WholeSalePrice     = 0;
                            product.ProductTimeStamp   = new byte[] { };
                            #endregion
                            /*加入product列表*/
                            stockProductList.Add(product);

                            StockDetail stockDetail = new StockDetail();
                            #region 赋值StockDetail
                            stockDetail.DetailRemark   = string.Empty;
                            stockDetail.DetailType     = (int)DetailType.InitInput;
                            stockDetail.DurabilityDate = DateTime.Now;
                            /*仓库名称*/
                            stockDetail.HouseName       = viewItem.StockHouseName;
                            stockDetail.LayoutName      = viewItem.StockLayoutName;
                            stockDetail.StockHouseCode  = viewItem.StockHouseCode;
                            stockDetail.StockLayOutCode = viewItem.StockLayoutCode;

                            stockDetail.InOutCode         = stockIntOut.InOutCode;
                            stockDetail.Price             = float.Parse(product.SkuPrice.ToString());
                            stockDetail.ProductSkuOuterId = product.SkuOuterID;
                            stockDetail.Quantity          = product.SkuQuantity;
                            /*搜索字段*/
                            stockDetail.SearchText      = string.Empty;
                            stockDetail.StockDetailCode = System.Guid.NewGuid().ToString();
                            stockDetail.Tax             = string.Empty;
                            stockDetail.TotalFee        = float.Parse((product.SkuPrice * stockDetail.Quantity).ToString());
                            #endregion
                            /*加入stockDetail列表*/
                            stockDetailList.Add(stockDetail);

                            StockHouseProduct houseProduct = new StockHouseProduct();
                            #region 赋值StockHouseProduct
                            houseProduct.HouseCode        = viewItem.StockHouseCode;
                            houseProduct.HouseName        = viewItem.StockHouseName;
                            houseProduct.HouseProductCode = System.Guid.NewGuid().ToString();
                            houseProduct.LayoutCode       = viewItem.StockLayoutCode;
                            houseProduct.LayoutName       = viewItem.StockLayoutName;
                            houseProduct.Num        = product.SkuQuantity;
                            houseProduct.SkuOuterID = product.SkuOuterID;
                            #endregion
                            stockHouseProductList.Add(houseProduct);
                        }
                    }
                    //库存总量重新赋值
                    stock.TotalQuantity = stockTotalQuantity;
                    if (StockItemService.InitInput(stock, stockProductList, stockDetailList, stockHouseProductList) == ReturnType.Success)
                    {
                        StockInOutService.AddStockInOut(stockIntOut);
                        //成功一个,失败列表删除与当前商品outer_id相同的所有商品
                        inPutFailedViewItemList.RemoveAll(v => v.outer_id == viewItem.outer_id);
                        //查找所有outer_id下的商品iid并加入iidlist中
                        vItemlist.FindAll(v => v.outer_id == viewItem.outer_id).ForEach(a => itemOuterIdDic.Add(a.iid, a.outer_id));
                    }
                    //进度报告
                    if (workerInput != null)
                    {
                        int propgress = (int)((float)(j + 1) / ViewItemlist.Count * 100);
                        if (propgress > temp)
                        {
                            workerInput.ReportProgress(propgress, null);
                        }
                        temp = propgress;
                    }
                } //for
                #endregion
            }     // if (ViewItemlist.Count>0)

            /*更新入库成功商品的Outer_id及IsAssociate*/
            if (itemOuterIdDic.Count > 0)
            {
                ItemService.UpdateItemsOuterId(itemOuterIdDic, true);
            }
        }
예제 #10
0
        public ReturnType UpdateTradeRefund(List <TradeRefund> tradeRefundList, List <StockProduct> stockProductList, List <StockHouseProduct> houseProList
                                            , List <StockInOut> stockInOutList, List <StockDetail> stockDetailList, PayCharge payCharge, List <string> refundIdList
                                            , List <string> outerSkuIdList, List <string> outerIdList)
        {
            try
            {
                using (AladingEntities alading = new AladingEntities(AppSettings.GetConnectionString()))
                {
                    /*更新TradeRefund*/
                    var refundResult = alading.TradeRefund.Where(BuildWhereInExpression <TradeRefund, string>(v => v.refund_id, refundIdList));
                    if (refundResult == null)
                    {
                        return(ReturnType.NotExisted);
                    }

                    foreach (TradeRefund tradeRefund in tradeRefundList)//需要更新的新数据
                    {
                        TradeRefund oldRefund = refundResult.Where(c => c.refund_id == tradeRefund.refund_id).FirstOrDefault();
                        //TradeRefundCopydata(oldRefund, tradeRefund);
                        oldRefund.IsRecieved  = tradeRefund.IsRecieved;
                        oldRefund.LocalPrivyC = tradeRefund.LocalPrivyC;
                    }

                    /*更新StockProduct 和 StockItem*/
                    var stockProductResult = alading.StockProduct.Where(BuildWhereInExpression <StockProduct, string>(v => v.SkuOuterID, outerSkuIdList));
                    var stockItemResult    = alading.StockItem.Where(BuildWhereInExpression <StockItem, string>(v => v.OuterID, outerIdList));
                    if (stockProductResult == null || stockItemResult == null)
                    {
                        return(ReturnType.NotExisted);
                    }

                    foreach (StockProduct stockProduct in stockProductList)
                    {
                        //获取StockProduct的原始数据
                        StockProduct oldStockProduct = stockProductResult.Where(c => c.SkuOuterID == stockProduct.SkuOuterID).FirstOrDefault();
                        //获取StockItem的原始数据
                        StockItem oldStockItem = stockItemResult.Where(c => c.OuterID == stockProduct.OuterID).FirstOrDefault();
                        if (oldStockProduct != null && oldStockItem != null)
                        {
                            //获取StockProduct的相关原始数据的商品数量
                            oldStockProduct.SkuQuantity = oldStockProduct.SkuQuantity + stockProduct.SkuQuantity;
                            //获取oldStockItem的相关原始数据的商品数量
                            oldStockItem.TotalQuantity = oldStockItem.TotalQuantity + stockProduct.SkuQuantity;
                        }
                        else
                        {
                            return(ReturnType.NotExisted);
                        }
                    }

                    /*添加或更新StockHouseProduct*/
                    var stockHouseProResult = alading.StockHouseProduct.Where(BuildWhereInExpression <StockHouseProduct, string>(v => v.SkuOuterID, outerSkuIdList));
                    foreach (StockHouseProduct stockHousePro in houseProList)
                    {
                        StockHouseProduct oldPro = stockHouseProResult.Where(c => c.SkuOuterID == stockHousePro.SkuOuterID &&
                                                                             c.HouseCode == stockHousePro.HouseCode && c.LayoutCode == stockHousePro.LayoutCode).FirstOrDefault();
                        if (oldPro != null)
                        {
                            oldPro.Num += stockHousePro.Num;
                        }
                        else
                        {
                            stockHousePro.HouseProductCode = Guid.NewGuid().ToString();
                            alading.AddToStockHouseProduct(stockHousePro);
                        }
                    }

                    /*添加StockInOut*/
                    foreach (StockInOut stockInOut in stockInOutList)
                    {
                        alading.AddToStockInOut(stockInOut);
                    }

                    /*添加StockDetail*/
                    foreach (StockDetail stockDetail in stockDetailList)
                    {
                        alading.AddToStockDetail(stockDetail);
                    }

                    alading.AddToPayCharge(payCharge);

                    alading.SaveChanges();
                    return(ReturnType.Success);
                }
            }

            catch (SqlException sex)
            {
                return(ReturnType.ConnFailed);
            }
            catch (Exception ex)
            {
                return(ReturnType.OthersError);
            }
        }
예제 #11
0
        /// <summary>
        /// 保存数据
        /// </summary>
        /// <param name="gridView"></param>
        /// <param name="dateEditInTime"></param>
        public bool Save(GridView gridView, InOutData inoutData)
        {
            if (gridView == null || gridView.RowCount == 0)
            {
                XtraMessageBox.Show("没有可保存的数据", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return(false);
            }

            bool isSelectHouse = HouseSelect(gridView);

            if (!isSelectHouse)
            {
                XtraMessageBox.Show("需要选择仓库", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return(false);
            }

            bool isSelectLayout = LayoutSelect(gridView);

            if (!isSelectLayout)
            {
                XtraMessageBox.Show("需要选择库位", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return(false);
            }

            //用于存放要保存到数据库的StockProduct
            List <Alading.Entity.StockProduct> stockProductList = new List <StockProduct>();

            //用于存放要保存到数据库的StockHouseProduct
            List <Alading.Entity.StockHouseProduct> stockHouseProList = new List <StockHouseProduct>();

            //用于存放要保存到数据库的StockDetail
            List <Alading.Entity.StockDetail> stockDetailList = new List <StockDetail>();

            List <string> outerSkuIdList = new List <string>();

            List <string> outerIdList = new List <string>();

            for (int rowHandle = 0; rowHandle < gridView.RowCount; rowHandle++)
            {
                DataRow dataRow = gridView.GetDataRow(rowHandle);

                #region 更新StockItem  StockProduct StockHouseProduct
                Alading.Entity.StockProduct stockProduct = new StockProduct();

                stockProduct.SkuOuterID = dataRow["SkuOuterID"] == null ? string.Empty : dataRow["SkuOuterID"].ToString();
                stockProduct.OuterID    = dataRow["OuterId"] == null ? string.Empty : dataRow["OuterId"].ToString();
                //获取入库数量
                double inOutNum = 0.0;
                if (dataRow["Count"] == null || string.IsNullOrEmpty(dataRow["Count"].ToString()))
                {
                    stockProduct.SkuQuantity = 0;
                }
                else if (inoutData.isIn)
                {
                    inOutNum = double.Parse(dataRow["Count"].ToString());
                    stockProduct.SkuQuantity = int.Parse(inOutNum.ToString());
                }
                else
                {
                    inOutNum = double.Parse(dataRow["Count"].ToString());
                    stockProduct.SkuQuantity = -int.Parse(inOutNum.ToString());
                }
                //存放以准备保存到数据库
                stockProductList.Add(stockProduct);

                outerSkuIdList.Add(dataRow["SkuOuterID"].ToString());
                outerIdList.Add(dataRow["OuterId"].ToString());
                #endregion

                #region 添加或更新StockHouseProduct
                StockHouseProduct stockHousePro = new StockHouseProduct();
                stockHousePro.HouseCode  = dataRow["HouseCode"] == null ? string.Empty : dataRow["HouseCode"].ToString();
                stockHousePro.LayoutCode = dataRow["LayoutCode"] == null ? string.Empty : dataRow["LayoutCode"].ToString();
                stockHousePro.SkuOuterID = stockProduct.SkuOuterID;
                stockHousePro.Num        = stockProduct.SkuQuantity;
                stockHousePro.HouseName  = dataRow["HouseName"].ToString();
                stockHousePro.LayoutName = dataRow["LayoutName"].ToString();
                stockHouseProList.Add(stockHousePro);
                #endregion

                #region 添加到StockDetail
                Alading.Entity.StockDetail stockDetail = new StockDetail();

                stockDetail.StockDetailCode   = Guid.NewGuid().ToString();
                stockDetail.ProductSkuOuterId = stockProduct.SkuOuterID;
                stockDetail.InOutCode         = inoutData.InOutCode;
                //仓库编号
                stockDetail.StockHouseCode = dataRow["HouseCode"] == null ? string.Empty : dataRow["HouseCode"].ToString();
                //库位编号
                stockDetail.StockLayOutCode = dataRow["LayoutCode"] == null ? string.Empty : dataRow["LayoutCode"].ToString();
                //商品价格
                stockDetail.Price        = (float)stockProduct.SkuPrice;
                stockDetail.Quantity     = int.Parse(inOutNum.ToString());
                stockDetail.DetailType   = inoutData.InOutType;
                stockDetail.DetailRemark = dataRow["DetailRemark"] == null ? string.Empty : dataRow["DetailRemark"].ToString();
                //税率
                stockDetail.Tax      = dataRow["Tax"] == null ? string.Empty : dataRow["Tax"].ToString();
                stockDetail.TotalFee = dataRow["TotalMoney"] == null ? 0 : float.Parse(dataRow["TotalMoney"].ToString());
                //商品的保质期
                stockDetail.DurabilityDate = System.DateTime.MaxValue;

                stockDetailList.Add(stockDetail);
                #endregion
            }

            #region 添加StockInOut
            //用于存放StockInOut
            List <Alading.Entity.StockInOut> stockInOutList = new List <Alading.Entity.StockInOut>();
            Alading.Entity.StockInOut        stockInOut     = new Alading.Entity.StockInOut();

            //进出库单编号
            stockInOut.InOutCode    = inoutData.InOutCode;
            stockInOut.InOutTime    = inoutData.InOutDateTime;
            stockInOut.OperatorCode = inoutData.OperatorCode;
            //经办人员
            stockInOut.OperatorName = inoutData.Operator;
            stockInOut.InOutType    = inoutData.InOutType;
            //oid赋值
            stockInOut.TradeOrderCode = string.Empty;
            //付款方式
            stockInOut.PayType = inoutData.PayType;
            //保存现金折扣
            stockInOut.DiscountFee = float.Parse(inoutData.DiscountFee.ToString());
            //保存应付应收金额
            stockInOut.DueFee         = float.Parse(inoutData.NeedToPay.ToString());
            stockInOut.InOutStatus    = inoutData.InOutStatus;
            stockInOut.IsSettled      = true;
            stockInOut.PayThisTime    = float.Parse(inoutData.PayThisTime.ToString());
            stockInOut.PayTerm        = inoutData.PayTerm;
            stockInOut.IncomeTime     = inoutData.IncomeTime;
            stockInOut.AmountTax      = float.Parse(inoutData.AmountTax.ToString());
            stockInOut.FreightCompany = inoutData.FreightCompany;
            stockInOut.FreightCode    = inoutData.FreightCode;

            stockInOutList.Add(stockInOut);
            #endregion

            #region 添加或更新PayCharge
            PayCharge payCharge = new PayCharge();
            payCharge.PayChargeCode = Guid.NewGuid().ToString();
            //付款收款方式
            payCharge.PayChargeType = inoutData.InOutType;
            payCharge.InOutCode     = inoutData.InOutCode;
            //付款人编号
            payCharge.PayerCode = string.Empty;
            //付款人名字
            payCharge.PayerName = string.Empty;
            //收款人编号
            payCharge.ChargerCode = string.Empty;
            //收款人名字
            payCharge.ChargerName = string.Empty;
            //操作时间
            payCharge.OperateTime     = DateTime.Parse(DateTime.Now.ToShortDateString());
            payCharge.OperatorCode    = inoutData.OperatorCode;
            payCharge.OperatorName    = inoutData.Operator;
            payCharge.PayChargeRemark = string.Empty;

            payCharge.TotalFee    = inoutData.TotalFee;
            payCharge.NeedToPay   = inoutData.NeedToPay;
            payCharge.AmountTax   = inoutData.AmountTax;
            payCharge.PayThisTime = inoutData.PayThisTime;
            payCharge.DiscountFee = inoutData.DiscountFee;
            payCharge.IncomeDay   = inoutData.PayTerm;
            payCharge.IncomeTime  = inoutData.IncomeTime;
            #endregion

            StockProductService.UpdateStock(stockProductList, stockHouseProList, stockInOutList, stockDetailList, payCharge, outerSkuIdList, outerIdList);
            return(true);
        }
예제 #12
0
        public ReturnType UpdateStock(List <StockProduct> stockProductList, List <StockHouseProduct> stockHouseProList, List <StockInOut> stockInOutList
                                      , List <StockDetail> stockDetailList, PayCharge payCharge, List <string> outerSkuIdList, List <string> outerIdList)//zxl
        {
            try
            {
                using (AladingEntities alading = new AladingEntities(AppSettings.GetConnectionString()))
                {
                    #region 更新StockProduct 和 StockItem
                    var stockProductResult = alading.StockProduct.Where(BuildWhereInExpression <StockProduct, string>(v => v.SkuOuterID, outerSkuIdList));
                    var stockItemResult    = alading.StockItem.Where(BuildWhereInExpression <StockItem, string>(v => v.OuterID, outerIdList));
                    if (stockProductResult == null || stockItemResult == null)
                    {
                        return(ReturnType.NotExisted);
                    }

                    foreach (StockProduct stockProduct in stockProductList)
                    {
                        //获取StockProduct的原始数据
                        StockProduct oldStockProduct = stockProductResult.Where(c => c.SkuOuterID == stockProduct.SkuOuterID).FirstOrDefault();
                        //获取StockItem的原始数据
                        StockItem oldStockItem = stockItemResult.Where(c => c.OuterID == stockProduct.OuterID).FirstOrDefault();
                        //获取StockProduct的相关原始数据的商品数量
                        oldStockProduct.SkuQuantity += stockProduct.SkuQuantity;
                        //获取oldStockItem的相关原始数据的商品数量
                        oldStockItem.TotalQuantity += stockProduct.SkuQuantity;
                    }
                    #endregion

                    #region 添加或更新StockHouseProduct
                    var stockHouseProResult = alading.StockHouseProduct.Where(BuildWhereInExpression <StockHouseProduct, string>(v => v.SkuOuterID, outerSkuIdList));
                    foreach (StockHouseProduct stockHousePro in stockHouseProList)
                    {
                        StockHouseProduct oldPro = stockHouseProResult.Where(c => c.SkuOuterID == stockHousePro.SkuOuterID &&
                                                                             c.HouseCode == stockHousePro.HouseCode && c.LayoutCode == stockHousePro.LayoutCode).FirstOrDefault();
                        if (oldPro != null)
                        {
                            oldPro.Num += stockHousePro.Num;
                        }
                        else
                        {
                            stockHousePro.HouseProductCode = Guid.NewGuid().ToString();
                            alading.AddToStockHouseProduct(stockHousePro);
                        }
                    }
                    #endregion

                    #region 添加StockInOut
                    foreach (StockInOut stockInOut in stockInOutList)
                    {
                        alading.AddToStockInOut(stockInOut);
                    }
                    #endregion

                    #region 添加StockDetail
                    foreach (StockDetail stockDetail in stockDetailList)
                    {
                        alading.AddToStockDetail(stockDetail);
                    }
                    #endregion

                    #region 添加PayCharge
                    alading.AddToPayCharge(payCharge);
                    #endregion
                    alading.SaveChanges();
                    return(ReturnType.Success);
                }
            }

            catch (SqlException sex)
            {
                return(ReturnType.ConnFailed);
            }
            catch (Exception ex)
            {
                return(ReturnType.OthersError);
            }
        }
예제 #13
0
        public ReturnType Check(int num, List <StockDetail> stockDetailList, StockDetail checkDetail, StockCheckDetail stockCheckDetail)
        {
            System.Data.Common.DbTransaction tran = null;
            using (AladingEntities alading = new AladingEntities(AppSettings.GetConnectionString()))
            {
                try
                {
                    alading.Connection.Open();
                    tran = alading.Connection.BeginTransaction();
                    StockProduct      stockProduct      = alading.StockProduct.FirstOrDefault(c => c.SkuOuterID == checkDetail.ProductSkuOuterId);
                    StockItem         stockItem         = alading.StockItem.FirstOrDefault(c => c.OuterID == stockProduct.OuterID);
                    StockHouseProduct stockHouseProduct = alading.StockHouseProduct.FirstOrDefault(c => c.HouseCode == checkDetail.StockHouseCode && c.LayoutCode == checkDetail.StockLayOutCode && c.SkuOuterID == checkDetail.ProductSkuOuterId);
                    /*修改相关数量,若报溢则加,报损则减*/
                    stockProduct.SkuQuantity += num;
                    stockItem.TotalQuantity  += num;
                    if (stockHouseProduct != null)
                    {
                        stockHouseProduct.Num += num;
                    }
                    else
                    {
                        stockHouseProduct                  = new StockHouseProduct();
                        stockHouseProduct.HouseCode        = checkDetail.StockHouseCode;
                        stockHouseProduct.HouseName        = checkDetail.HouseName;
                        stockHouseProduct.HouseProductCode = System.Guid.NewGuid().ToString();
                        stockHouseProduct.LayoutCode       = checkDetail.StockLayOutCode;
                        stockHouseProduct.LayoutName       = checkDetail.LayoutName;
                        stockHouseProduct.Num              = num;
                        stockHouseProduct.SkuOuterID       = checkDetail.ProductSkuOuterId;
                        alading.AddToStockHouseProduct(stockHouseProduct);
                    }

                    /*将出入库详情添加到历史表中并在StockDetail表中删除该数据*/
                    foreach (StockDetail stockDetail in stockDetailList)
                    {
                        HistoryStockDetail hisStockDetail = new HistoryStockDetail();
                        hisStockDetail.DetailRemark           = stockDetail.DetailRemark;
                        hisStockDetail.DetailType             = stockDetail.DetailType;
                        hisStockDetail.DurabilityDate         = stockDetail.DurabilityDate;
                        hisStockDetail.HistoryStockDetailCode = stockDetail.StockDetailCode;
                        hisStockDetail.HouseName         = stockDetail.HouseName;
                        hisStockDetail.InOutCode         = stockDetail.InOutCode;
                        hisStockDetail.LayoutName        = stockDetail.LayoutName;
                        hisStockDetail.Price             = stockDetail.Price;
                        hisStockDetail.ProductSkuOuterId = stockDetail.ProductSkuOuterId;
                        hisStockDetail.Quantity          = stockDetail.Quantity;
                        hisStockDetail.SearchText        = stockDetail.SearchText;
                        hisStockDetail.StockHouseCode    = stockDetail.StockHouseCode;
                        hisStockDetail.StockLayOutCode   = stockDetail.StockLayOutCode;
                        hisStockDetail.Tax      = stockDetail.Tax;
                        hisStockDetail.TotalFee = stockDetail.TotalFee;
                        alading.AddToHistoryStockDetail(hisStockDetail);

                        StockDetail temp = alading.StockDetail.FirstOrDefault(c => c.StockDetailCode == stockDetail.StockDetailCode);
                        if (temp != null)
                        {
                            alading.DeleteObject(temp);
                        }
                    }

                    /*将盘点生成的入库详情加入StockDetail表中,做为初始数据*/
                    alading.AddToStockDetail(checkDetail);
                    alading.AddToStockCheckDetail(stockCheckDetail);
                    alading.SaveChanges();
                    tran.Commit();
                    return(ReturnType.Success);
                }
                catch (System.Exception ex)
                {
                    if (tran != null)
                    {
                        tran.Rollback();
                    }
                    return(ReturnType.SaveFailed);
                }
                finally
                {
                    if (alading != null && alading.Connection.State != System.Data.ConnectionState.Closed)
                    {
                        alading.Connection.Close();
                    }
                }
            }
        }
예제 #14
0
        /// <summary>
        /// 同外界交互的接口,生成入库单及明细
        /// </summary>
        public bool GetData(Alading.Entity.StockInOut stockInOut, PayCharge payCharge, List <StockDetail> sdList, List <StockHouseProduct> shpList, List <View_StockItemProduct> vsipList)
        {
            #region 验证
            /*验证是否选择了商品*/
            if (gvProductSJ.RowCount == 0)
            {
                XtraMessageBox.Show("请先选择一个商品!", Constants.SYSTEM_PROMPT, MessageBoxButtons.OK, MessageBoxIcon.Information);
                return(false);
            }
            if (!IsAllNecessaryInput())
            {
                XtraMessageBox.Show("请填写完整的入库单详情!(带*的为必填。)", Constants.SYSTEM_PROMPT, MessageBoxButtons.OK, MessageBoxIcon.Information);
                return(false);
            }
            if (!IsAllNecessaryCellInput())
            {
                XtraMessageBox.Show("请将列表中的仓库、库位、数量及价格信息输入完整!", Constants.SYSTEM_PROMPT, MessageBoxButtons.OK, MessageBoxIcon.Information);
                return(false);
            }
            string inoutCode = textEditInOutCode.Text.Trim();
            if (StockInOutService.GetAllStockInOut().FirstOrDefault(c => c.InOutCode == inoutCode) != null)
            {
                XtraMessageBox.Show("入库单编码与数据库中已有入库单编码重复,请重输!", Constants.SYSTEM_PROMPT, MessageBoxButtons.OK, MessageBoxIcon.Information);
                return(false);
            }

            #endregion

            #region StockInOut
            stockInOut.AmountTax   = !string.IsNullOrEmpty(textEditAmountTax.Text)? float.Parse(textEditAmountTax.Text):0;
            stockInOut.DiscountFee = !string.IsNullOrEmpty(textEditDiscountFee.Text)?float.Parse(textEditDiscountFee.Text):0;
            stockInOut.DueFee      = !string.IsNullOrEmpty(textEditTotalFee.Text)?float.Parse(textEditTotalFee.Text):0;
            stockInOut.FreightCode = pceFreightCompany.Tag != null?pceFreightCompany.Tag.ToString() : string.Empty;

            stockInOut.FreightCompany = pceFreightCompany.Text != null?pceFreightCompany.Text:string.Empty;
            stockInOut.IncomeTime     = dateEditIncomeTime.DateTime;
            stockInOut.InOutCode      = textEditInOutCode.Text;
            stockInOut.InOutStatus    = (int)Alading.Core.Enum.InOutStatus.AllReach;
            stockInOut.InOutTime      = DateTime.Now;
            stockInOut.InOutType      = (int)InOutType.PurchaseIn;
            /*权宜之计*/
            //stockInOut.货运单号
            stockInOut.OperatorCode = pceOperator.Tag != null?pceOperator.Tag.ToString() : string.Empty;

            stockInOut.OperatorName   = pceOperator.Text != null?pceOperator.Text:string.Empty;
            stockInOut.PayTerm        = 0;
            stockInOut.PayThisTime    = !string.IsNullOrEmpty(textEditPayThisTime.Text)?float.Parse(textEditPayThisTime.Text):0;
            stockInOut.PayType        = comboPayType.SelectedIndex + 1;
            stockInOut.TradeOrderCode = string.Empty;//
            stockInOut.IsSettled      = stockInOut.PayThisTime >= stockInOut.DueFee;

            #endregion

            #region 付款信息

            payCharge.AmountTax       = !string.IsNullOrEmpty(textEditAmountTax.Text) ? float.Parse(textEditAmountTax.Text) : 0;
            payCharge.ChargerCode     = string.Empty; /*付款编号*/
            payCharge.ChargerName     = string.Empty; //
            payCharge.DiscountFee     = !string.IsNullOrEmpty(textEditDiscountFee.Text) ? float.Parse(textEditDiscountFee.Text) : 0;
            payCharge.InOutCode       = stockInOut.InOutCode;
            payCharge.NeedToPay       = !string.IsNullOrEmpty(textEditNeedToPay.Text) ? float.Parse(textEditNeedToPay.Text) : 0;
            payCharge.OperateTime     = DateTime.Now;
            payCharge.OperatorCode    = string.Empty; //
            payCharge.OperatorName    = string.Empty; //
            payCharge.PayChargeCode   = string.Empty; //
            payCharge.PayChargeRemark = string.Empty;
            payCharge.PayChargeType   = comboPayType.SelectedIndex;
            payCharge.PayerCode       = string.Empty;
            payCharge.PayerName       = string.Empty;
            payCharge.PayThisTime     = !string.IsNullOrEmpty(textEditPayThisTime.Text) ? float.Parse(textEditPayThisTime.Text) : 0;
            payCharge.TotalFee        = !string.IsNullOrEmpty(textEditTotalFee.Text) ? float.Parse(textEditTotalFee.Text) : 0;
            payCharge.IncomeDay       = !string.IsNullOrEmpty(textEditPayTerm.Text) ? int.Parse(textEditPayTerm.Text) : 0;
            payCharge.IncomeTime      = dateEditIncomeTime.DateTime;

            #endregion

            #region StockHouseProduct,View_StockItemProduct,StockDetail

            int count = gvProductSJ.RowCount;

            /*找到商品在仓库中的位置,并更新该仓库中商品的数量*/
            List <StockHouseProduct> allShpList = StockHouseService.GetAllStockHouseProduct();
            //IEnumerable<View_StockItemProduct> allVispList = View_StockItemProductService.GetAllView_StockItemProduct();
            for (int i = 0; i < count; i++)
            {
                DataRow row = gvProductSJ.GetDataRow(i);
                //总金额
                double totalMoney = row["TotalMoney"] != null?double.Parse(row["TotalMoney"].ToString()) : 0;

                //入库数量
                int num = row["TotalCount"] != null?int.Parse(row["TotalCount"].ToString()) : 0;

                /*仓库名称*/
                string houseName = row[gcStockHouse.FieldName].ToString();
                /*库位名称*/
                string layoutName = row[gcStockLayout.FieldName].ToString();
                //最新进价
                double LastStockPrice = totalMoney / num;
                /*修改仓库商品表数量增加*/
                StockHouseProduct shp = allShpList.FirstOrDefault(c => c.HouseCode == row["StockHouseCode"].ToString() && c.SkuOuterID == row["SkuOuterID"].ToString() && c.LayoutCode == row["StockLayoutCode"].ToString());
                if (shp != null)
                {
                    shp.Num += num;
                    shpList.Add(shp);
                }
                else
                {
                    shp                  = new StockHouseProduct();
                    shp.HouseCode        = row["StockHouseCode"].ToString();
                    shp.HouseProductCode = System.Guid.NewGuid().ToString();
                    shp.LayoutCode       = row["StockLayoutCode"].ToString();
                    shp.Num              = num;
                    shp.HouseName        = houseName;
                    shp.LayoutName       = layoutName;
                    shp.SkuOuterID       = row["SkuOuterID"].ToString();
                    shpList.Add(shp);
                }
                View_StockItemProduct vsip = View_StockItemProductService.GetView_StockItemProductBySkuOuterId(row["SkuOuterID"].ToString());
                if (vsip != null)
                {
                    //视图无法直接修改其属性值,所以需要new一个然后给之赋值
                    View_StockItemProduct tempVsip = new View_StockItemProduct();
                    tempVsip.SkuOuterID = vsip.SkuOuterID;
                    tempVsip.OuterID    = vsip.OuterID;

                    tempVsip.LastStockPrice = LastStockPrice;
                    int lastNum = vsip.SkuQuantity;
                    tempVsip.TotalQuantity = vsip.TotalQuantity + num;
                    tempVsip.SkuQuantity   = vsip.SkuQuantity + num;
                    //平均价格=(上次剩余商品的平均价格*上次剩余数量+本次总金额)/本次剩余数量
                    tempVsip.AvgStockPrice = (vsip.AvgStockPrice * lastNum + totalMoney) / vsip.SkuQuantity;
                    vsipList.Add(tempVsip);
                }
                /*价格问题该如何处理???*/

                StockDetail sd = new StockDetail();
                sd.DetailRemark      = string.Empty;
                sd.DetailType        = (int)Alading.Core.Enum.DetailType.PurchaseIn;
                sd.DurabilityDate    = DateTime.MinValue;//有效期?
                sd.InOutCode         = stockInOut.InOutCode;
                sd.HouseName         = houseName;
                sd.LayoutName        = layoutName;
                sd.Price             = float.Parse((totalMoney / num).ToString());
                sd.Quantity          = num;
                sd.StockDetailCode   = System.Guid.NewGuid().ToString();
                sd.ProductSkuOuterId = row["SkuOuterId"].ToString();
                sd.StockHouseCode    = row["StockHouseCode"].ToString();
                sd.StockLayOutCode   = row["StockLayOutCode"].ToString();
                sd.Tax      = string.Empty;//税额??
                sd.TotalFee = float.Parse(totalMoney.ToString());
                sdList.Add(sd);
            }

            #endregion

            return(true);
        }
예제 #15
0
        /// <summary>
        /// 标记为配货并出库
        /// </summary>
        /// <param name="houseProductList">数量即为出库数量</param>
        /// <param name="customtid">交易的唯一标识</param>
        /// <returns></returns>
        public ReturnType AllocationAndOutput(List <StockHouseProduct> houseProductList, string customtid)
        {
            System.Data.Common.DbTransaction tran = null;
            using (AladingEntities alading = new AladingEntities(AppSettings.GetConnectionString()))
            {
                try
                {
                    alading.Connection.Open();
                    tran = alading.Connection.BeginTransaction();
                    StockInOut stockInOut = new StockInOut();
                    stockInOut.InOutCode = System.Guid.NewGuid().ToString();//GUID??

                    foreach (StockHouseProduct shp in houseProductList)
                    {
                        StockProduct stockProduct = alading.StockProduct.FirstOrDefault(c => c.SkuOuterID == shp.SkuOuterID);
                        stockProduct.SkuQuantity -= shp.Num;

                        StockItem item = alading.StockItem.FirstOrDefault(c => c.OuterID == stockProduct.OuterID);
                        item.TotalQuantity -= shp.Num;

                        StockHouseProduct stockHouseProduct = alading.StockHouseProduct.FirstOrDefault(c => c.SkuOuterID == shp.SkuOuterID && c.HouseCode == shp.HouseCode && c.LayoutCode == shp.LayoutCode);
                        stockHouseProduct.Num -= shp.Num;

                        #region StockDetail

                        StockDetail stockDetail = new StockDetail();
                        stockDetail.DetailRemark      = "销售自动出库";
                        stockDetail.DetailType        = (int)DetailType.TaobaoSaleOut;
                        stockDetail.DurabilityDate    = DateTime.Now;
                        stockDetail.HouseName         = stockHouseProduct.HouseName;
                        stockDetail.InOutCode         = stockInOut.InOutCode;//////////
                        stockDetail.LayoutName        = stockHouseProduct.LayoutCode;
                        stockDetail.Price             = float.Parse(stockProduct.SkuPrice.ToString());
                        stockDetail.ProductSkuOuterId = stockProduct.SkuOuterID;
                        stockDetail.Quantity          = shp.Num;                          //出库数量
                        stockDetail.SearchText        = string.Empty;                     //搜索字段
                        stockDetail.StockDetailCode   = System.Guid.NewGuid().ToString(); //
                        stockDetail.StockHouseCode    = stockHouseProduct.HouseCode;
                        stockDetail.StockLayOutCode   = stockHouseProduct.LayoutCode;
                        stockDetail.Tax      = item.Tax;//税率
                        stockDetail.TotalFee = float.Parse((stockProduct.SkuPrice * shp.Num).ToString());
                        alading.AddToStockDetail(stockDetail);

                        #endregion

                        stockInOut.DiscountFee += stockDetail.TotalFee;//这么算可对?
                    }

                    Trade trade = alading.Trade.FirstOrDefault(c => c.CustomTid == customtid);
                    trade.LocalStatus = LocalTradeStatus.AssortedNotSent;

                    stockInOut.AmountTax      = 0.0f;                   //税率怎么算?
                    stockInOut.DueFee         = stockInOut.DiscountFee; //??
                    stockInOut.FreightCode    = string.Empty;
                    stockInOut.FreightCompany = string.Empty;
                    stockInOut.HouseCodeIn    = string.Empty;
                    stockInOut.HouseCodeOut   = string.Empty;
                    stockInOut.HouseNameIn    = string.Empty;
                    stockInOut.HouseNameOut   = string.Empty;
                    stockInOut.IncomeTime     = DateTime.Now;
                    stockInOut.InOutStatus    = (int)InOutStatus.AllSend;
                    stockInOut.InOutTime      = DateTime.Now;
                    stockInOut.InOutType      = (int)InOutType.SaleOut;
                    stockInOut.IsSettled      = true;
                    stockInOut.OperatorCode   = string.Empty; //操作人编码???
                    stockInOut.OperatorName   = string.Empty; //操作人姓名??
                    stockInOut.PayTerm        = 0;;
                    stockInOut.PayThisTime    = stockInOut.DueFee;
                    stockInOut.PayType        = (int)PayType.ALIPAY;
                    stockInOut.SearchText     = string.Empty;//搜索字段
                    stockInOut.TradeOrderCode = trade.CustomTid;
                    stockInOut.TransportCode  = string.Empty;
                    alading.AddToStockInOut(stockInOut);

                    alading.SaveChanges();
                    tran.Commit();
                    return(ReturnType.Success);
                }
                catch (System.Exception ex)
                {
                    if (tran != null)
                    {
                        tran.Rollback();
                    }
                    return(ReturnType.SaveFailed);
                }
                finally
                {
                    if (alading != null && alading.Connection.State != System.Data.ConnectionState.Closed)
                    {
                        alading.Connection.Close();
                    }
                }
            }
        }
예제 #16
0
        /// <summary>
        /// 保存操作
        /// </summary>
        public bool SaveRefund()
        {
            //出入库时间
            if (string.IsNullOrEmpty(dateEditInTime.Text))
            {
                XtraMessageBox.Show("请填写入库日期", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                dateEditInTime.Focus();
                return(false);
            }

            //业务员及编号
            if (string.IsNullOrEmpty(pceOperator.Text))
            {
                XtraMessageBox.Show("请填写业务员", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                pceOperator.Focus();
                return(false);
            }

            //用于存放需要退货入库的订单的退款单号
            List <string> refundIDList = new List <string>();

            //用于存放oid,以通过View_RefundTradeStock获取sku_outerID
            List <string> oidList = new List <string>();
            //存放修要修改库存的sku_outer_id
            List <string> outerSkuIdList = new List <string>();
            //存放修要修改库存的outer_id
            List <string> outerIdList = new List <string>();

            //用于存放需要更新的StockProduct数据
            List <StockProduct> stockProductList = new List <StockProduct>();
            //用于存放要保存到数据库的StockHouseProduct
            List <Alading.Entity.StockHouseProduct> stockHouseProList = new List <StockHouseProduct>();
            //存放StockDetail
            List <Alading.Entity.StockDetail> stockDetailList = new List <Alading.Entity.StockDetail>();

            //入库单编号
            string inOutCode = string.Empty;

            if (!string.IsNullOrEmpty(textEditInOutCode.Text))
            {
                inOutCode = textEditInOutCode.Text.Trim();
                if (inoutHelper.ExistInOutCode(inOutCode))
                {
                    XtraMessageBox.Show("此单号已存在", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    textEditInOutCode.Focus();
                    return(false);
                }
            }
            else
            {
                inOutCode = Guid.NewGuid().ToString();
            }

            for (int index = 0; index < gvReturnInProduct.RowCount; index++)
            {
                DataRow dataRow = gvReturnInProduct.GetDataRow(index);
                if (dataRow["Select"].ToString() == true.ToString())
                {
                    if (dataRow["HouseName"] == null || string.IsNullOrEmpty(dataRow["HouseName"].ToString()))
                    {
                        XtraMessageBox.Show("需要选择仓库", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        return(false);
                    }

                    if (dataRow["LayoutName"] == null || string.IsNullOrEmpty(dataRow["LayoutName"].ToString()))
                    {
                        XtraMessageBox.Show("需要选择库位", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        return(false);
                    }

                    refundIDList.Add(dataRow["refund_id"].ToString());
                    oidList.Add(dataRow["oid"].ToString());

                    #region 保存StockProduct信息
                    outerSkuIdList.Add(dataRow["outer_sku_id"].ToString());
                    outerIdList.Add(dataRow["OuterID"].ToString());

                    StockProduct newStockPro = new StockProduct();
                    newStockPro.SkuOuterID = dataRow["outer_sku_id"].ToString();
                    newStockPro.OuterID    = dataRow["OuterID"].ToString();
                    //入库数量
                    if (string.IsNullOrEmpty(dataRow["Count"].ToString()))
                    {
                        newStockPro.SkuQuantity = 0;
                    }
                    else
                    {
                        newStockPro.SkuQuantity = int.Parse(dataRow["Count"].ToString());
                    }

                    stockProductList.Add(newStockPro);
                    #endregion

                    #region 添加或更新StockHouseProduct
                    StockHouseProduct stockHousePro = new StockHouseProduct();
                    stockHousePro.HouseCode  = dataRow["HouseCode"] == null ? string.Empty : dataRow["HouseCode"].ToString();
                    stockHousePro.LayoutCode = dataRow["LayoutCode"] == null ? string.Empty : dataRow["LayoutCode"].ToString();
                    stockHousePro.SkuOuterID = newStockPro.SkuOuterID;
                    stockHousePro.Num        = newStockPro.SkuQuantity;
                    stockHousePro.HouseName  = dataRow["HouseName"].ToString();
                    stockHousePro.LayoutName = dataRow["LayoutName"].ToString();
                    stockHouseProList.Add(stockHousePro);
                    #endregion

                    #region 保存StockDetail
                    Alading.Entity.StockDetail stockDetail = new StockDetail();
                    stockDetail.StockDetailCode   = Guid.NewGuid().ToString();
                    stockDetail.ProductSkuOuterId = dataRow["outer_sku_id"].ToString();
                    stockDetail.InOutCode         = inOutCode;
                    //仓库编号
                    if (dataRow["HouseCode"] == null)
                    {
                        stockDetail.StockHouseCode = string.Empty;
                    }
                    else
                    {
                        stockDetail.StockHouseCode = dataRow["HouseCode"].ToString();
                    }
                    //库位编号
                    if (dataRow["LayoutCode"] == null)
                    {
                        stockDetail.StockLayOutCode = string.Empty;
                    }
                    else
                    {
                        stockDetail.StockLayOutCode = dataRow["LayoutCode"].ToString();
                    }
                    //商品价格price
                    stockDetail.Price          = float.Parse(dataRow["price"].ToString());
                    stockDetail.Quantity       = int.Parse(dataRow["Count"].ToString());
                    stockDetail.DetailType     = (int)InOutType.SelledReturnIn;
                    stockDetail.DetailRemark   = string.Empty;
                    stockDetail.Tax            = string.Empty;
                    stockDetail.TotalFee       = dataRow["payment"] == null?0:float.Parse(dataRow["payment"].ToString());
                    stockDetail.DurabilityDate = DateTime.Parse(DateTime.Now.ToShortDateString());

                    stockDetailList.Add(stockDetail);
                    #endregion
                }
            }

            if (refundIDList.Count == 0)
            {
                XtraMessageBox.Show("请先勾选数据", "系统提示", MessageBoxButtons.OK
                                    , MessageBoxIcon.Information);
                return(false);
            }

            /*销售退货时间,仓库,库位要求必须填写*/
            #region 将要更新的数据保存到oldRefundList
            List <Alading.Entity.TradeRefund> oldRefundList = TradeRefundService.GetTradeRefund(refundIDList);

            //用于保存等待更新到数据库表TradeRefund的数据
            List <Alading.Entity.TradeRefund> refundUpdateList = new List <Alading.Entity.TradeRefund>();

            //修改StockRefund中的IsRecieved 和 LocalPrivyC的状态
            foreach (string refundId in refundIDList)
            {
                Alading.Entity.TradeRefund refund = new TradeRefund();
                refund.refund_id = refundId;
                //记录当前库管是否收到从买家发回的货物
                refund.IsRecieved = true;
                //经办人
                refund.LocalPrivyC = pceOperator.Text;
                refundUpdateList.Add(refund);
            }
            #endregion

            #region 更新StockInOut
            string InOutTime = dateEditInTime.Text;
            //用于存放StockInOut
            List <Alading.Entity.StockInOut> stockInOutList = new List <Alading.Entity.StockInOut>();
            //添加到StockInOut
            Alading.Entity.StockInOut stockInOut = new Alading.Entity.StockInOut();
            stockInOut.InOutCode    = inOutCode;                 //进出库单编号
            stockInOut.InOutTime    = DateTime.Parse(InOutTime); //进出库时间
            stockInOut.OperatorName = pceOperator.Text == null ? string.Empty : pceOperator.Text;
            stockInOut.OperatorCode = pceOperator.Tag.ToString();
            stockInOut.InOutType    = (int)InOutType.SelledReturnIn;
            //oid赋值
            stockInOut.TradeOrderCode = string.Empty;;
            stockInOut.DiscountFee    = 0;
            //保存应付应收金额
            if (string.IsNullOrEmpty(textEditTotalFee.EditValue.ToString()))
            {
                stockInOut.DueFee = 0;
            }
            else
            {
                stockInOut.DueFee = float.Parse(textEditTotalFee.EditValue.ToString());
            }

            stockInOut.InOutStatus    = (int)InOutStatus.AllRefund;
            stockInOut.IsSettled      = true;
            stockInOut.PayType        = 0;//付款方式
            stockInOut.PayThisTime    = string.IsNullOrEmpty(textEditTotalFee.EditValue.ToString()) ? 0 : float.Parse(textEditTotalFee.EditValue.ToString());
            stockInOut.PayTerm        = 0;
            stockInOut.IncomeTime     = DateTime.Parse(DateTime.Now.ToShortDateString());;
            stockInOut.AmountTax      = 0;
            stockInOut.FreightCompany = string.Empty;
            stockInOut.FreightCode    = string.Empty;

            stockInOutList.Add(stockInOut);
            #endregion

            #region 添加PayCharge
            PayCharge payCharge = new PayCharge();
            payCharge.PayChargeCode   = Guid.NewGuid().ToString();
            payCharge.PayChargeType   = 0;
            payCharge.InOutCode       = inOutCode;
            payCharge.PayerCode       = string.Empty;
            payCharge.PayerName       = string.Empty;
            payCharge.ChargerCode     = string.Empty;
            payCharge.ChargerName     = string.Empty;
            payCharge.OperateTime     = DateTime.Parse(dateEditInTime.Text);
            payCharge.OperatorCode    = pceOperator.Tag.ToString();
            payCharge.OperatorName    = pceOperator.Text;
            payCharge.PayChargeRemark = string.Empty;
            if (!string.IsNullOrEmpty(textEditTotalFee.Text))
            {
                payCharge.TotalFee = double.Parse(textEditTotalFee.EditValue.ToString());
            }
            else
            {
                payCharge.TotalFee = 0.0;
            }
            payCharge.NeedToPay   = 0.0;
            payCharge.AmountTax   = 0.0;
            payCharge.PayThisTime = payCharge.TotalFee;
            payCharge.DiscountFee = 0.0;
            payCharge.IncomeDay   = 0;
            payCharge.IncomeTime  = DateTime.MinValue;
            #endregion

            //更新Refund StockProduct StockItem StockInOut StockDetail
            TradeRefundService.UpdateTradeRefund(refundUpdateList, stockProductList, stockHouseProList, stockInOutList, stockDetailList
                                                 , payCharge, refundIDList, outerSkuIdList, outerIdList);
            return(true);
        }