Beispiel #1
0
        public bool CancelPurchaseNotice(ORD_PurchaseNoticeParam param)
        {
            bool flag = true;

            try
            {
                ORD_PurchaseNoticeResult noticeResult = this.GetInfo(param);
                if (noticeResult != null)
                {
                    if (noticeResult.PurchaseQty > 0)
                    {
                        flag = false;
                        throw new WarnException("当前采购通知已存在关联的采购信息,不允许取消通知!");
                    }
                    this.DelInfo(param);//删除当前采购通知
                    //汇总采购通知所关联的销售明细下所有关联的有效的采购通知的数量
                    List <ORD_PurchaseNoticeResult> noticeList = this.GetList(new ORD_PurchaseNoticeParam()
                    {
                        SOLineGuid = noticeResult.SOLineGuid
                    });
                    int?noticeQty = 0;
                    if (noticeList != null && noticeList.Count > 0)
                    {
                        noticeQty = noticeList.Sum(a => a.NoticeQty);
                    }
                    ORD_SalesOrderLineBLL orderLineBLL = new ORD_SalesOrderLineBLL();
                    orderLineBLL.SessionInfo = this.SessionInfo;
                    ORD_SalesOrderLineResult orderLineResult = orderLineBLL.GetInfo(new ORD_SalesOrderLineParam()
                    {
                        SOLineGuid = noticeResult.SOLineGuid
                    });
                    orderLineResult.NotifyQty = noticeQty;
                    orderLineBLL.AddOrUpdate(orderLineResult);
                    ORD_SalesOrderBLL orderBLL = new ORD_SalesOrderBLL();
                    orderBLL.SessionInfo = this.SessionInfo;
                    orderBLL.UpdateStatus(new ORD_SalesOrderParam()
                    {
                        SOGuid = noticeResult.SOGuid
                    });                                                                              //更新销售明细的通知状态
                }
                else
                {
                    flag = false;
                    throw new WarnException("当前采购通知记录在系统中不存在!");
                }
            }
            catch (WarnException exp)
            {
                throw exp;
            }
            catch (Exception exp)
            {
                LogInfoBLL.WriteLog(this.SessionInfo, exp);
                throw exp;
            }

            return(flag);
        }
Beispiel #2
0
        public ORD_SalesOrderLineResult GetInfo(ORD_SalesOrderLineParam param)
        {
            ORD_SalesOrderLineResult ret = new ORD_SalesOrderLineResult();
            ExeResult rst = new ExeResult();

            rst = this.Execute("ZNLCRM.BLL.SPM.ORD_SalesOrderLineBLL", "GetInfo", param);
            ret = rst == null ? new ORD_SalesOrderLineResult() : rst.Result as ORD_SalesOrderLineResult;
            return(ret);
        }
Beispiel #3
0
        private void btnInsertBefore_Click(object sender, EventArgs e)
        {
            if (dgvSalesOrderLine.CurrentCell == null)
            {
                btnAddRow_Click(null, null);
                return;
            }
            ORD_SalesOrderLineResult rst = new ORD_SalesOrderLineResult();

            InitNewData(rst);
            bsOrderLine.Insert(dgvSalesOrderLine.CurrentRow.Index, rst);
        }
Beispiel #4
0
        /// <summary>
        /// 获取集合
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public List <ORD_PurchaseNoticeResult> GetList(ORD_PurchaseNoticeParam param)
        {
            this.CheckSession();
            List <ORD_PurchaseNoticeResult> ret = new List <ORD_PurchaseNoticeResult>();

            try
            {
                WhereClip whereClip = GetWhereClip(param);
                ret = this.SelectList <ORD_PurchaseNoticeResult>(whereClip, ORD_PurchaseNotice._.CreatedTime.Asc);
                if (ret != null && ret.Count > 0)
                {
                    Guid?[] SOLineGuids           = ret.Where(a => a.SOLineGuid.ToGuid() != Guid.Empty).Select(a => a.SOLineGuid).Distinct().ToArray();
                    ORD_SalesOrderLineBLL lineBLL = new ORD_SalesOrderLineBLL();
                    lineBLL.SessionInfo = this.SessionInfo;
                    ORD_SalesOrderLineParam lineParam = new ORD_SalesOrderLineParam();
                    lineParam.SOLineGuids = SOLineGuids;
                    List <ORD_SalesOrderLineResult> lineResultList = lineBLL.GetList(lineParam);
                    if (ret != null && ret.Count > 0 && lineResultList != null && lineResultList.Count > 0)
                    {
                        foreach (ORD_PurchaseNoticeResult noticeResult in ret)
                        {
                            ORD_SalesOrderLineResult lineResult = lineResultList.FirstOrDefault(a => a.SOLineGuid == noticeResult.SOLineGuid);
                            if (lineResult != null)
                            {
                                noticeResult.SOLineCode       = lineResult.SOLineCode;
                                noticeResult.SalePrice        = lineResult.UnitPrice;
                                noticeResult.Unit             = lineResult.Unit;
                                noticeResult.Model            = lineResult.Model;
                                noticeResult.Brand            = lineResult.Brand;
                                noticeResult.Batch            = lineResult.Batch;
                                noticeResult.Package          = lineResult.Package;
                                noticeResult.InvType          = lineResult.InvType;
                                noticeResult.NeedDeliveryDate = lineResult.NeedDeliveryDate;
                                noticeResult.SaleQty          = lineResult.Qty;
                            }
                        }
                    }
                }
            }
            catch (WarnException exp)
            {
                throw exp;
            }
            catch (System.Exception exp)
            {
                LogInfoBLL.WriteLog(this.SessionInfo, exp);
                throw exp;
            }
            return(ret);
        }
