Excerpt |
---|
Add Steps to be displayed during a line registration on planned functions |
Description
Line steps are displayed on every lineon every line. Unless you modify Step dynamically for change the steps visibility.
...
Select the event based on which functionality you are modifying.
...
Filter by label (Content by label) | ||||||||
---|---|---|---|---|---|---|---|---|
|
Add code to the event subscriber to create your step(s).
// Define steps
// Step 1: Define steps. In this example, the step is added to the Pick Order lines and the value from this step is then added directly to the Sales Comment Line, in the Sales Order.
Step 1: Define Line Step(s)
Using OnGetPickOrderLines_OnAddStepsToAnyLine to add the steps to Pick Order Lines
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
Step 2: Add steps to Pick-function
...
...
Changes to Reference Data are only visible after loggin out and in again.
You should now see the step(s) you have added.
...
Step
...
2: Store and Process the data
Subscribe to an OnHandle event.event OnPostPickOrder_OnHandleRegistrationForAnyLine
You might also need to subscribe to Standard Posting Routines to process your new data, see How-to: Subscribing to standard events. Filter by label (Content by label)
In this example, we store the step text value as a Sales Comment Line.
// Store collected step values
Step 2: Store collected step values
[EventSubscriber(ObjectType::Codeunit, Codeunit::"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 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, CopyStr(MyTextValue, 1, 80));
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;