Versions Compared

Key

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

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

Use this event to

Excerpt

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:


Note: This event is similar to base event "Whse.-Post Shipment.OnAfterPostWhseShipment.It is included in the codeunit "MOS Pack API" for , but is a 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
MOB5.42Introduced

...