Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

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. 


Example 1 - 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;

Example 2 - Disable tote picking if warehouse shipment only consists of one unique sales order (source no.):

   
    [EventSubscriber(ObjectType::Codeunit, Codeunit::"MOB WMS Pick", 'OnGetPickOrders_OnAfterSetFromWarehouseActivityHeader', '', true, true)]
    local procedure My01OnGetPickOrders_OnAfterSetFromWarehouseActivityHeader(_WhseActHeader: Record "Warehouse Activity Header"; var _BaseOrderElement: Record "MOB Ns BaseDataModel Element")
    var
        WhseActLines: Record "Warehouse Activity Line";
    begin
        WhseActLines.SetRange("Activity Type", _WhseActHeader.Type);
        WhseActLines.SetRange("No.", _WhseActHeader."No.");
        if WhseActLines.FindFirst() then begin
            WhseActLines.SetFilter("Source No.", '<>%1', WhseActLines."Source No.");
            if WhseActLines.IsEmpty() then
                _BaseOrderElement.Set_TotePicking(false);
        end;
    end;
  • No labels