protected override void ProcessLocationBarcode(string barcode) { StoragePlace storage = SelectFrom <StoragePlace> .Where <StoragePlace.siteID.IsEqual <@P.AsInt> .And <StoragePlace.storageCD.IsEqual <@P.AsString> > > .View.ReadOnly.Select(Base, HeaderView.Current.SiteID, barcode); if (storage == null) { ReportError("Storage {0} is not found.", barcode); } else if (IsValid <Header.storageID>(storage.StorageID, out string error) == false) { ReportError(error); } else { HeaderSetter.Set(h => h.StorageID, storage.StorageID); HeaderSetter.Set(h => h.IsCart, storage.IsCart); Base.Filter.Insert(); Base.Filter.Cache.SetValueExt <StoragePlaceEnq.StoragePlaceFilter.siteID>(Base.Filter.Current, storage.SiteID); Base.Filter.Cache.SetValueExt <StoragePlaceEnq.StoragePlaceFilter.storageID>(Base.Filter.Current, storage.StorageID); Base.Filter.Cache.IsDirty = false; Base.Filter.UpdateCurrent(); if (HeaderView.Current.Mode == Modes.Lookup) { SetScanState(ScanStates.Location, Msg.StorageReady, storage.StorageCD); } } }
protected override void ClearHeaderInfo(bool redirect = false) { base.ClearHeaderInfo(redirect); HeaderSetter.Set(h => h.SiteID, null); HeaderSetter.Set(h => h.StorageID, null); }
protected virtual void ProcessWarehouse(string barcode) { INSite site = SelectFrom <INSite> .Where <INSite.siteCD.IsEqual <@P.AsString> > .View.ReadOnly.Select(Base, barcode); if (site == null) { ReportError(Msg.WarehouseMissing, barcode); } else if (IsValid <Header.siteID>(site.SiteID, out string error) == false) { ReportError(error); return; } else { HeaderSetter.Set(h => h.SiteID, site.SiteID); Base.Filter.Cache.SetValueExt <InventorySummaryEnqFilter.siteID>(Base.Filter.Current, site.SiteID); Base.Filter.UpdateCurrent(); SetScanState(ScanStates.Item, Msg.WarehouseReady, site.SiteCD); } }
protected override void ProcessItemBarcode(string barcode) { var inventoryItem = (InventoryItem)ReadItemByBarcode(barcode); if (inventoryItem == null) { ReportError(Msg.InventoryMissing, barcode); } else if (IsValid <Header.inventoryID>(inventoryItem.InventoryID, out string error) == false) { ReportError(error); } else { HeaderSetter.Set(h => h.InventoryID, inventoryItem.InventoryID); HeaderSetter.Set(h => h.NoteID, inventoryItem.NoteID); Base.Filter.Cache.SetValueExt <InventorySummaryEnqFilter.inventoryID>(Base.Filter.Current, inventoryItem.InventoryID); Base.Filter.UpdateCurrent(); if (HeaderView.Current.Mode == Modes.Lookup) { SetScanState(ScanStates.Item, Msg.InventoryReady, inventoryItem.InventoryCD); } } }
protected virtual void SetQtyOverridable(bool overridable) { if (overridable) { HeaderSetter.Set(x => x.IsQtyOverridable, true); } }
public virtual void OnLocationProcessed(Action baseImpl) { if (IsCartRequired) { HeaderSetter.Set(x => x.ToLocationID, HeaderView.Current.LocationID); SetScanState(ScanStates.Item); } else { baseImpl(); } }
protected virtual void ProcessNextIndex(string barcode) { if (ushort.TryParse(barcode, out ushort nextIndex)) { HeaderSetter.Set(h => h.NextPathIndex, nextIndex); SetScanState(HeaderView.Current.SiteID == null ? ScanStates.Warehouse : ScanStates.Location, Msg.PathIndexSet, nextIndex); } else { ReportError(Msg.QtyBadFormat); } }
protected virtual void ProcessConfirm() { ExecuteAndCompleteFlow(() => { Base.location.SetValueExt <INLocation.pathPriority>(Base.location.Current, HeaderView.Current.NextPathIndex); Base.location.UpdateCurrent(); SetScanState(ScanStates.Location, Msg.PathIndexAssignedToLocation, HeaderView.Current.NextPathIndex, Base.location.Current.LocationCD); HeaderSetter.Set(h => h.NextPathIndex, HeaderView.Current.NextPathIndex + 1); int?siteID = HeaderView.Current.SiteID; return(WMSFlowStatus.Ok.WithPostAction(() => HeaderSetter.Set(h => h.SiteID, siteID))); }); }
protected override void ProcessLocationBarcode(string barcode) { INLocation location = ReadLocationByBarcode(HeaderView.Current.SiteID, barcode); if (location == null) { return; } Base.location.Current = location; HeaderSetter.Set(h => h.LocationID, location.LocationID); Report(Msg.LocationReady, location.LocationCD); SetScanState(ScanStates.Confirm); }
protected virtual void ProcessWarehouse(string barcode) { INSite site = SelectFrom <INSite> .Where <INSite.siteCD.IsEqual <@P.AsString> > .View.ReadOnly.Select(Base, barcode); if (site == null) { ReportError(Msg.WarehouseMissing, barcode); } else if (IsValid <Header.siteID>(site.SiteID, out string error) == false) { ReportError(error); return; } else { HeaderSetter.Set(h => h.SiteID, site.SiteID); SetScanState(ScanStates.Location, Msg.WarehouseReady, site.SiteCD); } }
public virtual void ProcessCartBarcode(string barcode, Action <string> baseImpl) { INCart cart = ReadCartByBarcode(barcode); if (cart == null) { ReportError(Msg.CartMissing, barcode); return; } if (!ValidateCart(cart)) { return; } HeaderSetter.Set(x => x.CartID, cart.CartID); HeaderSetter.Set(x => x.SiteID, cart.SiteID); Cart.Current = Cart.Select(); Report(Msg.CartReady, cart.CartCD); OnCartProcessed(); }
public virtual bool ProcessCommand(string barcode, Func <string, bool> baseImpl) { switch (barcode) { case ScanCommands.Confirm: if (IsCartRequired) { ProcessConfirmation(); return(true); } break; case ScanCommands.CartIn: if (!IsCartRequired) { return(false); } ClearHeaderInfo(); HeaderSetter.Set(x => x.CartLoaded, false); Report(Msg.CartLoading); OnCartIn(); return(true); case ScanCommands.CartOut: if (!IsCartRequired) { return(false); } ClearHeaderInfo(); HeaderSetter.Set(x => x.CartLoaded, true); Report(Msg.CartUnloading); OnCartOut(); return(true); } return(baseImpl(barcode)); }
protected virtual void MoveToCart() { WMSFlowStatus Implementation() { WMSFlowStatus status; if (!ValidateConfirmation(out status)) { return(status); } ScanHeader header = CurrentHeader; bool isSerialItem = header.LotSerTrack == INLotSerTrack.SerialNumbered; decimal? confirmQty = header.Qty; ScanLine existLine = FindLineFromDocument(header); if (existLine == null) { return(LineMissingStatus()); } if (!SyncWithLines(CurrentHeader, -confirmQty, ref existLine, out status)) { return(status); } HeaderSetter.Set(x => x.LocationID, existLine.LocationID); HeaderSetter.Set(x => x.ToLocationID, existLine.LocationID); HeaderSetter.Set(x => x.SiteID, existLine.SiteID); HeaderSetter.Set(x => x.LotSerialNbr, existLine.LotSerialNbr); HeaderSetter.Set(x => x.ReasonCode, existLine.ReasonCode); HeaderSetter.Set(x => x.ExpireDate, existLine.ExpireDate); HeaderSetter.Set(x => x.SubItemID, existLine.SubItemID); //put item to the cart existLine = FindFixedLineFromCart(CurrentHeader); if (!SyncWithLines(CurrentHeader, confirmQty, ref existLine, out status)) { return(status); } INCartSplit cartSplit = SyncWithCart(CurrentHeader, confirmQty); SyncWithDocumentCart(CurrentHeader, existLine, cartSplit, confirmQty); Report(Msg.InventoryRemoved, LinesView.Cache.GetValueExt <ScanLine.inventoryID>(existLine), confirmQty); OnMovedToCart(); return(WMSFlowStatus.Ok.WithPostAction(() => SetQtyOverridable(!isSerialItem))); }; using (var ts = new PXTransactionScope()) { var res = ExecuteAndCompleteFlow(Implementation); if (res.IsError == false) { ts.Complete(); } } }