Page 5172 Answer Points, source in 29

Source29

src/Layers/W1/BaseApp/CRM/Profiling/AnswerPoints.Page.al229 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.CRM.Profiling;

using System.Environment;

page 5172 "Answer Points"
{
    Caption = 'Answer Points';
    DataCaptionExpression = GetCaption();
    DeleteAllowed = false;
    InsertAllowed = false;
    ModifyAllowed = false;
    PageType = List;
    SourceTable = "Profile Questionnaire Line";

    layout
    {
        area(content)
        {
            repeater(Questions)
            {
                IndentationColumn = DescriptionIndent;
                IndentationControls = Description;
                field(Type; Rec.Type)
                {
                    ApplicationArea = All;
                    Editable = false;
                    Style = Strong;
                    StyleExpr = StyleIsStrong;
                }
                field(Description; Rec.Description)
                {
                    ApplicationArea = All;
                    Editable = false;
                    Style = Strong;
                    StyleExpr = StyleIsStrong;
                }
                field("No. of Contacts"; Rec."No. of Contacts")
                {
                    ApplicationArea = RelationshipMgmt;
                }
                field(Points; Points)
                {
                    ApplicationArea = RelationshipMgmt;
                    AutoFormatType = 0;
                    BlankZero = true;
                    Caption = 'Points';
                    DecimalPlaces = 0 : 0;
                    ToolTip = 'Specifies all questions and answers in the profile questionnaire.';

                    trigger OnValidate()
                    var
                        Rating: Record Rating;
                    begin
                        Rec.TestField(Type, Rec.Type::Answer);

                        if Rating.Get(TargetQuestnCode, TargetQuestLineNo, Rec."Profile Questionnaire Code", Rec."Line No.") then
                            if Points = 0 then
                                Rating.Delete()
                            else begin
                                Rating.Points := Points;
                                Rating.Modify();
                            end
                        else begin
                            Rating."Profile Questionnaire Code" := TargetQuestnCode;
                            Rating."Profile Questionnaire Line No." := TargetQuestLineNo;
                            Rating."Rating Profile Quest. Code" := Rec."Profile Questionnaire Code";
                            Rating."Rating Profile Quest. Line No." := Rec."Line No.";
                            Rating.Points := Points;
                            Rating.Insert(true);
                        end;
                    end;
                }
            }
        }
        area(factboxes)
        {
            systempart(Control1900383207; Links)
            {
                ApplicationArea = RecordLinks;
                Visible = false;
            }
            systempart(Control1905767507; Notes)
            {
                ApplicationArea = Notes;
                Visible = false;
            }
        }
    }

    actions
    {
        area(navigation)
        {
            action(Questionnaire)
            {
                ApplicationArea = RelationshipMgmt;
                Image = Questionnaire;

                trigger OnAction()
                var
                    ProfileQuestnHeader: Record "Profile Questionnaire Header";
                begin
                    if ProfileQuestnHeader.Get(Rec."Profile Questionnaire Code") then
                        if PAGE.RunModal(
                             PAGE::"Profile Questionnaire List", ProfileQuestnHeader) = ACTION::LookupOK
                        then begin
                            Rec.SetRange("Profile Questionnaire Code", ProfileQuestnHeader.Code);
                            CurrQuestnCode := ProfileQuestnHeader.Code;
                            SetRatingFilter();
                            CurrPage.Update();
                        end;
                end;
            }
            group("&Points")
            {
                Caption = '&Points';
                action(List)
                {
                    ApplicationArea = RelationshipMgmt;
                    Caption = 'List';
                    Image = OpportunitiesList;
                    ToolTip = 'View the answers from which a contact can gain points when you calculate the rating.';

                    trigger OnAction()
                    var
                        Rating: Record Rating;
                    begin
                        Rating.SetRange("Profile Questionnaire Code", TargetQuestnCode);
                        Rating.SetRange("Profile Questionnaire Line No.", TargetQuestLineNo);
                        if PAGE.RunModal(PAGE::"Answer Points List", Rating) = ACTION::LookupOK then begin
                            CurrQuestnCode := Rating."Rating Profile Quest. Code";
                            Rec.SetRange("Profile Questionnaire Code", CurrQuestnCode);
                            Rec.Get(CurrQuestnCode, Rating."Rating Profile Quest. Line No.");
                        end;
                    end;
                }
            }
        }
        area(Promoted)
        {
            group(Category_Process)
            {
                Caption = 'Process';

                actionref(Questionnaire_Promoted; Questionnaire)
                {
                }
            }
        }
    }

    trigger OnAfterGetCurrRecord()
    var
        Rating: Record Rating;
    begin
        if Rating.Get(TargetQuestnCode, TargetQuestLineNo, Rec."Profile Questionnaire Code", Rec."Line No.") then
            Points := Rating.Points
        else
            Points := 0;
    end;

    trigger OnAfterGetRecord()
    var
        Rating: Record Rating;
    begin
        if Rating.Get(TargetQuestnCode, TargetQuestLineNo, Rec."Profile Questionnaire Code", Rec."Line No.") then
            Points := Rating.Points
        else
            Points := 0;

        StyleIsStrong := Rec.Type = Rec.Type::Question;
        if Rec.Type <> Rec.Type::Question then
            DescriptionIndent := 1
        else
            DescriptionIndent := 0;
    end;

    trigger OnOpenPage()
    var
        TempProfileQuestnLine: Record "Profile Questionnaire Line";
    begin
        TargetQuestnCode := Rec."Profile Questionnaire Code";
        TargetQuestLineNo := Rec."Line No.";
        TargetQuestnLineNoEnd := Rec."Line No.";
        CurrQuestnCode := Rec."Profile Questionnaire Code";

        if TempProfileQuestnLine.Get(TargetQuestnCode, Rec."Line No.") then
            while (TempProfileQuestnLine.Next() <> 0) and
                  (TempProfileQuestnLine.Type = TempProfileQuestnLine.Type::Answer)
            do
                TargetQuestnLineNoEnd := TempProfileQuestnLine."Line No.";

        SetRatingFilter();
    end;

    var
        ClientTypeManagement: Codeunit "Client Type Management";
        CurrQuestnCode: Code[20];
        TargetQuestnCode: Code[20];
        TargetQuestLineNo: Integer;
        TargetQuestnLineNoEnd: Integer;
        Points: Decimal;
        StyleIsStrong: Boolean;
        DescriptionIndent: Integer;

    procedure SetRatingFilter()
    begin
        Rec.FilterGroup(2);
        if CurrQuestnCode = TargetQuestnCode then
            Rec.SetFilter("Line No.", '<%1|>%2', TargetQuestLineNo, TargetQuestnLineNoEnd)
        else
            Rec.SetRange("Line No.");
        Rec.FilterGroup(0);
    end;

    local procedure GetCaption(): Text
    begin
        if ClientTypeManagement.GetCurrentClientType() = CLIENTTYPE::Phone then
            exit(StrSubstNo('%1 %2', CurrPage.Caption, Rec."Profile Questionnaire Code"));

        exit(Format(Rec."Profile Questionnaire Code"));
    end;
}