Hi,
Trying to find a proper solution for assigning serial numbers to a purchase order line through extension or API method.
BC version is 19.3.0.2 on-prem.
In NAV, you would pass serial number directly into CreateReservEntry.CreateReservEntryFor method, like this:
[External] CreateReservEntryFor(ForType : Option;ForSubtype : Integer;ForID : Code[20];ForBatchName : Code[10];ForProdOrderLine : Integer;ForRefNo : Integer;ForQtyPerUOM : Decimal;Quantity : Decimal;QuantityBase : Decimal;ForSerialNo : Code[20];ForLotNo : Code[20])
InsertReservEntry.SetSource(ForType,ForSubtype,ForID,ForRefNo,ForBatchName,ForProdOrderLine);
Sign := SignFactor(InsertReservEntry);
InsertReservEntry.Quantity := Sign * Quantity;
InsertReservEntry.“Quantity (Base)” := Sign * QuantityBase;
InsertReservEntry.“Qty. per Unit of Measure” := ForQtyPerUOM;
InsertReservEntry.“Serial No.” := ForSerialNo;
InsertReservEntry.“Lot No.” := ForLotNo;InsertReservEntry.TESTFIELD(“Qty. per Unit of Measure”);
But in BC, CreateReservEntry.CreateReservEntryFor method is changed, so you no longer can pass Serial No., but instead Serial No. is copied from ReservEntry:
Codeunit 99000830 Create Reserv. Entry
procedure CreateReservEntryFor(ForType: Option; ForSubtype: Integer; ForID: Code[20]; ForBatchName: Code[10]; ForProdOrderLine: Integer; ForRefNo: Integer; ForQtyPerUOM: Decimal; Quantity: Decimal; QuantityBase: Decimal; ForReservEntry: Record “Reservation Entry”)
var Sign: Integer; begin InsertReservEntry.SetSource(ForType, ForSubtype, ForID, ForRefNo, ForBatchName, ForProdOrderLine); Sign := SignFactor(InsertReservEntry); InsertReservEntry.Quantity := Sign * Quantity; InsertReservEntry."Quantity (Base)" := Sign * QuantityBase; InsertReservEntry."Qty. per Unit of Measure" := ForQtyPerUOM; **InsertReservEntry.CopyTrackingFromreservEntry(ForReservEntry);** InsertReservEntry.TestField("Qty. per Unit of Measure"); OnAfterCreateReservEntryFor(InsertReservEntry, Sign, ForType, ForSubtype, ForID, ForBatchName, ForProdOrderLine, ForRefNo, ForQtyPerUOM, Quantity, QuantityBase, ForReservEntry); end;
Table 337 Reservation Entry
procedure CopyTrackingFromReservEntry(ReservationEntry: Record "Reservation Entry") begin "Serial No." := ReservationEntry."Serial No."; "Lot No." := ReservationEntry."Lot No."; OnAfterCopyTrackingFromReservEntry(Rec, ReservationEntry); end;
So, the question is what would be the correct way to ‘feed’ Reservation Entry with serial nos. before executing CreateReservEntryFor?
Is there a method in Codeunit 99000830 Create Reserv. Entry or Table 337 Reservation Entry that can be utilized for this?