Beispiel #5
0
 private void btnDelRow_Click(object sender, EventArgs e)
 {
     if (this.bsOrderLine.Current != null)
     {
         int solineid = 0;
         ORD_SalesOrderLineResult delResult = this.bsOrderLine.Current as ORD_SalesOrderLineResult;
         solineid = delResult.SOLineID.ToInt32();
         if (solineid > 0)
         {
             delResult.IsDeleted = true;
             delList.Add(delResult);
         }
         bsOrderLine.RemoveCurrent();
     }
 }
Beispiel #6
0
        /// <summary>
        /// 获取一条信息记录
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public ORD_SalesOrderLineResult GetInfo(ORD_SalesOrderLineParam param)
        {
            this.CheckSession();
            ORD_SalesOrderLineResult rst = new ORD_SalesOrderLineResult();

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

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

            #endregion
            return(rst);
        }
Beispiel #7
0
 public void SetOrderLineObjectValue(ORD_SalesOrderLineResult salesLineRst, STK_StockResult stockResult)
 {
     salesLineRst.ItemCode         = stockResult.ItemCode;
     salesLineRst.Model            = stockResult.Model;
     salesLineRst.Brand            = stockResult.Brand;
     salesLineRst.Package          = stockResult.Package;
     salesLineRst.Batch            = stockResult.Batch;
     salesLineRst.InvType          = stockResult.InvType;
     salesLineRst.Unit             = stockResult.Unit;
     salesLineRst.Qty              = stockResult.UsableQty;
     salesLineRst.Quality          = stockResult.Quality;
     salesLineRst.MPQ              = stockResult.MPQ;
     salesLineRst.MarkCode         = stockResult.MarkCode;
     salesLineRst.Warehouse        = stockResult.Warehouse;
     salesLineRst.Location         = stockResult.Location;
     salesLineRst.NeedDeliveryDate = string.IsNullOrEmpty(txtNeedDeliveryDate.Text) ? null : (DateTime?)txtNeedDeliveryDate.Value;
     salesLineRst.NeedRecAmtDate   = string.IsNullOrEmpty(txtNeedRecAmtDate.Text) ? null : (DateTime?)txtNeedRecAmtDate.Value;
 }
Beispiel #8
0
 void InitNewData(ORD_SalesOrderLineResult rst)
 {
     rst.Unit = "PCS";
     if (!string.IsNullOrEmpty(txtNeedDeliveryDate.Text))
     {
         rst.NeedDeliveryDate = txtNeedDeliveryDate.Value;
     }
     else
     {
         rst.NeedDeliveryDate = null;
     }
     if (!string.IsNullOrEmpty(txtNeedRecAmtDate.Text))
     {
         rst.NeedRecAmtDate = txtNeedRecAmtDate.Value;
     }
     else
     {
         rst.NeedRecAmtDate = null;
     }
 }
Beispiel #9
0
        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;
            }
        }
Beispiel #10
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);
        }
