Table 5875 Phys. Invt. Order Header, source in 29

Source29

src/Layers/W1/BaseApp/Inventory/Counting/Document/PhysInvtOrderHeader.Table.al651 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.Document;

using Microsoft.Finance.Dimension;
using Microsoft.Finance.GeneralLedger.Setup;
using Microsoft.Foundation.AuditCodes;
using Microsoft.Foundation.NoSeries;
using Microsoft.HumanResources.Employee;
using Microsoft.Inventory.Counting.Comment;
using Microsoft.Inventory.Counting.History;
using Microsoft.Inventory.Counting.Recording;
using Microsoft.Inventory.Location;
using Microsoft.Inventory.Setup;
using Microsoft.Sales.History;
using Microsoft.Warehouse.Structure;

table 5875 "Phys. Invt. Order Header"
{
    Caption = 'Phys. Invt. Order Header';
    DataCaptionFields = "No.", Description;
    DrillDownPageID = "Physical Inventory Orders";
    LookupPageID = "Physical Inventory Orders";
    DataClassification = CustomerContent;

    fields
    {
        field(1; "No."; Code[20])
        {
            Caption = 'No.';
            ToolTip = 'Specifies a number for the physical inventory order.';

            trigger OnValidate()
            begin
                if "No." <> xRec."No." then begin
                    InvtSetup.Get();
                    NoSeries.TestManual(GetNoSeriesCode());
                    "No. Series" := '';
                end;
            end;
        }
        field(10; Description; Text[100])
        {
            Caption = 'Description';
            ToolTip = 'Specifies a short description of the physical inventory order.';
        }
        field(11; Status; Enum "Phys. Invt. Order Status")
        {
            Caption = 'Status';
            ToolTip = 'Specifies if the physical inventory order is open or finished.';
            Editable = false;
        }
        field(20; "Order Date"; Date)
        {
            Caption = 'Order Date';
            ToolTip = 'Specifies the order date for the physical inventory order.';
        }
        field(21; "Posting Date"; Date)
        {
            Caption = 'Posting Date';
            ToolTip = 'Specifies the posting date of the physical inventory order.';

            trigger OnValidate()
            begin
                if "Posting Date" <> xRec."Posting Date" then begin
                    PhysInvtOrderLine.Reset();
                    PhysInvtOrderLine.SetRange("Document No.", "No.");
                    PhysInvtOrderLine.SetFilter("Item No.", '<>%1', '');
                    if PhysInvtOrderLine.Find('-') then begin
                        TestField("Posting Date");
                        if not Confirm(
                             StrSubstNo(
                               ConfirmChangeQst,
                               PhysInvtOrderLine.FieldCaption("Qty. Expected (Base)"),
                               FieldCaption("Posting Date")),
                             false)
                        then begin
                            "Posting Date" := xRec."Posting Date";
                            exit;
                        end;
                        PhysInvtOrderLine.LockTable();
                        PhysInvtOrderLine.Reset();
                        PhysInvtOrderLine.SetRange("Document No.", "No.");
                        if PhysInvtOrderLine.Find('-') then
                            repeat
                                if PhysInvtOrderLine."Item No." <> '' then begin
                                    PhysInvtOrderLine.ResetQtyExpected();
                                    PhysInvtOrderLine.Modify();
                                end;
                            until PhysInvtOrderLine.Next() = 0;
                        Modify();
                    end;
                end;
            end;
        }
        field(30; Comment; Boolean)
        {
            CalcFormula = exist("Phys. Invt. Comment Line" where("Document Type" = const(Order),
                                                                  "Order No." = field("No."),
                                                                  "Recording No." = const(0)));
            Caption = 'Comment';
            Editable = false;
            FieldClass = FlowField;
        }
        field(31; "Person Responsible"; Code[20])
        {
            Caption = 'Person Responsible';
            ToolTip = 'Specifies the code of the person who is responsible for performing this physical inventory order.';
            TableRelation = Employee;
            ValidateTableRelation = false;
        }
        field(40; "Reason Code"; Code[10])
        {
            Caption = 'Reason Code';
            TableRelation = "Reason Code";
        }
        field(41; "Gen. Bus. Posting Group"; Code[20])
        {
            Caption = 'Gen. Bus. Posting Group';
            TableRelation = "Gen. Business Posting Group";
        }
        field(50; "Shortcut Dimension 1 Code"; Code[20])
        {
            CaptionClass = '1,2,1';
            Caption = 'Shortcut Dimension 1 Code';
            ToolTip = 'Specifies the code for Shortcut Dimension 1, whose dimension values you can then enter directly on journals and sales or purchase lines.';
            TableRelation = "Dimension Value".Code where("Global Dimension No." = const(1),
                                                          Blocked = const(false));

            trigger OnValidate()
            begin
                Rec.ValidateShortcutDimCode(1, "Shortcut Dimension 1 Code");
            end;
        }
        field(51; "Shortcut Dimension 2 Code"; Code[20])
        {
            CaptionClass = '1,2,2';
            Caption = 'Shortcut Dimension 2 Code';
            ToolTip = 'Specifies the code for Shortcut Dimension 2, which is one of two global dimension codes that you set up in the General Ledger Setup window.';
            TableRelation = "Dimension Value".Code where("Global Dimension No." = const(2),
                                                          Blocked = const(false));

            trigger OnValidate()
            begin
                Rec.ValidateShortcutDimCode(2, "Shortcut Dimension 2 Code");
            end;
        }
        field(60; "Posting No. Series"; Code[20])
        {
            Caption = 'Posting No. Series';
            TableRelation = "No. Series";

            trigger OnLookup()
            begin
                PhysInvtOrderHeader := Rec;
                InvtSetup.Get();
                TestNoSeries();
                if NoSeries.LookupRelatedNoSeries(GetPostingNoSeriesCode(), PhysInvtOrderHeader."Posting No. Series", PhysInvtOrderHeader."Posting No. Series") then
                    PhysInvtOrderHeader.Validate("Posting No. Series");
                Rec := PhysInvtOrderHeader;
            end;

            trigger OnValidate()
            begin
                if "Posting No. Series" <> '' then begin
                    InvtSetup.Get();
                    TestNoSeries();
                    NoSeries.TestAreRelated(GetPostingNoSeriesCode(), "Posting No. Series");
                end;
                TestField("Posting No.", '');
            end;
        }
        field(61; "No. Series"; Code[20])
        {
            Caption = 'No. Series';
            Editable = false;
            TableRelation = "No. Series";
        }
        field(64; "Posting No."; Code[20])
        {
            Caption = 'Posting No.';
        }
        field(65; "Last Posting No."; Code[20])
        {
            Caption = 'Last Posting No.';
            Editable = false;
            TableRelation = "Sales Invoice Header";
        }
        field(71; "No. Finished Recordings"; Integer)
        {
            CalcFormula = count("Phys. Invt. Record Header" where("Order No." = field("No."),
                                                                   Status = const(Finished)));
            Caption = 'No. Finished Recordings';
            ToolTip = 'Specifies the number of entered physical inventory recording documents that have the status set to Finished.';
            Editable = false;
            FieldClass = FlowField;
        }
        field(110; "Location Code"; Code[10])
        {
            Caption = 'Location Code';
            ToolTip = 'Specifies the code of the location where items on this line should be counted.';
            TableRelation = Location;

            trigger OnValidate()
            begin
                CreateDimFromDefaultDim(Rec.FieldNo("Location Code"));
            end;
        }
        field(111; "Bin Code"; Code[20])
        {
            Caption = 'Bin Code';
            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(480; "Dimension Set ID"; Integer)
        {
            Caption = 'Dimension Set ID';
            Editable = false;
            TableRelation = "Dimension Set Entry";

            trigger OnLookup()
            begin
                Rec.ShowDocDim();
            end;

            trigger OnValidate()
            begin
                DimManagement.UpdateGlobalDimFromDimSetID("Dimension Set ID", "Shortcut Dimension 1 Code", "Shortcut Dimension 2 Code");
            end;
        }
    }

    keys
    {
        key(Key1; "No.")
        {
            Clustered = true;
        }
        key(Key2; Status)
        {
        }
    }

    fieldgroups
    {
        fieldgroup(DropDown; "No.", Description)
        {
        }
    }

    trigger OnDelete()
    var
        PhysInvtRecordHeader: Record "Phys. Invt. Record Header";
        PhysInvtCommentLine: Record "Phys. Invt. Comment Line";
    begin
        TestField(Status, Status::Open);

        TestField("No. Finished Recordings", 0);

        PhysInvtOrderLine.Reset();
        PhysInvtOrderLine.SetRange("Document No.", "No.");
        PhysInvtOrderLine.DeleteAll(true);

        PhysInvtCommentLine.Reset();
        PhysInvtCommentLine.SetRange("Document Type", PhysInvtCommentLine."Document Type"::Order);
        PhysInvtCommentLine.SetRange("Order No.", "No.");
        PhysInvtCommentLine.SetRange("Recording No.", 0);
        PhysInvtCommentLine.DeleteAll();

        PhysInvtRecordHeader.Reset();
        PhysInvtRecordHeader.SetRange("Order No.", "No.");
        PhysInvtRecordHeader.DeleteAll(true);
    end;

    trigger OnInsert()
    var
        PstdPhysInvtOrderHdr: Record "Pstd. Phys. Invt. Order Hdr";
    begin
        InvtSetup.Get();
        InitInsert();

        if PstdPhysInvtOrderHdr.Get("No.") then
            Error(AlreadyExistsErr, "No.");

        InitRecord();
    end;

    trigger OnModify()
    begin
        TestField(Status, Status::Open);
    end;

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

    var
        AlreadyExistsErr: Label 'Posted Invt. Count Order %1 already exists.', Comment = '%1 = Order No.';
        CannotRenameErr: Label 'You cannot rename a %1.', Comment = '%1 = table caption';
        ConfirmChangeQst: Label '%1 will be reset in all order lines. Do you want to change %2?', Comment = '%1 = field caption, %2 = Posting Date';
        InvtSetup: Record "Inventory Setup";
        PhysInvtOrderHeader: Record "Phys. Invt. Order Header";
        PhysInvtOrderLine: Record "Phys. Invt. Order Line";
        Location: Record Location;
        NoSeries: Codeunit "No. Series";
        DimManagement: Codeunit DimensionManagement;
        UpdateDimQst: Label 'You may have changed a dimension.\\Do you want to update the lines?';
        MoreThanOneLineErr: Label 'There are more than one order lines in Order %1 for Item No. %2, Variant Code %3, Location Code %4, Bin Code %5.', Comment = '%1 Order No. %2 Item No. %3 Variant Code %4 Location Code %5 Bin Code';
        NoLineErr: Label 'There are no order line in Order %1 for Item No. %2, Variant Code %3, Location Code %4, Bin Code %5.', Comment = '%1 Order No. %2 Item No. %3 Variant Code %4 Location Code %5 Bin Code';

    local procedure InitInsert()
    var
        IsHandled: Boolean;
    begin
        IsHandled := false;
        OnInitInsertOnBeforeInitSeries(xRec, IsHandled);
        if not IsHandled then
            if "No." = '' then begin
                TestNoSeries();
                if NoSeries.AreRelated(GetNoSeriesCode(), xRec."No. Series") then
                    "No. Series" := xRec."No. Series"
                else
                    "No. Series" := GetNoSeriesCode();
                "No." := NoSeries.GetNextNo("No. Series", "Order Date");
            end;

        OnInitInsertOnBeforeInitRecord(xRec);
        InitRecord();
    end;

    procedure InitRecord()
    var
        IsHandled: Boolean;
    begin
        IsHandled := false;
        OnBeforeInitRecord(Rec, xRec, IsHandled);
        if not IsHandled then begin
            if ("No. Series" <> '') and
               (InvtSetup."Phys. Invt. Order Nos." = InvtSetup."Posted Phys. Invt. Order Nos.")
            then
                "Posting No. Series" := "No. Series"
            else
                if NoSeries.IsAutomatic(InvtSetup."Posted Phys. Invt. Order Nos.") then
                    "Posting No. Series" := InvtSetup."Posted Phys. Invt. Order Nos.";

            if "Posting Date" = 0D then
                Validate("Posting Date", WorkDate());
        end;

        OnAfterInitRecord(Rec);
    end;

    procedure AssistEdit(OldPhysInvtOrderHeader: Record "Phys. Invt. Order Header"): Boolean
    begin
        PhysInvtOrderHeader := Rec;
        InvtSetup.Get();
        TestNoSeries();
        if NoSeries.LookupRelatedNoSeries(GetNoSeriesCode(), OldPhysInvtOrderHeader."No. Series", PhysInvtOrderHeader."No. Series") then begin
            PhysInvtOrderHeader."No." := NoSeries.GetNextNo(PhysInvtOrderHeader."No. Series");
            Rec := PhysInvtOrderHeader;
            exit(true);
        end;
    end;

    local procedure TestNoSeries()
    var
        IsHandled: Boolean;
    begin
        IsHandled := false;
        OnBeforeTestNoSeries(Rec, IsHandled);
        if not IsHandled then begin
            InvtSetup.TestField("Phys. Invt. Order Nos.");
            InvtSetup.TestField("Posted Phys. Invt. Order Nos.");
        end;

        OnAfterTestNoSeries(Rec);
    end;

    local procedure GetNoSeriesCode(): Code[20]
    var
        NoSeriesCode: Code[20];
        IsHandled: Boolean;
    begin
        InvtSetup.Get();
        IsHandled := false;
        OnBeforeGetNoSeriesCode(Rec, InvtSetup, NoSeriesCode, IsHandled);
        if IsHandled then
            exit(NoSeriesCode);

        NoSeriesCode := InvtSetup."Phys. Invt. Order Nos.";
        OnAfterGetNoSeriesCode(Rec, NoSeriesCode);
        exit(NoSeriesCode);
    end;

    local procedure GetPostingNoSeriesCode(): Code[10]
    begin
        exit(InvtSetup."Posted Phys. Invt. Order Nos.");
    end;

    procedure ValidateShortcutDimCode(FieldNumber: Integer; var ShortcutDimCode: Code[20])
    var
        OldDimSetID: Integer;
    begin
        OnBeforeValidateShortcutDimCode(Rec, xRec, FieldNumber, ShortcutDimCode);

        OldDimSetID := "Dimension Set ID";
        DimManagement.ValidateShortcutDimValues(FieldNumber, ShortcutDimCode, "Dimension Set ID");
        if "No." <> '' then
            Modify();

        if OldDimSetID <> "Dimension Set ID" then begin
            Modify();
            if PhysInvtOrderLinesExist() then
                UpdateAllLineDim("Dimension Set ID", OldDimSetID);
        end;

        OnAfterValidateShortcutDimCode(Rec, xRec, FieldNumber, ShortcutDimCode);
    end;

    procedure GetSamePhysInvtOrderLine(ItemNo: Code[20]; VariantCode: Code[10]; LocationCode: Code[10]; BinCode: Code[20]; var ErrorText: Text[250]; var PhysInvtOrderLine2: Record "Phys. Invt. Order Line"): Integer
    var
        PhysInvtOrderLineArgs: Record "Phys. Invt. Order Line";
    begin
        PhysInvtOrderLineArgs."Item No." := ItemNo;
        PhysInvtOrderLineArgs."Variant Code" := VariantCode;
        PhysInvtOrderLineArgs."Location Code" := LocationCode;
        PhysInvtOrderLineArgs."Bin Code" := BinCode;
        exit(GetSamePhysInvtOrderLine(PhysInvtOrderLineArgs, ErrorText, PhysInvtOrderLine2));
    end;

    procedure GetSamePhysInvtOrderLine(PhysInvtOrderLineArgs: Record "Phys. Invt. Order Line"; var ErrorText: Text[250]; var PhysInvtOrderLine2: Record "Phys. Invt. Order Line"): Integer
    var
        NoOfOrderLines: Integer;
    begin
        Clear(PhysInvtOrderLine2);

        PhysInvtOrderLine2.Reset();
        PhysInvtOrderLine2.SetCurrentKey(
          "Document No.", "Item No.", "Variant Code", "Location Code", "Bin Code");
        PhysInvtOrderLine2.SetRange("Document No.", "No.");
        PhysInvtOrderLine2.SetRange("Item No.", PhysInvtOrderLineArgs."Item No.");
        PhysInvtOrderLine2.SetRange("Variant Code", PhysInvtOrderLineArgs."Variant Code");
        PhysInvtOrderLine2.SetRange("Location Code", PhysInvtOrderLineArgs."Location Code");
        PhysInvtOrderLine2.SetRange("Bin Code", PhysInvtOrderLineArgs."Bin Code");
        OnGetSamePhysInvtOrderLineOnAfterSetFilters(PhysInvtOrderLine2, Rec, PhysInvtOrderLineArgs);
        NoOfOrderLines := PhysInvtOrderLine2.Count();

        case NoOfOrderLines of
            0:
                ErrorText :=
                    StrSubstNo(
                        NoLineErr, "No.", PhysInvtOrderLineArgs."Item No.", PhysInvtOrderLineArgs."Variant Code",
                        PhysInvtOrderLineArgs."Location Code", PhysInvtOrderLineArgs."Bin Code");
            1:
                ErrorText := '';
            else
                ErrorText :=
                    StrSubstNo(
                        MoreThanOneLineErr, "No.", PhysInvtOrderLineArgs."Item No.", PhysInvtOrderLineArgs."Variant Code",
                            PhysInvtOrderLineArgs."Location Code", PhysInvtOrderLineArgs."Bin Code");
        end;
        OnAfterSetErrorText(NoOfOrderLines, "No.", PhysInvtOrderLineArgs, ErrorText);

        if NoOfOrderLines > 0 then
            PhysInvtOrderLine2.Find('-');

        exit(NoOfOrderLines);
    end;

    procedure CreateDimFromDefaultDim(FieldNo: Integer)
    var
        DefaultDimSource: List of [Dictionary of [Integer, Code[20]]];
    begin
        InitDefaultDimensionSources(DefaultDimSource, FieldNo);
        CreateDim(DefaultDimSource);
    end;

    local procedure InitDefaultDimensionSources(var DefaultDimSource: List of [Dictionary of [Integer, Code[20]]]; FieldNo: Integer)
    begin
        DimManagement.AddDimSource(DefaultDimSource, Database::Location, Rec."Location Code", FieldNo = Rec.FieldNo("Location Code"));
    end;

    procedure CreateDim(DefaultDimSource: List of [Dictionary of [Integer, Code[20]]])
    var
        SourceCodeSetup: Record "Source Code Setup";
        OldDimSetID: Integer;
    begin
        SourceCodeSetup.Get();
        "Shortcut Dimension 1 Code" := '';
        "Shortcut Dimension 2 Code" := '';
        OldDimSetID := "Dimension Set ID";
        "Dimension Set ID" :=
          DimManagement.GetRecDefaultDimID(
            Rec, CurrFieldNo, DefaultDimSource, SourceCodeSetup."Phys. Invt. Orders", "Shortcut Dimension 1 Code", "Shortcut Dimension 2 Code", 0, 0);

        if (OldDimSetID <> "Dimension Set ID") and (OldDimSetID <> 0) then
            DimManagement.UpdateGlobalDimFromDimSetID("Dimension Set ID", "Shortcut Dimension 1 Code", "Shortcut Dimension 2 Code");

        if OldDimSetID <> "Dimension Set ID" then begin
            Modify();
            if PhysInvtOrderLinesExist() then
                UpdateAllLineDim("Dimension Set ID", OldDimSetID);
        end;
    end;

    procedure ShowDocDim()
    var
        OldDimSetID: Integer;
    begin
        OldDimSetID := "Dimension Set ID";
        "Dimension Set ID" :=
          DimManagement.EditDimensionSet(
            Rec, "Dimension Set ID", StrSubstNo('%1 %2', TableCaption(), "No."),
            "Shortcut Dimension 1 Code", "Shortcut Dimension 2 Code");
        if OldDimSetID <> "Dimension Set ID" then begin
            OnShowDocDimOnBeforeModify(Rec, xRec);
            Modify();
            if PhysInvtOrderLinesExist() then
                UpdateAllLineDim("Dimension Set ID", OldDimSetID);
        end;
    end;

    procedure PhysInvtOrderLinesExist(): Boolean
    begin
        PhysInvtOrderLine.Reset();
        PhysInvtOrderLine.SetRange("Document No.", "No.");
        exit(PhysInvtOrderLine.FindFirst());
    end;

    procedure UpdateAllLineDim(NewParentDimSetID: Integer; OldParentDimSetID: Integer)
    var
        NewDimSetID: Integer;
    begin
        if NewParentDimSetID = OldParentDimSetID then
            exit;
        if not Confirm(UpdateDimQst) then
            exit;

        PhysInvtOrderLine.Reset();
        PhysInvtOrderLine.SetRange("Document No.", "No.");
        PhysInvtOrderLine.LockTable();
        if PhysInvtOrderLine.FindSet() then
            repeat
                NewDimSetID := DimManagement.GetDeltaDimSetID(PhysInvtOrderLine."Dimension Set ID", NewParentDimSetID, OldParentDimSetID);
                if PhysInvtOrderLine."Dimension Set ID" <> NewDimSetID then begin
                    PhysInvtOrderLine."Dimension Set ID" := NewDimSetID;
                    DimManagement.UpdateGlobalDimFromDimSetID(
                      PhysInvtOrderLine."Dimension Set ID", PhysInvtOrderLine."Shortcut Dimension 1 Code",
                      PhysInvtOrderLine."Shortcut Dimension 2 Code");
                    OnUpdateAllLineDimOnBeforePhysInvtOrderLineModify(PhysInvtOrderLine, Rec, xRec);
                    PhysInvtOrderLine.Modify();
                end;
            until PhysInvtOrderLine.Next() = 0;
    end;

    [IntegrationEvent(false, false)]
    local procedure OnAfterGetNoSeriesCode(var PhysInvtOrderHeader: Record "Phys. Invt. Order Header"; var NoSeriesCode: Code[20])
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnAfterInitRecord(var PhysInvtOrderHeader: Record "Phys. Invt. Order Header")
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnAfterTestNoSeries(var PhysInvtOrderHeader: Record "Phys. Invt. Order Header")
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnBeforeGetNoSeriesCode(var PhysInvtOrderHeader: Record "Phys. Invt. Order Header"; InventorySetup: Record "Inventory Setup"; var NoSeriesCode: Code[20]; var IsHandled: Boolean)
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnBeforeInitRecord(var PhysInvtOrderHeader: Record "Phys. Invt. Order Header"; xPhysInvtOrderHeader: Record "Phys. Invt. Order Header"; var IsHandled: Boolean)
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnBeforeTestNoSeries(var PhysInvtOrderHeader: Record "Phys. Invt. Order Header"; var IsHandled: Boolean)
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnAfterValidateShortcutDimCode(var PhysInvtOrderHeader: Record "Phys. Invt. Order Header"; var xPhysInvtOrderHeader: Record "Phys. Invt. Order Header"; FieldNumber: Integer; var ShortcutDimCode: Code[20])
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnBeforeValidateShortcutDimCode(var PhysInvtOrderHeader: Record "Phys. Invt. Order Header"; var xPhysInvtOrderHeader: Record "Phys. Invt. Order Header"; FieldNumber: Integer; var ShortcutDimCode: Code[20])
    begin
    end;

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

    [IntegrationEvent(false, false)]
    local procedure OnGetSamePhysInvtOrderLineOnAfterSetFilters(var PhysInvtOrderLine: Record "Phys. Invt. Order Line"; PhysInvtOrderHeader: Record "Phys. Invt. Order Header"; PhysInvtOrderLineArgs: Record "Phys. Invt. Order Line")
    begin
    end;

    [IntegrationEvent(true, false)]
    local procedure OnInitInsertOnBeforeInitSeries(var xPhysInvtOrderHeader: Record "Phys. Invt. Order Header"; var IsHandled: Boolean)
    begin
    end;

    [IntegrationEvent(true, false)]
    local procedure OnInitInsertOnBeforeInitRecord(var xPhysInvtOrderHeader: Record "Phys. Invt. Order Header")
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnAfterSetErrorText(NoOfOrderLines: Integer; OrderNo: Code[20]; PhysInvtOrderLineArgs: Record "Phys. Invt. Order Line"; var ErrorText: Text[250])
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnShowDocDimOnBeforeModify(var PhysInvtOrderHeader: Record "Phys. Invt. Order Header"; xPhysInvtOrderHeader: Record "Phys. Invt. Order Header")
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnUpdateAllLineDimOnBeforePhysInvtOrderLineModify(var PhysInvtOrderLine: Record "Phys. Invt. Order Line"; var PhysInvtOrderHeader: Record "Phys. Invt. Order Header"; xPhysInvtOrderHeader: Record "Phys. Invt. Order Header")
    begin
    end;
}