Пример #1
0
        private void btnSave_Click(object sender, EventArgs e)
        {
            List <StockHouseProduct>     shpList  = new List <StockHouseProduct>();
            List <View_StockItemProduct> vsipList = new List <View_StockItemProduct>();
            PayCharge payCharge = new PayCharge();

            try
            {
                if (purchaseIn1.GetData(stockInOut, payCharge, sdList, shpList, vsipList))
                {
                    StockInOutService.AddInOutAndDetails(stockInOut, payCharge, sdList, shpList, vsipList);
                    this.Close();
                }
                else
                {
                    stockInOut = new Alading.Entity.StockInOut();
                    sdList     = new List <StockDetail>();
                    return;
                }
            }
            catch (Exception ex)
            {
                return;
            }
        }
Пример #2
0
 public PurchaseIn()
 {
     InitializeComponent();
     sdList             = new List <StockDetail>();
     stockInOut         = new Alading.Entity.StockInOut();
     purchasezIn.Parent = panelCtrlPurchaseIn;
     purchasezIn.Dock   = DockStyle.Fill;
     this.WindowState   = FormWindowState.Maximized;
     this.MaximizeBox   = true;
 }
Пример #3
0
 public bool ExistInOutCode(string inOutCode)
 {
     Alading.Entity.StockInOut stockInOut = StockInOutService.GetStockInOut(inOutCode);
     if (stockInOut != null)
     {
         //存在
         return(true);
     }
     else
     {
         return(false);
     }
 }
