Versions Compared

Key

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

Use this event to

...

  • Create transport orders (or similar) for the Whse. Shipment in the 3rd party Shipping App  (or use Shipping Provider ConnectorOnPostPackingOnBeforePostWarehouseShipment (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 base 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:Write Transaction Data to Shipping Provider


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::CodeunitCodeunit::"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::CodeunitCodeunit::"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() 1then begin
            _TransportOrderHeader.Validate("Preferred Pick-up Date", Today() 1);
            _TransportOrderHeader.Modify(true);
        end;
        IdysTransportOrderAPI.BookAndPrint(_TransportOrderHeader);
    end;

Version History

VersionChanges
MOS1MOB5.0.042Introduced