Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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.

  • 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::CodeunitCodeunit::"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;