Example #1
0
        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); //创建【单据日志】
        }
Example #2
0
        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);//盘点差异执行移库
        }
Example #3
0
        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 如果已调整或库存,需要调整回来
        }
Example #4
0
        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); //添加库存事务日志
        }
Example #5
0
 public TA_STORE_LOCATION[] GetLocs()
 {
     return(StoreLocationController.GetList(rdb).ToArray());
 }