/// <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="sell"></param> /// <returns></returns> public ResultData <string> AddSell(WSell sell) { ResultData <string> rData = CheckValid(sell); if (rData.status != 0) { return(rData); } DatabaseContext dbContext = sRepository.DbCondext; try { dbContext.BeginTransaction(); sell.CreateDate = DateTime.Now; sell.StockStatus = StockStatusEnum.New; sell.SellCode = nuRepository.GetNextNumber("XSCK"); sRepository.Insert(sell); foreach (var line in sell.Lines) { line.ParentID = sell.ID; line.CreateBy = sell.CreateBy; line.CreateDate = DateTime.Now; line.Batch = string.IsNullOrEmpty(line.Batch) ? "" : line.Batch; slRepository.Insert(line); } dbContext.CompleteTransaction(); } catch (Exception ex) { dbContext.AbortTransaction(); throw ex; } return(rData); }
/// <summary> /// 添加调拨入库 /// </summary> /// <param name="transferIn"></param> /// <returns></returns> public ResultData <string> AddTransferIn(WTransferIn transferIn) { ResultData <string> 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); } dbContext.CompleteTransaction(); } catch (Exception ex) { dbContext.AbortTransaction(); throw ex; } return(rData); }
/// <summary> /// 插入新采购入库 /// </summary> /// <param name="purchase"></param> /// <returns></returns> public ResultData <string> AddPurchase(WPurchase purchase) { ResultData <string> rData = CheckValid(purchase); if (rData.status != 0) { return(rData); } DatabaseContext dbContext = pRepository.DbCondext; try { dbContext.BeginTransaction(); purchase.CreateDate = DateTime.Now; purchase.StockStatus = StockStatusEnum.New; purchase.PurchaseCode = nuRepository.GetNextNumber("CGRK"); pRepository.Insert(purchase); foreach (var line in purchase.Lines) { line.ParentID = purchase.ID; line.CreateBy = purchase.CreateBy; line.CreateDate = DateTime.Now; line.Batch = string.IsNullOrEmpty(line.Batch) ? "" : line.Batch; plRepository.Insert(line); } dbContext.CompleteTransaction(); } catch (Exception ex) { dbContext.AbortTransaction(); throw ex; } return(rData); }
/// <summary> /// 插入新其他入库 /// </summary> /// <param name="otherIn"></param> /// <returns></returns> public ResultData <string> AddOtherIn(WOtherIn otherIn) { ResultData <string> rData = CheckValid(otherIn); if (rData.status != 0) { return(rData); } DatabaseContext dbContext = oiRepository.DbCondext; try { dbContext.BeginTransaction(); //入库记录 List <WStockIn> stockIns = new List <WStockIn>(otherIn.Lines.Count); //添加其他入库 otherIn.CreateDate = DateTime.Now; otherIn.StockStatus = StockStatusEnum.New; otherIn.OtherInCode = nuRepository.GetNextNumber("QTRK"); oiRepository.Insert(otherIn); foreach (var line in otherIn.Lines) { line.ParentID = otherIn.ID; line.CreateBy = otherIn.CreateBy; line.CreateDate = DateTime.Now; line.Batch = string.IsNullOrEmpty(line.Batch) ? "" : line.Batch; oilRepository.Insert(line); } dbContext.CompleteTransaction(); } catch (Exception ex) { dbContext.AbortTransaction(); throw ex; } return(rData); }
/// <summary> /// 添加采购通知单 /// </summary> /// <param name="inNotice"></param> /// <returns></returns> public ResultData <string> AddPurchaseNotice(WPurchaseNotice inNotice) { ResultData <string> rData = CheckValid(inNotice); if (rData.status != 0) { return(rData); } DatabaseContext dbContext = pnRepository.DbCondext; try { dbContext.BeginTransaction(); inNotice.CreateDate = DateTime.Now; inNotice.NoticeStatus = NoticeStatusEnum.New; inNotice.InNoticeCode = nuRepository.GetNextNumber("CGRT"); pnRepository.Insert(inNotice); foreach (var line in inNotice.Lines) { line.ParentID = inNotice.ID; line.CreateBy = inNotice.CreateBy; line.CreateDate = DateTime.Now; pnlRepository.Insert(line); } dbContext.CompleteTransaction(); } catch (Exception ex) { dbContext.AbortTransaction(); throw ex; } return(rData); }
/// <summary> /// 根据入库通知添加入库 /// </summary> /// <param name="sell"></param> /// <returns></returns> public ResultData <string> AddSellReturn(WSell sell, int createBy) { ResultData <string> rData = new ResultData <string>(); if (sell.StockStatus != StockStatusEnum.Approve) { rData.status = -1; rData.message = "单据未审核不能退库."; return(rData); } //查询明细 if (sell.Lines.Count < 1) { sell.Lines = slRepository.GetLinesByParentId(sell.ID); } //克隆主表 WSellReturn sellReturn = CloneInNotice(sell); sellReturn.CreateBy = createBy; foreach (var item in sell.Lines) { WSellReturnLine line = CloneInNoticeLine(item); if (line != null) { sellReturn.Lines.Add(line); } } if (sellReturn.Lines.Count < 1) { rData.status = -1; rData.message = "单据已经全部退库."; return(rData); } DatabaseContext dbContext = srRepository.DbCondext; try { dbContext.BeginTransaction(); //添加入库单 sellReturn.CreateDate = DateTime.Now; sellReturn.StockStatus = StockStatusEnum.New; sellReturn.SellReturnCode = nuRepository.GetNextNumber("XSTK"); srRepository.Insert(sellReturn); foreach (var line in sellReturn.Lines) { line.ParentID = sellReturn.ID; line.CreateBy = sellReturn.CreateBy; line.CreateDate = DateTime.Now; line.Batch = string.IsNullOrEmpty(line.Batch) ? "" : line.Batch; srlRepository.Insert(line); //更新入库单 添加退库 decimal rt = slRepository.AddReturnCount(line.InCount, line.SourceLineID); if (rt < 0) { dbContext.AbortTransaction(); rData.status = -1; rData.message = BuilderNoticeLessMessage(line); return(rData); } } //将插入主键赋值给返回值 rData.result = sellReturn.ID.ToString(); dbContext.CompleteTransaction(); } catch (Exception ex) { dbContext.AbortTransaction(); throw ex; } return(rData); }
/// <summary> /// 根据入库单下推出库单 /// </summary> /// <param name="purchase"></param> /// <returns></returns> public ResultData <string> AddPurchaseReturn(WPurchase purchase, int createBy) { ResultData <string> rData = new ResultData <string>(); if (purchase.StockStatus != StockStatusEnum.Approve) { rData.status = -1; rData.message = "单据未审核不能退库."; return(rData); } //查询明细 if (purchase.Lines.Count < 1) { purchase.Lines = plRepository.GetLinesByParentId(purchase.ID); } //克隆主表 WPurchaseReturn purReturn = ClonePuchase(purchase); purReturn.CreateBy = createBy; //克隆子表 foreach (var item in purchase.Lines) { WPurchaseReturnLine line = ClonePurchaseLine(item); if (line != null) { purReturn.Lines.Add(line); } } if (purReturn.Lines.Count < 1) { rData.status = -1; rData.message = "单据已经全部退库."; return(rData); } DatabaseContext dbContext = pRepository.DbCondext; try { dbContext.BeginTransaction(); //添加入库单 purReturn.CreateDate = DateTime.Now; purReturn.StockStatus = StockStatusEnum.New; purReturn.PurchaseReturnCode = nuRepository.GetNextNumber("CGTK"); prRepository.Insert(purReturn); foreach (var line in purReturn.Lines) { //插入入库明细 line.ParentID = purReturn.ID; line.CreateBy = purReturn.CreateBy; line.CreateDate = DateTime.Now; line.Batch = string.IsNullOrEmpty(line.Batch) ? "" : line.Batch; prlRepository.Insert(line); //更新入库单 添加退库 decimal rt = plRepository.AddReturnCount(line.OutCount, line.SourceLineID); if (rt < 0) { dbContext.AbortTransaction(); rData.status = -1; rData.message = BuilderNoticeLessMessage(line); return(rData); } } //将插入主键赋值给返回值 rData.result = purReturn.ID.ToString(); dbContext.CompleteTransaction(); } catch (Exception ex) { dbContext.AbortTransaction(); throw ex; } return(rData); }
/// <summary> /// 添加盘亏出库 /// </summary> /// <param name="inv"></param> /// <returns></returns> public ResultData <string> AddLoss(WInventory inv) { ResultData <string> rData = new ResultData <string>(); if (inv.InventoryStatus == InventoryStatusEnum.Out) { rData.status = -1; rData.message = "单据已经盘亏."; return(rData); } else if (inv.InventoryStatus == InventoryStatusEnum.Complete) { rData.status = -1; rData.message = "单据已经完成."; return(rData); } if (ilRepository.HasNoLoss(inv.ID)) { if (inv.InventoryStatus == InventoryStatusEnum.In) { iRepository.UpdateLossStatus(inv.ID, 0, "", InventoryStatusEnum.Complete); } else { iRepository.UpdateLossStatus(inv.ID, 0, "", InventoryStatusEnum.Out); } rData.status = -1; rData.message = "单据没有盘亏记录."; return(rData); } DatabaseContext dbContext = ooRepository.DbCondext; try { dbContext.BeginTransaction(); WOtherOut otherOut = new WOtherOut { CreateBy = inv.CreateBy, CreateDate = DateTime.Now, OtherOutCode = nuRepository.GetNextNumber("QTCK"), StockOutType = StockOutEnum.InvShortages, StockStatus = StockStatusEnum.New }; //添加主表 ooRepository.Insert(otherOut); //更新为盘点 if (inv.InventoryStatus == InventoryStatusEnum.In) { iRepository.UpdateLossStatus(inv.ID, otherOut.ID, otherOut.OtherOutCode, InventoryStatusEnum.Complete); } else if (inv.InventoryStatus == InventoryStatusEnum.Complete) { rData.status = -1; rData.message = "单据已经完成."; return(rData); } else { iRepository.UpdateLossStatus(inv.ID, otherOut.ID, otherOut.OtherOutCode, InventoryStatusEnum.Out); } //添加明细 oolRepository.AddOtherLinesByInv(otherOut, inv.ID); //返回插入的ID rData.result = otherOut.ID.ToString(); dbContext.CompleteTransaction(); } catch (Exception ex) { dbContext.AbortTransaction(); throw ex; } return(rData); }
/// <summary> /// 自动生成单号 /// </summary> /// <param name="businessType">业务类型</param> public string GetNextNumber(string businessType) { return(repository.GetNextNumber(businessType)); }