Page 9983 Word Templates Related Edit, source in 28

Source242526272829metadata in 28

src/System Application/App/Word Templates/src/WordTemplatesRelatedEdit.Page.al105 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 System.Integration.Word;

/// <summary>
/// A page to view and edit related entities for Word templates.
/// </summary>
page 9983 "Word Templates Related Edit"
{
    Caption = 'Entities';
    PageType = StandardDialog;
    SourceTable = "Word Template";
    InsertAllowed = false;
    ModifyAllowed = true;
    DeleteAllowed = true;
    Permissions = tabledata "Word Template" = r,
                  tabledata "Word Template Field" = rimd,
                  tabledata "Word Templates Related Table" = rimd;
    Extensible = false;
    InherentEntitlements = X;
    InherentPermissions = X;

    layout
    {
        area(Content)
        {
            label(SelectRelatedEntity)
            {
                ApplicationArea = All;
                Caption = 'You can also merge data from fields on entities that are related to the source entity. For example, if the source is the Customer entity, your template can include data from the Salesperson/Purchaser entity.​';
            }


            part(RelatedTables; "Word Templates Related Part")
            {
                ApplicationArea = All;
                UpdatePropagation = Both;
                Caption = 'Entities';
            }
        }
    }

    trigger OnQueryClosePage(CloseAction: Action): Boolean
    begin
        if CloseAction <> Action::OK then
            exit(true);

        CurrPage.RelatedTables.Page.VerifyNoSelectedFields();

        if not Confirm(ApplyChangesQst) then
            exit;

        UpdateRelatedTables();
        UpdateSelectedFields();

        exit(true);
    end;

    internal procedure SetWordTemplate(WordTemplate: Record "Word Template")
    begin
        Rec := WordTemplate;
        CurrPage.RelatedTables.Page.SetWordTemplate(Rec);
    end;

    local procedure UpdateSelectedFields()
    var
        WordTemplateField: Record "Word Template Field";
        TempWordTemplateField: Record "Word Template Field" temporary;
    begin
        CurrPage.RelatedTables.Page.GetWordTemplateFields(TempWordTemplateField);
        WordTemplateField.SetRange("Word Template Code", Rec.Code);
        WordTemplateField.DeleteAll();

        TempWordTemplateField.Reset();
        if TempWordTemplateField.FindSet() then
            repeat
                WordTemplateField := TempWordTemplateField;
                WordTemplateField."Word Template Code" := Rec.Code;
                WordTemplateField.Insert();
            until TempWordTemplateField.Next() = 0;
    end;

    local procedure UpdateRelatedTables()
    var
        WordTemplatesRelatedTable: Record "Word Templates Related Table";
        TempWordTemplatesRelatedTable: Record "Word Templates Related Table" temporary;
    begin
        WordTemplatesRelatedTable.SetRange(Code, Rec.Code);
        WordTemplatesRelatedTable.DeleteAll();

        CurrPage.RelatedTables.Page.GetRelatedTables(TempWordTemplatesRelatedTable);
        if TempWordTemplatesRelatedTable.FindSet() then
            repeat
                WordTemplatesRelatedTable.TransferFields(TempWordTemplatesRelatedTable);
                WordTemplatesRelatedTable.Code := Rec.Code;
                WordTemplatesRelatedTable.Insert();
            until TempWordTemplatesRelatedTable.Next() = 0;
    end;

    var
        ApplyChangesQst: Label 'Are you sure you want to apply these changes?';
}