Use this event to
Populate values in Orders displayed at the mobile device (derived from any of four associated header tables). Parameters includes a RecRef-instance for the header table.
This event is executed after each of these following events have been executed already:
OnGetPickOrders_OnAfterSetFromWarehouseActivityHeader
OnGetPickOrders_OnAfterSetFromPurchaseReturnHeader
OnGetPickOrders_OnAfterSetFromTransferHeader
OnGetPickOrders_OnAfterSetFromSalesHeader
Template
[EventSubscriber(ObjectType::Codeunit, Codeunit::"MOB WMS Pick", 'OnGetPickOrders_OnAfterSetFromAnyHeader', '', true, true)]
procedure OnGetPickOrders_OnAfterSetFromAnyHeader(_RecRef: RecordRef; var _BaseOrderElement: Record "MOB Ns BaseDataModel Element")
begin
end;
Example 1
[EventSubscriber(ObjectType::Codeunit, Codeunit::"MOB WMS Pick", 'OnGetPickOrders_OnAfterSetFromAnyHeader', '', true, true)]
procedure MyOnGetPickOrders_OnAfterSetFromAnyHeader(_RecRef: RecordRef; var _BaseOrderElement: Record "MOB Ns BaseDataModel Element")
var
AssignedUserIdFldNo: Integer;
begin
AssignedUserIdFldNo := FieldName2FieldNo(_RecRef, 'Assigned User ID');
if (AssignedUserIdFldNo <> 0) then
_BaseOrderElement.SetValue('MyAssignedUserID', 'Assigned to: ' + GetValueByFieldNo(_RecRef, AssignedUserIdFldNo));
_BaseOrderElement.Set_DisplayLine2('Set from OnGetPickOrders_OnAfterSetFromAnyHeader'); // override value previously set at table event
end;
Example 2
// [Example]: Sort by custom tag
[EventSubscriber(ObjectType::Codeunit, Codeunit::"MOB WMS Pick", 'OnGetPickOrders_OnAfterSetFromAnyHeader', '', true, true)]
procedure MySortByCustomTag_OnGetPickOrders_OnAfterSetFromAnyHeader(_RecRef: RecordRef; var _BaseOrderElement: Record "MOB Ns BaseDataModel Element")
var
AssignedUserIdFldNo: Integer;
begin
with _BaseOrderElement do begin
AssignedUserIdFldNo := FieldName2FieldNo(_RecRef, 'Assigned User ID');
if (AssignedUserIdFldNo <> 0) then
SetValue('AssignedUserID', 'Assigned to: ' + GetValueByFieldNo(_RecRef, AssignedUserIdFldNo));
Set_Sorting1(CopyStr(GetValue('AssignedUserID'), 1, MaxStrLen("Sorting1 (internal)")));
Set_Sorting2(CopyStr(Get_ItemNumber(), 1, MaxStrLen("Sorting2 (internal)")));
end;
end;
local procedure FieldName2FieldNo(var RecRef: RecordRef; FieldNameToConvert: Text): Integer
var
FieldRec: Record "Field";
begin
if (StrLen(FieldNameToConvert) > MaxStrLen(FieldRec.FieldName)) then // FieldNameToConvert too long and cannot be a table field name
exit(0);
FieldRec.Reset();
FieldRec.SetCurrentKey("TableNo", FieldName);
FieldRec.SetRange(TableNo, RecRef.Number());
FieldRec.SetRange(FieldName, FieldNameToConvert);
if FieldRec.FindFirst() then
exit(FieldRec."No.");
exit(0);
end;
local procedure GetValueByFieldNo(var RecRef: RecordRef; FieldNo: Integer): Text
var
NewFieldRef: FieldRef;
begin
NewFieldRef := RecRef.Field(FieldNo);
exit(NewFieldRef.Value());
end;
More examples
-
How-to: Modify DisplayLines — Additional text displayed on a List.
-
How-to: Modify HeaderLabel and HeaderValue — Modify text in the top of Order Lines
-
How-to: Sorting of Orders — Examples of sorting Order list
Version History
Version | Changes |
---|---|
MOB5.00 | Introduced |