Beispiel #11
0
        private void ImportByStock(bool isMutiSelect)
        {
            frmSelectStock frmSelectStock = new frmSelectStock(isMutiSelect);
            Guid?          itemCode       = Guid.Empty;
            string         model          = string.Empty;

            if (!isMutiSelect)    //单选时
            {
                model    = dgvSalesOrderLine.CurrentRow.Cells["colModel"].Value.ToStringHasNull();
                itemCode = dgvSalesOrderLine.CurrentRow.Cells["colItemCode"].Value.ToGuid();
            }

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

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

                            if (row.Cells["colItemCode"].Value.ToGuid() == stockResult.ItemCode)
                            {
                                isAddNew = false;

                                ORD_SalesOrderLineResult orderLineResult = bsOrderLine[row.Index] as ORD_SalesOrderLineResult;
                                SetOrderLineObjectValue(orderLineResult, stockResult);
                                break;
                            }
                        }
                        if (isAddNew)
                        {
                            if (!isMutiSelect)    //单选
                            {
                                ORD_SalesOrderLineResult orderLineResult = bsOrderLine.Current as ORD_SalesOrderLineResult;
                                SetOrderLineObjectValue(orderLineResult, stockResult);
                            }
                            else    //多选
                            {
                                ORD_SalesOrderLineResult orderLineResult = new ORD_SalesOrderLineResult();
                                SetOrderLineObjectValue(orderLineResult, stockResult);
                                bsOrderLine.Add(orderLineResult);
                            }
                        }
                    }
                }
            }
        }
Beispiel #12
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();
            }
        }
Beispiel #13
0
        public PageList <ORD_PurchaseNoticeResult> GetPageList(ORD_PurchaseNoticeParam param)
        {
            PageList <ORD_PurchaseNoticeResult> ret = new PageList <ORD_PurchaseNoticeResult>();

            try
            {
                ORD_SalesOrderBLL orderBLL = new ORD_SalesOrderBLL();
                orderBLL.SessionInfo = this.SessionInfo;
                ORD_SalesOrderParam orderParam = new ORD_SalesOrderParam()
                {
                    BillNo    = param.SOBillNo,
                    SalerName = param.SalerName,
                    PageIndex = 1,
                    PageSize  = 5000
                };

                PageList <ORD_SalesOrderResult> orderList = orderBLL.GetPageList(orderParam);
                if (orderList.ResultList != null && orderList.ResultList.Count > 0)
                {
                    Guid?[] SOGuids = orderList.ResultList.Select(a => a.SOGuid).Distinct().ToArray();
                    ORD_SalesOrderLineBLL lineBLL = new ORD_SalesOrderLineBLL();
                    lineBLL.SessionInfo = this.SessionInfo;
                    ORD_SalesOrderLineParam lineParam = new ORD_SalesOrderLineParam()
                    {
                        Model      = param.Model,
                        SOLineCode = param.SOLineCode,
                        SOGuids    = SOGuids,
                        PageIndex  = 1,
                        PageSize   = 5000,
                        IsCancel   = false
                    };
                    PageList <ORD_SalesOrderLineResult> lineList = lineBLL.GetPageList(lineParam);
                    if (lineList.ResultList != null && lineList.ResultList.Count > 0)
                    {
                        Guid?[] SOLineGuIds = lineList.ResultList.Select(a => (Guid?)a.SOLineGuid).Distinct().ToArray();
                        param.SOLineGuids = SOLineGuIds;
                        ret = this.SelectList <ORD_PurchaseNoticeResult>(param.PageIndex.GetValueOrDefault(1), param.PageSize.GetValueOrDefault(50), new List <Field>()
                        {
                            Field.All
                        }, GetWhereClip(param), ORD_PurchaseNotice._.CreatedTime.Desc);
                        foreach (ORD_PurchaseNoticeResult noticeResult in ret.ResultList)
                        {
                            ORD_SalesOrderResult orderResult = orderList.ResultList.FirstOrDefault(a => a.SOGuid == noticeResult.SOGuid);
                            if (orderResult != null)
                            {
                                noticeResult.SOBillNo     = orderResult.BillNo;
                                noticeResult.SalerName    = orderResult.SalerName;
                                noticeResult.SaleCurrency = orderResult.Currency;
                            }
                            ORD_SalesOrderLineResult lineResult = lineList.ResultList.FirstOrDefault(a => a.SOLineGuid == noticeResult.SOLineGuid);
                            if (lineResult != null)
                            {
                                noticeResult.SOLineCode       = lineResult.SOLineCode;
                                noticeResult.SalePrice        = lineResult.UnitPrice;
                                noticeResult.Unit             = lineResult.Unit;
                                noticeResult.Model            = lineResult.Model;
                                noticeResult.Brand            = lineResult.Brand;
                                noticeResult.Batch            = lineResult.Batch;
                                noticeResult.Package          = lineResult.Package;
                                noticeResult.InvType          = lineResult.InvType;
                                noticeResult.NeedDeliveryDate = lineResult.NeedDeliveryDate;
                                noticeResult.SaleQty          = lineResult.Qty;
                            }
                            if (noticeResult.PurchaseQty.ToInt32() == 0)
                            {
                                noticeResult.PurStatus = "未采购";
                            }
                            else if (noticeResult.NoticeQty.ToInt32() <= noticeResult.PurchaseQty.ToInt32())
                            {
                                noticeResult.PurStatus = "采购完成";
                            }
                            else
                            {
                                noticeResult.PurStatus = "部分采购";
                            }
                        }
                    }
                }
            }
            catch (WarnException exp)
            {
                throw exp;
            }
            catch (System.Exception exp)
            {
                LogInfoBLL.WriteLog(this.SessionInfo, exp);
                throw exp;
            }
            return(ret);
        }
