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 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)]
    localprocedureMy01OnGetPickOrders_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.");
        ifWhseActLines.FindFirst() thenbegin
            WhseActLines.SetFilter("Source No.", '<>%1', WhseActLines."Source No.");
            ifWhseActLines.IsEmpty() then
                _BaseOrderElement.Set_TotePicking(false);
        end;
    end;