/// <summary> /// 根据当前行获取当前焦点商品的出入库详细信息 /// </summary> void GetDetails() { DataRow row = gvProductCheck.GetFocusedDataRow(); if (row != null) { gridCtrlDetail.DataSource = null; string skuOuterId = row[gcSkuOuterID.FieldName].ToString(); string layoutCode = row[gcLayoutCode.FieldName] != null ? row[gcLayoutCode.FieldName].ToString() : string.Empty; string houseCode = (comboBoxStockHouse.Tag as Hashtable)[comboBoxStockHouse.SelectedIndex].ToString(); List <StockDetail> stockDetailList; List <HistoryStockDetail> historyDetailList; if (string.IsNullOrEmpty(layoutCode)) { stockDetailList = StockDetailService.GetStockDetail(c => c.ProductSkuOuterId == skuOuterId && c.StockHouseCode == houseCode); historyDetailList = StockDetailService.GetHistoryDetail(c => c.ProductSkuOuterId == skuOuterId && c.StockHouseCode == houseCode); } else { stockDetailList = StockDetailService.GetStockDetail(c => c.ProductSkuOuterId == skuOuterId && c.StockHouseCode == houseCode && c.StockLayOutCode == layoutCode); historyDetailList = StockDetailService.GetHistoryDetail(c => c.ProductSkuOuterId == skuOuterId && c.StockHouseCode == houseCode && c.StockLayOutCode == layoutCode); } List <SonStockDetail> sonStockDetailList = new List <SonStockDetail>(); foreach (StockDetail sd in stockDetailList) { SonStockDetail ssd = new SonStockDetail(sd); ssd.Type = UIHelper.GetEnumData("DetailType", ssd.DetailType); sonStockDetailList.Add(ssd); } gridCtrlDetail.DataSource = sonStockDetailList; List <SonStockDetail> sonStockDetailList2 = new List <SonStockDetail>(); foreach (HistoryStockDetail sd in historyDetailList) { SonStockDetail ssd = new SonStockDetail(sd); ssd.Type = UIHelper.GetEnumData("DetailType", ssd.DetailType); sonStockDetailList2.Add(ssd); } gridCtrlHistoryDetail.DataSource = sonStockDetailList2; } gridViewDetail.BestFitColumns(); gridViewHistoryDetail.BestFitColumns(); }
/// <summary> /// 给当前要显示的明细列表添加行 /// </summary> /// <param name="vidpList"></param> void GetProductTableDataSource(IGrouping <string, View_InOutDetailProduct> vidpList) { productTable.Rows.Clear(); foreach (View_InOutDetailProduct vidp in vidpList) { DataRow row = productTable.NewRow(); row[pgcCatName.FieldName] = vidp.CatName; row[pgcHouseName.FieldName] = vidp.HouseName; row[pgcLayoutName.FieldName] = vidp.LayoutName; row[pgcQuantity.FieldName] = vidp.Quantity; row[pgcName.FieldName] = vidp.Name; row[pgcProductSkuOuterID.FieldName] = vidp.ProductSkuOuterId; row[pgcSkuProps_Str.FieldName] = vidp.SkuProps_Str; row[pgcStockCatName.FieldName] = vidp.StockCatName; productTable.Rows.Add(row); } List <HistoryStockDetail> historyList = StockDetailService.GetHistoryDetail(vidpList.Key); if (historyList != null) { foreach (HistoryStockDetail historyDetail in historyList) { //DataRow row = productTable.NewRow(); //row[pgcCatName.FieldName] = historyDetail.CatName; //row[pgcHouseName.FieldName] = historyDetail.HouseName; //row[pgcLayoutName.FieldName] = historyDetail.LayoutName; //row[pgcQuantity.FieldName] = historyDetail.Quantity; //row[pgcName.FieldName] = historyDetail.Name; //row[pgcProductSkuOuterID.FieldName] = historyDetail.ProductSkuOuterId; //row[pgcSkuProps_Str.FieldName] = historyDetail.SkuProps_Str; //row[pgcStockCatName.FieldName] = historyDetail.StockCatName; //productTable.Rows.Add(row); } } gridViewStockInOut.BestFitColumns(); gridViewStockItem.BestFitColumns(); }
/// <summary> /// 归档 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void bbtnSave_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { WaitDialogForm waitForm = new WaitDialogForm(Constants.OPERATE_DB_DATA); waitForm.Show(); try { if (string.IsNullOrEmpty(comboBoxStockHouse.Text)) { waitForm.Close(); XtraMessageBox.Show("请选择仓库进行盘点!"); return; } if (gvProductCheck.RowCount == 0) { waitForm.Close(); XtraMessageBox.Show("请选择一件商品进行盘点!"); return; } if (string.IsNullOrEmpty(pceOperator.Text)) { waitForm.Close(); XtraMessageBox.Show("请选择操作人!"); return; } /*盘点必须选择具体库位,否则返回*/ if (!IsChooseLayout()) { waitForm.Close(); XtraMessageBox.Show("请选择具体库位!"); return; } /*盘点必须输入实际数量,否则返回*/ if (!IsInputQuantity()) { waitForm.Close(); XtraMessageBox.Show("请输入实际数量!"); return; } /*开始进行盘点*/ #region 出入库单 ///*实例化两个StockInOut,一个用于记录报损出库,一个用于记录报溢入库*/ //Alading.Entity.StockInOut profitInout = new Alading.Entity.StockInOut(); //Alading.Entity.StockInOut lossInout = new Alading.Entity.StockInOut(); //#region 初始化赋值 //profitInout.AmountTax = 0; //profitInout.DiscountFee = 0; //profitInout.DueFee = 0; //profitInout.FreightCode = string.Empty; //profitInout.FreightCompany = string.Empty; //profitInout.HouseCodeIn = string.Empty; //profitInout.HouseCodeOut = string.Empty; //profitInout.HouseNameIn = string.Empty; //profitInout.HouseNameOut = string.Empty; //profitInout.IncomeTime = DateTime.Now; ///*GUID*/ //profitInout.InOutCode = System.Guid.NewGuid().ToString(); //profitInout.InOutStatus = (int)InOutStatus.AllReach; //profitInout.InOutTime = DateTime.Now; //profitInout.InOutType = (int)InOutType.ProfitIn; //profitInout.IsSettled = true; ///*操作人,暂时为空*/ //profitInout.OperatorCode = string.Empty; //profitInout.OperatorName = string.Empty; //profitInout.PayTerm = DateTime.Now; //profitInout.PayThisTime = 0; //profitInout.PayType = (int)PayType.OTHER; //profitInout.SearchText = string.Empty; //profitInout.TradeOrderCode = string.Empty; //profitInout.TransportCode = string.Empty; //lossInout.AmountTax = 0; //lossInout.DiscountFee = 0; //lossInout.DueFee = 0; //lossInout.FreightCode = string.Empty; //lossInout.FreightCompany = string.Empty; //lossInout.HouseCodeIn = string.Empty; //lossInout.HouseCodeOut = string.Empty; //lossInout.HouseNameIn = string.Empty; //lossInout.HouseNameOut = string.Empty; //lossInout.IncomeTime = DateTime.Now; ///*GUID*/ //lossInout.InOutCode = System.Guid.NewGuid().ToString(); //lossInout.InOutStatus = (int)InOutStatus.AllReach; //lossInout.InOutTime = DateTime.Now; //lossInout.InOutType = (int)InOutType.ProfitIn; //lossInout.IsSettled = true; ///*操作人,暂时为空*/ //lossInout.OperatorCode = string.Empty; //lossInout.OperatorName = string.Empty; //lossInout.PayTerm = DateTime.Now; //lossInout.PayThisTime = 0; //lossInout.PayType = (int)PayType.OTHER; //lossInout.SearchText = string.Empty; //lossInout.TradeOrderCode = string.Empty; //lossInout.TransportCode = string.Empty; //#endregion #endregion Hashtable table = comboBoxStockHouse.Tag as Hashtable; string houseCode = table[comboBoxStockHouse.SelectedIndex].ToString(); int rowCount = gvProductCheck.RowCount; /*盘点详情列表*/ //List<StockCheckDetail> stockCheckDetailList = new List<StockCheckDetail>(); #region 盘点单 StockCheck stockCheck = new StockCheck(); stockCheck.Created = DateTime.Now; /*操作人*/ stockCheck.OperatorCode = pceOperator.Tag != null?pceOperator.Tag.ToString() : string.Empty; /*盘点单号*/ //string year = DateTime.Now.Year.ToString(); //string month = DateTime.Now.Month.ToString(); //string day = DateTime.Now.Day.ToString(); //string hour = DateTime.Now.Hour.ToString(); //string minute = DateTime.Now.Minute.ToString(); //string second = DateTime.Now.Second.ToString(); //stockCheck.StockCheckCode = "PDD-"+year+month+day+"-"+hour+minute+second; stockCheck.StockCheckCode = !string.IsNullOrEmpty(textEditCheckCode.Text) ? textEditCheckCode.Text.Trim() : System.Guid.NewGuid().ToString(); stockCheck.StockHouseCode = houseCode; #endregion if (StockDetailService.AddStockCheck(stockCheck) == ReturnType.Success) { for (int i = 0; i < rowCount; i++) { DataRow row = gvProductCheck.GetDataRow(i); string profitType = row[gcProfitType.FieldName].ToString(); string skuOuterId = row[gcSkuOuterID.FieldName].ToString(); int factQuantity = int.Parse(row[gcQuantity.FieldName].ToString()); int skuQuantity = int.Parse(row[gcSkuQuantity.FieldName].ToString()); string layoutCode = row[gcLayoutCode.FieldName].ToString(); string layoutName = row[gcLayoutName.FieldName].ToString(); #region 盘点入库Detail StockDetail stockDetail = new StockDetail(); stockDetail.DetailRemark = string.Empty; stockDetail.DetailType = (int)DetailType.CheckIn; stockDetail.DurabilityDate = DateTime.Now; stockDetail.HouseName = comboBoxStockHouse.Text; stockDetail.InOutCode = string.Empty; stockDetail.LayoutName = layoutName; /*价格问题??????*/ stockDetail.Price = row[gcPrice.FieldName] != null && row[gcPrice.FieldName].ToString() != string.Empty ? float.Parse(row[gcPrice.FieldName].ToString()) : 0; stockDetail.ProductSkuOuterId = skuOuterId; stockDetail.Quantity = factQuantity; /*搜索字段*/ stockDetail.SearchText = string.Empty; stockDetail.StockDetailCode = System.Guid.NewGuid().ToString(); stockDetail.StockHouseCode = houseCode; stockDetail.StockLayOutCode = layoutCode; stockDetail.Tax = string.Empty; stockDetail.TotalFee = stockDetail.Price * stockDetail.Quantity; #endregion #region 盘点详情 StockCheckDetail stockCheckDetail = new StockCheckDetail(); /*报溢/报损数量*/ stockCheckDetail.CheckQuantity = factQuantity - skuQuantity; if (stockCheckDetail.CheckQuantity < 0) { stockCheckDetail.CheckQuantity = -stockCheckDetail.CheckQuantity; } stockCheckDetail.LayoutCode = layoutCode; /*实际数量*/ stockCheckDetail.Quantity = factQuantity; /*搜索字段*/ stockCheckDetail.SearchText = string.Empty; stockCheckDetail.SkuOuterID = skuOuterId; /*账面数量*/ stockCheckDetail.SkuQuantity = skuQuantity; stockCheckDetail.StockCheckCode = stockCheck.StockCheckCode; #endregion /*将所有该仓库该库位的商品出入库详情取出,放入历史表*/ List <StockDetail> hisStockDetailList = StockDetailService.GetStockDetail(c => c.ProductSkuOuterId == skuOuterId && c.StockHouseCode == houseCode && c.StockLayOutCode == layoutCode); if (profitType == "1") { /*报溢处理*/ StockDetail profitDetail = new StockDetail(); profitDetail.DetailRemark = "报溢入库"; profitDetail.DetailType = (int)DetailType.ProfitIn; profitDetail.DurabilityDate = stockDetail.DurabilityDate; profitDetail.HouseName = stockDetail.HouseName; profitDetail.InOutCode = string.Empty; profitDetail.LayoutName = stockDetail.LayoutName; profitDetail.Price = stockDetail.Price; profitDetail.ProductSkuOuterId = stockDetail.ProductSkuOuterId; /*报溢入库数量=实际数量-账面数量*/ profitDetail.Quantity = factQuantity - skuQuantity; /*搜索字段*/ profitDetail.SearchText = string.Empty; profitDetail.StockDetailCode = System.Guid.NewGuid().ToString(); profitDetail.StockHouseCode = houseCode; profitDetail.StockLayOutCode = layoutCode; profitDetail.Tax = string.Empty; /*总花费*/ profitDetail.TotalFee = profitDetail.Quantity * profitDetail.Price; hisStockDetailList.Add(profitDetail); /*盘点详情的类型为报溢*/ stockCheckDetail.ProfitType = (int)ProfitType.PROFIT; } else if (profitType == "2") { /*报损处理*/ StockDetail LossDetail = new StockDetail(); LossDetail.DetailRemark = "报损入库"; LossDetail.DetailType = (int)DetailType.LossOut; LossDetail.DurabilityDate = stockDetail.DurabilityDate; LossDetail.HouseName = stockDetail.HouseName; LossDetail.InOutCode = string.Empty; LossDetail.LayoutName = stockDetail.LayoutName; LossDetail.Price = stockDetail.Price; LossDetail.ProductSkuOuterId = stockDetail.ProductSkuOuterId; /*报损出库数量=实际数量-账面数量*/ LossDetail.Quantity = skuQuantity - factQuantity; /*搜索字段*/ LossDetail.SearchText = string.Empty; LossDetail.StockDetailCode = System.Guid.NewGuid().ToString(); LossDetail.StockHouseCode = houseCode; LossDetail.StockLayOutCode = layoutCode; LossDetail.Tax = string.Empty; /*总花费*/ LossDetail.TotalFee = LossDetail.Quantity * LossDetail.Price; hisStockDetailList.Add(LossDetail); /*盘点详情的类型为报损*/ stockCheckDetail.ProfitType = (int)ProfitType.LOSS; } else { /*正常处理*/ stockCheckDetail.ProfitType = (int)ProfitType.NORMAL; } /*盘点详情列表*/ //stockCheckDetailList.Add(); /*盘点单需要的参数:1、类型(报溢/报损)2、报溢或报损数量 3、历史出入库详情 4、盘点入库详情 5、盘点单列表*/ StockDetailService.Check(factQuantity - skuQuantity, hisStockDetailList, stockDetail, stockCheckDetail); } } else { /**/ } gvProductCheck.BestFitColumns(); gridViewDetail.BestFitColumns(); waitForm.Close(); } catch (Exception ex) { waitForm.Close(); XtraMessageBox.Show(ex.ToString(), Constants.SYSTEM_PROMPT, MessageBoxButtons.OK, MessageBoxIcon.Information); } }