Table 5430 Planning Error Log

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

Fields, 7Keys, 1Procedures, 6Events, 1

Versions171819202122232425262728

Source29

Source in 29

src/Layers/W1/BaseApp/Inventory/Planning/PlanningErrorLog.Table.al217 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.Planning;

using Microsoft.Finance.Currency;
using Microsoft.Foundation.NoSeries;
using Microsoft.Inventory.Item;
using Microsoft.Inventory.Location;
using Microsoft.Inventory.Requisition;
using Microsoft.Inventory.Transfer;
using Microsoft.Purchases.Vendor;
using System.Reflection;

table 5430 "Planning Error Log"
{
    Caption = 'Planning Error Log';
    DrillDownPageID = "Planning Error Log";
    LookupPageID = "Planning Error Log";
    ReplicateData = true;
    DataClassification = CustomerContent;

    fields
    {
        field(1; "Worksheet Template Name"; Code[10])
        {
            Caption = 'Worksheet Template Name';
            TableRelation = "Req. Wksh. Template";
        }
        field(2; "Journal Batch Name"; Code[10])
        {
            Caption = 'Journal Batch Name';
            TableRelation = "Requisition Wksh. Name".Name where("Worksheet Template Name" = field("Worksheet Template Name"));
        }
        field(3; "Entry No."; Integer)
        {
            Caption = 'Entry No.';
        }
        field(4; "Item No."; Code[20])
        {
            Caption = 'Item No.';
            ToolTip = 'Specifies the item number associated with this entry.';
            TableRelation = Item;
        }
        field(5; "Error Description"; Text[250])
        {
            Caption = 'Error Description';
            ToolTip = 'Specifies the description to the error in this entry.';
        }
        field(6; "Table ID"; Integer)
        {
            Caption = 'Table ID';
            TableRelation = AllObjWithCaption."Object ID" where("Object Type" = const(Table));
        }
        field(7; "Table Position"; Text[250])
        {
            Caption = 'Table Position';
        }
    }

    keys
    {
        key(Key1; "Worksheet Template Name", "Journal Batch Name", "Entry No.")
        {
            Clustered = true;
        }
    }

    fieldgroups
    {
    }

    procedure Caption(): Text
    var
        ReqWkshName: Record "Requisition Wksh. Name";
    begin
        case true of
            GetFilters = '':
                exit('');
            not ReqWkshName.Get("Worksheet Template Name", "Journal Batch Name"):
                exit('');
            else
                exit(StrSubstNo('%1 %2', "Journal Batch Name", ReqWkshName.Description));
        end;
    end;

    procedure SetJnlBatch(WkshTemplName: Code[10]; JnlBatchName: Code[10]; ItemNo: Code[20])
    begin
        SetRange("Worksheet Template Name", WkshTemplName);
        SetRange("Journal Batch Name", JnlBatchName);
        if Find('+') then;
        "Worksheet Template Name" := WkshTemplName;
        "Journal Batch Name" := JnlBatchName;
        "Item No." := ItemNo;
    end;

    procedure SetError(TheError: Text[250]; TheTableID: Integer; TheTablePosition: Text[250])
    begin
        "Entry No." := "Entry No." + 1;
        "Error Description" := TheError;
        "Table ID" := TheTableID;
        "Table Position" := TheTablePosition;
        Insert();
    end;

    procedure GetError(var PlanningErrorLog: Record "Planning Error Log"): Boolean
    begin
        if not Find('-') then
            exit(false);
        Delete();
        PlanningErrorLog.SetRange("Worksheet Template Name", "Worksheet Template Name");
        PlanningErrorLog.SetRange("Journal Batch Name", "Journal Batch Name");
        if PlanningErrorLog.Find('+') then
            "Entry No." := PlanningErrorLog."Entry No." + 1;

        PlanningErrorLog := Rec;
        PlanningErrorLog.Insert();
        exit(true);
    end;

    /// <summary>
    /// Gets all planning errors and inserts them into the provided record.
    /// </summary>
    /// <param name="PlanningErrorLog">The planning error log record to populate with errors.</param>
    /// <returns>True if there are errors, otherwise false.</returns>
    procedure GetErrors(var PlanningErrorLog: Record "Planning Error Log"): Boolean
    var
        LastEntryNo: Integer;
    begin
        if not Rec.FindSet() then
            exit(false);

        LastEntryNo := GetLastEntryNo(Rec."Worksheet Template Name", Rec."Journal Batch Name");

        if Rec.FindSet() then
            repeat
                LastEntryNo += 1;

                PlanningErrorLog := Rec;
                PlanningErrorLog."Entry No." := LastEntryNo;
                PlanningErrorLog.Insert();
            until Rec.Next() = 0;

        exit(true);
    end;

    procedure ShowError()
    var
        NoSeries: Record "No. Series";
        Item: Record Item;
        SKU: Record "Stockkeeping Unit";
        Vendor: Record Vendor;
        Currency: Record Currency;
        RecRef: RecordRef;
    begin
        if "Table ID" = 0 then
            exit;

        RecRef.Open("Table ID");
        RecRef.SetPosition("Table Position");

        case "Table ID" of
            DATABASE::Item:
                begin
                    RecRef.SetTable(Item);
                    Item.SetRecFilter();
                    PAGE.RunModal(PAGE::"Item Card", Item);
                end;
            DATABASE::"Stockkeeping Unit":
                begin
                    RecRef.SetTable(SKU);
                    SKU.SetRecFilter();
                    PAGE.RunModal(PAGE::"Stockkeeping Unit Card", SKU);
                end;
            DATABASE::Currency:
                begin
                    RecRef.SetTable(Currency);
                    Currency.SetRecFilter();
                    PAGE.RunModal(PAGE::Currencies, Currency);
                end;
            DATABASE::Vendor:
                begin
                    RecRef.SetTable(Vendor);
                    Vendor.SetRecFilter();
                    PAGE.RunModal(PAGE::"Vendor Card", Vendor);
                end;
            DATABASE::"No. Series":
                begin
                    RecRef.SetTable(NoSeries);
                    NoSeries.SetRecFilter();
                    PAGE.RunModal(PAGE::"No. Series", NoSeries);
                end;
            DATABASE::"Transfer Route":
                PAGE.RunModal(PAGE::"Transfer Routes");
            else
                OnShowError(RecRef, "Table ID");
        end;
    end;

    local procedure GetLastEntryNo(WorksheetTemplateName: Code[10]; JournalBatchName: Code[10]): Integer
    var
        PlanningErrorLog: Record "Planning Error Log";
    begin
        PlanningErrorLog.SetRange("Worksheet Template Name", WorksheetTemplateName);
        PlanningErrorLog.SetRange("Journal Batch Name", JournalBatchName);
        if PlanningErrorLog.FindLast() then
            exit(PlanningErrorLog."Entry No.");
    end;

    [IntegrationEvent(false, false)]
    local procedure OnShowError(RecRef: RecordRef; TableID: Integer)
    begin
    end;
}