コード例 #1
0
        /// <summary>
        /// 删除实体
        /// </summary>
        /// <param name="param">删除条件实体</param>
        /// <returns></returns>
        public WCFAddUpdateResult DelInfo(ORD_PurchaseReturnLineParam param)
        {
            this.CheckSession();
            WCFAddUpdateResult ret = new WCFAddUpdateResult();
            int affect             = 0;

            try
            {
                #region 判断
                if (param.PRLineGuid == null)
                {
                    throw new WarnException("请指定明细GUID!");
                }
                #endregion
                WhereClip whereClip = GetWhereClip(param);
                ORD_PurchaseReturnLineResult info = new ORD_PurchaseReturnLineResult();
                info.IsDeleted = true;
                affect         = this.Update <ORD_PurchaseReturnLineResult>(info, whereClip);
                #region 设置返回值
                ret.Key = affect;
                #endregion
            }
            catch (WarnException exp)
            {
                throw exp;
            }
            catch (System.Exception exp)
            {
                LogInfoBLL.WriteLog(this.SessionInfo, exp);
                throw exp;
            }
            return(ret);
        }
コード例 #2
0
ファイル: frmPurchaseReturn.cs プロジェクト: windygu/CRM
        private void btnAddRow_Click(object sender, EventArgs e)
        {
            bsPurchaseReturnLine.AddNew();
            ORD_PurchaseReturnLineResult rst = bsPurchaseReturnLine.Current as ORD_PurchaseReturnLineResult;

            InitNewData(rst);
        }
コード例 #3
0
ファイル: frmPurchaseReturn.cs プロジェクト: windygu/CRM
        public void SetStkLineObjectValue(ORD_PurchaseReturnLineResult returnLineResult, STK_InLineResult inLineRst)
        {
            returnLineResult.POGuid     = inLineRst.SourceBillGuid;
            returnLineResult.POBillNo   = inLineRst.SourceBillNo;//采购单号
            returnLineResult.POLineGuid = inLineRst.SourceBillLineGuid;

            returnLineResult.StkInGuid     = inLineRst.StkInGuid;
            returnLineResult.StkInBillNo   = inLineRst.StkInBillNo;//入库单号
            returnLineResult.StkInLineGuid = inLineRst.StkInLineGuid;
            returnLineResult.ItemCode      = inLineRst.ItemCode;
            returnLineResult.Model         = inLineRst.Model;
            returnLineResult.Brand         = inLineRst.Brand;
            returnLineResult.Package       = inLineRst.Package;
            returnLineResult.Batch         = inLineRst.Batch;
            returnLineResult.MPQ           = inLineRst.MPQ;
            returnLineResult.Quality       = inLineRst.Quality;
            returnLineResult.MarkCode      = inLineRst.MarkCode;
            returnLineResult.InvType       = inLineRst.InvType;
            returnLineResult.Unit          = inLineRst.Unit;
            returnLineResult.UnitPrice     = inLineRst.UnitPrice;
            returnLineResult.Qty           = inLineRst.Qty.ToInt32() - inLineRst.ReturnOccQty.ToInt32();
            returnLineResult.Currency      = inLineRst.Currency;
            returnLineResult.Amount        = returnLineResult.UnitPrice * returnLineResult.Qty;
            returnLineResult.Warehouse     = inLineRst.Warehouse;
            returnLineResult.Location      = inLineRst.Location;
            returnLineResult.IsDeleted     = false;
        }
コード例 #4
0
ファイル: frmPurchaseReturn.cs プロジェクト: windygu/CRM
        private void btnInsertBefore_Click(object sender, EventArgs e)
        {
            ORD_PurchaseReturnLineResult rst = new ORD_PurchaseReturnLineResult();

            InitNewData(rst);
            bsPurchaseReturnLine.Insert(dgvPurchaseReturnLine.CurrentRow.Index, rst);
        }
