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 16 Next »

Add Steps to be displayed during a line registration on planned functions

Description

Line steps are displayed on every line. Unless you modify Step dynamically for change the steps visibility.


Step 1: Define Line Step(s)

Select the event based on which functionality you are modifying.



Add code to the event subscriber to create your step(s). 


   // Define steps
    [EventSubscriber(ObjectType::CodeunitCodeunit::"MOB WMS Reference Data", 'OnGetReferenceData_OnAddRegistrationCollectorConfigurations''', false, false)]
    local procedure MyOnGetReferenceData_OnAddRegistrationCollectorConfigurations(var _Steps: Record "MOB Steps Element")
    begin
        _Steps.InitConfigurationKey('MyCustomPickLineStep');
        _Steps.Create_TextStep(10'MyTextStep''Header text''Label text''Help text''Default text'30);
    end;


 

Step 2: Add steps to Pick-function

    // Add steps Pick Lines
    [EventSubscriber(ObjectType::CodeunitCodeunit::"MOB WMS Pick", 'OnGetPickOrderLines_OnAddStepsToAnyLine''', true, true)]
    local procedure MyOnGetPickOrderLines_OnAddStepsToAnyLine(_RecRef: RecordRefvar _BaseOrderLineElement: Record "MOB NS BaseDataModel Element")
    begin
        _BaseOrderLineElement.Create_StepsByReferenceDataKey('MyCustomPickLineStep', true);
    end;


Changes to Reference Data are only visible after loggin out and in again.

You should now see the step(s) you have added.

 

 

Step 3: Store and Process the data

Subscribe to an OnHandle event.

You might also need to subscribe to Standard Posting Routines to process your new data, see How-to: Subscribing to standard events.


In this example we store the step text value as a Sales Comment Line. 


    // Store collected step values
    [EventSubscriber(ObjectType::CodeunitCodeunit::"MOB WMS Pick", 'OnPostPickOrder_OnHandleRegistrationForAnyLine''', true, true)]
    local procedure OnPostPickOrder_OnHandleRegistrationForAnyLine(var _Registration: Record "MOB WMS Registration"; var _RecRef: RecordRef)
    var
        SalesLine: Record "Sales Line";
        MyTextValue: Text;
    begin
        MyTextValue := _Registration.GetValue('MyTextStep');

        if MyTextValue = '' then
            exit;

        // Get the source document line as this event if for "Any line". Choose a more specific event if you only need to handle one document type
        if _RecRef.Number = Database::"Sales Line" then begin
            _RecRef.SetTable(SalesLine);
            AddAsCommentLine(SalesLine, 'FromMobile', MyTextValue);
        end;

        // Note: You might also need to subscribe to Standard Posting Routines to process your new data

    end;

    local procedure AddAsCommentLine(_SalesLine: Record "Sales Line"; _Code: Code[10]; _Comment: Text[80])
    var
        SalesCommmentLine: Record "Sales Comment Line";
        NextLineNo: Integer;
    begin
        // Find next LineNo
        SalesCommmentLine.SetRange("Document Type", _SalesLine."Document Type");
        SalesCommmentLine.SetRange("No.", _SalesLine."Document No.");
        if SalesCommmentLine.FindLast() then
            NextLineNo := SalesCommmentLine."Line No." + 10000
        else
            NextLineNo := 10000;

        // Init and insert the comment line
        SalesCommmentLine.Init();
        SalesCommmentLine."Document Type" := _SalesLine."Document Type";
        SalesCommmentLine."No." := _SalesLine."Document No.";
        SalesCommmentLine."Document Line No." := _SalesLine."Line No.";
        SalesCommmentLine.Code := _Code;
        SalesCommmentLine."Line No." := NextLineNo;
        SalesCommmentLine.Date := Today();
        SalesCommmentLine.Comment := _Comment;
        SalesCommmentLine.Insert();
    end;





  • No labels