...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
Info | ||
---|---|---|
| ||
|
Use this event to
Excerpt |
---|
Interrupt any Receive Order posting and add extra steps (“Header Steps”) based on values already collected. Parameters includes a RecRef-instance for the header table. |
Description
...
. |
Like other Receive "Any"-events the this event is executed for all of four different receive document sources (Warehouse Receipt, Purchase Order, Transfer Order and Sales Return Order).
If you are implementing changes only for a specific document source, you likely should use one of the document-source-specific events (see "This event is executed after...", below).
For some or all of the four receive document sources you may:
Steps with no "conditions" are better created using the OnGetReceiveOrderLines_OnAddStepsToAnyHeader-event.
Description
Use this event to interrupt any Receive Order 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 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.
...
- OnPostReceiveOrder_OnAddStepsToWarehouseReceiptHeader
- OnPostReceiveOrder_OnAddStepsToPurchaseHeader
- OnPostReceiveOrder_OnAddStepsToSalesReturnHeader
- OnPostReceiveOrder_OnAddStepsToTransferHeader
...
Template
[EventSubscriber(ObjectType::Codeunit, Codeunit::"MOB WMS Receive", 'OnPostReceiveOrder_OnAddStepsToAnyHeader', '', true, true)]
local procedure OnPostReceiveOrder_OnAddStepsToAnyHeader(var _OrderValues: Record "MOB Common Element"; _RecRef: RecordRef; var _StepsStepsElement: Record "MOB Steps Element")
begin
end;
Example
...
// Create a step in the default header collector (displayed for "Warehouse Receipt" and "Purchase Order", but not "Transfer Order" or "Sales Return Order")
[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() in [DataBase::"Warehouse Receipt Header", Database::"Purchase 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_OnAddStepsToAnyHeader', '', true, true)]
local procedure MyOnPostReceiveOrder_OnAddStepsToAnyHeader(var _OrderValues: Record "MOB Common Element"; _RecRef: RecordRef; var _StepsStepsElement: 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 some condition to include news step(s) is not met
// if .... then
// exit;
// Break if new datestep for 'Other date' is already collected to prevent infinite loop 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
_StepsStepsElement.Create_DateStep(10000, 'MyPostingDate');
_StepsStepsElement.Set_header('Posting Date');
_StepsStepsElement.Set_minDate(Today() - 10);
_StepsStepsElement.Set_maxDate(Today());
end;
// OnPostReceiveOrder
// Set new posting date including using a value from conditional step 'MyPostingDate'. Step can exist only for "Warehouse Receipt" or "Purchase Order"
[EventSubscriber(ObjectType::Codeunit, Codeunit::"MOB WMS Receive", 'OnPostReceiveOrder_OnBeforePostAnyOrder', '', true, true)]
procedure MyOnPostReceiveOrder_OnBeforePostAnyOrder(var _OrderValues: Record "MOB Common Element"; var _RecRef: RecordRef)
var
WhseReceiptHeader: Record "Warehouse Receipt Header";
PurchHeader: Record "Purchase Header";
PurchRelease: Codeunit "Release Purchase Document";
PostingDate: Date;
begin
case _OrderValues.GetValue('MyPostingDateRadioButtonStep') of
'Today':
PostingDate := Today();
'Yesterday':
PostingDate := Today() - 1;
'Other date':
PostingDate := _OrderValues.GetValueAsDate('MyPostingDate', true);
end;
case _RecRef.Number() of
Database::"Warehouse Receipt Header":
begin
_RecRef.SetTable(WhseReceiptHeader);
if (PostingDate <> 0D) and (PostingDate <> WhseReceiptHeader."Posting Date") then
WhseReceiptHeader.Validate("Posting Date", PostingDate);
_RecRef.GetTable(WhseReceiptHeader);
end;
Database::"Purchase Header":
begin
_RecRef.SetTable(PurchHeader);
PurchRelease.Reopen(PurchHeader);
PurchRelease.SetSkipCheckReleaseRestrictions();
PurchHeader.SetHideValidationDialog(true); // same behavior when reprocessing from queue ie. no "change exchange rate" confirmation
PurchHeader.Validate("Posting Date", PostingDate);
PurchRelease.Run(PurchHeader);
_RecRef.GetTable(PurchHeader);
end;
end;
end;
Filter by label (Content by label) | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Version History
Version | Changes |
---|---|
MOB5.27 | Introduced |