(Legacy) OnPrem/Per-Tenant Extension
This article was written for a connector used with the separate Pack & Ship Extension (OnPrem or Per-Tenant).
Pack & Ship is now a feature in the standard Mobile WMS (since MOB5.42) and will use a new API to connect directly to the Mobile WMS App.
Existing custom connectors can be migrated by following the guide Migration - Pack & Ship to Mobile WMS.
Links:
Mobile WMS - Implementing a new Shipping Provider Connector
Mobile WMS - Write Transaction Data to Shipping Provider
Use this event to
Book and Print external "Transport Orders" (or similar) in 3rd party Shipping App
Description
This event is triggered after a Warehouse Shipment has been posted. You may use the event to:
- Create transport orders (or similar) for the Whse. Shipment in the 3rd party Shipping App (or use Pack & Ship Extension - OnPostPackingOnBeforePostWarehouseShipment (MOS) event if you want the Transport Order to be created prior to posting)
- Create transport order packages (or similar) based on untransferred license plates
- Mark untransferred license plates as now already Transferred to Shipping.
- Book transport orders (or similar) in the 3rd party Shipping App
- Print related documents from the 3rd party Shipping App.
Note: This event is similar to standard event "Whse.-Post Shipment.OnAfterPostWhseShipment. It is included in the codeunit "MOS Pack API" for more accessible "interface" (all neccessary events are in one codeunit).
See also: Pack & Ship Extension - Write transaction data to 3rd party Shipping App
Template
/// <remarks>
/// Redirected from standard event OnAfterPostWhseShipment to new local event for more accessible "interface" (all neccessary events in Codeunit MOS Pack API)
/// </remarks>
[EventSubscriber(ObjectType::Codeunit, Codeunit::"MOS Pack API", 'OnPostPackingOnAfterPostWarehouseShipment', '', false, false)]
local procedure OnPostPackingOnAfterPostWarehouseShipment(var WarehouseShipmentHeader: Record "Warehouse Shipment Header")
begin
end;
Example - Book and Print an existing Transport Order for a Warehouse Shipment when shipment is fully posted
[EventSubscriber(ObjectType::Codeunit, Codeunit::"MOS Pack API", 'OnPostPackingOnAfterPostWarehouseShipment', '', false, false)]
local procedure OnPostPackingOnAfterPostWarehouseShipment(var WarehouseShipmentHeader: Record "Warehouse Shipment Header")
begin
if not WarehouseShipmentHeader.Find('=') then // No longer exists = fully posted
BookAndPrintWhseShipment(WarehouseShipmentHeader);
end;
local procedure BookAndPrintWhseShipment(var _WhseShptHeader: Record "Warehouse Shipment Header")
var
IdysTransportOrderHeader: Record "IDYS Transport Order Header";
TransportOrderNos: Dictionary of [Code[20], Code[20]]; // Assuming identical keys and values
TransportOrderNo: Code[20];
begin
CollectShipItTransportOrderNosByWhseShipment(_WhseShptHeader."No.", TransportOrderNos);
foreach TransportOrderNo in TransportOrderNos.Values() do begin
IdysTransportOrderHeader.Get(TransportOrderNo);
if IdysTransportOrderHeader.Status = IdysTransportOrderHeader.Status::New then
BookAndPrintShipItTransportOrder(IdysTransportOrderHeader);
end;
end;
local procedure BookAndPrintShipItTransportOrder(var _TransportOrderHeader: Record "IDYS Transport Order Header")
var
MobSessionData: Codeunit "MOB SessionData";
IdysTransportOrderAPI: Codeunit "IDYS Transport Order API";
begin
_TransportOrderHeader.CalcFields("Total No. of Packages");
MobSessionData.SetRegistrationTypeTracking(
MobSessionData.GetRegistrationTypeTracking() + ' / ' +
Format(_TransportOrderHeader.RecordId) + ' / ' +
StrSubstNo('Packages: %1', _TransportOrderHeader."Total No. of Packages")); // Packages to book (nay include packages previously at the Transport Order)
if _TransportOrderHeader."Total No. of Packages" = 0 then
exit; // No packages was inserted from OnAfterCreateTransportOrderLine events
// "Preferred Pick-up Date From" may be greater than CurrentDateTime() but still invalid, hence always update to tomorrow
if _TransportOrderHeader."Preferred Pick-up Date" <> (Today() + 1) then begin
_TransportOrderHeader.Validate("Preferred Pick-up Date", Today() + 1);
_TransportOrderHeader.Modify(true);
end;
IdysTransportOrderAPI.BookAndPrint(_TransportOrderHeader);
end;
Version History
Version | Changes |
---|---|
MOS1.0.0 | Introduced |