Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Description

You want to enable TotePicking only based on certain conditions. 


Example

No events exists specifically to manage TotePicking being enabled or not.

However, the two Mobile WMS events exists to set set values based on WarehouseActivityHeaders and WarehouseActivityLines. 
Those two events can be utilized to "revert" the Tote Picking flags that  is being set by the standard Mobile WMS Code.

...

For this code to work the standard flag "Mobile Setup"."Tote Picking Enabled" must be set.  This example code will disable Tote Picking for a specific location code.


    [EventSubscriber(ObjectType::CodeunitCodeunit::"MOB WMS Pick", 'OnGetPickOrders_OnAfterSetFromWarehouseActivityHeader''', true, true)]
    procedure OnGetPickOrders_OnAfterSetFromWarehouseActivityHeader(_WhseActHeader: Record "Warehouse Activity Header"; var _BaseOrderElement: Record "MOB Ns BaseDataModel Element")
    var
        MobSetup: Record "MOB Setup";
    begin
        MobSetup.Get();

        if (MobSetup."Enable Tote Picking") and (_WhseActHeader.Type = _WhseActHeader.Type::Pickthen
            _BaseOrderElement.Set_TotePicking(TotePickingIsEnabledByLocation(_WhseActHeader."Location Code"));
    end;

    [EventSubscriber(ObjectType::CodeunitCodeunit::"MOB WMS Pick", 'OnGetPickOrderLines_OnAfterSetFromWarehouseActivityLine''', true, true)]
    procedure OnGetPickOrderLines_OnAfterSetFromWarehouseActivityLine(_WhseActLineTake: Record "Warehouse Activity Line"; var _BaseOrderLineElement: Record "MOB Ns BaseDataModel Element")
    var
        MobSetup: Record "MOB Setup";
    begin
        MobSetup.Get();
        if (MobSetup."Enable Tote Picking") and (_WhseActLineTake."Activity Type" = _WhseActLineTake."Activity Type"::Pickthen
            if not TotePickingIsEnabledByLocation(_WhseActLineTake."Location Code"then begin
                // revert Tote Picking flags originally written to the BaseOrderElement by standard Mobile WMS code
                _BaseOrderLineElement.Set_DisplayLine4('');
                _BaseOrderLineElement.Set_Destination('');
            end;
    end;

    procedure TotePickingIsEnabledByLocation(_LocationCode: Code[10]_TotePickingIsEnabled: Boolean
    begin
        _TotePickingIsEnabled := _LocationCode <> 'WHITE';
        exit(_TotePickingIsEnabled);
    end;