Table 99000849 Action Message Entry

App
Base Application
Namespace
Microsoft.Inventory.Tracking
Versions
17-28

Fields, 17Keys, 3Procedures, 15Events, 5

Versions171819202122232425262728

Source29

Source in 29

src/Layers/W1/BaseApp/Inventory/Tracking/ActionMessageEntry.Table.al320 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.Tracking;

using Microsoft.Inventory.Item;
using Microsoft.Inventory.Location;
using Microsoft.Utilities;
using Microsoft.Warehouse.Structure;

table 99000849 "Action Message Entry"
{
    Caption = 'Action Message Entry';
    DataClassification = CustomerContent;

    fields
    {
        field(1; "Entry No."; Integer)
        {
            Caption = 'Entry No.';
        }
        field(2; Type; Enum "Action Message Type")
        {
            Caption = 'Type';
        }
        field(3; "Reservation Entry"; Integer)
        {
            Caption = 'Reservation Entry';
            TableRelation = "Reservation Entry"."Entry No.";
        }
        field(4; Quantity; Decimal)
        {
            AutoFormatType = 0;
            Caption = 'Quantity';
            DecimalPlaces = 0 : 5;
        }
        field(5; "New Date"; Date)
        {
            Caption = 'New Date';
        }
        field(6; Calculation; Option)
        {
            Caption = 'Calculation';
            OptionCaption = 'Sum,None';
            OptionMembers = "Sum","None";
        }
        field(7; "Suppressed Action Msg."; Boolean)
        {
            Caption = 'Suppressed Action Msg.';
        }
        field(10; "Source Type"; Integer)
        {
            Caption = 'Source Type';
        }
        field(11; "Source Subtype"; Option)
        {
            Caption = 'Source Subtype';
            OptionCaption = '0,1,2,3,4,5,6,7,8,9,10';
            OptionMembers = "0","1","2","3","4","5","6","7","8","9","10";
        }
        field(12; "Source ID"; Code[20])
        {
            Caption = 'Source ID';
        }
        field(13; "Source Batch Name"; Code[10])
        {
            Caption = 'Source Batch Name';
        }
        field(14; "Source Prod. Order Line"; Integer)
        {
            Caption = 'Source Prod. Order Line';
        }
        field(15; "Source Ref. No."; Integer)
        {
            Caption = 'Source Ref. No.';
        }
        field(16; "Location Code"; Code[10])
        {
            Caption = 'Location Code';
            TableRelation = Location;
        }
        field(17; "Bin Code"; Code[20])
        {
            Caption = 'Bin Code';
            TableRelation = Bin.Code where("Location Code" = field("Location Code"));
        }
        field(18; "Variant Code"; Code[10])
        {
            Caption = 'Variant Code';
            TableRelation = "Item Variant".Code where("Item No." = field("Item No."));
        }
        field(19; "Item No."; Code[20])
        {
            Caption = 'Item No.';
            TableRelation = Item;
        }
    }

    keys
    {
        key(Key1; "Entry No.")
        {
            Clustered = true;
        }
        key(Key2; "Reservation Entry", Calculation)
        {
            SumIndexFields = Quantity;
        }
        key(Key3; "Source Type", "Source Subtype", "Source ID", "Source Batch Name", "Source Prod. Order Line", "Source Ref. No.", "Item No.", "Location Code", "Bin Code", "Variant Code")
        {
            SumIndexFields = Quantity;
        }
    }

    fieldgroups
    {
    }

    var
        ComponentBinding: Boolean;
        FirstDate: Date;
        FirstTime: Time;

    procedure GetLastEntryNo(): Integer;
    var
        FindRecordManagement: Codeunit "Find Record Management";
    begin
        exit(FindRecordManagement.GetLastEntryIntFieldValue(Rec, FieldNo("Entry No.")))
    end;

    procedure SumUp(var ActionMessageEntry: Record "Action Message Entry")
    var
        ActionMessageEntry2: Record "Action Message Entry";
        TypeArray: array[5] of Boolean;
    begin
        ActionMessageEntry2 := ActionMessageEntry;

        ActionMessageEntry2.SetSourceFilterFromActionEntry(Rec);
        ActionMessageEntry2.SetRange("Location Code", ActionMessageEntry2."Location Code");
        ActionMessageEntry2.SetRange("Bin Code", ActionMessageEntry2."Bin Code");
        ActionMessageEntry2.SetRange("Variant Code", ActionMessageEntry2."Variant Code");
        ActionMessageEntry2.SetRange("Item No.", ActionMessageEntry2."Item No.");
        ActionMessageEntry."New Date" := 0D;
        ActionMessageEntry.Quantity := 0;
        OnAfterAssignMessageEntry(ActionMessageEntry, ActionMessageEntry2);
        ActionMessageEntry.Type := ActionMessageEntry.Type::" ";
        if ActionMessageEntry2.FindSet() then
            repeat
                if ActionMessageEntry2.Quantity <> 0 then begin
                    ActionMessageEntry.Quantity += ActionMessageEntry2.Quantity;
                    TypeArray[2] := true;
                    OnAfterAssignQuantity(ActionMessageEntry, ActionMessageEntry2);
                end;
                if ActionMessageEntry2."New Date" <> 0D then begin
                    ActionMessageEntry."New Date" := ActionMessageEntry2."New Date";
                    TypeArray[3] := true;
                end;
            until ActionMessageEntry2.Next() = 0;

        if TypeArray[2] then
            ActionMessageEntry.Type := ActionMessageEntry.Type::"Change Qty.";

        if TypeArray[3] then
            ActionMessageEntry.Type := ActionMessageEntry.Type::Reschedule;

        if TypeArray[2] and TypeArray[3] then
            ActionMessageEntry.Type := ActionMessageEntry.Type::"Resched. & Chg. Qty.";

        if TypeArray[1] then
            ActionMessageEntry.Type := ActionMessageEntry.Type::New;

        if TypeArray[5] then
            ActionMessageEntry.Type := ActionMessageEntry.Type::Cancel;

        OnAfterAssignEntryType(ActionMessageEntry, ActionMessageEntry2);
        ActionMessageEntry2."New Date" := ActionMessageEntry."New Date";
        ActionMessageEntry2.Quantity := ActionMessageEntry.Quantity;
        ActionMessageEntry2.Type := ActionMessageEntry.Type;
        ActionMessageEntry := ActionMessageEntry2;

        OnAfterSumUp(ActionMessageEntry, ComponentBinding, FirstDate, FirstTime);
    end;

    procedure TransferFromReservEntry(var ReservEntry: Record "Reservation Entry")
    begin
        "Reservation Entry" := ReservEntry."Entry No.";
        SetSourceFromReservEntry(ReservEntry);
        "Location Code" := ReservEntry."Location Code";
        "Variant Code" := ReservEntry."Variant Code";
        "Item No." := ReservEntry."Item No.";
    end;

    procedure FilterFromReservEntry(var ReservEntry: Record "Reservation Entry")
    begin
        SetSourceFilterFromReservEntry(ReservEntry);
        SetRange("Location Code", ReservEntry."Location Code");
        SetRange("Variant Code", ReservEntry."Variant Code");
        SetRange("Item No.", ReservEntry."Item No.");
    end;

    procedure FilterToReservEntry(var ReservEntry: Record "Reservation Entry")
    begin
        ReservEntry.SetSourceFilter("Source Type", "Source Subtype", "Source ID", "Source Ref. No.", true);
        ReservEntry.SetSourceFilter("Source Batch Name", "Source Prod. Order Line");
    end;

    procedure BoundToComponent(): Boolean
    begin
        exit(ComponentBinding);
    end;

    procedure ComponentDueDate(): Date
    begin
        exit(FirstDate);
    end;

    procedure ComponentDueTime(): Time
    begin
        exit(FirstTime);
    end;

    procedure SetSource(SourceType: Integer; SourceSubtype: Integer; SourceID: Code[20]; SourceRefNo: Integer; SourceBatchName: Code[10]; SourceProdOrderLine: Integer)
    begin
        "Source Type" := SourceType;
        "Source Subtype" := SourceSubtype;
        "Source ID" := SourceID;
        "Source Ref. No." := SourceRefNo;
        "Source Batch Name" := SourceBatchName;
        "Source Prod. Order Line" := SourceProdOrderLine;
    end;

    procedure SetSourceFromReservEntry(ReservEntry: Record "Reservation Entry")
    begin
        "Source Type" := ReservEntry."Source Type";
        "Source Subtype" := ReservEntry."Source Subtype";
        "Source ID" := ReservEntry."Source ID";
        "Source Ref. No." := ReservEntry."Source Ref. No.";
        "Source Batch Name" := ReservEntry."Source Batch Name";
        "Source Prod. Order Line" := ReservEntry."Source Prod. Order Line";
    end;

    procedure SetSourceFilter(SourceType: Integer; SourceSubtype: Integer; SourceID: Code[20]; SourceRefNo: Integer; SourceKey: Boolean)
    begin
        if SourceKey then
            SetCurrentKey(
              "Source ID", "Source Type", "Source Subtype", "Source Batch Name",
              "Source Prod. Order Line", "Source Ref. No.");
        SetRange("Source Type", SourceType);
        if SourceSubtype >= 0 then
            SetRange("Source Subtype", SourceSubtype);
        SetRange("Source ID", SourceID);
        if SourceRefNo >= 0 then
            SetRange("Source Ref. No.", SourceRefNo);
        OnAfterSetSourceFilter(Rec, SourceType, SourceSubtype, SourceID, SourceRefNo, SourceKey);
    end;

    procedure SetSourceFilter(SourceBatchName: Code[10]; SourceProdOrderLine: Integer)
    begin
        SetRange("Source Batch Name", SourceBatchName);
        SetRange("Source Prod. Order Line", SourceProdOrderLine);
    end;

    procedure SetSourceFilterFromActionEntry(ActionMessageEntry: Record "Action Message Entry")
    begin
        SetRange("Source Type", ActionMessageEntry."Source Type");
        SetRange("Source Subtype", ActionMessageEntry."Source Subtype");
        SetRange("Source ID", ActionMessageEntry."Source ID");
        SetRange("Source Ref. No.", ActionMessageEntry."Source Ref. No.");
        SetRange("Source Batch Name", ActionMessageEntry."Source Batch Name");
        SetRange("Source Prod. Order Line", ActionMessageEntry."Source Prod. Order Line");
    end;

    procedure SetSourceFilterFromReservEntry(ReservEntry: Record "Reservation Entry")
    begin
        SetRange("Source Type", ReservEntry."Source Type");
        SetRange("Source Subtype", ReservEntry."Source Subtype");
        SetRange("Source ID", ReservEntry."Source ID");
        SetRange("Source Ref. No.", ReservEntry."Source Ref. No.");
        SetRange("Source Batch Name", ReservEntry."Source Batch Name");
        SetRange("Source Prod. Order Line", ReservEntry."Source Prod. Order Line");
    end;

    procedure ClearSourceFilter()
    begin
        SetRange("Source Type");
        SetRange("Source Subtype");
        SetRange("Source ID");
        SetRange("Source Batch Name");
        SetRange("Source Prod. Order Line");
        SetRange("Source Ref. No.");
    end;

    [IntegrationEvent(false, false)]
    local procedure OnAfterSetSourceFilter(var ActionMessageEntry: Record "Action Message Entry"; SourceType: Integer; SourceSubtype: Integer; SourceID: Code[20]; SourceRefNo: Integer; SourceKey: Boolean)
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnAfterAssignMessageEntry(var ActionMessageEntry: Record "Action Message Entry"; var ActionMessageEntry2: Record "Action Message Entry")
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnAfterAssignQuantity(var ActionMessageEntry: Record "Action Message Entry"; var ActionMessageEntry2: Record "Action Message Entry")
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnAfterAssignEntryType(var ActionMessageEntry: Record "Action Message Entry"; var ActionMessageEntry2: Record "Action Message Entry")
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnAfterSumUp(var ActionMessageEntry: Record "Action Message Entry"; var ComponentBinding: Boolean; var FirstDate: Date; var FirstTime: Time)
    begin
    end;
}