public static void LocStart(SpareEntities db, TB_INVENTORY_LOC locBill) { var bill = db.TB_INVENTORY_LOC.SingleOrDefault(p => p.BillNum == locBill.BillNum && p.LocCode == locBill.LocCode); if (bill != null) { bill.CheckBeginTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); // // locBill.CheckBeginTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); // // db.TB_INVENTORY_LOC.Attach(locBill); // db.Entry(locBill).State = EntityState.Modified; } else { locBill.CheckBeginTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); db.TB_INVENTORY_LOC.Remove(locBill); db.TB_INVENTORY_LOC.Attach(locBill); db.Entry(locBill).State = EntityState.Modified; } // bill.State = (int)BillState.Handling; //更新单据状态为正在执行 StoreLocationController.Lock(db, locBill.LocCode); //锁定库位 BillLogController.Add(db, locBill, locBill.OperName, OperateType.Update); //创建【单据日志】 }
public static void AdjustStockByInventory(SpareEntities db, TB_BILL bill, List <TB_INVENTORY_DETAIL> details) { var stockMoveList = new List <TB_STOCK_MOVE>(); foreach (TB_INVENTORY_DETAIL detail in details) { StoreLocationController.UnLock(db, detail.CheckLocCode);//解锁库位 var diffqty = detail.BookQty - detail.CheckQty; if (diffqty == 0) { continue; } var stockMove = detail.ToStockMove(); if (diffqty < 0) { stockMove.FromLocCode = "OTHER"; stockMove.ToLocCode = stockMove.ToLocCode; stockMove.Qty = (decimal) - diffqty; } else { stockMove.FromLocCode = stockMove.ToLocCode; stockMove.ToLocCode = "OTHER"; stockMove.Qty = (decimal)diffqty; } stockMoveList.Add(stockMove); } StockDetailController.ListMove(db, bill, stockMoveList);//盘点差异执行移库 }
public static void LocCancel(SpareEntities db, TB_INVENTORY_LOC locBill) { var bill = db.TB_INVENTORY_LOC.Find(locBill.BillNum, locBill.LocCode); if (bill != null) { bill.State = (int)BillState.Cancelled; //更新单据状态为取消 } StoreLocationController.UnLock(db, locBill.LocCode); //解锁库位 //TODO 如果已调整或库存,需要调整回来 }
public static void Out(SpareEntities db, TB_BILL bill, TS_STOCK_DETAIL detailOut) { CheckStockDetailLoc(db, detailOut.LocCode); var loc = StoreLocationController.Get(db, detailOut.LocCode); // if (detailOut.UpdateQty >= 0) // { // throw new WmsException(ResultCode.StockNotEnough, // GetDetailInfo(detailOut), "出库数量错误,无法移出"); // } if (detailOut.Qty + detailOut.UpdateQty < 0) { throw new WmsException(ResultCode.StockNotEnough, GetDetailInfo(detailOut), "出库库存明细不足,无法移出"); } var stockDetail = Get(db, detailOut.LocCode, detailOut.PartCode, detailOut.Batch); if (stockDetail == null) //库存明细不存在,报错 { if (bill.BillType == (int)BillType.InventoryPlan) { return; } throw new WmsException(ResultCode.DataNotFound, GetDetailInfo(detailOut), "出库库存明细不存在"); } else //库存明细存在,更新数量(出库时更新数量为负值) { stockDetail.Qty += detailOut.UpdateQty; stockDetail.UpdateQty = detailOut.UpdateQty; stockDetail.UpdateTime = DateTime.Now; } db.TS_STOCK_DETAIL.AddOrUpdate(stockDetail); TransactionLogController.Add(db, bill, detailOut); //添加库存事务日志 }
public TA_STORE_LOCATION[] GetLocs() { return(StoreLocationController.GetList(rdb).ToArray()); }