コード例 #5
0
ファイル: frmPurchaseReturn.cs プロジェクト: windygu/CRM
 void InitSourceData(ORD_PurchaseOrderResult orderResult)
 {
     if (orderResult != null)
     {
         txtPOGuid.Text            = orderResult.POGuid.ToStringHasNull();
         txtPOBillNo.Text          = orderResult.BillNo;
         cboCurrency.SelectedValue = orderResult.Currency;
         txtPODate.Text            = orderResult.PODate.ToStringHasNull();
         decimal?totalAmount = 0.0m;
         List <STK_InLineResult> inLineList = inLineLogic.GetList(new STK_InLineParam()
         {
             SourceBillGuid = orderResult.POGuid
         });
         foreach (STK_InLineResult inLineResult in inLineList)
         {
             ORD_PurchaseReturnLineResult returnListResult = new ORD_PurchaseReturnLineResult();
             SetStkLineObjectValue(returnListResult, inLineResult);
             totalAmount += returnListResult.Amount;
             bsPurchaseReturnLine.Add(returnListResult);
         }
         totalAmount    = Math.Round(totalAmount.ToDecimal(), 3, MidpointRounding.AwayFromZero);
         txtAmount.Text = totalAmount.ToStringHasNull();
         CRM_CompanyResult companyResult = companyLogic.GetCustInfo(new CRM_CompanyParam()
         {
             CompanyID = orderResult.SupplierID.ToInt32()
         });
         if (companyResult != null)
         {
             txtSupplierID.Text   = companyResult.CompanyID.ToStringHasNull();
             txtSupplierName.Text = companyResult.CompanyName;
         }
     }
 }
コード例 #6
0
        public ORD_PurchaseReturnLineResult GetInfo(ORD_PurchaseReturnLineParam param)
        {
            ORD_PurchaseReturnLineResult ret = new ORD_PurchaseReturnLineResult();
            ExeResult rst = new ExeResult();

            rst = this.Execute("ZNLCRM.BLL.PPM.ORD_PurchaseReturnLineBLL", "GetInfo", param);
            ret = rst == null ? new ORD_PurchaseReturnLineResult() : rst.Result as ORD_PurchaseReturnLineResult;
            return(ret);
        }
コード例 #7
0
        /// <summary>
        /// 添加和新增修改
        /// </summary>
        /// <param name="param">新增或修改的实体</param>
        /// <returns></returns>
        public WCFAddUpdateResult AddOrUpdate(ORD_PurchaseReturnLineResult param)
        {
            this.CheckSession();
            WCFAddUpdateResult ret = new WCFAddUpdateResult();

            try
            {
                int affect = 0;
                #region 判断
                #endregion

                #region 系统默认值
                if (param.PRLineGuid != null)
                {
                    WhereClip where      = ORD_PurchaseReturnLine._.PRLineGuid == param.PRLineGuid;
                    param.UpdatedEmpID   = this.SessionInfo.UserID;
                    param.UpdatedEmpName = this.SessionInfo.UserName;
                    param.UpdatedTime    = DateTime.Now;
                    affect = this.Update <ORD_PurchaseReturnLineResult>(param, where);
                }
                else
                {
                    param.PRLineGuid     = Guid.NewGuid();
                    param.IsDeleted      = false;
                    param.CreatedEmpID   = this.SessionInfo.UserID;
                    param.CreatedEmpName = this.SessionInfo.UserName;
                    param.CreatedTime    = DateTime.Now;
                    affect = this.Insert <ORD_PurchaseReturnLineResult>(param);
                    param  = this.Select <ORD_PurchaseReturnLineResult>(new List <Field>()
                    {
                        ORD_PurchaseReturnLine._.All
                    }, ORD_PurchaseReturnLine._.PRLineGuid == param.PRLineGuid);
                }
                #region 设置返回值
                ret.KeyGuid        = param.PRLineGuid;
                ret.CreatedTime    = param.CreatedTime;
                ret.CreatedEmpID   = param.CreatedEmpID;
                ret.CreatedEmpName = param.CreatedEmpName;
                ret.UpdatedEmpID   = param.UpdatedEmpID;
                ret.UpdatedEmpName = param.UpdatedEmpName;
                ret.UpdatedTime    = param.UpdatedTime;
                #endregion
                #endregion
            }
            catch (WarnException exp)
            {
                throw exp;
            }
            catch (System.Exception exp)
            {
                LogInfoBLL.WriteLog(this.SessionInfo, exp);
                throw exp;
            }
            return(ret);
        }
