Description
Excerpt |
---|
You may subscribe to posting events in the Business Central base App to process collected values, or when events offered by Extension API does not fit your exact need. |
...
- Remember, your Events are fired both when posting from the Mobile Device, the Mobile Document Queue, but also when posting from Web Client.
- So your code must allow execution both when triggered from Mobile WMS, and when triggered from Web Client.
- So your code must allow execution both when triggered from Mobile WMS, and when triggered from Web Client.
- The document header field "MOB Posting MessageId" is populated when posting a document from Mobile or Queue but not when posting from Web Client.
- When document header field "MOB Posting MessageId" is empty the Mobile Message cannot be accessed from your posting context and only "staged" collected values from a previous try can be accessed.
- Re-trying from the Web Client will not populate "MOB Posting MessageId".
- However, "staged" data that is committed will be available/visible when posting re-trying from Web Client.
Event flow
...
order
In the 3rd step you need to decide whether to subscribe to standard posting events.
...
TODO Verify sample code
[EventSubscriber(ObjectType::Codeunit, Codeunit::"Sales-Post", 'OnRunOnBeforeFinalizePosting', '', false, false)]
local procedure MyOnPostingSalesReturnOrder_OnRunOnBeforeFinalizePosting(var SalesHeader: Record "Sales Header"; var SalesShipmentHeader: Record "Sales Shipment Header"; var SalesInvoiceHeader: Record "Sales Invoice Header"; var SalesCrMemoHeader: Record "Sales Cr.Memo Header"; var ReturnReceiptHeader: Record "Return Receipt Header"; var GenJnlPostLine: Codeunit "Gen. Jnl.-Post Line"; CommitIsSuppressed: Boolean)
var
OrderValues: Record "MOB Common Element" temporary;
MobRequestMgt: Codeunit "MOB NS Request Management";
HeaderRecRef: RecordRef;
begin
if IsNullGuid(SalesHeader."MOB Posting MessageId") then
exit; // not Mobile WMS posting or retry from Web Client
if (SalesHeader."Document Type" = SalesHeader."Document Type"::"Return Order") and (ReturnReceiptHeader."No." <> '') then begin
HeaderRecRef.GetTable(SalesHeader);
MobRequestMgt.GetOrderValues(SalesHeader."MOB Posting MessageId", OrderValues);
MyOnPostReceiveOrder_OnPostingSalesReturnOrder(OrderValues, SalesHeader, ReturnReceiptHeader);
end;
end;