/// <summary> /// 退库 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnSave_Press(object sender, EventArgs e) { try { string WareId = ""; string STID = ""; string SLID = ""; if (txtSLID.Tag != null) { string[] Ids = txtSLID.Tag.ToString().Split('/'); if (Ids.Length == 3) { WareId = Ids[0]; STID = Ids[1]; SLID = Ids[2]; } else { throw new Exception("请输入正确的"); } } else { throw new Exception("请先选择库位!"); } if (snList.Count == 0) { throw new Exception("请添加要退库的序列号!"); } ReturnInfo rInfo = new ReturnInfo(); AssRetiringInputDto inputDto = new AssRetiringInputDto { SOID = txtSOID.Text, SLID = SLID, STID = STID, WAREID = WareId, UserId = UserId, SnList = snList }; rInfo = _autofacConfig.AssSalesOrderService.RetiringAss(inputDto); if (rInfo.IsSuccess) { ShowResult = ShowResult.Yes; Toast("退库成功!"); if (IsFromSO) { Close(); } } else { Toast(rInfo.ErrorInfo); } } catch (Exception ex) { Toast(ex.Message); } }
/// <summary> /// 销售退库 /// </summary> /// <param name="inputDto">销售退库相关信息</param> /// <returns></returns> public ReturnInfo RetiringAss(AssRetiringInputDto inputDto) { // ReturnInfo RInfo = new ReturnInfo(); StringBuilder sb = new StringBuilder(); string ValidateInfo = Helper.BasicValidate(inputDto).ToString(); sb.Append(ValidateInfo); if (sb.Length == 0) { try { //先根据SOID,得到<templateId,List<sn>>的Dictionary //取得各个templateId有多少SN //更改Row中的数值 //更改Assets表中的状态为在库,库位等对应修改 //根据sns,得到<templateId,sn数>的Dictionary string SOID = inputDto.SOID; var allSn = from outbound in SMOWMSDbContext.AssSalesOrderOutbounds join assetse in SMOWMSDbContext.Assetss on outbound.SN equals assetse.SN where assetse.ISINWAREHOUSE == 0 && outbound.SOID == SOID select outbound.SN; List <string> allList = allSn.ToList(); //更改Row中的数值 List <string> bothList = allList.Intersect(inputDto.SnList).ToList(); var assDictionary = _AssetsRepository.GetCountBySnListEx(bothList); foreach (var templateId in assDictionary.Keys) { var row = _assSoRowRepository.GetBySOIDandTemplateID(inputDto.SOID, templateId).FirstOrDefault(); if (row != null) { row.QUANTRETREATED = row.QUANTRETREATED + assDictionary[templateId]; _unitOfWork.RegisterDirty(row); } } //更改Assets表中的状态为在库 var assets = _AssetsRepository.GetAll().Where(a => bothList.Contains(a.SN)); //遍历,修改状态为在库 foreach (var asset in assets) { //修改状态为在库 asset.ISINWAREHOUSE = 1; asset.WAREID = inputDto.WAREID; asset.STID = inputDto.STID; asset.SLID = inputDto.SLID; _unitOfWork.RegisterDirty(asset); //添加出货关联表 AssSalesOrderRetiring soRetiring = new AssSalesOrderRetiring() { SOID = SOID, SN = asset.SN, TEMPLATEID = asset.TEMPLATEID, // Time = DateTime.Now }; _unitOfWork.RegisterNew(soRetiring); 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); } 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); } } else { RInfo.IsSuccess = false; RInfo.ErrorInfo = sb.ToString(); return(RInfo); } }