Beispiel #1
0
        /// <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();
        }
Beispiel #2
0
        /// <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();
        }
Beispiel #3
0
        /// <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);
            }
        }