Minimum Requirements
- Extension version MOB5.27
- Android App 1.5.9
Use this event to
Interrupt Warehouse Receipt posting and add extra steps (“Header Steps”) based on values already collected.
Description
Interrupt posting and add extra steps (“Header Steps”) based on values already collected.
- Add extra steps during posting (interrupt posting to collect addtional steps)
- Used for "conditional" steps i.e. when values from previously collected steps 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.
Steps with no "conditions" are better created using the OnGetReceiveOrderLines_OnAddStepsToAnyHeader-event.
See also: OnPostReceiveOrder_OnAddStepsToAnyHeader
Template
[EventSubscriber(ObjectType::Codeunit, Codeunit::"MOB WMS Receive", 'OnPostReceiveOrder_OnAddStepsToWarehouseReceiptHeader', '', true, true)]
local procedure OnPostReceiveOrder_OnAddStepsToWarehouseReceiptHeader(var _OrderValues: Record "MOB Common Element"; _WhseReceiptHeader: Record "Warehouse Receipt Header"; var _Steps: Record "MOB Steps Element")
begin
end;
Example 1
[EventSubscriber(ObjectType::Codeunit, Codeunit::"MOB WMS Receive", 'OnPostReceiveOrder_OnAddStepsToWarehouseReceiptHeader', '', true, true)]
local procedure MyOnPostReceiveOrder_OnAddStepsToWarehouseReceiptHeader(var _OrderValues: Record "MOB Common Element"; _WhseReceiptHeader: Record "Warehouse Receipt Header"; var _Steps: Record "MOB Steps Element")
begin
// Break if new datestep 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;
Example 2 (End-to-End)- New steps to select Posting Date "Today", "Yesterday" or "Other date"
- Create new "unconditional" RadioButton step (always displayed) using the OnGetReceiveOrderLines_OnAddStepsToAnyHeader-event
- Show an extra step to pick posting date from a calendar - but only if option "Other date" was selected above
- Set Posting Date based on values collected from all steps above (unconditional "RadioButton" and "conditional" date picker)
// OnGetReceiveOrderLines
// Create a RadioButton step in the default header collector (for warehouse receipts only)
[EventSubscriber(ObjectType::Codeunit, Codeunit::"MOB WMS Receive", 'OnGetReceiveOrderLines_OnAddStepsToAnyHeader', '', true, true)]
procedure MyOnGetReceiveOrderLines_OnAddStepsToAnyHeader(_RecRef: RecordRef; var _StepsElement: Record "MOB Steps Element")
begin
if (_RecRef.Number() = DataBase::"Warehouse Receipt 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::Codeunit, Codeunit::"MOB WMS Receive", 'OnPostReceiveOrder_OnAddStepsToWarehouseReceiptHeader', '', true, true)]
local procedure MyOnPostReceiveOrder_OnAddStepsToWarehouseReceiptHeader(var _OrderValues: Record "MOB Common Element"; _WhseReceiptHeader: Record "Warehouse Receipt 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::Codeunit, Codeunit::"MOB WMS Receive", 'OnPostReceiveOrder_OnBeforePostWarehouseReceipt', '', true, true)]
procedure MyOnPostReceiveOrder_OnBeforePostWarehouseReceipt(var _OrderValues: Record "MOB Common Element"; var _WhseReceiptHeader: Record "Warehouse Receipt 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 <> _WhseReceiptHeader."Posting Date") then
_WhseReceiptHeader.Validate("Posting Date", PostingDate);
end;
More examples
-
Case: Interrupt posting and add steps for Shipping Agent Service Code — Ask the user for what Shipping Agent and Service Code during Warehouse pick posting
-
How-to: Interrupt posting and add extra steps — Dynamically add extra steps by interrupting posting to collect steps based on values from previous steps.
Version History
Version | Changes |
---|---|
MOB5.27 | Introduced |