[EventSubscriber(ObjectType::Table, Database::"Reservation Entry", OnAfterCopyTrackingFromTrackingSpec, '', true, true)]
local procedure OnAfterCopyTrackingFromTrackingSpec(var ReservationEntry: Record "Reservation Entry"; TrackingSpecification: Record "Tracking Specification")
var
TrackSpecs: Record "Tracking Specification";
LastEntryNo: Integer;
AssemblyHeader: Record "Assembly Header";
ReservEntry: Record "Reservation Entry";
LastReservEntryNo: Integer;
l: page "Item Tracking Lines";
begin
if TrackingSpecification."Source Type" <> Database::"Assembly Line" then
exit;
if TrackingSpecification."Serial No." = '' then
exit;
// Find Assembly Header
AssemblyHeader.Reset();
AssemblyHeader.SetRange("Document Type", TrackingSpecification."Source Subtype");
AssemblyHeader.SetRange("No.", TrackingSpecification."Source ID");
if not AssemblyHeader.FindFirst() then
exit;
ReservEntry.Reset();
if ReservEntry.FindLast() then
LastReservEntryNo := ReservEntry."Entry No."
else
LastReservEntryNo := 0;
ReservEntry.Init();
ReservEntry."Entry No." := LastReservEntryNo + 1;
ReservEntry.Positive := true;
ReservEntry.Validate("Item No.", AssemblyHeader."Item No.");
ReservEntry.Validate("Location Code", AssemblyHeader."Location Code");
ReservEntry.Validate("Quantity", TrackingSpecification."Quantity (Base)");
ReservEntry.Validate("Quantity (Base)", TrackingSpecification."Quantity (Base)");
ReservEntry.Validate("Qty. to Handle (Base)", TrackingSpecification."Qty. to Handle (Base)");
ReservEntry.Validate("Qty. to Invoice (Base)", TrackingSpecification."Qty. to Invoice (Base)");
ReservEntry."Qty. per Unit of Measure" := TrackingSpecification."Qty. per Unit of Measure";
ReservEntry."Reservation Status" := ReservEntry."Reservation Status"::Surplus;
ReservEntry."Source Type" := Database::"Assembly Header";
ReservEntry."Source Subtype" := TrackingSpecification."Source Subtype";
ReservEntry."Source ID" := TrackingSpecification."Source ID";
ReservEntry."Source Ref. No." := 0;
ReservEntry.Validate("Serial No.", TrackingSpecification."Serial No.");
ReservEntry.Validate("Lot No.", TrackingSpecification."Lot No.");
ReservEntry."Creation Date" := Today;
ReservEntry.Insert(true);
end;