/// <summary> /// 检查 /// </summary> /// <param name="sell"></param> /// <returns></returns> private ResultData <string> CheckValid(WSell sell) { ResultData <string> rt = new ResultData <string>(); if (sell.WarehouseID < 0) { rt.status = -1; rt.message = "仓库不能为空"; return(rt); } foreach (var item in sell.Lines) { //删除行,不验证 if (item.CURD == CurdEnum.Delete) { continue; } if (item.PositionID < 1) { rt.status = -1; rt.message = BuilderErrorMessage(item, "货位不能为空"); break; } else if (item.OutCount <= 0) { rt.status = -1; rt.message = BuilderErrorMessage(item, "出库数量必须大于0"); break; } } return(rt); }
/// <summary> /// 退库 /// </summary> /// <returns></returns> public ContentResult PushDown() { ResultData <string> rt = new ResultData <string>(); //获取前台传会的删除ID WSell sell = GetParam <WSell>("app"); rt = srService.AddSellReturn(sell, CurrentUser.ID); return(ReturnResult(rt)); }
public ContentResult Add() { ResultData <string> rt = new ResultData <string>(); WSell purchase = GetAdd <WSell>(); purchase.CreateBy = this.CurrentUser.ID; rt = snService.AddSell(purchase); return(ReturnResult(rt)); }
public ActionResult Approve() { ResultData <string> rt = new ResultData <string>(); WSell purchase = GetParam <WSell>("app"); purchase.UpdateBy = this.CurrentUser.ID; rt = snService.ApproveSell(purchase); return(ReturnResult(rt)); }
/// <summary> /// 入库通知单转换入库单 /// </summary> /// <param name="sell"></param> /// <returns></returns> private WSellReturn CloneInNotice(WSell sell) { WSellReturn sellReturn = new WSellReturn(); sellReturn.BusinessPartnerID = sell.BusinessPartnerID; sellReturn.CreateBy = sell.CreateBy; sellReturn.CreateDate = DateTime.Now; sellReturn.SourceCode = sell.SellCode; sellReturn.SourceID = sell.ID; sellReturn.StockStatus = StockStatusEnum.New; sellReturn.WarehouseCode = sell.WarehouseCode; sellReturn.WarehouseID = sell.WarehouseID; return(sellReturn); }
/// <summary> /// 出库通知单转换出库单 /// </summary> /// <param name="outNotice"></param> /// <returns></returns> private WSell CloneOutNotice(WSellNotice outNotice) { WSell Sell = new WSell(); Sell.BusinessPartnerID = outNotice.BusinessPartnerID; Sell.CreateBy = outNotice.CreateBy; Sell.CreateDate = DateTime.Now; Sell.SourceCode = outNotice.OutNoticeCode; Sell.SourceID = outNotice.ID; Sell.StockStatus = StockStatusEnum.New; Sell.WarehouseCode = outNotice.WarehouseCode; Sell.WarehouseID = outNotice.WarehouseID; return(Sell); }
public ContentResult Delete() { ResultData <string> rt = new ResultData <string>(); //获取前台传会的删除ID WSell purchase = GetDelete <WSell>(); int result = snService.RemoveSell(purchase); if (result < 1) { rt.status = -1; rt.message = "删除失败,只能删除新建单据."; } return(ReturnResult(rt)); }
/// <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="line"></param> /// <param name="other"></param> /// <returns></returns> private WStockOut CloneSell(WSellLine line, WSell Sell) { WStockOut stockOut = new WStockOut(); stockOut.Batch = line.Batch; stockOut.Factory = line.Factory; stockOut.OutCount = line.OutCount; stockOut.MaterialCode = line.MaterialCode; stockOut.MaterialID = line.MaterialID; stockOut.OwnerCode = line.OwnerCode; stockOut.PositionCode = line.PositionCode; stockOut.PositionID = line.PositionID; stockOut.SourceCode = Sell.SellCode; stockOut.SourceID = line.ParentID; stockOut.SourceLineID = line.ID; stockOut.StockInDate = Sell.CreateDate; stockOut.StockOutType = StockOutEnum.Sell; stockOut.UnitID = line.UnitID; stockOut.WarehouseCode = Sell.WarehouseCode; stockOut.WarehouseID = Sell.WarehouseID; stockOut.StockID = line.StockID; return(stockOut); }
/// <summary> /// 删除 /// </summary> /// <param name="sell"></param> /// <returns></returns> public int RemoveSell(WSell sell) { //查询明细 if (sell.Lines.Count < 1) { sell.Lines = slRepository.GetLinesByParentId(sell.ID); } DatabaseContext db = snRepository.DbCondext; try { db.BeginTransaction(); //删除其他出库 int result = sRepository.RemoveSellByStatus(sell.ID, StockStatusEnum.New); if (result > 0) { foreach (WSellLine line in sell.Lines) { if (line.SourceLineID > 0) { //删除下推 snlRepository.RemoveDownCount(line.OutCount, line.SourceLineID); } } slRepository.RemoveLinesByParentId(sell.ID); } db.CompleteTransaction(); return(result); } catch (Exception ex) { db.AbortTransaction(); throw ex; } }
/// <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="sell"></param> /// <returns></returns> public ResultData <string> ApproveSell(WSell sell) { if (sell.Lines.Count < 1) { sell.Lines = slRepository.GetLinesByParentId(sell.ID); } ResultData <string> rData = CheckValid(sell); if (rData.status != 0) { return(rData); } DatabaseContext dbContext = sRepository.DbCondext; try { dbContext.BeginTransaction(); //出库记录 List <WStockOut> stockOuts = new List <WStockOut>(sell.Lines.Count); //添加其他出库 int result = sRepository.ApproveSell(sell); if (result < 1) { rData.status = -1; rData.message = "单据已经审核或删除."; dbContext.AbortTransaction(); return(rData); } foreach (var line in sell.Lines) { stockOuts.Add(CloneSell(line, sell)); //添加完成数量 if (line.SourceLineID > 0) { snlRepository.AddCompleteCount(line.SourceLineID, line.OutCount); } } //更新库存 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; } return(rData); }
/// <summary> /// 更新销售 /// </summary> /// <param name="sell"></param> /// <returns></returns> public ResultData <string> UpdateSell(WSell sell) { ResultData <string> rData = CheckValid(sell); if (rData.status != 0) { return(rData); } if (sell.StockStatus != StockStatusEnum.New) { rData.status = -1; rData.message = "单据已经审核,不能编辑."; return(rData); } DatabaseContext db = snRepository.DbCondext; try { db.BeginTransaction(); foreach (var line in sell.Lines) { switch (line.CURD) { case CurdEnum.Add: if (line.SourceLineID > 0) { //添加下推 decimal result = snlRepository.AddDownCount(line.OutCount, line.SourceLineID); if (result < 0) { db.AbortTransaction(); rData.status = -1; rData.message = BuilderErrorMessage(line, "出库数量大于通知单数量."); return(rData); } } line.ParentID = sell.ID; line.CreateBy = sell.CreateBy; line.CreateDate = DateTime.Now; line.OutPutCount = line.OutCount; line.Batch = string.IsNullOrEmpty(line.Batch) ? "" : line.Batch; slRepository.Insert(line); break; case CurdEnum.Delete: slRepository.Delete(line); if (line.SourceLineID > 0) { //删除下推 snlRepository.RemoveDownCount(line.OutCount, line.SourceLineID); } break; case CurdEnum.Update: if (line.SourceLineID > 0) { decimal result = snlRepository.UpdateDownCount(line.SourceLineID, line.OutCount, line.OutPutCount); if (result < 0) { db.AbortTransaction(); rData.status = -1; rData.message = BuilderErrorMessage(line, "出库数量大于通知单数量."); return(rData); } } line.UpdateBy = sell.UpdateBy; line.OutPutCount = line.OutCount; line.UpdateDate = DateTime.Now; line.Batch = string.IsNullOrEmpty(line.Batch) ? "" : line.Batch; slRepository.Update(line); break; } } db.CompleteTransaction(); } catch (Exception ex) { db.AbortTransaction(); throw ex; } return(rData); }
/// <summary> /// 根据通知单生成出库单 /// </summary> /// <param name="outNotice"></param> /// <returns></returns> public ResultData <string> AddSell(WSellNotice outNotice, int createBy) { ResultData <string> rData = new ResultData <string>(); if (outNotice.NoticeStatus == NoticeStatusEnum.Complete) { rData.status = -1; rData.message = "单据已完成不能下推."; return(rData); } //查询明细 if (outNotice.Lines.Count < 1) { outNotice.Lines = snlRepository.GetLinesByParentId(outNotice.ID); } //克隆主表 WSell sell = CloneOutNotice(outNotice); sell.CreateBy = createBy; //克隆子表 foreach (var item in outNotice.Lines) { WSellLine line = CloneOutNoticeLine(item); if (line != null) { sell.Lines.Add(line); } } if (sell.Lines.Count < 1) { rData.status = -1; rData.message = "单据已经全部下推."; 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); //更新通知单 添加下推 decimal rt = snlRepository.AddDownCount(line.OutCount, line.SourceLineID); if (rt < 0) { dbContext.AbortTransaction(); rData.status = -1; rData.message = BuilderNoticeLessMessage(line); return(rData); } } //将插入主键赋值给返回值 rData.result = sell.ID.ToString(); //更新通知单状态 if (sell.SourceID > 0) { snRepository.UpdateNoticeStatus(NoticeStatusEnum.Executing, sell.SourceID); } dbContext.CompleteTransaction(); } catch (Exception ex) { dbContext.AbortTransaction(); throw ex; } return(rData); }