Table 5998 Standard Service Item Gr. Code

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

Fields, 3Keys, 1Procedures, 2Events, 6

Versions171819202122232425262728

Source29

Source in 29

src/Layers/W1/BaseApp/Service/Item/StandardServiceItemGrCode.Table.al228 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.Item;

using Microsoft.Finance.Currency;
using Microsoft.Finance.Dimension;
using Microsoft.Foundation.ExtendedText;
using Microsoft.Service.Document;

table 5998 "Standard Service Item Gr. Code"
{
    Caption = 'Standard Service Item Gr. Code';
    DataCaptionFields = "Service Item Group Code";
    DataClassification = CustomerContent;

    fields
    {
        field(1; "Service Item Group Code"; Code[10])
        {
            Caption = 'Service Item Group Code';
            TableRelation = "Service Item Group";
        }
        field(2; "Code"; Code[10])
        {
            Caption = 'Code';
            ToolTip = 'Specifies a standard service code assigned to the specified service item group.';
            NotBlank = true;
            TableRelation = "Standard Service Code";
        }
        field(3; Description; Text[100])
        {
            CalcFormula = lookup("Standard Service Code".Description where(Code = field(Code)));
            Caption = 'Description';
            ToolTip = 'Specifies a description of service denoted by the standard service code.';
            Editable = false;
            FieldClass = FlowField;
        }
    }

    keys
    {
        key(Key1; "Service Item Group Code", "Code")
        {
            Clustered = true;
        }
    }

    fieldgroups
    {
    }

    trigger OnDelete()
    var
        IsHandled: Boolean;
    begin
        IsHandled := false;
        OnBeforeOnDelete(Rec, IsHandled);
        if IsHandled then
            exit;
    end;

    var
        StdServCode: Record "Standard Service Code";

#pragma warning disable AA0074
#pragma warning disable AA0470
        Text001: Label '%1 of the standard service code must be equal to %2 on the %3.';
#pragma warning restore AA0470
#pragma warning restore AA0074

    procedure InsertServiceLines(ServItemLine: Record "Service Item Line")
    var
        Currency: Record Currency;
        ServHeader: Record "Service Header";
        ServLine: Record "Service Line";
        StdServLine: Record "Standard Service Line";
        StdServItemGrCode: Record "Standard Service Item Gr. Code";
        StdServItemGrCodesForm: Page "Standard Serv. Item Gr. Codes";
        Factor: Integer;
        IsHandled: Boolean;
    begin
        IsHandled := false;
        OnBeforeInsertServiceLines(ServItemLine, IsHandled);
        if IsHandled then
            exit;

        ServItemLine.TestField("Line No.");

        Clear(StdServItemGrCodesForm);
        StdServItemGrCode.Reset();
        if ServItemLine."Service Item Group Code" <> '' then
            StdServItemGrCode.SetRange("Service Item Group Code", ServItemLine."Service Item Group Code");
        StdServItemGrCodesForm.SetRecord(StdServItemGrCode);
        StdServItemGrCodesForm.SetTableView(StdServItemGrCode);
        StdServItemGrCodesForm.LookupMode := true;

        if not (StdServItemGrCodesForm.RunModal() = ACTION::LookupOK) then
            exit;
        StdServItemGrCodesForm.GetRecord(StdServItemGrCode);
        StdServItemGrCode.TestField(Code);
        StdServCode.Get(StdServItemGrCode.Code);

        StdServCode.TestField(Code);
        ServHeader.Get(ServItemLine."Document Type", ServItemLine."Document No.");
        if StdServCode."Currency Code" <> ServHeader."Currency Code" then
            Error(
              Text001,
              StdServCode.FieldCaption("Currency Code"),
              ServHeader.FieldCaption("Currency Code"), ServHeader.TableCaption());
        StdServLine.SetRange("Standard Service Code", StdServCode.Code);
        Currency.Initialize(StdServCode."Currency Code");
        ServLine."Document Type" := ServItemLine."Document Type";
        ServLine."Document No." := ServItemLine."Document No.";
        ServLine.SetRange("Document Type", ServItemLine."Document Type");
        ServLine.SetRange("Document No.", ServItemLine."Document No.");
        if ServHeader."Prices Including VAT" then
            Factor := 1
        else
            Factor := 0;
        ServLine.LockTable();
        StdServLine.LockTable();
        if StdServLine.Find('-') then
            repeat
                ServLine.Init();
                ServLine."Line No." := 0;
                ServLine.Validate(Type, StdServLine.Type);
                if ServHeader."Link Service to Service Item" then
                    ServLine.Validate("Service Item Line No.", ServItemLine."Line No.");
                if StdServLine.Type = StdServLine.Type::" " then begin
                    ServLine.Validate("No.", StdServLine."No.");
                    ServLine.Description := StdServLine.Description
                end else
                    if not StdServLine.EmptyLine() then begin
                        StdServLine.TestField("No.");
                        ServLine.Validate("No.", StdServLine."No.");
                        if StdServLine."Variant Code" <> '' then
                            ServLine.Validate("Variant Code", StdServLine."Variant Code");
                        ServLine.Validate(Quantity, StdServLine.Quantity);
                        if StdServLine."Unit of Measure Code" <> '' then
                            ServLine.Validate("Unit of Measure Code", StdServLine."Unit of Measure Code");
                        IsHandled := false;
                        OnInsertServiceLinesOnBeforeSetDescriptionForLineWithTypeInLoop(ServLine, StdServLine, IsHandled);
                        if not IsHandled then
                            ServLine.Description := StdServLine.Description;
                        if StdServLine.Type = StdServLine.Type::"G/L Account" then
                            ServLine.Validate(
                              "Unit Price",
                              Round(StdServLine."Amount Excl. VAT" *
                                (ServLine."VAT %" / 100 * Factor + 1), Currency."Unit-Amount Rounding Precision"));
                        OnInsertServiceLinesOnAfterCalcUnitPrice(ServLine, StdServLine);
                    end;

                ServLine."Shortcut Dimension 1 Code" := StdServLine."Shortcut Dimension 1 Code";
                ServLine."Shortcut Dimension 2 Code" := StdServLine."Shortcut Dimension 2 Code";

                CombineDimensions(ServLine, StdServLine);

                if StdServLine.InsertLine() then begin
                    ServLine."Line No." := ServLine.GetLineNo();
                    OnBeforeInsertServLine(ServLine);
                    ServLine.Insert(true);

                    if ServLine.Type = ServLine.Type::Item then
                        if ServLine.Reserve = ServLine.Reserve::Always then
                            ServLine.AutoReserve(false);

                    InsertExtendedText(ServLine);
                end;
            until StdServLine.Next() = 0;
    end;

    procedure InsertExtendedText(ServLine: Record "Service Line")
    var
        ServiceTransferExtText: Codeunit "Service Transfer Ext. Text";
    begin
        if ServiceTransferExtText.ServCheckIfAnyExtText(ServLine, false) then
            ServiceTransferExtText.InsertServExtText(ServLine);
    end;

    local procedure CombineDimensions(var ServLine: Record "Service Line"; StdServLine: Record "Standard Service Line")
    var
        DimensionManagement: Codeunit DimensionManagement;
        DimensionSetIDArr: array[10] of Integer;
    begin
        DimensionSetIDArr[1] := ServLine."Dimension Set ID";
        DimensionSetIDArr[2] := StdServLine."Dimension Set ID";

        ServLine."Dimension Set ID" :=
          DimensionManagement.GetCombinedDimensionSetID(
            DimensionSetIDArr, ServLine."Shortcut Dimension 1 Code", ServLine."Shortcut Dimension 2 Code");

        OnAfterCombineDimensions(ServLine, StdServLine);
    end;

    [IntegrationEvent(false, false)]
    local procedure OnAfterCombineDimensions(var ServLine: Record "Service Line"; StdServLine: Record "Standard Service Line")
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnBeforeInsertServLine(var ServiceLine: Record "Service Line")
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnBeforeOnDelete(var StandardServiceItemGrCode: Record "Standard Service Item Gr. Code"; var IsHandled: Boolean)
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnBeforeInsertServiceLines(ServItemLine: Record "Service Item Line"; var IsHandled: Boolean)
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnInsertServiceLinesOnAfterCalcUnitPrice(var ServiceLine: Record "Service Line"; var StdServLine: Record "Standard Service Line")
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnInsertServiceLinesOnBeforeSetDescriptionForLineWithTypeInLoop(var ServiceLine: Record "Service Line"; StandardServiceLine: Record "Standard Service Line"; var IsHandled: Boolean)
    begin
    end;
}