Ejemplo n.º 1
0
        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);
                }
            }
        }
Ejemplo n.º 2
0
        protected override void ClearHeaderInfo(bool redirect = false)
        {
            base.ClearHeaderInfo(redirect);

            HeaderSetter.Set(h => h.SiteID, null);
            HeaderSetter.Set(h => h.StorageID, null);
        }
Ejemplo n.º 3
0
        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);
            }
        }
Ejemplo n.º 4
0
        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);
                }
            }
        }
Ejemplo n.º 5
0
 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();
     }
 }
Ejemplo n.º 7
0
 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);
     }
 }
Ejemplo n.º 8
0
        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)));
            });
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
        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);
            }
        }
Ejemplo n.º 11
0
        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();
        }
Ejemplo n.º 12
0
        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));
        }
Ejemplo n.º 13
0
        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();
                }
            }
        }