コード例 #8
0
ファイル: frmPurchaseReturn.cs プロジェクト: windygu/CRM
 private void btnDelRow_Click(object sender, EventArgs e)
 {
     if (this.bsPurchaseReturnLine.Current != null)
     {
         Guid?PRGuid = null;
         ORD_PurchaseReturnLineResult delResult = this.bsPurchaseReturnLine.Current as ORD_PurchaseReturnLineResult;
         PRGuid = delResult.PRGuid;
         if (PRGuid.ToGuid() != Guid.Empty)
         {
             delResult.IsDeleted = true;
             delList.Add(delResult);
         }
         bsPurchaseReturnLine.RemoveCurrent();
     }
 }
コード例 #9
0
        /// <summary>
        /// 获取一条信息记录
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public ORD_PurchaseReturnLineResult GetInfo(ORD_PurchaseReturnLineParam param)
        {
            this.CheckSession();
            ORD_PurchaseReturnLineResult rst = new ORD_PurchaseReturnLineResult();

            #region 判断
            if (param.PRLineGuid == null)
            {
                throw new WarnException("请指定明细GUID!");
            }
            #endregion
            #region 获取实体

            rst = this.Select <ORD_PurchaseReturnLineResult>(GetWhereClip(param));

            #endregion
            return(rst);
        }
コード例 #10
0
ファイル: frmReserveOperate.cs プロジェクト: windygu/CRM
        private void InitData()
        {
            switch (SourceBillType)
            {
            case "销售出库":
                ORD_SalesOrderLineResult orderLineResult = orderLineLogic.GetInfo(new ORD_SalesOrderLineParam()
                {
                    SOLineGuid = SourceBillLineGuid
                });
                txtModel.Text              = orderLineResult.Model;
                txtBrand.Text              = orderLineResult.Brand;
                txtBatch.Text              = orderLineResult.Batch;
                txtPackage.Text            = orderLineResult.Package;
                txtSourceBillNo.Text       = SourceBillNo;
                txtSourceBillLineCode.Text = orderLineResult.SOLineCode;
                txtSModel.Text             = orderLineResult.Model;
                txtQty.Text        = orderLineResult.Qty.ToStringHasNull();
                txtReserveQty.Text = orderLineResult.ReserveQty.ToStringHasNull();
                break;

            case "采购退货出库":
                ORD_PurchaseReturnLineResult returnLineResult = returnLineLogic.GetInfo(new ORD_PurchaseReturnLineParam()
                {
                    PRLineGuid = SourceBillLineGuid
                });
                txtModel.Text        = returnLineResult.Model;
                txtBrand.Text        = returnLineResult.Brand;
                txtBatch.Text        = returnLineResult.Batch;
                txtPackage.Text      = returnLineResult.Package;
                txtSourceBillNo.Text = SourceBillNo;
                txtSModel.Text       = returnLineResult.Model;
                txtQty.Text          = returnLineResult.Qty.ToStringHasNull();
                txtReserveQty.Text   = returnLineResult.ReserveQty.ToStringHasNull();
                break;
            }
        }
