Table 5878 Phys. Invt. Record Line

App
Base Application
Namespace
Microsoft.Inventory.Counting.Recording
Versions
17-28

Fields, 32Keys, 5Procedures, 7Events, 21Obsolete, 4

Versions171819202122232425262728

Source29

Source in 29

src/Layers/W1/BaseApp/Inventory/Counting/Recording/PhysInvtRecordLine.Table.al734 lines, Copyright (c) Microsoft Corporation. MIT

// ------------------------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// ------------------------------------------------------------------------------------------------
namespace Microsoft.Inventory.Counting.Recording;

using Microsoft.Foundation.UOM;
using Microsoft.HumanResources.Employee;
using Microsoft.Inventory.Counting.Document;
using Microsoft.Inventory.Counting.Tracking;
using Microsoft.Inventory.Item;
using Microsoft.Inventory.Item.Catalog;
using Microsoft.Inventory.Ledger;
using Microsoft.Inventory.Location;
using Microsoft.Inventory.Tracking;
using Microsoft.Warehouse.Ledger;
using Microsoft.Warehouse.Structure;
using System.Security.AccessControl;

table 5878 "Phys. Invt. Record Line"
{
    Caption = 'Phys. Invt. Record Line';
    DrillDownPageID = "Phys. Invt. Recording Lines";
    LookupPageID = "Phys. Invt. Recording Lines";
    DataClassification = CustomerContent;

    fields
    {
        field(1; "Order No."; Code[20])
        {
            Caption = 'Order No.';
            ToolTip = 'Specifies the order number.';
            DataClassification = SystemMetadata;
            TableRelation = "Phys. Invt. Record Header";
        }
        field(2; "Recording No."; Integer)
        {
            Caption = 'Recording No.';
            ToolTip = 'Specifies a number that is assigned to the physical inventory recording.';
            DataClassification = SystemMetadata;
            TableRelation = "Phys. Invt. Record Header"."Recording No." where("Order No." = field("Order No."));
        }
        field(3; "Line No."; Integer)
        {
            Caption = 'Line No.';
            ToolTip = 'Specifies the number of the line.';
            DataClassification = SystemMetadata;
        }
        field(16; "Order Line No."; Integer)
        {
            Caption = 'Order Line No.';
            ToolTip = 'Specifies the Line No. of the linked physical inventory order line.';
            DataClassification = SystemMetadata;
            Editable = false;
            TableRelation = "Phys. Invt. Order Line"."Line No." where("Document No." = field("Order No."));
        }
        field(17; "Recorded Without Order"; Boolean)
        {
            Caption = 'Recorded Without Order';
            DataClassification = SystemMetadata;
            Editable = false;
        }
        field(20; "Item No."; Code[20])
        {
            Caption = 'Item No.';
            ToolTip = 'Specifies the number of the item that was counted when taking the physical inventory.';
            DataClassification = SystemMetadata;
            TableRelation = Item;

            trigger OnValidate()
            var
                TempPhysInvtRecordLine: Record "Phys. Invt. Record Line" temporary;
                IsHandled: Boolean;
            begin
                TestStatusOpen();

                TempPhysInvtRecordLine := Rec;
                Init();
                "Item No." := TempPhysInvtRecordLine."Item No.";

                OnValidateItemNoOnAfterInitFromTempRecord(Rec, TempPhysInvtRecordLine);

                if "Item No." <> xRec."Item No." then
                    "Variant Code" := '';

                if "Item No." = '' then
                    exit;

                GetPhysInvtRecordHeader();
                GetItem();

                IsHandled := false;
                OnValidateItemNoOnBeforeTestfieldBlocked(Rec, Item, IsHandled);
                if not IsHandled then
                    Item.TestField(Blocked, false);

                Validate(Description, Item.Description);
                Validate("Description 2", Item."Description 2");

                Validate("Unit of Measure Code", Item."Base Unit of Measure");
                if "Unit of Measure Code" <> '' then begin
                    UnitOfMeasure.Get("Unit of Measure Code");
                    "Unit of Measure" := UnitOfMeasure.Description;
                end else
                    "Unit of Measure" := '';

                "Date Recorded" := PhysInvtRecordHeader."Date Recorded";
                "Time Recorded" := PhysInvtRecordHeader."Time Recorded";
                "Person Recorded" := PhysInvtRecordHeader."Person Recorded";
                "Location Code" := PhysInvtRecordHeader."Location Code";
                "Bin Code" := PhysInvtRecordHeader."Bin Code";
                "Use Item Tracking" := PhysInvtTrackingMgt.SuggestUseTrackingLines(Item);
                GetShelfNo();

                OnAfterValidateItemNo(Rec, PhysInvtRecordHeader, Item);
            end;
        }
        field(21; "Variant Code"; Code[10])
        {
            Caption = 'Variant Code';
            ToolTip = 'Specifies the variant of the item on the line.';
            DataClassification = SystemMetadata;
            TableRelation = "Item Variant".Code where("Item No." = field("Item No."));

            trigger OnValidate()
            var
                IsHandled: Boolean;
            begin
                TestStatusOpen();
                TestField("Item No.");

                if Rec."Variant Code" = '' then begin
                    GetItem();
                    Rec.Validate(Description, Item.Description);
                    Rec.Validate("Description 2", Item."Description 2");
                    exit;
                end;

                ItemVariant.Get("Item No.", "Variant Code");

                IsHandled := false;
                OnValidateVariantCodeOnBeforeTestFieldBlocked(Rec, ItemVariant, IsHandled);
                if not IsHandled then
                    ItemVariant.TestField(Blocked, false);

                Description := ItemVariant.Description;
                "Description 2" := ItemVariant."Description 2";
                GetShelfNo();
            end;
        }
        field(22; "Location Code"; Code[10])
        {
            Caption = 'Location Code';
            ToolTip = 'Specifies the code of the location where the item was counted during taking the physical inventory.';
            DataClassification = SystemMetadata;
            TableRelation = Location;

            trigger OnValidate()
            begin
                GetShelfNo();
            end;
        }
        field(23; "Bin Code"; Code[20])
        {
            Caption = 'Bin Code';
            ToolTip = 'Specifies the code of the bin where the item was counted while performing the physical inventory.';
            DataClassification = SystemMetadata;
            TableRelation = Bin.Code where("Location Code" = field("Location Code"));

            trigger OnValidate()
            var
                IsHandled: Boolean;
            begin
                IsHandled := false;
                OnBeforeValidateBinCode(Rec, IsHandled);
                if IsHandled then
                    exit;

                if "Bin Code" <> '' then begin
                    TestField("Location Code");
                    Location.Get("Location Code");
                    Location.TestField("Bin Mandatory", true);
                    Location.TestField("Directed Put-away and Pick", false);
                end;
            end;
        }
        field(30; Description; Text[100])
        {
            Caption = 'Description';
            ToolTip = 'Specifies the description of the item.';
            DataClassification = SystemMetadata;
        }
        field(31; "Description 2"; Text[50])
        {
            Caption = 'Description 2';
            ToolTip = 'Specifies the additional description of the item.';
            DataClassification = SystemMetadata;
        }
        field(32; "Unit of Measure"; Text[50])
        {
            Caption = 'Unit of Measure';
            ToolTip = 'Specifies the unit of measure used for the item, for example bottle or piece.';
            DataClassification = SystemMetadata;
        }
        field(33; "Qty. Rounding Precision"; Decimal)
        {
            AutoFormatType = 0;
            Caption = 'Qty. Rounding Precision';
            DataClassification = SystemMetadata;
            InitValue = 0;
            DecimalPlaces = 0 : 5;
            MinValue = 0;
            MaxValue = 1;
            Editable = false;
        }
        field(34; "Qty. Rounding Precision (Base)"; Decimal)
        {
            AutoFormatType = 0;
            Caption = 'Qty. Rounding Precision (Base)';
            DataClassification = SystemMetadata;
            InitValue = 0;
            DecimalPlaces = 0 : 5;
            MinValue = 0;
            MaxValue = 1;
            Editable = false;
        }
        field(40; "Unit of Measure Code"; Code[10])
        {
            Caption = 'Unit of Measure Code';
            ToolTip = 'Specifies how each unit of the item or resource is measured, such as in pieces or hours. By default, the value in the Base Unit of Measure field on the item or resource card is inserted.';
            DataClassification = SystemMetadata;
            TableRelation = "Item Unit of Measure".Code where("Item No." = field("Item No."));

            trigger OnValidate()
            begin
                GetItem();
                "Qty. per Unit of Measure" := UOMMgt.GetQtyPerUnitOfMeasure(Item, "Unit of Measure Code");
                "Qty. Rounding Precision" := UOMMgt.GetQtyRoundingPrecision(Item, "Unit of Measure Code");
                "Qty. Rounding Precision (Base)" := UOMMgt.GetQtyRoundingPrecision(Item, Item."Base Unit of Measure");

                Validate(Quantity);
            end;
        }
        field(41; Quantity; Decimal)
        {
            AutoFormatType = 0;
            Caption = 'Quantity';
            ToolTip = 'Specifies the quantity of the item of the physical inventory recording line.';
            DataClassification = SystemMetadata;
            DecimalPlaces = 0 : 5;

            trigger OnValidate()
            var
                ShouldCheckSerialNo: Boolean;
            begin
                ShouldCheckSerialNo := Quantity > 1;
                OnQuatityOnValidateOnAfterCalcShouldCheckSerialNo(Rec, ShouldCheckSerialNo);
                if ShouldCheckSerialNo then
                    if "Serial No." <> '' then
                        Error(QuantityCannotBeErr);
                GetPhysInvtRecordHeader();

                Quantity := UOMMgt.RoundAndValidateQty(Quantity, "Qty. Rounding Precision", FieldCaption(Quantity));

                "Quantity (Base)" := UOMMgt.CalcBaseQty(
                    "Item No.", "Variant Code", "Unit of Measure Code", Quantity,
                    "Qty. per Unit of Measure", "Qty. Rounding Precision (Base)",
                    FieldCaption("Qty. Rounding Precision"), FieldCaption(Quantity), FieldCaption("Quantity (Base)"));

                CheckSerialNo();
                Recorded := true;
                "Date Recorded" := PhysInvtRecordHeader."Date Recorded";
                "Time Recorded" := PhysInvtRecordHeader."Time Recorded";
                "Person Recorded" := PhysInvtRecordHeader."Person Recorded";
            end;
        }
        field(42; "Quantity (Base)"; Decimal)
        {
            AutoFormatType = 0;
            Caption = 'Quantity (Base)';
            DataClassification = SystemMetadata;
            DecimalPlaces = 0 : 5;

            trigger OnValidate()
            begin
                TestField("Qty. per Unit of Measure", 1);
                Validate(Quantity, "Quantity (Base)");
            end;
        }
        field(43; "Qty. per Unit of Measure"; Decimal)
        {
            AutoFormatType = 0;
            Caption = 'Qty. per Unit of Measure';
            DataClassification = SystemMetadata;
            DecimalPlaces = 0 : 5;
            Editable = false;
            InitValue = 1;
        }
        field(45; Recorded; Boolean)
        {
            Caption = 'Recorded';
            ToolTip = 'Specifies if a value was entered in Quantity of the physical inventory recording line.';
            DataClassification = SystemMetadata;
        }
        field(53; "Use Item Tracking"; Boolean)
        {
            Caption = 'Use Item Tracking';
            ToolTip = 'Specifies if it is necessary to record the item using serial, lot or package numbers.';
            DataClassification = SystemMetadata;
            Editable = false;
        }
        field(99; "Shelf No."; Code[10])
        {
            Caption = 'Shelf No.';
            DataClassification = SystemMetadata;
        }
        field(100; "Date Recorded"; Date)
        {
            Caption = 'Date Recorded';
            ToolTip = 'Specifies the date when the physical inventory was taken.';
            DataClassification = SystemMetadata;
        }
        field(101; "Time Recorded"; Time)
        {
            Caption = 'Time Recorded';
            ToolTip = 'Specifies the time when the physical inventory was taken.';
            DataClassification = SystemMetadata;
        }
        field(102; "Person Recorded"; Code[20])
        {
            Caption = 'Person Recorded';
            ToolTip = 'Specifies the code of the person who performed the physical inventory.';
            DataClassification = SystemMetadata;
            TableRelation = Employee;
            ValidateTableRelation = false;
        }
        field(103; "Recorded by User ID"; Code[50])
        {
            Caption = 'Created by User';
            DataClassification = EndUserIdentifiableInformation;
            TableRelation = User."User Name";
        }
        field(130; "Serial No."; Code[50])
        {
            Caption = 'Serial No.';
            ToolTip = 'Specifies the serial number of the entered item.';
            DataClassification = SystemMetadata;

            trigger OnLookup()
            begin
                ShowUsedTrackLines();
            end;

            trigger OnValidate()
            var
                IsHandled: Boolean;
            begin
                CheckSerialNo();

                IsHandled := false;
                OnValidateSerialNoOnAfterCheckSerialNo(Rec, IsHandled);
                if not IsHandled then
                    if "Serial No." <> '' then
                        Validate(Quantity, 1);
            end;
        }
        field(131; "Lot No."; Code[50])
        {
            Caption = 'Lot No.';
            ToolTip = 'Specifies the lot number of the entered item.';
            DataClassification = SystemMetadata;

            trigger OnLookup()
            begin
                ShowUsedTrackLines();
            end;
        }
        field(132; "Package No."; Code[50])
        {
            Caption = 'Package No.';
            ToolTip = 'Specifies the package number of the entered item.';
            DataClassification = SystemMetadata;

            trigger OnLookup()
            begin
                ShowUsedTrackLines();
            end;
        }
        field(5725; "Item Reference No."; Code[50])
        {
            AccessByPermission = TableData "Item Reference" = R;
            DataClassification = SystemMetadata;
            Caption = 'Item Reference No.';
            ToolTip = 'Specifies a reference to the item number as defined by the item''s barcode.';

            trigger OnLookup()
            begin
                ItemReferenceManagement.PhysicalInventoryRecordReferenceNoLookup(Rec);
            end;

            trigger OnValidate()
            var
                ItemReference: Record "Item Reference";
            begin
                ItemReferenceManagement.ValidatePhysicalInventoryRecordReferenceNo(Rec, ItemReference, true, CurrFieldNo);
            end;
        }
        field(5726; "Item Reference Unit of Measure"; Code[10])
        {
            AccessByPermission = TableData "Item Reference" = R;
            Caption = 'Reference Unit of Measure';
            DataClassification = SystemMetadata;
            TableRelation = "Item Unit of Measure".Code where("Item No." = field("Item No."));
        }
        field(5727; "Item Reference Type"; Enum "Item Reference Type")
        {
            Caption = 'Item Reference Type';
            DataClassification = SystemMetadata;
        }
        field(5728; "Item Reference Type No."; Code[30])
        {
            Caption = 'Item Reference Type No.';
            DataClassification = SystemMetadata;
        }
    }

    keys
    {
        key(Key1; "Order No.", "Recording No.", "Line No.")
        {
            Clustered = true;
        }
        key(Key2; "Order No.", "Order Line No.")
        {
            SumIndexFields = "Quantity (Base)";
        }
        key(Key3; "Order No.", "Item No.", "Variant Code", "Location Code", "Bin Code")
        {
        }
        key(Key4; "Order No.", "Recording No.", "Location Code", "Bin Code")
        {
        }
        key(Key5; "Order No.", "Recording No.", "Shelf No.")
        {
        }
    }

    fieldgroups
    {
    }

    trigger OnDelete()
    begin
        TestStatusOpen();
    end;

    trigger OnInsert()
    begin
        TestStatusOpen();

        "Recorded by User ID" := CopyStr(UserId(), 1, 50);
    end;

    trigger OnModify()
    begin
        TestStatusOpen();
    end;

    trigger OnRename()
    begin
        Error(CannotRenameErr, TableCaption);
    end;

    var
        Item: Record Item;
        ItemVariant: Record "Item Variant";
        UnitOfMeasure: Record "Unit of Measure";
        Location: Record Location;
        UOMMgt: Codeunit "Unit of Measure Management";
        PhysInvtTrackingMgt: Codeunit "Phys. Invt. Tracking Mgt.";
        ItemReferenceManagement: Codeunit "Item Reference Management";
        CannotRenameErr: Label 'You cannot rename a %1.', Comment = '%1 = Table caption';
        SerialNoAlreadyExistErr: Label 'Serial No. %1 for item %2 already exists.', Comment = '%1 = serial no. %2 = item no.';
        QuantityCannotBeErr: Label 'Quantity cannot be larger than 1 when Serial No. is assigned.';

    protected var
        PhysInvtRecordHeader: Record "Phys. Invt. Record Header";

    procedure GetPhysInvtRecordHeader()
    begin
        TestField("Order No.");
        TestField("Recording No.");

        if ("Order No." <> PhysInvtRecordHeader."Order No.") or
           ("Recording No." <> PhysInvtRecordHeader."Recording No.")
        then
            PhysInvtRecordHeader.Get("Order No.", "Recording No.");
    end;

    local procedure GetItem()
    begin
        TestField("Item No.");
        if "Item No." <> Item."No." then
            Item.Get("Item No.");
    end;

    local procedure TestStatusOpen()
    begin
        GetPhysInvtRecordHeader();
        PhysInvtRecordHeader.TestField(Status, PhysInvtRecordHeader.Status::Open);
    end;

    procedure EmptyLine(): Boolean
    begin
        exit(
          ("Item No." = '') and
          ("Variant Code" = '') and
          ("Location Code" = '') and
          ("Bin Code" = ''));
    end;

    procedure ShowUsedTrackLines()
    var
        PhysInvtOrderHeader: Record "Phys. Invt. Order Header";
        ItemLedgEntry: Record "Item Ledger Entry";
        ItemTrackingSetup: Record "Item Tracking Setup";
        WhseEntry: Record "Warehouse Entry";
        TempInvtOrderTracking: Record "Invt. Order Tracking" temporary;
        InvtOrderTrackingLines: Page "Invt. Order Tracking Lines";
        IsHandled: Boolean;
    begin
        IsHandled := false;
        OnBeforeShowUsedTrackLines(Rec, CurrFieldNo, IsHandled);
        if IsHandled then
            exit;

        GetItem();

        TempInvtOrderTracking.Reset();
        TempInvtOrderTracking.DeleteAll();
        PhysInvtOrderHeader.Get("Order No.");

        if PhysInvtTrackingMgt.LocationIsBinMandatory("Location Code") and
           PhysInvtTrackingMgt.GetTrackingNosFromWhse(Item)
        then begin
            WhseEntry.Reset();
            WhseEntry.SetCurrentKey("Location Code", "Bin Code", "Item No.", "Variant Code");
            WhseEntry.SetRange("Location Code", "Location Code");
            WhseEntry.SetRange("Bin Code", "Bin Code");
            WhseEntry.SetRange("Item No.", "Item No.");
            WhseEntry.SetRange("Variant Code", "Variant Code");
            WhseEntry.SetRange("Registering Date", 0D, PhysInvtOrderHeader."Posting Date");
            OnShowUsedTrackLinesSetWhseEntryFilters(WhseEntry, Rec);
            if WhseEntry.Find('-') then
                repeat
                    OnBeforeInsertTrackingBufferLocationIsBinMandatory(WhseEntry, Rec);
                    ItemTrackingSetup.CopyTrackingFromWhseEntry(WhseEntry);
                    InsertTrackingBuffer(TempInvtOrderTracking, ItemTrackingSetup, WhseEntry."Expiration Date", WhseEntry."Qty. (Base)");
                    OnShowUsedTrackLinesOnAfterInsertFromWhseEntry2(TempInvtOrderTracking, WhseEntry);
                until WhseEntry.Next() = 0;
        end else begin
            ItemLedgEntry.SetItemVariantLocationFilters(
              "Item No.", "Variant Code", "Location Code", PhysInvtOrderHeader."Posting Date");
            OnShowUsedTrackLinesSetItemLedgerEntryFilters2(ItemLedgEntry, Rec);
            if ItemLedgEntry.Find('-') then
                repeat
                    ItemTrackingSetup.CopyTrackingFromItemLedgerEntry(ItemLedgEntry);
                    InsertTrackingBuffer(TempInvtOrderTracking, ItemTrackingSetup, ItemLedgEntry."Expiration Date", ItemLedgEntry.Quantity);
                    OnShowUsedTrackLinesOnAfterInsertFromItemLedgEntry2(TempInvtOrderTracking, ItemLedgEntry);
                until ItemLedgEntry.Next() = 0;
        end;

        IsHandled := false;
        OnBeforeRunPhysInvtTrackingLinesOnShowUsedTrackLines(Rec, TempInvtOrderTracking, IsHandled);
        if not IsHandled then
            if TempInvtOrderTracking.FindFirst() then begin
                Clear(InvtOrderTrackingLines);
                InvtOrderTrackingLines.SetRecord(TempInvtOrderTracking);
                InvtOrderTrackingLines.SetSources(TempInvtOrderTracking);
                InvtOrderTrackingLines.LookupMode(true);
                if InvtOrderTrackingLines.RunModal() = ACTION::LookupOK then begin
                    InvtOrderTrackingLines.GetRecord(TempInvtOrderTracking);
                    Validate("Serial No.", TempInvtOrderTracking."Serial No.");
                    Validate("Lot No.", TempInvtOrderTracking."Lot No.");
                    Validate("Package No.", TempInvtOrderTracking."Package No.");
                    OnShowUsedTrackLinesOnAfterLookupOK2(Rec, TempInvtOrderTracking);
                end;
            end;
    end;

    procedure CheckSerialNo()
    var
        PhysInvtRecordLine: Record "Phys. Invt. Record Line";
        IsHandled: Boolean;
    begin
        IsHandled := false;
        OnBeforeCheckSerialNo(Rec, IsHandled);
        if not IsHandled then begin
            if "Serial No." = '' then
                exit;

            PhysInvtRecordLine.SetLoadFields("Quantity (Base)");
            PhysInvtRecordLine.SetRange("Order No.", "Order No.");
            PhysInvtRecordLine.SetRange("Item No.", "Item No.");
            PhysInvtRecordLine.SetRange("Serial No.", "Serial No.");
            if PhysInvtRecordLine.FindSet() then
                repeat
                    if (PhysInvtRecordLine."Line No." <> "Line No.") or (PhysInvtRecordLine."Recording No." <> "Recording No.") then
                        if Abs(PhysInvtRecordLine."Quantity (Base)") + Abs("Quantity (Base)") > 1 then
                            Error(SerialNoAlreadyExistErr, "Serial No.", "Item No.");
                until PhysInvtRecordLine.Next() = 0;
        end;
    end;

    procedure InsertTrackingBuffer(var TempInvtOrderTracking: Record "Invt. Order Tracking" temporary; ItemTrackingSetup: Record "Item Tracking Setup"; ExpirationDate: Date; QtyBase: Decimal)
    begin
        if ItemTrackingSetup.TrackingExists() then begin
            if not TempInvtOrderTracking.Get(ItemTrackingSetup."Serial No.", ItemTrackingSetup."Lot No.", ItemTrackingSetup."Package No.") then begin
                TempInvtOrderTracking.Init();
                TempInvtOrderTracking."Serial No." := ItemTrackingSetup."Serial No.";
                TempInvtOrderTracking."Lot No." := ItemTrackingSetup."Lot No.";
                TempInvtOrderTracking."Package No." := ItemTrackingSetup."Package No.";
                TempInvtOrderTracking."Expiration Date" := ExpirationDate;
                TempInvtOrderTracking.Insert();
            end;
            TempInvtOrderTracking."Qty. Expected (Base)" += QtyBase;
            TempInvtOrderTracking.Modify();
        end;
    end;

    local procedure GetShelfNo()
    var
        SKU: Record "Stockkeeping Unit";
    begin
        GetItem();
        "Shelf No." := Item."Shelf No.";
        if SKU.Get("Location Code", "Item No.", "Variant Code") then
            "Shelf No." := SKU."Shelf No.";
    end;

    procedure GetDateForCalculations() CalculationDate: Date;
    begin
        CalculationDate := Rec."Date Recorded";
        if CalculationDate = 0D then
            CalculationDate := WorkDate();
    end;

    procedure TrackingExists() IsTrackingExist: Boolean
    begin
        IsTrackingExist := ("Serial No." <> '') or ("Lot No." <> '') or ("Package No." <> '');
    end;

    [IntegrationEvent(false, false)]
    local procedure OnBeforeInsertTrackingBufferLocationIsBinMandatory(var WarehouseEntry: Record "Warehouse Entry"; PhysInvtRecordLine: Record "Phys. Invt. Record Line")
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnBeforeValidateBinCode(var PhysInvtRecordLine: Record "Phys. Invt. Record Line"; var IsHandled: Boolean)
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnShowUsedTrackLinesOnAfterInsertFromItemLedgEntry2(var TempInvtOrderTracking: Record "Invt. Order Tracking" temporary; ItemLedgerEntry: Record "Item Ledger Entry")
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnShowUsedTrackLinesOnAfterInsertFromWhseEntry2(var TempInvtOrderTracking: Record "Invt. Order Tracking" temporary; WarehouseEntry: Record "Warehouse Entry")
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnShowUsedTrackLinesOnAfterLookupOK2(var PhysInvtRecordLine: Record "Phys. Invt. Record Line"; var TempInvtOrderTracking: Record "Invt. Order Tracking" temporary)
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnShowUsedTrackLinesSetItemLedgerEntryFilters2(var ItemLedgerEntry: Record "Item Ledger Entry"; PhysInvtRecordLine: Record "Phys. Invt. Record Line")
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnShowUsedTrackLinesSetWhseEntryFilters(var WarehouseEntry: Record "Warehouse Entry"; PhysInvtRecordLine: Record "Phys. Invt. Record Line")
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnQuatityOnValidateOnAfterCalcShouldCheckSerialNo(var PhysInvtRecordLine: Record "Phys. Invt. Record Line"; var ShouldCheckSerialNo: Boolean)
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnValidateItemNoOnAfterInitFromTempRecord(var PhysInvtRecordLine: Record "Phys. Invt. Record Line"; TempPhysInvtRecordLine: Record "Phys. Invt. Record Line" temporary)
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnValidateItemNoOnBeforeTestfieldBlocked(var PhysInvtRecordLine: Record "Phys. Invt. Record Line"; var Item: Record Item; var IsHandled: Boolean)
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnValidateVariantCodeOnBeforeTestFieldBlocked(var PhysInvtRecordLine: Record "Phys. Invt. Record Line"; var ItemVariant: Record "Item Variant"; var IsHandled: Boolean)
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnBeforeShowUsedTrackLines(var PhysInvtRecordLine: Record "Phys. Invt. Record Line"; CurrentFieldNo: Integer; var IsHandled: Boolean)
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnAfterValidateItemNo(var PhysInvtRecordLine: Record "Phys. Invt. Record Line"; PhysInvtRecordHeader: Record "Phys. Invt. Record Header"; Item: Record Item)
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnBeforeCheckSerialNo(var PhysInvtRecordLine: Record "Phys. Invt. Record Line"; var IsHandled: Boolean)
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnValidateSerialNoOnAfterCheckSerialNo(var PhysInvtRecordLine: Record "Phys. Invt. Record Line"; var IsHandled: Boolean)
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnBeforeRunPhysInvtTrackingLinesOnShowUsedTrackLines(var PhysInvtRecordLine: Record "Phys. Invt. Record Line"; var TempInvtOrderTracking: Record "Invt. Order Tracking" temporary; var IsHandled: Boolean)
    begin
    end;
}