Page 5189 Create Rating

App
Base Application
Namespace
Microsoft.CRM.Profiling
Versions
17-28
Source table
5088

Versions171819202122232425262728

Source29

Source in 29

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

page 5189 "Create Rating"
{
    Caption = 'Create Rating';
    DataCaptionExpression = Rec."Profile Questionnaire Code" + ' ' + Rec.Description;
    DeleteAllowed = false;
    InsertAllowed = false;
    LinksAllowed = false;
    PageType = NavigatePage;
    SourceTable = "Profile Questionnaire Line";

    layout
    {
        area(content)
        {
            group(Step3)
            {
                Caption = 'Step 3';
                InstructionalText = 'Please specify the range of points required to get the different answer options.';
                Visible = Step3Visible;
                field(GetProfileLineAnswerDesc; Rec.GetProfileLineAnswerDesc())
                {
                    ApplicationArea = RelationshipMgmt;
                    Caption = 'Please select one of the options below to specify the points your contact must earn in order to receive this rating.';
                    Editable = false;
                    MultiLine = true;
                }
                group(Control3)
                {
                    ShowCaption = false;
                    field("Interval Option"; Rec."Interval Option")
                    {
                        ApplicationArea = RelationshipMgmt;
                        ValuesAllowed = Interval;

                        trigger OnValidate()
                        begin
                            if Rec."Interval Option" = Rec."Interval Option"::Interval then
                                IntervalIntervalOptionOnValida();
                        end;
                    }
                    field("Wizard From Value"; Rec."Wizard From Value")
                    {
                        ApplicationArea = RelationshipMgmt;
                        BlankZero = true;
                        Caption = 'From:';
                        DecimalPlaces = 0 :;
                        Enabled = WizardFromValueEnable;
                    }
                    field("Wizard To Value"; Rec."Wizard To Value")
                    {
                        ApplicationArea = RelationshipMgmt;
                        BlankZero = true;
                        Caption = 'To:';
                        DecimalPlaces = 0 :;
                        Enabled = WizardToValueEnable;
                    }
                }
                group(Control32)
                {
                    ShowCaption = false;
                    field("Interval Option2"; Rec."Interval Option")
                    {
                        ApplicationArea = RelationshipMgmt;
                        ValuesAllowed = Minimum;

                        trigger OnValidate()
                        begin
                            if Rec."Interval Option" = Rec."Interval Option"::Minimum then
                                MinimumIntervalOptionOnValidat();
                        end;
                    }
                    field(Minimum; Rec."Wizard From Value")
                    {
                        ApplicationArea = RelationshipMgmt;
                        BlankZero = true;
                        Caption = 'From:';
                        DecimalPlaces = 0 :;
                        Enabled = MinimumEnable;
                    }
                }
                group(Control33)
                {
                    ShowCaption = false;
                    field("Interval Option3"; Rec."Interval Option")
                    {
                        ApplicationArea = RelationshipMgmt;
                        ValuesAllowed = Maximum;

                        trigger OnValidate()
                        begin
                            if Rec."Interval Option" = Rec."Interval Option"::Maximum then
                                MaximumIntervalOptionOnValidat();
                        end;
                    }
                    field(Maximum; Rec."Wizard To Value")
                    {
                        ApplicationArea = RelationshipMgmt;
                        BlankZero = true;
                        Caption = 'To:';
                        DecimalPlaces = 0 :;
                        Enabled = MaximumEnable;
                    }
                }
            }
            group(Step1)
            {
                Caption = 'Step 1';
                InstructionalText = 'This wizard helps you define the methods you will use to rate your contacts.';
                Visible = Step1Visible;
                field("Profile Questionnaire Code"; Rec."Profile Questionnaire Code")
                {
                    ApplicationArea = RelationshipMgmt;
                    Caption = 'For which questionnaire should this rating be created';
                    TableRelation = "Profile Questionnaire Header";
                }
                field(Description; Rec.Description)
                {
                    ApplicationArea = RelationshipMgmt;
                    Caption = 'Describe the type of rating (for example, Overall Customer Rating)';
                    MultiLine = true;
                }
                field("Min. % Questions Answered"; Rec."Min. % Questions Answered")
                {
                    ApplicationArea = RelationshipMgmt;
                    Caption = 'What percentage of questions need to be answered before a rating is assigned?';
                    MultiLine = true;
                }
            }
            group(Step4)
            {
                Caption = 'Step 4';
                InstructionalText = 'When you choose Finish, the questions and answers you have created will be saved and the Answer Points window will open. In this window, you can assign points to each answer.';
                Visible = Step4Visible;
                part(SubForm; "Create Rating Subform")
                {
                    ApplicationArea = RelationshipMgmt;
                    Editable = false;
                    Visible = SubFormVisible;
                }
            }
            group(Step2)
            {
                Caption = 'Step 2';
                Visible = Step2Visible;
                field("Answer Option"; Rec."Answer Option")
                {
                    ApplicationArea = RelationshipMgmt;
                    Caption = 'Specify which of the following grouping methods you will use to rate your contacts.';
                    ValuesAllowed = HighLow, ABC, Custom;

                    trigger OnValidate()
                    begin
                        if Rec."Answer Option" = Rec."Answer Option"::Custom then
                            CustomAnswerOptionOnValidate();
                        if Rec."Answer Option" = Rec."Answer Option"::ABC then
                            ABCAnswerOptionOnValidate();
                        if Rec."Answer Option" = Rec."Answer Option"::HighLow then
                            HighLowAnswerOptionOnValidate();
                    end;
                }
                field(NoOfAnswers; Rec.NoOfProfileAnswers())
                {
                    ApplicationArea = RelationshipMgmt;
                    AutoFormatType = 0;
                    Caption = 'Number of possible answers:';
                    Enabled = NoOfAnswersEnable;

                    trigger OnDrillDown()
                    begin
                        Rec.ShowAnswers();
                        CurrPage.Update();
                    end;
                }
            }
        }
    }

    actions
    {
        area(processing)
        {
            action(Back)
            {
                ApplicationArea = RelationshipMgmt;
                Caption = '&Back';
                Enabled = BackEnable;
                Image = PreviousRecord;
                InFooterBar = true;

                trigger OnAction()
                begin
                    ShowStep(false);
                    Rec.PerformPrevWizardStatus();
                    ShowStep(true);
                    UpdateCntrls();
                    CurrPage.Update(true);
                end;
            }
            action(Next)
            {
                ApplicationArea = RelationshipMgmt;
                Caption = '&Next';
                Enabled = NextEnable;
                Image = NextRecord;
                InFooterBar = true;

                trigger OnAction()
                begin
                    Rec.CheckStatus();
                    ShowStep(false);
                    Rec.PerformNextWizardStatus();
                    ShowStep(true);
                    UpdateCntrls();
                    CurrPage.Update(true);
                end;
            }
            action(Finish)
            {
                ApplicationArea = RelationshipMgmt;
                Caption = '&Finish';
                Enabled = FinishEnable;
                Image = Approve;
                InFooterBar = true;

                trigger OnAction()
                begin
                    Rec.CheckStatus();
                    Rec.FinishWizard();
                    CurrPage.Close();
                end;
            }
        }
    }

    trigger OnInit()
    begin
        MaximumEnable := true;
        MinimumEnable := true;
        WizardToValueEnable := true;
        WizardFromValueEnable := true;
        NoOfAnswersEnable := true;
        NextEnable := true;
        SubFormVisible := true;
    end;

    trigger OnOpenPage()
    begin
        FormWidth := CancelXPos + CancelWidth + 220;
        FrmXPos := Round((FrmWidth - FormWidth) / 2, 1) + FrmXPos;
        FrmWidth := FormWidth;

        Rec.Validate("Auto Contact Classification", true);
        Rec.Validate("Contact Class. Field", Rec."Contact Class. Field"::Rating);
        Rec.Modify();

        Rec.ValidateAnswerOption();
        Rec.ValidateIntervalOption();

        ShowStep(true);

        UpdateCntrls();
    end;

    var
        TempProfileLineAnswer: Record "Profile Questionnaire Line" temporary;
        FormWidth: Integer;
        CancelXPos: Integer;
        CancelWidth: Integer;
        FrmXPos: Integer;
        FrmWidth: Integer;
        Step1Visible: Boolean;
        Step2Visible: Boolean;
        Step3Visible: Boolean;
        Step4Visible: Boolean;
        SubFormVisible: Boolean;
        NextEnable: Boolean;
        BackEnable: Boolean;
        FinishEnable: Boolean;
        NoOfAnswersEnable: Boolean;
        WizardFromValueEnable: Boolean;
        WizardToValueEnable: Boolean;
        MinimumEnable: Boolean;
        MaximumEnable: Boolean;

    local procedure ShowStep(Visible: Boolean)
    begin
        case Rec."Wizard Step" of
            Rec."Wizard Step"::"1":
                begin
                    NextEnable := true;
                    BackEnable := false;
                    Step1Visible := Visible;
                    if Visible then;
                end;
            Rec."Wizard Step"::"2":
                begin
                    Step2Visible := Visible;
                    BackEnable := true;
                    NextEnable := true;
                end;
            Rec."Wizard Step"::"3":
                begin
                    Step3Visible := Visible;
                    if Visible then begin
                        BackEnable := true;
                        NextEnable := true;
                        FinishEnable := false;
                    end;
                end;
            Rec."Wizard Step"::"4":
                begin
                    if Visible then begin
                        Rec.GetAnswers(TempProfileLineAnswer);
                        CurrPage.SubForm.PAGE.SetRecords(Rec, TempProfileLineAnswer);
                    end;
                    FinishEnable := true;
                    NextEnable := false;
                    Step4Visible := Visible;
                    CurrPage.SubForm.PAGE.UpdateForm();
                end;
        end;
    end;

    local procedure UpdateCntrls()
    begin
        NoOfAnswersEnable := Rec."Answer Option" = Rec."Answer Option"::Custom;
        WizardFromValueEnable := Rec."Interval Option" = Rec."Interval Option"::Interval;
        WizardToValueEnable := Rec."Interval Option" = Rec."Interval Option"::Interval;
        MinimumEnable := Rec."Interval Option" = Rec."Interval Option"::Minimum;
        MaximumEnable := Rec."Interval Option" = Rec."Interval Option"::Maximum;
    end;

    local procedure IntervalIntervalOptionOnValida()
    begin
        Rec.ValidateIntervalOption();
        UpdateCntrls();
    end;

    local procedure MinimumIntervalOptionOnValidat()
    begin
        Rec.ValidateIntervalOption();
        UpdateCntrls();
    end;

    local procedure MaximumIntervalOptionOnValidat()
    begin
        Rec.ValidateIntervalOption();
        UpdateCntrls();
    end;

    local procedure HighLowAnswerOptionOnValidate()
    begin
        Rec.ValidateAnswerOption();
        UpdateCntrls();
    end;

    local procedure ABCAnswerOptionOnValidate()
    begin
        Rec.ValidateAnswerOption();
        UpdateCntrls();
    end;

    local procedure CustomAnswerOptionOnValidate()
    begin
        Rec.ValidateAnswerOption();
        Rec.ShowAnswers();
        UpdateCntrls();
    end;
}