/// <summary> /// 采购入库 /// </summary> /// <param name="inputDto">采购入库相关信息</param> /// <returns></returns> public ReturnInfo InstorageAss(AssInStorageInputDto inputDto) { ReturnInfo RInfo = new ReturnInfo(); StringBuilder sb = new StringBuilder(); string ValidateInfo = Helper.BasicValidate(inputDto).ToString(); sb.Append(ValidateInfo); if (sb.Length == 0) { try { //先确定数量是否超出 AssPurchaseOrderRow row = _assPoRowRepository .GetByPOIDandTemplateID(inputDto.POID, inputDto.TEMPLATEID).FirstOrDefault(); if (row != null) { if (row.QUANTPURCHASED < row.QUANTSTORED + inputDto.SnList.Count) { RInfo.IsSuccess = false; RInfo.ErrorInfo = "入库量超过采购量!"; return(RInfo); } else { row.QUANTSTORED = row.QUANTSTORED + inputDto.SnList.Count; var asspo = _assPurchaseOrderRepository.GetById(inputDto.POID).FirstOrDefault(); if (asspo != null) { asspo.STATUS = (int)PurchaseOrderStatus.入库中; if (row.QUANTPURCHASED == row.QUANTSTORED) { row.STATUS = (int)PurchaseOrderStatus.已完成; //判断是否需要将整个采购单状态改为"已完成" //得到采购单的行项数 var count = _assPoRowRepository.GetByPOID(inputDto.POID).Count(); //得到已完成的行项数 var count2 = _assPoRowRepository.GetByPOID(inputDto.POID) .Count(a => a.STATUS == (int)PurchaseOrderStatus.已完成); if (count == count2 + 1) { //包括当前行项,所有行项均已完成,则更新整个采购单状态为"已完成" asspo.STATUS = (int)PurchaseOrderStatus.已完成; _unitOfWork.RegisterDirty(asspo); } } else { row.STATUS = (int)PurchaseOrderStatus.入库中; } } _unitOfWork.RegisterDirty(row); } } AssTemplate assTemplate = _assTemplateRepository.GetById(inputDto.TEMPLATEID).AsNoTracking() .FirstOrDefault(); if (assTemplate != null) { for (int i = 0; i < inputDto.SnList.Count; i++) { //资产入库 string MaxId = _assetsRepository.GetMaxID(); string ASSID = Helper.GenerateASSID("ASS", MaxId, i); Assets assets = new Assets { STATUS = (int)STATUS.闲置, ASSID = ASSID, BUYDATE = DateTime.Now, CREATEUSER = inputDto.UserId, EXPIRYDATE = DateTime.Now.AddYears(1), IMAGE = assTemplate.IMAGE, ISINWAREHOUSE = 1, ISLOCKED = 0, MODIFYUSER = inputDto.UserId, NAME = assTemplate.NAME, NOTE = assTemplate.NOTE, PRICE = assTemplate.PRICE, SLID = inputDto.SLID, WAREID = inputDto.WAREID, STID = inputDto.STID, SPECIFICATION = assTemplate.SPECIFICATION, TYPEID = assTemplate.TYPEID, UNIT = assTemplate.UNIT, VENDOR = assTemplate.VENDOR, CREATEDATE = DateTime.Now, MODIFYDATE = DateTime.Now, SN = inputDto.SnList[i], TEMPLATEID = inputDto.TEMPLATEID }; _unitOfWork.RegisterNew(assets); var pr = new AssProcessRecord { ASSID = ASSID, CREATEDATE = DateTime.Now, CREATEUSER = inputDto.UserId, HANDLEDATE = DateTime.Now, HANDLEMAN = inputDto.UserId, MODIFYDATE = DateTime.Now, MODIFYUSER = inputDto.UserId, PROCESSCONTENT = inputDto.UserId + "入库了" + ASSID + ",数量为1", PROCESSMODE = (int)PROCESSMODE.入库, QUANTITY = 1 }; _unitOfWork.RegisterNew(pr); string SN = inputDto.SnList[i]; //添加采购入库关联表 AssPurchaseOrderInstorage instorage = new AssPurchaseOrderInstorage { POID = inputDto.POID, SN = SN, TEMPLATEID = inputDto.TEMPLATEID, // Time = DateTime.Now }; _unitOfWork.RegisterNew(instorage); } bool result = _unitOfWork.Commit(); RInfo.IsSuccess = result; RInfo.ErrorInfo = ""; return(RInfo); } else { RInfo.IsSuccess = false; 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); } }
/// <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('/'); WareId = Ids[0]; if (Ids.Length == 3) { STID = Ids[1]; SLID = Ids[2]; } } if (string.IsNullOrEmpty(SLID)) { throw new Exception("请扫描正确的库位!"); } if (snList.Count == 0) { throw new Exception("请添加要入库的序列号!"); } ReturnInfo rInfo = new ReturnInfo(); AssInStorageInputDto inputDto = new AssInStorageInputDto { POID = txtPOID.Text, SLID = SLID, STID = STID, WAREID = WareId, TEMPLATEID = btnTemplate.Tag.ToString(), UserId = UserId, SnList = snList }; rInfo = _autofacConfig.AssPurchaseOrderService.InstorageAss(inputDto); if (rInfo.IsSuccess) { ShowResult = ShowResult.Yes; // Toast("入库成功!"); btnTemplate.Text = "选择(必填) > "; btnTemplate.Tag = null; txtSLID.Text = "(必填)"; txtSLID.Tag = null; snList.Clear(); lvSN.Rows.Clear(); SNTable.Rows.Clear(); //查询采购单状态 var po = _autofacConfig.AssPurchaseOrderService.GetById(txtPOID.Text); if (IsFromPO) { //如果全部完成,则关闭 if (po.STATUS == (int)PurchaseOrderStatus.已完成) { Toast("该订单已全部入库完成!"); Close(); } else { Toast("入库成功!"); DealLastTemp(); GetTotal(); lblQuant.Text = GetRest(); } } else { //如果全部完成,则提示该订单已经完成入库 if (po.STATUS == (int)PurchaseOrderStatus.已完成) { Toast("该订单已全部入库完成!"); txtPOID.Text = ""; txtPOID.Tag = null; } else { Toast("入库成功!"); DealLastTemp(); GetTotal(); lblQuant.Text = GetRest(); } } } else { Toast(rInfo.ErrorInfo); } } catch (Exception ex) { Toast(ex.Message); } }