| | |
| | | using Tiger.Model; |
| | | using Tiger.IBusiness; |
| | | using Tiger.Business.WMS.Common; |
| | | using Org.BouncyCastle.Ocsp; |
| | | using Tiger.Model.Sharetronic.Shelf; |
| | | using MailKit.Search; |
| | | using Tiger.Business.WMS.Extensions; |
| | | using static Tiger.Model.BIZ_WMS_PREP_BTH; |
| | | |
| | | namespace Tiger.Business.WMS.Transaction |
| | | { |
| | |
| | | #region Propertys & Variables |
| | | public Preparation CurPREP { get; set; } |
| | | private List<BIZ_WMS_PREP_SN> CurSn = new(); |
| | | private BIZ_WMS_PREP_DTL CurPrepDtl = new(); |
| | | private BIZ_WMS_PREP_DTL CurPrepDtl; |
| | | public List<SuggestItem> Suggests { get; set; } = new(); |
| | | public List<WMS_ITEM_POOL> CurPoolList => Suggests.Where(q => !q.poolItem.IsNullOrEmpty()).Select(q => q.poolItem).ToList(); |
| | | public List<WMS_LOCATION> LocationHis { get; set; } = new(); |
| | |
| | | var action = new ApiAction<ScanOutput>(new ScanOutput()); |
| | | try |
| | | { |
| | | |
| | | //Result<List<SuggestItem>> result = Suggest("CurPrepDtl.ORDER_NO", "CurPrepDtl.ITEM_CODE", new SuggestOption(), new(), 100.0); |
| | | //action.LocaleMsg = result.LocaleMsg; |
| | | if (input.Command == "ScanOrder") |
| | | { |
| | | action = await ScanOrder(input); |
| | |
| | | |
| | | if (CurPREP.Order.IsNullOrEmpty() || !CurPREP.Order.SourceOrders.Any(q => q.SOURCE_ORDER == inputOrder.SOURCE_ORDER)) |
| | | { |
| | | action = CurPREP.AddOrder(inputOrder.BIZ_TYPE.GetEnum<BIZ_WMS_PREP.BIZ_TYPEs>(), inputOrder.SOURCE_CODE); |
| | | action = CurPREP.AddOrder(inputOrder.BIZ_TYPE.GetEnum<BIZ_WMS_PREP.BIZ_TYPEs>(), inputOrder.SOURCE_ORDER); |
| | | } |
| | | else |
| | | { |
| | |
| | | public async Task<ApiAction<BIZ_WMS_PREP>> GetPrepInfo() |
| | | { |
| | | var action = new ApiAction<BIZ_WMS_PREP>(); |
| | | CurPREP.Order = MainDB.Queryable<BIZ_WMS_PREP>().Where(q => q.ID == CurPREP.Order.ID).IncludesAllFirstLayer().First(); |
| | | |
| | | var prepId = CurPREP?.Order?.ID; |
| | | CurPREP.Order = MainDB.Queryable<BIZ_WMS_PREP>().Where(q => q.ID == prepId).IncludesAllFirstLayer().First(); |
| | | action.Data = CurPREP.Order; |
| | | return action; |
| | | } |
| | |
| | | var actQty = CurPrepDtl.QTY_PREP > CurPREP.BizType.GetActReqQty(CurPrepDtl) ? 0 : (CurPREP.BizType.GetActReqQty(CurPrepDtl) - CurPrepDtl.QTY_PREP); |
| | | if (inv != null && actQty > 0) |
| | | { |
| | | inv.poolItem = inv.Item.GetPoolItem(OrgCode, nameof(CurPREP.Order), CurPrepDtl.ORDER_NO, CurPrepDtl.ORDER_LINE, actQty, true); |
| | | inv.poolItem = inv.Item.GetPoolItem(OrgCode, TransID, nameof(CurPREP.Order), CurPrepDtl.ORDER_NO, CurPrepDtl.ORDER_LINE, actQty, true); |
| | | } |
| | | else |
| | | { |
| | |
| | | } |
| | | |
| | | Suggests.Clear(); |
| | | Suggests = result.Data; |
| | | var remain = actQty; |
| | | Suggests.ForEach((inv) => |
| | | { |
| | | if (remain > 0) |
| | | { |
| | | inv.poolItem = inv.Item.GetPoolItem(input.AuthOption.OrgCode, nameof(CurPREP.Order), CurPrepDtl.ORDER_NO, CurPrepDtl.ORDER_LINE, remain, false); |
| | | inv.poolItem = inv.Item.GetPoolItem(OrgCode, TransID, nameof(CurPREP.Order), CurPrepDtl.ORDER_NO, CurPrepDtl.ORDER_LINE, remain, false); |
| | | remain -= inv.poolItem.ALLOC_QTY; |
| | | } |
| | | else |
| | |
| | | public async Task<ApiAction<BIZ_WMS_PREP_DTL>> GetCurPrepItem() |
| | | { |
| | | var action = new ApiAction<BIZ_WMS_PREP_DTL>(); |
| | | var prepDtl = MainDB.Queryable<BIZ_WMS_PREP_DTL>().Where(q => q.ID == CurPrepDtl.ID).First(); |
| | | prepDtl.Suggests = Suggests; |
| | | CurPrepDtl = prepDtl; |
| | | CurPREP.Order.Details.RemoveAll(q => q.ID == CurPrepDtl.ID); |
| | | CurPREP.Order.Details.Add(CurPrepDtl); |
| | | action.Data = CurPrepDtl; |
| | | if (!CurPrepDtl.IsNullOrEmpty()) |
| | | { |
| | | var prepDtl = MainDB.Queryable<BIZ_WMS_PREP_DTL>().Where(q => q.ID == CurPrepDtl.ID).First(); |
| | | prepDtl.Suggests = Suggests; |
| | | CurPrepDtl = prepDtl; |
| | | CurPREP.Order.Details.RemoveAll(q => q.ID == CurPrepDtl.ID); |
| | | CurPREP.Order.Details.Add(CurPrepDtl); |
| | | action.Data = CurPrepDtl; |
| | | } |
| | | return action; |
| | | } |
| | | |
| | |
| | | /// <returns></returns> |
| | | public async Task<ApiAction> GenerateDlvyBatch(BaseInput input) |
| | | { |
| | | var range = input.Data.ToInt32().GetEnum<BATCH_RANGEs>(); |
| | | var range = input.Data.ToInt32().GetEnum<BIZ_WMS_PREP_BTH.BATCH_RANGEs>(); |
| | | var action = await CurPREP.Order.BIZ_TYPE.GetEnum<BIZ_WMS_PREP.BIZ_TYPEs>() .GenerateDlvyBatch(this, range); |
| | | return action; |
| | | } |
| | |
| | | { |
| | | ResetScan(); |
| | | CurPREP = new(MainDB, UserCode, OrgCode); |
| | | CurPrepDtl = new(); |
| | | CurPrepDtl = null; |
| | | CurScanShelf = null; |
| | | base.ResetTrans(); |
| | | } |
| | |
| | | //CloseLight(LocationHis).Wait(); |
| | | if (!(CurPREP?.Order?.ORDER_NO ?? "").IsNullOrEmpty()) |
| | | { |
| | | MainDB.Deleteable<WMS_ITEM_POOL>().Where(x => x.TRANS_NO == CurPREP.Order.ORDER_NO).ExecuteCommand(); |
| | | MainDB.Deleteable<WMS_ITEM_POOL>().Where(q => q.TRANS_NO == CurPREP.Order.ORDER_NO || q.TRANS_ID == TransID).ExecuteCommand(); |
| | | } |
| | | |
| | | this.IsFinished = true; |