Пример #4
0
 /// <summary>
 /// 删除
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void barBtnRemove_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
 {
     Alading.Entity.StockInOut stockInOut = gvAllocation.GetFocusedRow() as Alading.Entity.StockInOut;
     if (stockInOut != null)
     {
         if (XtraMessageBox.Show(string.Format("是否删除编号为\n{0}\n的调拨单?", stockInOut.InOutCode), "系统提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
         {
             if (StockInOutService.RemoveStockInOutDetail(stockInOut.InOutCode) == ReturnType.Success)
             {
                 XtraMessageBox.Show("删除成功");
                 Init();//刷新
             }
         }
     }
 }
Пример #5
0
        /// <summary>
        /// 焦点行改变触发展示调拨详情
        /// </summary>
        private void FocusedRowChange()
        {
            Alading.Entity.StockInOut stockInOut = gvAllocation.GetFocusedRow() as Alading.Entity.StockInOut;
            if (stockInOut == null)
            {
                gridStockProduct.DataSource = null;
            }
            else
            {
                List <View_StockDetailInOut> detailList = StockInOutService.GetStockDetailInOut(i => i.InOutCode == stockInOut.InOutCode);
                DataTable dTable = new DataTable();
                dTable.Columns.Add("Name");
                dTable.Columns.Add("OuterID");
                dTable.Columns.Add("Specification");
                dTable.Columns.Add("Model");
                dTable.Columns.Add("SaleProps");

                dTable.Columns.Add("SkuOuterID");
                dTable.Columns.Add("SkuQuantity");
                //dTable.Columns.Add("StockHouseCodeOut");
                //dTable.Columns.Add("StockHouseCodeIn");
                dTable.Columns.Add("LayoutCodeIn");

                dTable.Columns.Add("LayoutCodeOut");
                //dTable.Columns.Add("HouseNameIn");
                dTable.Columns.Add("LayoutNameIn");
                //dTable.Columns.Add("HouseNameOut");
                dTable.Columns.Add("LayoutNameOut");

                //List<string> inOutCodeList = new List<string>();
                //var q = from i in detailList
                //        select i.InOutCode;
                //inOutCodeList = q.Distinct().ToList();
                //if (inOutCodeList == null || inOutCodeList.Count == 0)
                //    return;

                //foreach (string inOutCode in inOutCodeList)
                //{

                List <View_StockDetailInOut> stockOutList = detailList.Where(i => i.InOutCode == stockInOut.InOutCode && i.DetailType == (int)DetailType.AllocateOut).ToList();
                List <View_StockDetailInOut> stockInList  = detailList.Where(i => i.InOutCode == stockInOut.InOutCode && i.DetailType == (int)DetailType.AllocateIn).ToList();

                if (stockOutList != null && stockInList != null && stockOutList.Count() > 0 && stockOutList.Count() == stockInList.Count())
                {
                    for (int i = 0; i < stockOutList.Count(); i++)
                    {
                        View_StockDetailInOut stockOut = stockOutList[i];
                        View_StockDetailInOut stockIn  = stockInList[i];

                        DataRow dRow = dTable.NewRow();
                        if (stockIn != null)
                        {
                            dRow["Name"]          = stockIn.Name;
                            dRow["OuterID"]       = stockIn.OuterID;
                            dRow["Specification"] = stockIn.Specification;
                            dRow["Model"]         = stockIn.Model;
                            dRow["SaleProps"]     = stockIn.SkuProps_Str;
                            //dRow["HouseNameIn"] = stockIn.HouseName;
                            dRow["LayoutNameIn"] = stockIn.LayoutName;
                            //dRow["StockHouseCodeIn"] = stockIn.StockHouseCode;
                            dRow["LayoutCodeIn"] = stockIn.StockLayOutCode;
                        }
                        if (stockOut != null)
                        {
                            dRow["SkuOuterID"]  = stockOut.ProductSkuOuterId;
                            dRow["SkuQuantity"] = stockOut.Quantity;
                            //dRow["StockHouseCodeOut"] = stockOut.StockHouseCode;
                            dRow["LayoutCodeOut"] = stockOut.StockLayOutCode;
                            //dRow["HouseNameOut"] = stockOut.HouseName;
                            dRow["LayoutNameOut"] = stockOut.LayoutName;
                        }
                        dTable.Rows.Add(dRow);
                        //}
                    }
                }

                gridStockProduct.DataSource = dTable;
                gVStockProduct.BestFitColumns();
            }
        }
Пример #6
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);
        }
        public ReturnType AddStockCheckAndDetails(StockCheck stockCheck, List <StockCheckDetail> CheckDetails)
        {
            try
            {
                using (AladingEntities alading = new AladingEntities(AppSettings.GetConnectionString()))
                {
                    alading.AddToStockCheck(stockCheck);
                    foreach (StockCheckDetail detail in CheckDetails)
                    {
                        alading.AddToStockCheckDetail(detail);

                        #region StockInOut
                        Alading.Entity.StockInOut stockInOut = new Alading.Entity.StockInOut();
                        stockInOut.AmountTax      = 0;
                        stockInOut.DiscountFee    = 0;
                        stockInOut.DueFee         = 0;
                        stockInOut.FreightCode    = string.Empty;
                        stockInOut.FreightCompany = string.Empty;
                        stockInOut.InOutCode      = Guid.NewGuid().ToString();
                        stockInOut.InOutTime      = DateTime.Now;
                        if (detail.ProfitType == (int)ProfitType.PROFIT)
                        {
                            stockInOut.InOutType = (int)InOutType.ProfitIn;
                        }
                        else
                        {
                            stockInOut.InOutType = (int)InOutType.LossOut;
                        }
                        stockInOut.TradeOrderCode = string.Empty;

                        stockInOut.OperatorCode = stockCheck.OperatorCode;
                        stockInOut.OperatorName = string.Empty;
                        stockInOut.PayType      = (int)PayType.CASH;

                        stockInOut.IsSettled   = true;
                        stockInOut.PayTerm     = 0;
                        stockInOut.IncomeTime  = DateTime.MinValue;
                        stockInOut.PayThisTime = 0;
                        #endregion

                        #region StockDetail
                        StockDetail stockDetailOut = new StockDetail();
                        stockDetailOut.ProductSkuOuterId = detail.SkuOuterID;
                        stockDetailOut.DetailRemark      = string.Empty;
                        stockDetailOut.DetailType        = (int)DetailType.AllocateOut;
                        stockDetailOut.DurabilityDate    = DateTime.Now;
                        stockDetailOut.InOutCode         = stockInOut.InOutCode;
                        stockDetailOut.Price             = 0;
                        stockDetailOut.Quantity          = detail.CheckQuantity;
                        stockDetailOut.StockDetailCode   = Guid.NewGuid().ToString();
                        stockDetailOut.StockHouseCode    = stockCheck.StockHouseCode;
                        stockDetailOut.StockLayOutCode   = detail.LayoutCode;
                        stockDetailOut.Tax      = string.Empty;
                        stockDetailOut.TotalFee = 0;
                        #endregion

                        StockProduct product = alading.StockProduct.FirstOrDefault(i => i.SkuOuterID == detail.SkuOuterID);
                        if (product != null)
                        {
                            product.SkuQuantity = detail.Quantity;//归档
                        }
                        alading.AddToStockInOut(stockInOut);
                        alading.AddToStockDetail(stockDetailOut);
                    }

                    alading.SaveChanges();
                    return(ReturnType.Success);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Пример #8
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);
        }
Пример #9
0
        public AllocationAdd(Alading.Entity.StockInOut stockInOut, DataTable dTable)
        {
            InitializeComponent();

            IsAddFlag = false;
            this.Text = "库存调拨-修改";
            AddColumns();//给table增加row
            textOperatorName.Text    = stockInOut.OperatorName;
            dateInOutTime.DateTime   = stockInOut.InOutTime;
            textInOutCode.Text       = stockInOut.InOutCode;
            comboStockOut.Text       = stockInOut.HouseNameOut;
            comboStockIn.Text        = stockInOut.HouseNameIn;
            simpleBtnSaveAdd.Visible = false;
            foreach (DataRow dRow in dTable.Rows)
            {
                DataRow newRow = this.dTable.NewRow();
                newRow["IsSelected"]    = false;
                newRow["Name"]          = dRow["Name"];
                newRow["OuterID"]       = dRow["OuterID"];
                newRow["Specification"] = dRow["Specification"];
                newRow["Model"]         = dRow["Model"];
                newRow["SaleProps"]     = dRow["SaleProps"];
                newRow["Num"]           = StockHouseService.GetQuantity(dRow["SkuOuterID"].ToString(), stockInOut.HouseCodeOut, dRow["LayoutCodeOut"].ToString());//调出仓库库位库存量
                newRow["SkuOuterID"]    = dRow["SkuOuterID"];
                newRow["SkuQuantity"]   = dRow["SkuQuantity"];
                newRow["LayoutCodeIn"]  = dRow["LayoutCodeIn"];
                newRow["LayoutCodeOut"] = dRow["LayoutCodeOut"];
                newRow["LayoutNameIn"]  = dRow["LayoutNameIn"];
                newRow["LayoutNameOut"] = dRow["LayoutNameOut"];
                this.dTable.Rows.Add(newRow);
            }

            int rowHandle = gVStockProduct.FocusedRowHandle;

            //gVStockProduct.FocusedRowChanged -= gVStockProduct_FocusedRowChanged;
            gridStockProduct.DataSource = this.dTable;
            if (rowHandle == 0 && gVStockProduct.FocusedRowHandle > -1)
            {
                FocusedRowChange();
            }

            //加载出库库位
            string  tag     = string.Empty;
            DataRow dataRow = gVStockProduct.GetFocusedDataRow();

            if (dataRow != null)
            {
                string skuOuterID = dataRow["SkuOuterID"].ToString();
                List <StockHouseProduct> stockLayoutList = StockHouseService.GetStockHouseProduct(i => i.SkuOuterID == skuOuterID && i.HouseCode == stockInOut.HouseCodeOut);
                foreach (StockHouseProduct vStockHouse in stockLayoutList)
                {
                    if (string.IsNullOrEmpty(vStockHouse.LayoutName))
                    {
                        continue;
                    }
                    repositoryItemComboBoxLayoutOut.Items.Add(vStockHouse.LayoutName);
                    tag += vStockHouse.LayoutCode + ",";
                }
                repositoryItemComboBoxLayoutOut.Tag = tag.Trim(',');
            }

            //加载入库库位
            string             tagIn      = string.Empty;
            List <StockLayout> LayoutList = StockLayoutService.GetStockLayout(i => i.StockHouseCode == stockInOut.HouseCodeIn);

            foreach (StockLayout layout in LayoutList)
            {
                if (string.IsNullOrEmpty(layout.LayoutName))
                {
                    continue;
                }
                repositoryItemComboBoxLayoutIn.Items.Add(layout.LayoutName);
                tagIn += layout.StockLayoutCode + ",";
            }
            repositoryItemComboBoxLayoutIn.Tag = tagIn.Trim(',');
        }
Пример #10
0
        /// <summary>
        /// 获取调拨单
        /// </summary>
        private SortedList <List <Alading.Entity.StockInOut>, List <StockDetail> > GetStockInOutDetail()
        {
            try
            {
                // || textOperatorName.Text == string.Empty
                if (dateInOutTime.Text == string.Empty ||
                    comboStockOut.Text == string.Empty || comboStockIn.Text == string.Empty)
                {
                    XtraMessageBox.Show("带*号的为必填项", Constants.SYSTEM_PROMPT);
                    return(null);
                }

                List <Alading.Entity.StockInOut> stockInOutList = new List <Alading.Entity.StockInOut>();

                Alading.Entity.StockInOut stockOut = new Alading.Entity.StockInOut();
                stockOut.AmountTax      = 0;
                stockOut.DiscountFee    = 0;
                stockOut.DueFee         = 0;
                stockOut.FreightCode    = string.Empty;
                stockOut.FreightCompany = string.Empty;
                if (textInOutCode.Text == string.Empty)
                {
                    stockOut.InOutCode = Guid.NewGuid().ToString();
                }
                else
                {
                    stockOut.InOutCode = textInOutCode.Text;//调拨单编号
                }
                stockOut.InOutTime      = dateInOutTime.DateTime;
                stockOut.InOutType      = (int)InOutType.AllocateOut;
                stockOut.InOutStatus    = (int)InOutStatus.AllReach;
                stockOut.TradeOrderCode = string.Empty;
                if (Alading.Utils.SystemHelper.User != null)
                {
                    stockOut.OperatorCode = Alading.Utils.SystemHelper.User.UserCode;
                }
                else
                {
                    stockOut.OperatorCode = string.Empty;
                }
                stockOut.OperatorName = textOperatorName.Text;
                stockOut.PayType      = (int)PayType.CASH;

                stockOut.IsSettled   = true;
                stockOut.PayTerm     = 0;
                stockOut.IncomeTime  = DateTime.MinValue;
                stockOut.PayThisTime = 0;

                string stockHouseCodeOut = string.Empty;
                if (comboStockOut.Tag != null)
                {
                    string[] codeList = comboStockOut.Tag.ToString().Split(',');
                    if (codeList.Length > comboStockOut.SelectedIndex)
                    {
                        stockHouseCodeOut = codeList[comboStockOut.SelectedIndex];
                    }
                }

                string stockHouseCodeIn = string.Empty;
                if (comboStockIn.Tag != null)
                {
                    string[] codeList = comboStockIn.Tag.ToString().Split(',');
                    if (codeList.Length > comboStockIn.SelectedIndex)
                    {
                        stockHouseCodeIn = codeList[comboStockIn.SelectedIndex];
                    }
                }

                stockOut.HouseNameOut = comboStockOut.Text;
                stockOut.HouseCodeOut = stockHouseCodeOut;
                stockOut.HouseNameIn  = comboStockIn.Text;
                stockOut.HouseCodeIn  = stockHouseCodeIn;

                Alading.Entity.StockInOut stockIn = new Alading.Entity.StockInOut();
                stockIn.AmountTax      = 0;
                stockIn.DiscountFee    = 0;
                stockIn.DueFee         = 0;
                stockIn.FreightCode    = string.Empty;
                stockIn.FreightCompany = string.Empty;
                //注意需要一样才行
                stockIn.InOutCode      = stockOut.InOutCode;
                stockIn.InOutStatus    = stockOut.InOutStatus;
                stockIn.InOutTime      = dateInOutTime.DateTime;
                stockIn.InOutType      = (int)InOutType.AllocateIn;
                stockIn.TradeOrderCode = string.Empty;

                stockIn.OperatorCode = stockOut.OperatorCode;
                stockIn.OperatorName = textOperatorName.Text;
                stockIn.PayType      = (int)PayType.CASH;

                stockIn.IsSettled   = true;
                stockIn.PayTerm     = 0;
                stockIn.IncomeTime  = DateTime.MinValue;
                stockIn.PayThisTime = 0;

                stockIn.HouseNameOut = comboStockOut.Text;
                stockIn.HouseCodeOut = stockHouseCodeOut;
                stockIn.HouseNameIn  = comboStockIn.Text;
                stockIn.HouseCodeIn  = stockHouseCodeIn;

                stockInOutList.Add(stockIn);
                stockInOutList.Add(stockOut);


                List <StockDetail> stockDetailList = new List <StockDetail>();
                for (int i = 0; i < gVStockProduct.RowCount; i++)
                {
                    #region 判断库位

                    if (gVStockProduct.GetRowCellValue(i, "LayoutCodeOut") != null)
                    {
                        if (gVStockProduct.GetRowCellValue(i, "LayoutCodeOut").ToString() == string.Empty)
                        {
                            XtraMessageBox.Show("请选择调出库位");
                            return(null);
                        }
                    }

                    if (gVStockProduct.GetRowCellValue(i, "LayoutCodeIn") != null)
                    {
                        if (gVStockProduct.GetRowCellValue(i, "LayoutCodeIn").ToString() == string.Empty)
                        {
                            XtraMessageBox.Show("请选择调入库位");
                            return(null);
                        }
                    }

                    #endregion

                    #region 判断数量

                    int houseOutNum = int.Parse(gVStockProduct.GetRowCellValue(i, "Num").ToString());

                    if (gVStockProduct.GetRowCellValue(i, "SkuQuantity") != null)
                    {
                        string num = gVStockProduct.GetRowCellValue(i, "SkuQuantity").ToString();
                        if (num == string.Empty || int.Parse(num) == 0)
                        {
                            XtraMessageBox.Show("调拨数量应大于0");
                            return(null);
                        }
                        else
                        {
                            if (int.Parse(num) > houseOutNum)
                            {
                                XtraMessageBox.Show("调拨数量应不大于调出仓库库存量");
                                return(null);
                            }
                        }
                    }
                    #endregion

                    //调出
                    StockDetail stockDetailOut = new StockDetail();
                    if (gVStockProduct.GetRowCellValue(i, "SkuOuterID") != null)
                    {
                        stockDetailOut.ProductSkuOuterId = gVStockProduct.GetRowCellValue(i, "SkuOuterID").ToString();
                    }
                    stockDetailOut.DetailRemark    = string.Empty;
                    stockDetailOut.DetailType      = (int)Alading.Core.Enum.DetailType.AllocateOut;
                    stockDetailOut.DurabilityDate  = DateTime.Now;
                    stockDetailOut.InOutCode       = stockOut.InOutCode;
                    stockDetailOut.Price           = 0;
                    stockDetailOut.Quantity        = int.Parse(gVStockProduct.GetRowCellValue(i, "SkuQuantity").ToString());
                    stockDetailOut.StockDetailCode = Guid.NewGuid().ToString();

                    stockDetailOut.HouseName      = comboStockOut.Text;
                    stockDetailOut.StockHouseCode = stockHouseCodeOut;

                    //if (gVStockProduct.GetRowCellValue(i, "LayoutCodeOut").ToString() != null)
                    //{
                    stockDetailOut.StockLayOutCode = gVStockProduct.GetRowCellValue(i, "LayoutCodeOut").ToString();
                    //}
                    stockDetailOut.LayoutName = gVStockProduct.GetRowCellValue(i, "LayoutNameOut").ToString();

                    //else
                    //{
                    //    stockDetailOut.StockLayOutCode = string.Empty;
                    //}
                    stockDetailOut.Tax      = string.Empty;
                    stockDetailOut.TotalFee = 0;
                    //调入
                    StockDetail stockDetailIn = new StockDetail();
                    stockDetailIn.Tax               = string.Empty;
                    stockDetailIn.TotalFee          = 0;
                    stockDetailIn.DetailRemark      = string.Empty;
                    stockDetailIn.DurabilityDate    = DateTime.Now;
                    stockDetailIn.InOutCode         = stockIn.InOutCode;
                    stockDetailIn.Price             = 0;
                    stockDetailIn.Quantity          = stockDetailOut.Quantity;
                    stockDetailIn.ProductSkuOuterId = stockDetailOut.ProductSkuOuterId;
                    stockDetailIn.DetailType        = (int)DetailType.AllocateIn;
                    stockDetailIn.StockDetailCode   = Guid.NewGuid().ToString();

                    stockDetailIn.HouseName      = comboStockIn.Text;
                    stockDetailIn.StockHouseCode = stockHouseCodeIn;

                    //if (gVStockProduct.GetRowCellValue(i, "LayoutCodeIn").ToString() != null)
                    //{
                    stockDetailIn.StockLayOutCode = gVStockProduct.GetRowCellValue(i, "LayoutCodeIn").ToString();
                    //}
                    stockDetailIn.LayoutName = gVStockProduct.GetRowCellValue(i, "LayoutNameIn").ToString();

                    //else
                    //{
                    //    stockDetailIn.StockLayOutCode = string.Empty;
                    //}

                    stockDetailList.Add(stockDetailOut);
                    stockDetailList.Add(stockDetailIn);
                }

                SortedList <List <Alading.Entity.StockInOut>, List <StockDetail> > sortedStockDetail = new SortedList <List <Alading.Entity.StockInOut>, List <StockDetail> >();
                sortedStockDetail.Add(stockInOutList, stockDetailList);
                return(sortedStockDetail);
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show(ex.Message, Constants.SYSTEM_PROMPT);
                return(null);
            }
        }
Пример #11
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);
        }