コード例 #11
0
ファイル: frmPurchaseReturn.cs プロジェクト: windygu/CRM
        private void ImportSourceLine(bool isMutiSelect)
        {
            if (string.IsNullOrEmpty(txtSupplierName.Text))
            {
                this.ShowMessage("请选择客户!");
                return;
            }
            if (string.IsNullOrEmpty(cboCurrency.Text))
            {
                this.ShowMessage("请选择币种!");
                return;
            }
            frmSelectStkInLine frm = new frmSelectStkInLine(isMutiSelect);

            if (txtPOGuid.Text.ToGuid() != Guid.Empty)
            {
                frm.SourceBillGuid = txtPOGuid.Text.ToGuid();
            }
            Guid?  stkInLineGuid = Guid.Empty;
            string model         = string.Empty;

            if (!isMutiSelect)
            {
                stkInLineGuid = dgvPurchaseReturnLine.CurrentRow.Cells["colStkInLineGuid"].Value.ToGuid();
                model         = dgvPurchaseReturnLine.CurrentRow.Cells["colModel"].Value.ToStringHasNull();
            }

            if (!string.IsNullOrEmpty(model))
            {
                frm.Model = model;
            }
            if (stkInLineGuid != Guid.Empty)//如果已经存在关联的源单据明细,则只筛选此条明细
            {
                frm.StkInLineGuid = stkInLineGuid;
            }
            else//如果是新行,则排除掉已经存在列表里面的所有的源单据明细
            {
                Guid?[] noStkInLineGuids = addOrModifyList.Where(a => a.StkInLineGuid.ToGuid() != Guid.Empty).Select(a => a.StkInLineGuid).Distinct().ToArray();
                frm.NoStkInLineGuids = noStkInLineGuids;
            }
            frm.BringToFront();
            frm.StartPosition = FormStartPosition.CenterScreen;
            DialogResult rst = frm.ShowDialog();

            if (rst == DialogResult.OK)
            {
                List <STK_InLineResult> rstList = frm.GetSelectList <STK_InLineResult>();
                if (rstList != null && rstList.Count > 0)
                {
                    foreach (STK_InLineResult inLineResult in rstList)
                    {
                        bool isAddNew = true;
                        foreach (DataGridViewRow row in dgvPurchaseReturnLine.Rows)
                        {
                            //如果是已经存在的行,则利用现成的行进行编辑

                            if (row.Cells["colStkInLineGuid"].Value.ToGuid() == inLineResult.StkInLineGuid)
                            {
                                isAddNew = false;
                                ORD_PurchaseReturnLineResult returnLineResult = bsPurchaseReturnLine[row.Index] as ORD_PurchaseReturnLineResult;
                                SetStkLineObjectValue(returnLineResult, inLineResult);
                                break;
                            }
                        }
                        if (isAddNew)
                        {
                            if (!isMutiSelect)//单选
                            {
                                ORD_PurchaseReturnLineResult returnLineResult = bsPurchaseReturnLine.Current as ORD_PurchaseReturnLineResult;
                                SetStkLineObjectValue(returnLineResult, inLineResult);
                            }
                            else//多选
                            {
                                ORD_PurchaseReturnLineResult returnLineResult = new ORD_PurchaseReturnLineResult();
                                SetStkLineObjectValue(returnLineResult, inLineResult);
                                bsPurchaseReturnLine.Add(returnLineResult);
                            }
                        }
                    }
                }
            }
            dgvPurchaseReturnLine.EndEdit();
        }
コード例 #12
0
ファイル: frmPurchaseReturn.cs プロジェクト: windygu/CRM
 void InitNewData(ORD_PurchaseReturnLineResult rst)
 {
     rst.Currency = cboCurrency.SelectedValue.ToStringHasNull();
     rst.InvType  = "备货库存";
     rst.Unit     = "PCS";
 }
