Page 837 Reminder Terms List

App
Base Application
Namespace
Microsoft.Sales.Reminder
Versions
24-28
Source table
292

Versions171819202122232425262728

Source29

Source in 29

src/Layers/W1/BaseApp/Sales/Reminder/TermsAndLevels/ReminderTermsList.Page.al215 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.Sales.Reminder;

using System.Telemetry;

/// <summary>
/// Displays a list of all reminder terms with navigation to the detailed setup page.
/// </summary>
page 837 "Reminder Terms List"
{
    ApplicationArea = All;
    Caption = 'Reminder Terms';
    PageType = List;
    SourceTable = "Reminder Terms";
    UsageCategory = Lists;
    CardPageID = "Reminder Terms Setup";
    DataCaptionFields = Code;
    Editable = false;
    RefreshOnActivate = true;

    layout
    {
        area(content)
        {
            repeater(Control1)
            {
                ShowCaption = false;
                field("Code"; Rec.Code)
                {
                    Caption = 'Code';
                    ApplicationArea = Basic, Suite;
                }
                field(Description; Rec.Description)
                {
                    Caption = 'Description';
                    ApplicationArea = Basic, Suite;
                }
                field("Max. No. of Reminders"; Rec."Max. No. of Reminders")
                {
                    Caption = 'Maximum Number of Reminders';
                    ApplicationArea = Basic, Suite;
                }
                field("Post Interest"; Rec."Post Interest")
                {
                    Caption = 'Post Interest';
                    ApplicationArea = Basic, Suite;
                }
                field("Post Additional Fee"; Rec."Post Additional Fee")
                {
                    Caption = 'Post Additional Fee';
                    ApplicationArea = Basic, Suite;
                    ToolTip = 'Specifies whether to post any additional fee listed on the reminder to the general ledger and customer accounts.';
                }
                field("Post Add. Fee per Line"; Rec."Post Add. Fee per Line")
                {
                    Caption = 'Post Additional Fee per Line';
                    ApplicationArea = Basic, Suite;
                }
                field("Minimum Amount (LCY)"; Rec."Minimum Amount (LCY)")
                {
                    Caption = 'Minimum Amount (LCY)';
                    ApplicationArea = Basic, Suite;
                    ToolTip = 'Specifies the minimum amount for which a reminder will be created.';
                }
            }
        }
    }

    actions
    {
        area(Processing)
        {
            action(Reminders)
            {
                ApplicationArea = Basic, Suite;
                Caption = 'Reminders';
                Image = Reminder;
                Tooltip = 'Open the list of Reminders.';

                trigger OnAction()
                var
                    ReminderHeader: Record "Reminder Header";
                begin
                    FilterRemindersBasedOnSelectedReminderTerms(ReminderHeader);
                    Page.Run(Page::"Reminder List", ReminderHeader);
                end;
            }
            action(IssuedReminders)
            {
                ApplicationArea = Basic, Suite;
                Caption = 'Issued Reminders';
                Image = Reminder;
                Tooltip = 'Open the list of Issued Reminders.';

                trigger OnAction()
                var
                    IssuedReminderHeader: Record "Issued Reminder Header";
                begin
                    FilterIssuedRemindersBasedOnSelectedReminderTerms(IssuedReminderHeader);
                    Page.Run(Page::"Issued Reminder List", IssuedReminderHeader);
                end;
            }
            action(TransferOldTexts)
            {
                ApplicationArea = Basic, Suite;
                Caption = 'Transfer texts';
                Image = Reminder;
                Tooltip = 'Copy the existing reminder text and translations to the new communication tables.';

                trigger OnAction()
                var
                    ReminderAttachmentText: Record "Reminder Attachment Text";
                    ReminderCommunication: Codeunit "Reminder Communication";
                begin
                    if ReminderAttachmentText.Count() > 0 then
                        if not Confirm(OverwriteExistinTextMsg) then
                            exit;
                    ReminderCommunication.TransferReminderText();
                    ReminderCommunication.TransferReminderTermsTranslations();
                    ReminderCommunication.TransferReminderTermsLineFeeDescription();
                    ReminderCommunication.TransferReminderLevelLineFeeDescription();
                    Message(FinishedTransferMsg);
                end;
            }
        }
        area(Promoted)
        {
            group(Category_Process)
            {
                actionref(Reminders_Promoted; Reminders)
                {
                }
                actionref(IssuedReminders_Promoted; IssuedReminders)
                {
                }
            }
        }
    }

    trigger OnOpenPage()
    var
        FeatureTelemetry: Codeunit "Feature Telemetry";
    begin
        if CurrPage.LookupMode() then
            exit;
        FeatureTelemetry.LogUptake('0000LAY', 'Reminder', Enum::"Feature Uptake Status"::Discovered);
    end;

    trigger OnInsertRecord(BelowxRec: Boolean): Boolean
    var
        FeatureTelemetry: Codeunit "Feature Telemetry";
    begin
        FeatureTelemetry.LogUptake('0000LAZ', 'Reminder', Enum::"Feature Uptake Status"::"Set up");
    end;

    var
        ReminderTermsNotSelectedErr: Label 'You need to select one Reminder Term.';
        OverwriteExistinTextMsg: Label 'This action will overwrite any existing reminder texts and translations that you have setup for the new communication tables. Do you want to continue?';
        FinishedTransferMsg: Label 'The reminder texts and translations have been transferred to the new communication tables.';

    local procedure FilterRemindersBasedOnSelectedReminderTerms(var ReminderHeader: Record "Reminder Header")
    var
        ReminderTerms: Record "Reminder Terms";
        RemindersTermCodeFilter: Text;
        FirstEntry: Boolean;
    begin
        CurrPage.SetSelectionFilter(ReminderTerms);
        if ReminderTerms.IsEmpty() then
            Error(ReminderTermsNotSelectedErr);

        ReminderTerms.FindSet();
        FirstEntry := true;
        repeat
            if FirstEntry then begin
                FirstEntry := false;
                RemindersTermCodeFilter := ReminderTerms.Code;
            end
            else
                RemindersTermCodeFilter += '|' + ReminderTerms.Code;
        until ReminderTerms.Next() = 0;
        ReminderHeader.SetFilter("Reminder Terms Code", RemindersTermCodeFilter);
        if not ReminderHeader.IsEmpty() then
            ReminderHeader.FindSet();
    end;

    local procedure FilterIssuedRemindersBasedOnSelectedReminderTerms(var IssuedReminderHeader: Record "Issued Reminder Header")
    var
        ReminderTerms: Record "Reminder Terms";
        RemindersTermCodeFilter: Text;
        FirstEntry: Boolean;
    begin
        CurrPage.SetSelectionFilter(ReminderTerms);
        if ReminderTerms.IsEmpty() then
            Error(ReminderTermsNotSelectedErr);

        ReminderTerms.FindSet();
        FirstEntry := true;
        repeat
            if FirstEntry then begin
                FirstEntry := false;
                RemindersTermCodeFilter := ReminderTerms.Code;
            end
            else
                RemindersTermCodeFilter += '|' + ReminderTerms.Code;
        until ReminderTerms.Next() = 0;
        IssuedReminderHeader.SetFilter("Reminder Terms Code", RemindersTermCodeFilter);
        if not IssuedReminderHeader.IsEmpty() then
            IssuedReminderHeader.FindSet();
    end;
}