コード例 #1
0
ファイル: frmAssReturn.cs プロジェクト: UndeadIdler/SmoWMS
        /// <summary>
        /// 退货
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSave_Press(object sender, EventArgs e)
        {
            try
            {
                if (snList.Count == 0)
                {
                    throw new Exception("请添加要退货的序列号!");
                }
                ReturnInfo        rInfo    = new ReturnInfo();
                AssReturnInputDto inputDto = new AssReturnInputDto
                {
                    POID   = txtPOID.Text,
                    UserId = UserId,
                    sns    = snList
                };
                rInfo = _autofacConfig.AssPurchaseOrderService.ReturnAss(inputDto);

                if (rInfo.IsSuccess)
                {
                    ShowResult = ShowResult.Yes;
                    Toast("退货成功!");
                    if (IsFromPO)
                    {
                        Close();
                    }
                }
                else
                {
                    Toast(rInfo.ErrorInfo);
                }
            }
            catch (Exception ex)
            {
                Toast(ex.Message);
            }
        }
コード例 #2
0
        /// <summary>
        /// 采购退货
        /// </summary>
        /// <param name="inputDto">采购退货相关信息</param>
        /// <returns></returns>
        public ReturnInfo ReturnAss(AssReturnInputDto inputDto)
        {
            ReturnInfo    RInfo = new ReturnInfo();
            StringBuilder sb    = new StringBuilder();

            try
            {
                //先从Asset表得到属于这个POID的资产的全部SN,放入List<string>
                var allSn = from instorage in SMOWMSDbContext.AssPurchaseOrderInstorages
                            join assetse in SMOWMSDbContext.Assetss on instorage.SN equals assetse.SN
                            where assetse.ISINWAREHOUSE == 1 && instorage.POID == inputDto.POID
                            select instorage.SN;
                List <string> allList = allSn.ToList();
                //2个List<string>取交集,如果所传的SN都包括,则继续
                List <string> bothList = allList.Intersect(inputDto.sns).ToList();


                //取出SN在范围内的所有资产

                var assets = _assetsRepository.GetAll().Where(a => bothList.Contains(a.SN));

                //遍历,修改状态为已不在库

                foreach (var asset in assets)
                {
                    //修改状态为已不在库
                    asset.ISINWAREHOUSE = 0;
                    _unitOfWork.RegisterDirty(asset);
                    //添加退货关联表
                    AssPurchaseOrderReturn poReturn = new AssPurchaseOrderReturn
                    {
                        POID       = inputDto.POID,
                        SN         = asset.SN,
                        TEMPLATEID = asset.TEMPLATEID,
//                        Time = DateTime.Now
                    };
                    _unitOfWork.RegisterNew(poReturn);

                    var pr = new AssProcessRecord
                    {
                        ASSID          = asset.ASSID,
                        CREATEDATE     = DateTime.Now,
                        CREATEUSER     = inputDto.UserId,
                        HANDLEDATE     = DateTime.Now,
                        HANDLEMAN      = inputDto.UserId,
                        MODIFYDATE     = DateTime.Now,
                        MODIFYUSER     = inputDto.UserId,
                        PROCESSCONTENT = inputDto.UserId + "采购退回了" + asset.ASSID + ",数量为1",
                        PROCESSMODE    = (int)PROCESSMODE.出库,
                        QUANTITY       = 1
                    };
                    _unitOfWork.RegisterNew(pr);
                }
                var countDictionary = _assetsRepository.GetCountBySnList(bothList);
                if (countDictionary != null)
                {
                    foreach (var templateId in countDictionary.Keys)
                    {
                        var asspoRow = _assPoRowRepository.GetByPOIDandTemplateID(inputDto.POID, templateId)
                                       .FirstOrDefault();
                        if (asspoRow != null)
                        {
                            asspoRow.QUANTRETREATED = asspoRow.QUANTRETREATED + countDictionary[templateId];
                            _unitOfWork.RegisterDirty(asspoRow);
                        }
                    }
                }

                bool result = _unitOfWork.Commit();
                RInfo.IsSuccess = result;
                RInfo.ErrorInfo = "";
                return(RInfo);
            }
            catch (Exception ex)
            {
                _unitOfWork.Rollback();
                sb.Append(ex.Message);
                RInfo.IsSuccess = false;
                RInfo.ErrorInfo = sb.ToString();
                return(RInfo);
            }
        }