/// <summary> /// 赋值调拨入库通知单 /// </summary> /// <param name="other"></param> /// <returns></returns> private WTransferInNotice CloneInNotice(WTransferOut other) { WTransferInNotice inNotice = new WTransferInNotice(); inNotice.BusinessPartnerID = other.BusinessPartnerID; inNotice.CreateBy = other.CreateBy; inNotice.CreateDate = DateTime.Now; inNotice.SourceCode = other.TransferOutCode; inNotice.SourceID = other.ID; inNotice.WarehouseID = other.TWarehouseID; inNotice.WarehouseCode = other.TWarehouseCode; foreach (var item in other.Lines) { inNotice.Lines.Add(new WTransferInNoticeLine() { StockID = item.StockID, Batch = item.Batch, CompleteCount = 0, CreateBy = item.CreateBy, CreateDate = DateTime.Now, DownCount = 0, Factory = item.Factory, InCount = item.OutCount, MaterialCode = item.MaterialCode, MaterialID = item.MaterialID, OwnerCode = item.OwnerCode, InPutCount = item.OutCount, UnitID = item.UnitID }); } return(inNotice); }
/// <summary> /// 添加调拨入库单 /// </summary> /// <param name="inNotice"></param> /// <returns></returns> public ResultData <string> AddTransferInNotice(WTransferInNotice inNotice) { ResultData <string> rData = new ResultData <string>(); DatabaseContext dbContext = tinRepository.DbCondext; try { dbContext.BeginTransaction(); inNotice.CreateDate = DateTime.Now; inNotice.NoticeStatus = NoticeStatusEnum.New; inNotice.InNoticeCode = nuRepository.GetNextNumber("DBRT"); tinRepository.Insert(inNotice); foreach (var line in inNotice.Lines) { line.ParentID = inNotice.ID; line.CreateBy = inNotice.CreateBy; line.CreateDate = DateTime.Now; tinllRepository.Insert(line); } dbContext.CompleteTransaction(); } catch (Exception ex) { dbContext.AbortTransaction(); throw ex; } return(rData); }
/// <summary> /// 审核 /// </summary> /// <param name="transferOut"></param> /// <returns></returns> public ResultData <string> ApproveTransferOut(WTransferOut transferOut) { ResultData <string> rData = new ResultData <string>(); if (transferOut.Lines.Count < 1) { transferOut.Lines = tolRepository.GetLinesByParentId(transferOut.ID); } DatabaseContext dbContext = toRepository.DbCondext; try { dbContext.BeginTransaction(); //出库记录 List <WStockOut> stockOuts = new List <WStockOut>(transferOut.Lines.Count); //审核 int result = toRepository.ApproveTransferOut(transferOut); if (result < 1) { rData.status = -1; rData.message = "单据已经审核或删除."; dbContext.AbortTransaction(); return(rData); } foreach (var line in transferOut.Lines) { stockOuts.Add(CloneTransferOut(line, transferOut)); } //更新库存 WStockService sService = new WStockService(dbContext); rData = sService.DeleteStocks(stockOuts); if (rData.status != 0) { dbContext.AbortTransaction(); } else { dbContext.CompleteTransaction(); } } catch (Exception ex) { dbContext.AbortTransaction(); throw ex; } if (rData.status == 0) { //调拨入库通知单 WTransferInNotice inNotice = CloneInNotice(transferOut); rData = new WTransferInNoticeService().AddTransferInNotice(inNotice); } return(rData); }
public ContentResult Update() { ResultData <string> rt = new ResultData <string>(); WTransferInNotice inNotice = GetUpdate <WTransferInNotice>(); rt = iService.AddTransferIn(inNotice, this.CurrentUser.ID); return(ReturnResult(rt)); }
/// <summary> /// 入库通知单转换入库单 /// </summary> /// <param name="inNotice"></param> /// <returns></returns> private WTransferIn CloneInNotice(WTransferInNotice inNotice) { WTransferIn transferIn = new WTransferIn(); transferIn.BusinessPartnerID = inNotice.BusinessPartnerID; transferIn.CreateBy = inNotice.CreateBy; transferIn.CreateDate = DateTime.Now; transferIn.SourceCode = inNotice.InNoticeCode; transferIn.SourceID = inNotice.ID; transferIn.StockStatus = StockStatusEnum.New; transferIn.WarehouseCode = inNotice.WarehouseCode; transferIn.WarehouseID = inNotice.WarehouseID; return(transferIn); }
/// <summary> /// 根据入库通知添加入库 /// </summary> /// <param name="inNotice"></param> /// <returns></returns> public ResultData <string> AddTransferIn(WTransferInNotice inNotice, int createBy) { ResultData <string> rData = new ResultData <string>(); if (inNotice.NoticeStatus == NoticeStatusEnum.Complete) { rData.status = -1; rData.message = "单据已完成不能入库."; return(rData); } //克隆主表 WTransferIn transferIn = CloneInNotice(inNotice); transferIn.CreateBy = createBy; foreach (var item in inNotice.Lines) { if (item.InPutCount <= 0) { continue; } //如果通知数量+下推数量+完成数量>当前入库数量 if (item.InPutCount + item.DownCount + item.CompleteCount > item.InCount) { rData.status = -1; rData.message = BuilderNoticeLessMessage(item); return(rData); } //克隆明细 transferIn.Lines.Add(CloneInNoticeLine(item)); //更新下推数量和当前输入数量 item.DownCount = item.DownCount + item.InPutCount; } if (transferIn.Lines.Count < 1) { rData.status = -1; rData.message = "入库明细为空."; return(rData); } rData = CheckValid(transferIn); if (rData.status != 0) { return(rData); } DatabaseContext dbContext = tiRepository.DbCondext; try { dbContext.BeginTransaction(); //添加入库单 transferIn.CreateDate = DateTime.Now; transferIn.StockStatus = StockStatusEnum.New; transferIn.TransferInCode = nuRepository.GetNextNumber("DBRK"); tiRepository.Insert(transferIn); foreach (var line in transferIn.Lines) { line.ParentID = transferIn.ID; line.CreateBy = transferIn.CreateBy; line.CreateDate = DateTime.Now; line.Batch = string.IsNullOrEmpty(line.Batch) ? "" : line.Batch; tilRepository.Insert(line); } //更新通知单 foreach (var item in inNotice.Lines) { tinlRepository.AddDownCount(item); } dbContext.CompleteTransaction(); } catch (Exception ex) { dbContext.AbortTransaction(); throw ex; } //没有放到事务,因为状态更新不是很重要,不影响业务 bool isAll = tinlRepository.IsAllDownload(inNotice.ID); if (isAll) { tinRepository.UpdateNoticeStatus(NoticeStatusEnum.Complete, inNotice.ID); } else { tinRepository.UpdateNoticeStatus(NoticeStatusEnum.Executing, inNotice.ID); } return(rData); }