コード例 #13
0
        /// <summary>
        /// 操作预留
        /// </summary>
        /// <param name="result"></param>
        /// <returns></returns>
        public bool OperateReserve(STK_StockReserveResult result)
        {
            this.CheckSession();
            try
            {
                //预留调整量
                int?tempReserveQty = 0;
                ORD_SalesOrderLineResult orderLineResult = new ORD_SalesOrderLineResult();
                ORD_SalesOrderLineBLL    orderLineBLL    = new ORD_SalesOrderLineBLL();
                orderLineBLL.SessionInfo = this.SessionInfo;
                ORD_PurchaseReturnLineResult returnLineResult = new ORD_PurchaseReturnLineResult();
                ORD_PurchaseReturnLineBLL    returnLineBLL    = new ORD_PurchaseReturnLineBLL();
                returnLineBLL.SessionInfo = this.SessionInfo;

                //空值转换为零
                if (result.ReserveQty == null)
                {
                    result.ReserveQty = 0;
                }
                // 预留明细的业务类型
                switch (result.SourceBillType)
                {
                case "销售出库":
                    orderLineResult = orderLineBLL.GetInfo(new ORD_SalesOrderLineParam()
                    {
                        SOLineGuid = result.SourceBillLineGuid
                    });
                    if (orderLineResult != null)
                    {
                        if (orderLineResult.Qty == null)
                        {
                            orderLineResult.Qty = 0;
                        }
                        if (orderLineResult.ReserveQty == null)
                        {
                            orderLineResult.ReserveQty = 0;
                        }
                        tempReserveQty = orderLineResult.Qty - orderLineResult.ReserveQty;
                    }
                    break;

                case "采购退货出库":
                    returnLineResult = returnLineBLL.GetInfo(new ORD_PurchaseReturnLineParam()
                    {
                        PRLineGuid = result.SourceBillLineGuid
                    });
                    if (returnLineResult != null)
                    {
                        if (returnLineResult.Qty == null)
                        {
                            returnLineResult.Qty = 0;
                        }
                        if (returnLineResult.ReserveQty == null)
                        {
                            returnLineResult.ReserveQty = 0;
                        }
                        tempReserveQty = returnLineResult.Qty - returnLineResult.ReserveQty;
                    }
                    break;
                }

                //获取已存在的预留信息
                STK_StockReserveResult oldReserveResult = null;
                if (result.SRGuid != null)
                {
                    STK_StockReserveParam reserveParam = new STK_StockReserveParam();
                    reserveParam.SRGuid = result.SRGuid;
                    oldReserveResult    = this.GetInfo(reserveParam);
                }
                if (oldReserveResult != null)
                {
                    if (oldReserveResult.ReserveQty == null)
                    {
                        orderLineResult.ReserveQty = 0;
                    }
                    //修改预留数量,预留量增加
                    if (result.ReserveQty >= oldReserveResult.ReserveQty)
                    {
                        tempReserveQty  = result.ReserveQty - oldReserveResult.ReserveQty;
                        result.OperFlag = true;
                    }
                    //修改预留数量,预留量减少
                    else if (result.ReserveQty < oldReserveResult.ReserveQty)
                    {
                        tempReserveQty  = oldReserveResult.ReserveQty - result.ReserveQty;
                        result.OperFlag = false;
                    }
                }
                //获取库存信息
                STK_StockBLL stockBLL = new STK_StockBLL();
                stockBLL.SessionInfo = this.SessionInfo;
                STK_StockResult stockResult = stockBLL.GetInfo(new STK_StockParam()
                {
                    ItemCode = result.ItemCode
                });
                if (stockResult != null)
                {
                    //空值转换为零
                    if (stockResult.UsableQty == null)
                    {
                        stockResult.UsableQty = 0;
                    }
                    if (stockResult.BookedQty == null)
                    {
                        stockResult.BookedQty = 0;
                    }
                }

                int?UsableQty = stockResult.UsableQty;
                //删除预留信息
                if (result.IsDeleted.ToBooleanHasNull())
                {
                    result = oldReserveResult;
                    stockResult.UsableQty += result.ReserveQty;
                    stockResult.BookedQty -= result.ReserveQty;
                    switch (result.SourceBillType)
                    {
                    case "销售出库":
                        orderLineResult.ReserveQty -= result.ReserveQty;
                        break;

                    case "采购退货出库":
                        returnLineResult.ReserveQty -= result.ReserveQty;
                        break;
                    }
                }
                //新增或者修改预留信息
                else
                {
                    switch (result.OperFlag)
                    {
                    case true:      //增加
                        //预留信息已经存在
                        if (oldReserveResult != null)
                        {
                            result = oldReserveResult;
                            if (UsableQty >= tempReserveQty)      //大于需要预留数量
                            {
                                result.ReserveQty += tempReserveQty;
                            }
                            else      //小于需要预留数量
                            {
                                result.ReserveQty += UsableQty;
                            }
                        }
                        //新的预留
                        else
                        {
                            if (UsableQty >= tempReserveQty)      //大于需要预留数量
                            {
                                result.ReserveQty = tempReserveQty;
                            }
                            else      //小于需要预留数量
                            {
                                result.ReserveQty = UsableQty;
                            }
                        }
                        if (UsableQty >= tempReserveQty)      //大于需要预留数量
                        {
                            stockResult.UsableQty -= tempReserveQty;
                            stockResult.BookedQty += tempReserveQty;
                            switch (result.SourceBillType)
                            {
                            case "销售出库":
                                orderLineResult.ReserveQty += tempReserveQty;
                                break;

                            case "采购退货出库":
                                returnLineResult.ReserveQty += tempReserveQty;
                                break;
                            }
                        }
                        else
                        {
                            stockResult.UsableQty -= UsableQty;
                            stockResult.BookedQty += UsableQty;
                            switch (result.SourceBillType)
                            {
                            case "销售出库":
                                orderLineResult.ReserveQty += UsableQty;
                                break;

                            case "采购退货出库":
                                returnLineResult.ReserveQty += UsableQty;
                                break;
                            }
                        }
                        break;

                    case false:      //减少库存量
                        result                 = oldReserveResult;
                        result.ReserveQty     -= tempReserveQty;
                        stockResult.UsableQty += tempReserveQty;
                        stockResult.BookedQty -= tempReserveQty;
                        switch (result.SourceBillType)
                        {
                        case "销售出库":
                            orderLineResult.ReserveQty -= tempReserveQty;
                            break;

                        case "采购退货出库":
                            returnLineResult.ReserveQty -= tempReserveQty;
                            break;
                        }

                        break;
                    }  // end of switch
                }   //end of if  else
                    //更改预留表
                this.AddOrUpdate(result);
                //更改库存
                stockBLL.AddOrUpdate(stockResult);
                //更新预留关联单据明细
                switch (result.SourceBillType)
                {
                case "销售出库":
                    orderLineBLL.AddOrUpdate(orderLineResult);
                    break;

                case "采购退货出库":
                    returnLineBLL.AddOrUpdate(returnLineResult);
                    break;
                }    // end of if else
            }
            catch (WarnException exp)
            {
                throw exp;
            }
            catch (System.Exception exp)
            {
                LogInfoBLL.WriteLog(this.SessionInfo, exp);
                throw exp;
            }
            return(true);
        }
