Description
Excerpt |
---|
Examples of sorting Order list |
...
When working with custom sorting you must consider: .
Should the filter be applied across all document types?
- If yes, use the Yes: Use the generic "Any"-event
- If no, use the No: Use the document-specific event(s)
...
Sorting on Existing fields ("OnAfterSetCurrentKey"-events)
Example 1
- Change key to existing field "Item no."
- Change sorting direction to "Descending"
...
[EventSubscriber(ObjectType::Codeunit, Codeunit::"MOB WMS Put Away", 'OnGetPutAwayOrderLines_OnAfterSetCurrentKey', '', true, true)]
procedure OnGetPutAwayOrderLines_OnAfterSetCurrentKey(var _BaseOrderLineElementView: Record "MOB Ns BaseDataModel Element")
begin
_BaseOrderLineElementView.SetCurrentKey(ItemNumber);
_BaseOrderLineElementView.Ascending(false);
end;
Example 2
- Change key to existing field "Order No."
[EventSubscriber(ObjectType::Codeunit, Codeunit::"MOB WMS Receive", 'OnGetReceiveOrders_OnAfterSetCurrentKey', '', true, true)]
procedure OnGetReceiveOrders_OnAfterSetCurrentKey(var _BaseOrderElementView: Record "MOB Ns BaseDataModel Element")
begin
_BaseOrderElementView.SetCurrentKey(BackendID);
_BaseOrderElementView.Ascending(true);
end;
...
Sorting on Custom fields
...
Sort lines by your own custom field
("OnAfterSetFrom"-events)
Note. For this task: you must both:
- You must use the "OnAfterSetFrom"-event
- both set the value and enable sorting on it
- Set the value
- Enable sorting on it
Example 1:
Sort all picks by "Assigned User ID"
- Sort on "Assigned User ID'" from the source RecordRef
- For this "AnyEvent" the RecordRef can be "Warehouse Activity Header", "Sales Header", "Purchase Header" or "Transfer Header" depending on what documents are available to pick
[EventSubscriber(ObjectType::Codeunit, Codeunit::"
...
MOB WMS Pick", '
...
OnGetPickOrders_
...
OnAfterSetFromAnyHeader', '',
...
true,
...
true)]
...
local procedure MySortByCustomTag_OnGetPickOrders_OnAfterSetFromAnyHeader(_RecRef: RecordRef; var _
...
BaseOrderElement: Record "
...
MOB Ns BaseDataModel Element")
var
DataTypeManagement:
...
Codeunit "Data Type Management";
NewFieldRef:
...
FieldRef;
begin
if DataTypeManagement.FindFieldByName(_RecRef, NewFieldRef,
...
'Assigned User ID') then
_BaseOrderElement.SetValue('AssignedUserID', 'Assigned to: ' + CopyStr(NewFieldRef.Value(), 1, NewFieldRef.Length()));
...
_BaseOrderElement.Set_Sorting1(_BaseOrderElement.GetValue('AssignedUserID'));
end;
Example 2:
Sort only Warehouse Picks by "Assigned User ID"
- Sort on "Assigned User ID'" from the Source Warehouse Activity Header
[EventSubscriber(ObjectType::Codeunit, Codeunit::"MOB WMS Pick", 'OnGetPickOrders_OnAfterSetFromWarehouseActivityHeader', '', true, true)]
local procedure My02GetPickOrders_OnAfterSetFromWarehouseActivityHeader(_WhseActHeader: Record "Warehouse Activity Header"; var _BaseOrderElement: Record "MOB Ns BaseDataModel Element")
begin
_BaseOrderElement.SetValue('AssignedUserID', 'Assigned to: ' + _WhseActHeader."Assigned User ID");
_BaseOrderElement.Set_Sorting1(_BaseOrderElement.GetValue('AssignedUserID'));
end;