コード例 #1
0
ファイル: PickListMgr.cs プロジェクト: Novthirteen/yfkey-scms
        public void DoPick(PickList pickList, User user)
        {
            PickList oldPickList = this.LoadPickList(pickList.PickListNo);

            PickListHelper.CheckAuthrize(oldPickList, user);

            if (oldPickList.Status != BusinessConstants.CODE_MASTER_STATUS_VALUE_INPROCESS)
            {
                throw new BusinessErrorException("Order.Error.PickUp.StatusErrorWhenPick", oldPickList.Status, oldPickList.PickListNo);
            }

            //检查是否有pickListResult
            int resultCount = 0;

            foreach (PickListDetail pickListDetail in pickList.PickListDetails)
            {
                foreach (PickListResult pickListResult in pickListDetail.PickListResults)
                {
                    if (pickListResult.Id == 0)
                    {
                        resultCount++;
                        break;
                    }
                }
            }

            if (resultCount == 0)
            {
                throw new BusinessErrorException("MasterData.No.PickListResult");
            }

            foreach (PickListDetail pickListDetail in pickList.PickListDetails)
            {
                foreach (PickListResult pickListResult in pickListDetail.PickListResults)
                {
                    if (pickListResult.Id > 0)
                    {
                        continue;
                    }

                    #region 检查捡货项是否已经被其它捡货单占用
                    if (this.locationMgr.IsHuOcuppyByPickList(pickListResult.LocationLotDetail.Hu.HuId))
                    {
                        throw new BusinessErrorException("Order.Error.PickUp.HuOcuppied", pickListResult.LocationLotDetail.Hu.HuId);
                    }
                    #endregion

                    pickListResultMgr.CreatePickListResult(pickListResult);

                    #region  架
                    if (pickListResult.LocationLotDetail.StorageBin != null)
                    {
                        this.locationMgr.InventoryPick(pickListResult.LocationLotDetail, user);
                    }
                    #endregion
                }
            }

            oldPickList.LastModifyDate = DateTime.Now;
            oldPickList.LastModifyUser = user;

            this.UpdatePickList(oldPickList);
        }