Table 5913 Loaner

App
Base Application
Namespace
Microsoft.Service.Loaner
Versions
17-28

Fields, 13Keys, 3Procedures, 1

Versions171819202122232425262728

Source29

Source in 29

src/Layers/W1/BaseApp/Service/Loaner/Loaner.Table.al221 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.Service.Loaner;

using Microsoft.Foundation.NoSeries;
using Microsoft.Foundation.UOM;
using Microsoft.Inventory.Item;
using Microsoft.Service.Comment;
using Microsoft.Service.Setup;

table 5913 Loaner
{
    Caption = 'Loaner';
    DataCaptionFields = "No.", Description;
    DrillDownPageID = "Loaner List";
    LookupPageID = "Loaner List";
    DataClassification = CustomerContent;

    fields
    {
        field(1; "No."; Code[20])
        {
            Caption = 'No.';
            ToolTip = 'Specifies the number of the involved entry or record, according to the specified number series.';

            trigger OnValidate()
            begin
                if "No." <> xRec."No." then begin
                    ServMgtSetup.Get();
                    NoSeries.TestManual(ServMgtSetup."Loaner Nos.");
                    "No. Series" := '';
                end;
            end;
        }
        field(2; Description; Text[100])
        {
            Caption = 'Description';
            ToolTip = 'Specifies a description of the loaner.';
        }
        field(4; "Description 2"; Text[50])
        {
            Caption = 'Description 2';
            ToolTip = 'Specifies an additional description of the loaner.';
        }
        field(5; "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.';
            TableRelation = if ("Item No." = const('<>''')) "Item Unit of Measure".Code where("Item No." = field("Item No."))
            else
            "Unit of Measure";
        }
        field(6; "Item No."; Code[20])
        {
            Caption = 'Item No.';
            ToolTip = 'Specifies the unit price of the loaner.';
            TableRelation = Item;

            trigger OnValidate()
            begin
                if "Item No." <> '' then begin
                    Item.Get("Item No.");
                    Description := Item.Description;
                    "Description 2" := Item."Description 2";
                end else begin
                    Description := '';
                    "Description 2" := '';
                end;
            end;
        }
        field(7; "Last Date Modified"; Date)
        {
            Caption = 'Last Date Modified';
            ToolTip = 'Specifies the date when the loaner card was last modified.';
            Editable = false;
        }
        field(8; Comment; Boolean)
        {
            CalcFormula = exist("Service Comment Line" where("Table Name" = const(Loaner),
                                                              "Table Subtype" = const("0"),
                                                              "No." = field("No.")));
            Caption = 'Comment';
            ToolTip = 'Specifies that there is a comment for this loaner.';
            Editable = false;
            FieldClass = FlowField;
        }
        field(9; Blocked; Boolean)
        {
            Caption = 'Blocked';
            ToolTip = 'Specifies that the related record is blocked from being posted in transactions, for example a customer that is declared insolvent or an item that is placed in quarantine.';
        }
        field(11; "No. Series"; Code[20])
        {
            Caption = 'No. Series';
            Editable = false;
            TableRelation = "No. Series";
        }
        field(12; "Document No."; Code[20])
        {
            CalcFormula = lookup("Loaner Entry"."Document No." where("Loaner No." = field("No."),
                                                                      Lent = const(true)));
            Caption = 'Document No.';
            ToolTip = 'Specifies the number of the service document for the service item that was lent.';
            Editable = false;
            FieldClass = FlowField;
        }
        field(13; Lent; Boolean)
        {
            CalcFormula = exist("Loaner Entry" where("Loaner No." = field("No."),
                                                      Lent = const(true)));
            Caption = 'Lent';
            ToolTip = 'Specifies that the loaner has been lent to a customer.';
            Editable = false;
            FieldClass = FlowField;
        }
        field(14; "Serial No."; Code[50])
        {
            Caption = 'Serial No.';
            ToolTip = 'Specifies the serial number for the loaner for the service item.';
        }
        field(15; "Document Type"; Enum "Service Loaner Document Type")
        {
            CalcFormula = lookup("Loaner Entry"."Document Type" where("Loaner No." = field("No."),
                                                                       Lent = const(true)));
            Caption = 'Document Type';
            ToolTip = 'Specifies the document type of the loaner entry.';
            Editable = false;
            FieldClass = FlowField;
        }
    }

    keys
    {
        key(Key1; "No.")
        {
            Clustered = true;
        }
        key(Key2; Description)
        {
        }
        key(Key3; "Item No.")
        {
        }
    }

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

    trigger OnDelete()
    var
        ServCommentLine: Record "Service Comment Line";
    begin
        CalcFields(Lent, "Document No.");

        if Lent then
            Error(Text000);

        if not Blocked then
            Error(Text001, TableCaption(), FieldCaption(Blocked));

        Clear(LoanerEntry);
        LoanerEntry.SetCurrentKey("Loaner No.");
        LoanerEntry.SetRange("Loaner No.", "No.");
        LoanerEntry.DeleteAll();

        ServCommentLine.Reset();
        ServCommentLine.SetRange("Table Name", ServCommentLine."Table Name"::Loaner);
        ServCommentLine.SetRange("Table Subtype", 0);
        ServCommentLine.SetRange("No.", "No.");
        ServCommentLine.DeleteAll();
    end;

    trigger OnInsert()
    begin
        if "No." = '' then begin
            ServMgtSetup.Get();
            ServMgtSetup.TestField("Loaner Nos.");
                "No. Series" := ServMgtSetup."Loaner Nos.";
                if NoSeries.AreRelated("No. Series", xRec."No. Series") then
                    "No. Series" := xRec."No. Series";
                "No." := NoSeries.GetNextNo("No. Series");
        end;
    end;

    trigger OnModify()
    begin
        "Last Date Modified" := Today;
    end;

    var
#pragma warning disable AA0074
        Text000: Label 'You cannot delete a loaner that is lent.';
#pragma warning disable AA0470
        Text001: Label 'You can only delete a %1 that is %2.';
#pragma warning restore AA0470
#pragma warning restore AA0074
        ServMgtSetup: Record "Service Mgt. Setup";
        Item: Record Item;
        Loaner: Record Loaner;
        LoanerEntry: Record "Loaner Entry";
        NoSeries: Codeunit "No. Series";

    procedure AssistEdit(OldLoaner: Record Loaner): Boolean
    begin
        Loaner := Rec;
        ServMgtSetup.Get();
        ServMgtSetup.TestField("Loaner Nos.");
        if NoSeries.LookupRelatedNoSeries(ServMgtSetup."Loaner Nos.", OldLoaner."No. Series", Loaner."No. Series") then begin
            Loaner."No." := NoSeries.GetNextNo(Loaner."No. Series");
            Rec := Loaner;
            exit(true);
        end;
    end;
}