Beispiel #1
0
        /// <summary>
        ///     添加临时盘点
        /// </summary>
        /// <param name="db"></param>
        /// <param name="locBill">盘点库位</param>
        /// <param name="details">盘点明细</param>
        /// <returns></returns>
        public static void AddTempInventory(SpareEntities db, TB_INVENTORY_LOC locBill,
                                            List <TB_INVENTORY_DETAIL> details)
        {
            var bill = new TB_BILL
            {
                BillType   = (int)BillType.InventoryPlan,
                OperName   = locBill.OperName,
                StartTime  = locBill.CheckBeginTime,
                FinishTime = locBill.CheckEndTime,
                State      = (int)BillState.Finished
            };

            locBill.State = (int)InventoryState.Checked;
            var locList = new List <TB_INVENTORY_LOC> {
                locBill
            };

            SetBillNum(bill);                                              //设置单据编号
            locList.ForEach(p => p.BillNum = bill.BillNum);                //设置明细编号

            InventoryController.AddOrUpdate(db, bill);                     //添加盘点计划
            InventoryController.AddLocList(db, locList);                   //添加盘点库位
            InventoryController.AddDetailList(db, details);                //添加盘点明细

            InventoryController.AdjustStockByInventory(db, bill, details); //根据盘点结果调整库存
        }
Beispiel #2
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); //创建【单据日志】
        }
Beispiel #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 如果已调整或库存,需要调整回来
        }
Beispiel #4
0
        public static void DeleteInventory(SpareEntities db, TB_INVENTORY_LOC loc)
        {
            db.TB_INVENTORY_LOC.Remove(loc);
            var detaillist =
                db.TB_INVENTORY_DETAIL.Where(p => p.BillNum == loc.BillNum && p.CheckLocCode == loc.LocCode).ToList();

            foreach (var detail in detaillist)
            {
                db.TB_INVENTORY_DETAIL.Remove(detail);
            }
        }
Beispiel #5
0
 /// <summary>
 ///     取消【盘点单】
 /// </summary>
 /// <param name="db"></param>
 /// <param name="locBill"></param>
 /// <returns></returns>
 public static void CancelInventoryLoc(SpareEntities db, TB_INVENTORY_LOC locBill)
 {
     {
         //校验【盘点单】状态是否为新建或已开始
         if (locBill.State != (int)InventoryState.New && locBill.State != (int)InventoryState.Checked &&
             locBill.State != (int)InventoryState.ReChecked)
         {
             throw new WmsException(ResultCode.DataStateError, locBill.BillNum + "." + locBill.LocCode,
                                    "状态错误,不应为:" + locBill.State);
         }
         InventoryController.LocCancel(db, locBill);
     }
 }
Beispiel #6
0
        internal static void Add(SpareEntities db, TB_INVENTORY_LOC bill, string operName, OperateType operateType)
        {
            var log = new TL_BILL()
            {
                OperName = operName,
                LogTime  = DateTime.Now,
                BillNum  = bill.BillNum,
                BillType = (int)BillType.InventoryPlan,
                LogType  = operateType.ToString(),
            };

            db.TL_BILL.Add(log);
        }
Beispiel #7
0
        public static void LocFinish(SpareEntities db, TB_INVENTORY_LOC locBill, List <TB_INVENTORY_DETAIL> details)
        {
//            locBill.State = (int)BillState.Finished; //更新单据状态为已完成
            var bill = BillController.GetBill(db, locBill.BillNum);

            locBill.CheckEndTime = 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;
            db.TB_INVENTORY_DETAIL.AddOrUpdate(p => p.UID, details.ToArray());
            AdjustStockByInventory(db, bill, details);                                //根据盘点结果调整库存

            BillLogController.Add(db, locBill, locBill.OperName, OperateType.Finish); //创建【单据日志】
        }
Beispiel #8
0
 private void _report_Initialize(GridppReport report, TB_INVENTORY_LOC locBill, string detailTableName, string indexColumnName)
 {
     Console.WriteLine(report.Parameters.Count);
     report.ParameterByName("BillNum").AsString        = locBill.BillNum;
     report.ParameterByName("LocCode").AsString        = locBill.LocCode;
     report.ParameterByName("BillTime").AsString       = locBill.BillTime.ToString(GlobalVar.LongTimeString);
     report.ParameterByName("CheckBeginTime").AsString = locBill.CheckBeginTime;
     report.ParameterByName("CheckEndTime").AsString   = locBill.CheckEndTime;
     report.ParameterByName("OperName").AsString       = locBill.OperName;
     report.ParameterByName("State").AsString          = locBill.State.ToString();
     report.ParameterByName("Remark").AsString         = locBill.Remark;
     report.ConnectionString = EntitiesFactory.WmsConnectionString;
     report.DetailGrid.Recordset.ConnectionString = EntitiesFactory.WmsConnectionString;
     report.DetailGrid.Recordset.QuerySQL         = $"select * from {detailTableName} where {indexColumnName} = '{locBill.BillNum}' and CheckLocCode='{_inventoryLoc.LocCode}'";
 }
Beispiel #9
0
 private void btnSave_Click(object sender, EventArgs e)
 {
     try
     {
         bs.EndEdit();
         if (_bill.单据类型 != (int)BillType.InventoryPlan)
         {
             MessageHelper.ShowError("请输入有效的单据类型!盘点单据类型为:" + (int)BillType.InventoryPlan);
             return;
         }
         var detailList = new List <TB_INVENTORY_LOC>();
         foreach (var group in _listGroup)
         {
             if (group.IsCheck)
             {
                 var loclist = _db.TA_STORE_LOCATION.Where(p => p.GroupCode == group.GroupCode).ToList();
                 foreach (var loc in loclist)
                 {
                     var detail = new TB_INVENTORY_LOC()
                     {
                         LocCode  = loc.LocCode,
                         BillTime = DateTime.Now,
                         State    = 0
                     };
                     detailList.Add(detail);
                 }
             }
         }
         if (detailList.Count == 0)
         {
             MessageHelper.ShowError("请选择要盘点的库位!");
             return;
         }
         //List<TB_ASK> detailList = (from TB_ASK d in _list select d).ToList();
         SpareEntities db = EntitiesFactory.CreateSpareInstance();
         BillHandler.AddInventoryLoc(db, _bill.VWToBill(GlobalVar.Oper.DeptCode), detailList);
         EntitiesFactory.SaveDb(db);
         MessageHelper.ShowInfo("保存成功!");
     }
     catch (Exception ex)
     {
         MessageHelper.ShowInfo(ex.ToString());
     }
 }
Beispiel #10
0
        /// <summary>
        ///     完成库位盘点
        /// </summary>
        /// <param name="db"></param>
        /// <param name="locBill"></param>
        /// <param name="details"></param>
        /// <returns></returns>
        public static void FinishInventoryLoc(SpareEntities db, TB_INVENTORY_LOC locBill,
                                              List <TB_INVENTORY_DETAIL> details)
        {
            {
                //校验【盘点计划】状态是否为执行中

                if (locBill.State != (int)InventoryState.Checked && locBill.State != (int)InventoryState.ReChecked)
                {
                    throw new WmsException(ResultCode.DataStateError, locBill.BillNum + "." + locBill.LocCode,
                                           "状态错误,不应为:" + locBill.State);
                }

                if (string.IsNullOrEmpty(locBill.BillNum))
                {
                    AddTempInventory(db, locBill, details);
                }
                else
                {
                    InventoryController.LocFinish(db, locBill, details);
                }
            }
        }