Esempio n. 1
0
        private void ItemBtnReturn_Click(object sender, EventArgs e)
        {
            if (_bill == null || _bill.单据编号 == null)
            {
                MessageHelper.ShowInfo("请选择单据");
                return;
            }

            if (_bill.状态 != (int)BillState.Finished)
            {
                MessageHelper.ShowInfo("选中单据状态错误,无法执行");
                return;
            }
            var details = SpareOutController.GetList(_db, _bill.单据编号);

            try
            {
                string strInfo = BillHandler.HandleMaterialReturn(_db, _bill.VWToBill(GlobalVar.Oper.DeptCode), details);
                if (strInfo != "OK")
                {
                    MessageHelper.ShowError(strInfo);
                }
                else
                {
                    MessageHelper.ShowInfo("生成领用还回单成功");
                    EntitiesFactory.SaveDb(_db);
                }
            }
            catch (Exception ex)
            {
                MessageHelper.ShowError(ex.ToString());
                throw;
            }
        }
Esempio n. 2
0
 /// <summary>
 ///     创建【拣料单】
 /// </summary>
 /// <param name="db"></param>
 /// <param name="billPickFact">拣料单</param>
 /// <param name="details">拣料明细</param>
 /// <returns></returns>
 public static void AddMaterialOut(SpareEntities db, TB_BILL billPickFact, List <TB_OUT> details)
 {
     {
         //校验单据状态是否为新建
         if (billPickFact.State != (int)BillState.New)
         {
             throw new WmsException(ResultCode.DataStateError,
                                    billPickFact.BillNum, "状态错误,不应为:" + billPickFact.State);
         }
         if (string.IsNullOrEmpty(billPickFact.BillNum))
         {
             SetBillNum(billPickFact);                               //设置单据编号
             details.ForEach(p => p.BillNum = billPickFact.BillNum); //设置明细编号
             NotifyController.AddNotify(db, billPickFact.OperName, NotifyType.MaterialOut, billPickFact.BillNum, "");
         }
         else
         {
             var dbOutList = db.TB_OUT.Where(p => p.BillNum == billPickFact.BillNum).ToList();
             foreach (var det in dbOutList)
             {
                 if (details.FirstOrDefault(p => p.UID == det.UID) == null)
                 {
                     SpareOutController.RemaveDetail(db, det);
                 }
             }
             NotifyController.AddNotify(db, billPickFact.OperName, NotifyType.MaterialOutUpdate, billPickFact.BillNum, "");
         }
         BillController.AddOrUpdate(db, billPickFact);    //添加【原料拣料单】单据
         SpareOutController.AddOrUpdateList(db, details); //更新【实际拣料单】明细
         EntitiesFactory.SaveDb(db);
     }
 }
Esempio n. 3
0
 private void BtnDeliver_Click(object sender, EventArgs e)
 {
     if (_bill == null || _bill.单据编号 == null)
     {
         MessageHelper.ShowInfo("请选择单据");
         return;
     }
     if (MessageHelper.ShowQuestion("确定要执行选定的领用单?") == DialogResult.Yes)
     {
         SpareEntities db      = EntitiesFactory.CreateSpareInstance();
         var           outlist = SpareOutController.GetList(db, _bill.单据编号);
         foreach (var spout in outlist)
         {
             if (string.IsNullOrEmpty(spout.TakeUser))
             {
                 MessageHelper.ShowError("领用详细中的领用人信息不能为空!");
                 return;
             }
         }
         BillHandler.FinishMaterialOut(db, _bill.VWToBill(GlobalVar.Oper.DeptCode), outlist);
         EntitiesFactory.SaveDb(db);
         NotifyController.AddStockSafeQty(db, GlobalVar.Oper.OperName);
         MessageHelper.ShowInfo("保存成功!");
     }
 }
Esempio n. 4
0
 /// <summary>
 ///     执行【领用申请单】,生成【领用单】
 /// </summary>
 /// <param name="db"></param>
 /// <param name="billAsk">申请单</param>
 /// <param name="details">申请明细</param>
 /// <returns></returns>
 public static string HandleMaterialAsk(SpareEntities db, TB_BILL billAsk, List <TB_ASK> details)
 {
     try
     {
         //校验【领用单】状态是否为批准
         if (billAsk.State != (int)BillState.Approve)
         {
             return("申请单状态错误,不应为:" + billAsk.State);
         }
         var partPickList = new List <TB_OUT>();
         foreach (var detail in details)
         {
             var pList = SpareOutController.GetList(db, detail);
             if (pList.Count == 0 || pList.Sum(p => p.OutQty) < detail.Qty)
             {
                 return("库存不足,生成领用单失败!");
             }
             partPickList.AddRange(pList);
         }
         var billPick = new TB_BILL
         {
             BillNum       = "",
             SourceBillNum = billAsk.BillNum,
             BillType      = (int)BillType.MaterialDeliver,
             SubBillType   = (int)billAsk.SubBillType,
             BillTime      = DateTime.Now,
             OperName      = billAsk.OperName,
             SplyId        = billAsk.SplyId,
             State         = (int)BillState.New,
             Remark        = "",
         };
         SetBillNum(billPick);
         partPickList.ForEach(p => p.BillNum = billPick.BillNum);
         BillController.AddOrUpdate(db, billPick);
         SpareOutController.AddList(db, partPickList);
         BillController.UpdateState(db, billAsk, BillState.Handling); //更新【叫料单】状态为:执行中
         NotifyController.AddNotify(db, billPick.OperName, NotifyType.MaterialOut, billAsk.BillNum, "");
         return("OK");
     }
     catch (Exception ex)
     {
         BillController.UpdateState(db, billAsk, BillState.Failed);
         billAsk.Remark = ex.ToString();
         return(ex.ToString());
     }
 }