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); } }
/// <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(); }
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(); } } } }
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); } }
/// <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); } }
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; } }
/// <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); } }
public static ReturnType AddStockHouseProduct(StockHouseProduct stockHouseProduct) { return(DataProviderClass.Instance().AddStockHouseProduct(stockHouseProduct)); }
/// <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); } }
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); } }
/// <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); }
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); } }
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(); } } } }
/// <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); }
/// <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(); } } } }
/// <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); }