Page 5146 Assign Activity

App
Base Application
Namespace
Microsoft.CRM.Task
Versions
17-28
Source table
5080

Procedures, 1Events, 1

Versions171819202122232425262728

Source29

Source in 29

src/Layers/W1/BaseApp/CRM/Task/AssignActivity.Page.al316 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.Task;

using Microsoft.CRM.Campaign;
using Microsoft.CRM.Contact;
using Microsoft.CRM.Segment;
using Microsoft.CRM.Team;
using System.Environment;

page 5146 "Assign Activity"
{
    Caption = 'Assign Activity';
    DataCaptionExpression = Caption();
    DeleteAllowed = false;
    InsertAllowed = false;
    LinksAllowed = false;
    PageType = Card;
    SourceTable = "To-do";

    layout
    {
        area(content)
        {
            group("Activity Setup")
            {
                Caption = 'Activity Setup';
                field("Activity Code"; Rec."Activity Code")
                {
                    ApplicationArea = RelationshipMgmt;
                    Caption = 'Activity Code';
                    TableRelation = Activity.Code;

                    trigger OnValidate()
                    begin
                        if not Activity.IncludesMeeting(Rec."Activity Code") then begin
                            TeamMeetingOrganizerEditable := false;
                            Rec."Team Meeting Organizer" := ''
                        end else
                            if Rec."Team Code" <> '' then begin
                                TeamMeetingOrganizerEditable := true;
                                Rec."Team Meeting Organizer" := ''
                            end;
                    end;
                }
                field(Date; Rec.Date)
                {
                    ApplicationArea = RelationshipMgmt;
                    Caption = 'Activity Start Date';
                }
                field("Wizard Contact Name"; Rec."Wizard Contact Name")
                {
                    ApplicationArea = RelationshipMgmt;
                    Caption = 'Contact No.';
                    Editable = WizardContactNameEditable;
                    Lookup = false;
                    TableRelation = Contact;

                    trigger OnAssistEdit()
                    var
                        Cont: Record Contact;
                    begin
                        if (Rec."Wizard Contact Name" = '') and not SegHeader.Get(Rec.GetFilter("Segment No.")) then begin
                            if Cont.Get(Rec."Contact No.") then;
                            if PAGE.RunModal(0, Cont) = ACTION::LookupOK then begin
                                Rec.Validate("Contact No.", Cont."No.");
                                CurrPage.SetSelectionFilter(Rec);
                                Rec."Wizard Contact Name" := Cont.Name;
                            end;
                        end;
                    end;
                }
                field("Salesperson Code"; Rec."Salesperson Code")
                {
                    ApplicationArea = Suite, RelationshipMgmt;
                    Caption = 'Salesperson Code';
                    Editable = SalespersonCodeEditable;

                    trigger OnValidate()
                    begin
                        if SalesPurchPerson.Get(Rec."Salesperson Code") then begin
                            TeamMeetingOrganizerEditable := false;
                            Rec."Team Meeting Organizer" := '';
                            Rec."Team Code" := ''
                        end else
                            if Activity.IncludesMeeting(Rec."Activity Code") or
                               (Rec."Activity Code" = '') and
                               (Rec."Team Code" <> '')
                            then
                                TeamMeetingOrganizerEditable := true
                    end;
                }
                field("Team Code"; Rec."Team Code")
                {
                    ApplicationArea = RelationshipMgmt;
                    Caption = 'Team Code';
                    Editable = TeamCodeEditable;

                    trigger OnValidate()
                    begin
                        if Team.Get(Rec."Team Code") then begin
                            if Activity.IncludesMeeting(Rec."Activity Code") then
                                TeamMeetingOrganizerEditable := true;
                            Rec."Salesperson Code" := '';
                        end;
                        if Rec."Team Code" = '' then begin
                            TeamMeetingOrganizerEditable := false;
                            Rec."Team Meeting Organizer" := ''
                        end;
                    end;
                }
                field("Team Meeting Organizer"; Rec."Team Meeting Organizer")
                {
                    ApplicationArea = RelationshipMgmt;
                    Caption = 'Meeting Organizer';
                    Editable = TeamMeetingOrganizerEditable;

                    trigger OnLookup(var Text: Text): Boolean
                    var
                        Salesperson: Record "Salesperson/Purchaser";
                        SalesPurchPerson: Page "Salespersons/Purchasers";
                    begin
                        SalesPurchPerson.LookupMode := true;
                        if SalesPurchPerson.RunModal() = ACTION::LookupOK then begin
                            SalesPurchPerson.GetRecord(Salesperson);
                            if TeamMeetingOrganizerEditable then
                                Rec."Team Meeting Organizer" := Salesperson.Code
                        end;
                    end;

                    trigger OnValidate()
                    var
                        SalesPurchPerson: Record "Salesperson/Purchaser";
                    begin
                        SalesPurchPerson.Get(Rec."Team Meeting Organizer");
                    end;
                }
                field("Wizard Campaign Description"; Rec."Wizard Campaign Description")
                {
                    ApplicationArea = RelationshipMgmt;
                    Caption = 'Campaign';
                    Importance = Additional;
                    Lookup = false;
                    TableRelation = Campaign;

                    trigger OnAssistEdit()
                    var
                        Campaign: Record Campaign;
                    begin
                        if not Campaign.Get(Rec.GetFilter("Campaign No.")) then begin
                            if Campaign.Get(Rec."Campaign No.") then;
                            if PAGE.RunModal(0, Campaign) = ACTION::LookupOK then begin
                                Rec.Validate("Campaign No.", Campaign."No.");
                                Rec."Wizard Campaign Description" := Campaign.Description;
                            end;
                        end;
                    end;
                }
                field("Segment Description"; Rec."Segment Description")
                {
                    ApplicationArea = RelationshipMgmt;
                    Caption = 'Create Tasks for Segment';
                    Editable = false;
                    Importance = Additional;
                    Lookup = false;
                    TableRelation = "Segment Header";

                    trigger OnAssistEdit()
                    var
                        Segment: Record "Segment Header";
                    begin
                        if Segment.Get(Rec."Segment No.") then;
                        if PAGE.RunModal(0, Segment) = ACTION::LookupOK then begin
                            Rec.Validate("Segment No.", Segment."No.");
                            Rec."Segment Description" := Segment.Description;
                        end;
                    end;
                }
            }
        }
    }

    actions
    {
        area(processing)
        {
            action(Finish)
            {
                ApplicationArea = RelationshipMgmt;
                Caption = '&Finish';
                Image = Approve;
                InFooterBar = true;
                ToolTip = 'Finish assigning the activity.';
                Visible = IsOnMobile;

                trigger OnAction()
                begin
                    Rec.CheckAssignActivityStatus();
                    Rec.FinishAssignActivity();
                    CurrPage.Close();
                end;
            }
        }
        area(Promoted)
        {
            group(Category_New)
            {
                Caption = 'New';

                actionref(Finish_Promoted; Finish)
                {
                }
            }
        }
    }

    trigger OnAfterGetRecord()
    begin
        WizardContactNameOnFormat(Format(Rec."Wizard Contact Name"));
    end;

    trigger OnInit()
    begin
        TeamCodeEditable := true;
        SalespersonCodeEditable := true;
        WizardContactNameEditable := true;
        TeamMeetingOrganizerEditable := true;
    end;

    trigger OnOpenPage()
    begin
        WizardContactNameEditable := false;
        IsOnMobile := ClientTypeManagement.GetCurrentClientType() = CLIENTTYPE::Phone;

        if SalesPurchPerson.Get(Rec.GetFilter("Salesperson Code")) or
           Team.Get(Rec.GetFilter("Team Code"))
        then begin
            SalespersonCodeEditable := false;
            TeamCodeEditable := false;
        end;

        if SalesPurchPerson.Get(Rec.GetFilter("Salesperson Code")) or
           (Rec."Salesperson Code" <> '') or
           (Rec."Activity Code" = '')
        then
            TeamMeetingOrganizerEditable := false;

        if Campaign.Get(Rec.GetFilter("Campaign No.")) then
            Rec."Campaign Description" := Campaign.Description;

        if SegHeader.Get(Rec.GetFilter("Segment No.")) then
            Rec."Segment Description" := SegHeader.Description;
    end;

    trigger OnQueryClosePage(CloseAction: Action): Boolean
    begin
        if CloseAction in [ACTION::OK, ACTION::LookupOK] then begin
            Rec.CheckAssignActivityStatus();
            Rec.FinishAssignActivity();
        end;
    end;

    var
        Cont: Record Contact;
        SalesPurchPerson: Record "Salesperson/Purchaser";
        Team: Record Team;
        Campaign: Record Campaign;
        SegHeader: Record "Segment Header";
        Activity: Record Activity;
        ClientTypeManagement: Codeunit "Client Type Management";
        TeamMeetingOrganizerEditable: Boolean;
        WizardContactNameEditable: Boolean;
        SalespersonCodeEditable: Boolean;
        TeamCodeEditable: Boolean;
        IsOnMobile: Boolean;

#pragma warning disable AA0074
        Text000: Label 'untitled';
        Text005: Label '(Multiple)';
#pragma warning restore AA0074

    procedure Caption() CaptionStr: Text
    begin
        if Cont.Get(Rec.GetFilter("Contact Company No.")) then
            CaptionStr := CopyStr(Cont."No." + ' ' + Cont.Name, 1, MaxStrLen(CaptionStr));
        if Cont.Get(Rec.GetFilter("Contact No.")) then
            CaptionStr := CopyStr(CaptionStr + ' ' + Cont."No." + ' ' + Cont.Name, 1, MaxStrLen(CaptionStr));
        if SalesPurchPerson.Get(Rec.GetFilter("Salesperson Code")) then
            CaptionStr := CopyStr(CaptionStr + ' ' + SalesPurchPerson.Code + ' ' + SalesPurchPerson.Name, 1, MaxStrLen(CaptionStr));
        if Team.Get(Rec.GetFilter("Team Code")) then
            CaptionStr := CopyStr(CaptionStr + ' ' + Team.Code + ' ' + Team.Name, 1, MaxStrLen(CaptionStr));
        if Campaign.Get(Rec.GetFilter("Campaign No.")) then
            CaptionStr := CopyStr(CaptionStr + ' ' + Campaign."No." + ' ' + Campaign.Description, 1, MaxStrLen(CaptionStr));
        if SegHeader.Get(Rec.GetFilter("Segment No.")) then
            CaptionStr := CopyStr(CaptionStr + ' ' + SegHeader."No." + ' ' + SegHeader.Description, 1, MaxStrLen(CaptionStr));
        if CaptionStr = '' then
            CaptionStr := Text000;

        OnAfterCaption(Rec, CaptionStr);
    end;

    local procedure WizardContactNameOnFormat(Text: Text[1024])
    begin
        if SegHeader.Get(Rec.GetFilter("Segment No.")) then
            Text := Text005;
    end;

    [IntegrationEvent(false, false)]
    local procedure OnAfterCaption(Todo: Record "To-do"; var CaptionStr: Text)
    begin
    end;
}