Versions Compared

Key

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

Use this event to

...

  • Add extra steps during posting (interrupt posting to collect addtional steps)
  • Used for "conditional" steps i.e. when values from previously collected steps decides determines if the step are to be included
  • Extra steps can be collected for the "header" only. Extra steps per document line are currently not supported for planned document types
  • Posting are restarted (started over) when the additional steps have been collected on the mobile device
  • Events are executed every time posting starts over and can be used to chain even more steps.

...

    [EventSubscriber(ObjectType::CodeunitCodeunit::"MOB WMS Receive", 'OnPostReceiveOrder_OnAddStepsToTransferHeader''', true, true)]
    local procedure OnPostReceiveOrder_OnAddStepsToTransferHeader(var _OrderValues: Record "MOB Common Element"; _TransferHeader: Record "Transfer Header"; var _Steps: Record "MOB Steps Element")
    begin
    end;

Example

  1. Create new "unconditional" RadioButton step (always displayed) using the OnGetReceiveOrderLines_OnAddStepsToAnyHeader-event
  2. Show an extra step to pick posting date from a calendar - but only if option "Other date" was selected above
  3. Set Posting Date based on values collected from all steps above (unconditional "RadioButton" and "conditional" date picker)

    // OnGetReceiveOrderLines
    // Create a step in the default header collector (for transfer orders only)
    [EventSubscriber(ObjectType::CodeunitCodeunit::"MOB WMS Receive", 'OnGetReceiveOrderLines_OnAddStepsToAnyHeader''', true, true)]
    procedure MyOnGetReceiveOrderLines_OnAddStepsToAnyHeader(_RecRef: RecordRefvar _StepsElement: Record "MOB Steps Element")
    begin
        if (_RecRef.Number() DataBase::"Transfer Header"then begin
            _StepsElement.Create_RadioButtonStep(10000'MyPostingDateRadioButtonStep');
            _StepsElement.Set_header('Posting Date');
            _StepsElement.Set_listValues('Today;Yesterday;Other date');
            _StepsElement.Set_defaultValue('Today');
        end;
    end;

    // OnPostReceiveOrder
    // Create a conditional step on posting based on collected value from the 'MyPostingDateRadioButtonStep' created above
    [EventSubscriber(ObjectType::CodeunitCodeunit::"MOB WMS Receive", 'OnPostReceiveOrder_OnAddStepsToTransferHeader''', true, true)]
    local procedure MyOnPostReceiveOrder_OnAddStepsToTransferHeader(var _OrderValues: Record "MOB Common Element"; _TransferHeader: Record "Transfer Header"; var _Steps: Record "MOB Steps Element")
    begin
        // Break when any option different from 'Other date' was selected in the 'MyPostingDateRadioButtonStep'
        if _OrderValues.GetValue('MyPostingDateRadioButtonStep'<> 'Other date' then
            exit;

        // Break if new datestep for 'Other date' is already collected to prevent infinite loop
        if _OrderValues.HasValue('MyPostingDate'then
            exit;

        // Create a new date step for manually selecting Posting Date
        _Steps.Create_DateStep(10000'MyPostingDate');
        _Steps.Set_header('Posting Date');
        _Steps.Set_minDate(Today() 10);
        _Steps.Set_maxDate(Today());
    end;

    // OnPostReceiveOrder
    // Set new posting date including using a value from conditional step 'MyPostingDate'
    [EventSubscriber(ObjectType::CodeunitCodeunit::"MOB WMS Receive", 'OnPostReceiveOrder_OnBeforePostTransferOrder''', true, true)]
    procedure MyOnPostReceiveOrder_OnBeforePostTransferOrder(var _OrderValues: Record "MOB Common Element"; var _TransferHeader: Record "Transfer Header")
    var
        PostingDate: Date;
    begin
        case _OrderValues.GetValue('MyPostingDateRadioButtonStep'of
            'Today':
                PostingDate := Today();
            'Yesterday':
                PostingDate := Today() 1;
            'Other date':
                PostingDate := _OrderValues.GetValueAsDate('MyPostingDate', true);
        end;

        if (PostingDate <> 0D) and (PostingDate <> _TransferHeader."Posting Date"then begin
            _TransferHeader.CalledFromWarehouse(true);
            _TransferHeader.Validate("Posting Date", PostingDate);
        end;
    end;


Filter by label (Content by label)
showLabelsfalse
showSpacefalse
sorttitle
titleMore examples
excerptTypesimple
cqllabel = "bc" and label = "order" and label = "example" and label = "onaddstepsto"

...