Beispiel #14
0
        /// <summary>
        /// 批量修改和插入
        /// </summary>
        /// <param name="paramList"></param>
        /// <returns></returns>
        public WCFAddUpdateResult UpdateOrInsertList(List <ORD_PurchaseNoticeResult> list)
        {
            this.CheckSession();
            WCFAddUpdateResult ret = new WCFAddUpdateResult();

            try
            {
                #region 判断
                if (list.Count <= 0)
                {
                    throw new WarnException("没有需要操作的对象!");
                }
                #endregion
                foreach (ORD_PurchaseNoticeResult noticeResult in list)
                {
                    if (noticeResult.NoticeGuid.ToGuid() != Guid.Empty)
                    {
                        noticeResult.UpdatedEmpID   = this.SessionInfo.UserID;
                        noticeResult.UpdatedEmpName = this.SessionInfo.UserName;
                        noticeResult.UpdatedTime    = DateTime.Now;
                    }
                    else
                    {
                        noticeResult.NoticeGuid     = Guid.NewGuid();
                        noticeResult.CreatedEmpID   = this.SessionInfo.UserID;
                        noticeResult.CreatedEmpName = this.SessionInfo.UserName;
                        noticeResult.CreatedTime    = DateTime.Now;
                        noticeResult.IsDeleted      = false;
                    }
                }
                int affect = 0;
                this.BatchInsertOrUpdate <ORD_PurchaseNoticeResult>(list);
                affect = this.BatchExecute();

                #region 设置返回值
                ret.Key = affect;
                #endregion
                if (affect > 0)
                {
                    Guid?[] SOLineGuids = list.Where(a => a.SOLineGuid.ToGuid() != Guid.Empty).Select(a => a.SOLineGuid).Distinct().ToArray();
                    if (SOLineGuids.Length > 0)
                    {
                        List <ORD_PurchaseNoticeResult> noticeList = this.GetList(new ORD_PurchaseNoticeParam()
                        {
                            SOLineGuids = SOLineGuids
                        });

                        List <ORD_SalesOrderLineResult> lineResultList = new List <ORD_SalesOrderLineResult>();
                        ORD_SalesOrderLineResult        lineResult     = null;
                        foreach (Guid soLineGuid in SOLineGuids)
                        {
                            lineResult            = new ORD_SalesOrderLineResult();
                            lineResult.SOLineGuid = soLineGuid;
                            int Qty = noticeList.Where(a => a.SOLineGuid == soLineGuid).Sum(a => a.NoticeQty.ToInt32());
                            lineResult.NotifyQty = Qty;
                            lineResultList.Add(lineResult);
                        }
                        ORD_SalesOrderLineBLL lineBLL = new ORD_SalesOrderLineBLL();
                        lineBLL.SessionInfo = this.SessionInfo;
                        lineBLL.UpdateOrInsertList(lineResultList);//更新销售明细的通知数量
                        ORD_SalesOrderBLL orderBLL = new ORD_SalesOrderBLL();
                        orderBLL.UpdateStatus(new ORD_SalesOrderParam()
                        {
                            SOGuid = list[0].SOGuid
                        });                                                                        //更新销售明细的通知状态
                    }
                }
            }
            catch (WarnException exp)
            {
                throw exp;
            }
            catch (System.Exception exp)
            {
                LogInfoBLL.WriteLog(this.SessionInfo, exp);
                throw exp;
            }
            return(ret);
        }