コード例 #14
0
        public void InitSourceData(string billType, object obj)
        {
            if (obj != null)
            {
                if (cboBillType.SelectedValue.ToStringHasNull() == "")
                {
                    SYS_DictItemLineLogic.SetCombolSelectedIndex(cboBillType, billType, true);
                }
                if (obj is ORD_SalesOrderResult)
                {
                    ORD_SalesOrderResult salesOrderResult = obj as ORD_SalesOrderResult;
                    if (salesOrderResult != null)
                    {
                        txtSourceBillGuid.Text    = salesOrderResult.SOGuid.ToStringHasNull();
                        txtSourceBillNo.Text      = salesOrderResult.BillNo;
                        cboTaxRate.SelectedValue  = salesOrderResult.TaxRate == null ? 0 : salesOrderResult.TaxRate;
                        cboCurrency.SelectedValue = salesOrderResult.Currency;
                        List <STK_StockReserveResult> reserveList = reserveLogic.GetList(new STK_StockReserveParam()
                        {
                            SourceBillGuid = salesOrderResult.SOGuid, IsUsedOver = false
                        });
                        List <ORD_SalesOrderLineResult> lineList = null;
                        if (salesOrderResult.OrderLineList != null)//从其他窗体点击出库进入,只传递guid,通过guid获取的对象中含有明细
                        {
                            lineList = salesOrderResult.OrderLineList.Where(a => a.StkOutOccQty.ToInt32() < a.Qty).ToList();
                        }
                        else//在出库窗体打开选择窗体得到的对象是没有包含明细的,需要去单独获取明细
                        {
                            lineList = orderLineLogic.GetList(new ORD_SalesOrderLineParam()
                            {
                                SOGuid = salesOrderResult.SOGuid
                            }).Where(a => a.StkOutOccQty.ToInt32() < a.Qty).ToList();
                        }

                        foreach (STK_StockReserveResult reserveResult in reserveList)
                        {
                            STK_OutLineResult        stkOutLineResult = new STK_OutLineResult();
                            ORD_SalesOrderLineResult lineResult       = lineList.FirstOrDefault(a => a.SOLineGuid == reserveResult.SourceBillLineGuid);
                            if (lineResult != null)
                            {
                                stkOutLineResult.UnitPrice = lineResult.UnitPrice;
                            }
                            SetStkLineObjectValue(stkOutLineResult, reserveResult);
                            bsStkOutLine.Add(stkOutLineResult);
                        }
                    }
                }
                else if (obj is ORD_PurchaseReturnResult)
                {
                    ORD_PurchaseReturnResult purReturnResult = obj as ORD_PurchaseReturnResult;
                    if (purReturnResult != null)
                    {
                        txtSourceBillGuid.Text = purReturnResult.POGuid.ToStringHasNull();
                        txtSourceBillNo.Text   = purReturnResult.BillNo;
                        decimal?taxRate = 0;
                        cboTaxRate.SelectedValue  = taxRate;
                        cboCurrency.SelectedValue = purReturnResult.Currency;
                        List <STK_StockReserveResult> reserveList = reserveLogic.GetList(new STK_StockReserveParam()
                        {
                            SourceBillGuid = purReturnResult.PRGuid, IsUsedOver = false
                        });
                        List <ORD_PurchaseReturnLineResult> lineList = null;
                        if (purReturnResult.ReturnLineList != null)
                        {
                            lineList = purReturnResult.ReturnLineList.Where(a => a.StkOutOccQty.ToInt32() < a.Qty).ToList();
                        }
                        else
                        {
                            lineList = returnLineLogic.GetList(new ORD_PurchaseReturnLineParam()
                            {
                                PRGuid = purReturnResult.PRGuid
                            }).Where(a => a.StkOutOccQty.ToInt32() < a.Qty).ToList();
                        }

                        foreach (STK_StockReserveResult reserveResult in reserveList)
                        {
                            STK_OutLineResult            stkOutLineResult = new STK_OutLineResult();
                            ORD_PurchaseReturnLineResult lineResult       = lineList.FirstOrDefault(a => a.PRLineGuid == reserveResult.SourceBillLineGuid);
                            if (lineResult != null)
                            {
                                stkOutLineResult.UnitPrice = lineResult.UnitPrice;
                            }
                            SetStkLineObjectValue(stkOutLineResult, reserveResult);
                            bsStkOutLine.Add(stkOutLineResult);
                        }
                    }
                }
                CalcExchangeRate();
            }
        }