/// <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="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); }
/// <summary> /// 更新其他出库 /// </summary> /// <param name="transferOut"></param> /// <returns></returns> public ResultData <string> UpdateTransferOut(WTransferOut transferOut) { ResultData <string> rData = CheckValid(transferOut); if (rData.status != 0) { return(rData); } if (transferOut.StockStatus != StockStatusEnum.New) { rData.status = -1; rData.message = "单据已经审核,不能编辑."; return(rData); } DatabaseContext db = toRepository.DbCondext; try { db.BeginTransaction(); toRepository.Update(transferOut); foreach (var line in transferOut.Lines) { switch (line.CURD) { case CurdEnum.Add: line.ParentID = transferOut.ID; line.CreateBy = transferOut.CreateBy; line.CreateDate = DateTime.Now; line.Batch = string.IsNullOrEmpty(line.Batch) ? "" : line.Batch; tolRepository.Insert(line); break; case CurdEnum.Delete: tolRepository.Delete(line); break; case CurdEnum.Update: line.UpdateBy = transferOut.UpdateBy; line.UpdateDate = DateTime.Now; line.Batch = string.IsNullOrEmpty(line.Batch) ? "" : line.Batch; tolRepository.Update(line); break; } } db.CompleteTransaction(); } catch (Exception ex) { db.AbortTransaction(); throw ex; } return(rData); }
public ContentResult Add() { ResultData <string> rt = new ResultData <string>(); WTransferOut transferOut = GetAdd <WTransferOut>(); transferOut.CreateBy = this.CurrentUser.ID; rt = outService.AddTransferOut(transferOut); return(ReturnResult(rt)); }
public ActionResult Approve() { ResultData <string> rt = new ResultData <string>(); WTransferOut transferOut = GetParam <WTransferOut>("app"); transferOut.UpdateBy = this.CurrentUser.ID; rt = outService.ApproveTransferOut(transferOut); return(ReturnResult(rt)); }
/// <summary> /// 删除其他出库 /// </summary> /// <param name="transferOut"></param> /// <returns></returns> public int RemoveTransferOut(WTransferOut transferOut) { //删除其他出库 int result = toRepository.RemoveTransferOutByStatus(transferOut.ID, StockStatusEnum.New); if (result > 0) { tolRepository.RemoveLinesByParentId(transferOut.ID); } return(result); }
public ContentResult Delete() { ResultData <string> rt = new ResultData <string>(); //获取前台传会的删除ID WTransferOut transferOut = GetDelete <WTransferOut>(); int result = outService.RemoveTransferOut(transferOut); if (result < 1) { rt.status = -1; rt.message = "删除失败,只能删除新建单据."; } return(ReturnResult(rt)); }
/// <summary> /// 插入新其他出库 /// </summary> /// <param name="transferOut"></param> /// <returns></returns> public ResultData <string> AddTransferOut(WTransferOut transferOut) { ResultData <string> rData = CheckValid(transferOut); if (rData.status != 0) { return(rData); } DatabaseContext dbContext = toRepository.DbCondext; try { dbContext.BeginTransaction(); //添加其他出库 transferOut.CreateDate = DateTime.Now; transferOut.StockStatus = StockStatusEnum.New; transferOut.StockOutType = StockOutEnum.TransferOut; transferOut.TransferOutCode = nuRepository.GetNextNumber("DBCK"); toRepository.Insert(transferOut); foreach (var line in transferOut.Lines) { line.ParentID = transferOut.ID; line.CreateBy = transferOut.CreateBy; line.CreateDate = DateTime.Now; line.Batch = string.IsNullOrEmpty(line.Batch) ? "" : line.Batch; tolRepository.Insert(line); } dbContext.CompleteTransaction(); } catch (Exception ex) { dbContext.AbortTransaction(); throw ex; } return(rData); }
/// <summary> /// 检查 /// </summary> /// <param name="transferOut"></param> /// <returns></returns> private ResultData <string> CheckValid(WTransferOut transferOut) { ResultData <string> rt = new ResultData <string>(); if (transferOut.FWarehouseID < 0) { rt.status = -1; rt.message = "调出仓库不能为空"; return(rt); } if (transferOut.TWarehouseID < 0) { rt.status = -1; rt.message = "调入仓库不能为空"; return(rt); } foreach (var item in transferOut.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> /// <param name="line"></param> /// <param name="other"></param> /// <returns></returns> private WStockOut CloneTransferOut(WTransferOutLine line, WTransferOut other) { WStockOut stockOut = new WStockOut(); stockOut.Batch = line.Batch; //批次 stockOut.Factory = line.Factory; //工厂 stockOut.OutCount = line.OutCount; //出库数量 stockOut.MaterialCode = line.MaterialCode; //物理编码 stockOut.MaterialID = line.MaterialID; //物料ID stockOut.OwnerCode = line.OwnerCode; //所有者 stockOut.PositionCode = line.PositionCode; //货位编码 stockOut.PositionID = line.PositionID; //货位ID stockOut.SourceCode = other.TransferOutCode; //出库单号 stockOut.SourceID = line.ParentID; //出库ID stockOut.SourceLineID = line.ID; //出库行ID stockOut.StockOutDate = other.CreateDate; //出库时间 stockOut.StockOutType = other.StockOutType; //出库类型 stockOut.UnitID = line.UnitID; //单位 stockOut.WarehouseCode = other.FWarehouseCode; //仓库编码 stockOut.WarehouseID = other.FWarehouseID; //仓库ID stockOut.StockInDate = line.StockInDate; //入库时间 stockOut.StockID = line.StockID; //库存ID return(stockOut); }