Page 5091 Segment
- App
- Base Application
- Namespace
- Microsoft.CRM.Segment
- Versions
- 17-28
- Source table
- 5076
Versions171819202122232425262728
Source29
Source in 29
src/Layers/W1/BaseApp/CRM/Segment/Segment.Page.al835 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.Segment;
using Microsoft.CRM.Contact;
using Microsoft.CRM.Opportunity;
using Microsoft.CRM.Reports;
using Microsoft.CRM.Task;
using System.Environment;
using System.Integration;
using System.Integration.Excel;
page 5091 Segment
{
Caption = 'Segment';
PageType = ListPlus;
PopulateAllFields = true;
SourceTable = "Segment Header";
layout
{
area(content)
{
group(General)
{
Caption = 'General';
field("No."; Rec."No.")
{
ApplicationArea = All;
Importance = Additional;
trigger OnAssistEdit()
begin
if Rec.AssistEdit(xRec) then
CurrPage.Update();
end;
}
field(Description; Rec.Description)
{
ApplicationArea = All;
trigger OnValidate()
begin
DescriptionOnAfterValidate();
end;
}
field("Salesperson Code"; Rec."Salesperson Code")
{
ApplicationArea = Suite;
trigger OnValidate()
begin
SalespersonCodeOnAfterValidate();
end;
}
field(Date; Rec.Date)
{
ApplicationArea = RelationshipMgmt;
trigger OnValidate()
begin
DateOnAfterValidate();
end;
}
field("No. of Lines"; Rec."No. of Lines")
{
ApplicationArea = RelationshipMgmt;
DrillDown = false;
}
field("No. of Criteria Actions"; Rec."No. of Criteria Actions")
{
ApplicationArea = RelationshipMgmt;
}
}
group(Interaction)
{
Caption = 'Interaction';
field("Interaction Template Code"; Rec."Interaction Template Code")
{
ApplicationArea = RelationshipMgmt;
trigger OnValidate()
begin
InteractionTemplateCodeOnAfter();
end;
}
field("Language Code (Default)"; Rec."Language Code (Default)")
{
ApplicationArea = RelationshipMgmt;
Enabled = LanguageCodeDefaultEnable;
ToolTip = 'Specifies the language code for the segment.';
trigger OnValidate()
begin
LanguageCodeDefaultOnAfterVali();
end;
}
field("Subject (Default)"; Rec."Subject (Default)")
{
ApplicationArea = RelationshipMgmt;
Enabled = SubjectDefaultEnable;
ToolTip = 'Specifies the subject of the segment. The text in the field is used as the subject in e-mails and in Word documents.';
trigger OnValidate()
begin
SubjectDefaultOnAfterValidate();
end;
}
field(Attachment; Rec."Attachment No." > 0)
{
ApplicationArea = RelationshipMgmt;
AssistEdit = true;
BlankZero = true;
Caption = 'Attachment';
Enabled = AttachmentEnable;
ToolTip = 'Specifies if the linked attachment is inherited or unique.';
trigger OnAssistEdit()
begin
Rec.MaintainAttachment();
UpdateEditable();
CurrPage.SegLines.PAGE.UpdateForm();
end;
}
field("Word Template Code"; Rec."Word Template Code")
{
ApplicationArea = RelationshipMgmt;
Caption = 'Word Template Code';
}
field("Modified Word Template"; Rec."Modified Word Template" > 0)
{
ApplicationArea = RelationshipMgmt;
Caption = 'Modified Word Template';
ToolTip = 'Specifies if the Word Template is modified. Use the "Modify Word Template" action to modify the Word Template.';
Enabled = false;
}
field("Ignore Contact Corres. Type"; Rec."Ignore Contact Corres. Type")
{
ApplicationArea = RelationshipMgmt;
Enabled = IgnoreContactCorresTypeEnable;
trigger OnValidate()
begin
IgnoreContactCorresTypeOnAfter();
end;
}
field("Correspondence Type (Default)"; Rec."Correspondence Type (Default)")
{
ApplicationArea = RelationshipMgmt;
Enabled = CorrespondenceTypeDefaultEnabl;
ToolTip = 'Specifies the preferred type of correspondence for the interaction. NOTE: If you use the Web client, you must not select the Hard Copy option because printing is not possible from the web client.';
trigger OnValidate()
begin
CorrespondenceTypeDefaultOnAft();
end;
}
field("Information Flow"; Rec."Information Flow")
{
ApplicationArea = RelationshipMgmt;
Enabled = InformationFlowEnable;
trigger OnValidate()
begin
InformationFlowOnAfterValidate();
end;
}
field("Initiated By"; Rec."Initiated By")
{
ApplicationArea = RelationshipMgmt;
Enabled = InitiatedByEnable;
trigger OnValidate()
begin
InitiatedByOnAfterValidate();
end;
}
field("Unit Cost (LCY)"; Rec."Unit Cost (LCY)")
{
ApplicationArea = RelationshipMgmt;
Enabled = UnitCostLCYEnable;
ToolTip = 'Specifies the cost, in LCY, of one unit of the item or resource on the line.';
trigger OnValidate()
begin
UnitCostLCYOnAfterValidate();
end;
}
field("Unit Duration (Min.)"; Rec."Unit Duration (Min.)")
{
ApplicationArea = RelationshipMgmt;
Enabled = UnitDurationMinEnable;
ToolTip = 'Specifies the duration of a single interaction created for this segment.';
trigger OnValidate()
begin
UnitDurationMinOnAfterValidate();
end;
}
field("Send Word Docs. as Attmt."; Rec."Send Word Docs. as Attmt.")
{
ApplicationArea = RelationshipMgmt;
trigger OnValidate()
begin
SendWordDocsasAttmtOnAfterVali();
end;
}
}
part(SegLines; "Segment Subform")
{
ApplicationArea = RelationshipMgmt;
SubPageLink = "Segment No." = field("No.");
}
group(Campaign)
{
Caption = 'Campaign';
field("Campaign No."; Rec."Campaign No.")
{
ApplicationArea = RelationshipMgmt;
trigger OnValidate()
begin
CampaignNoOnAfterValidate();
end;
}
field("Campaign Description"; Rec."Campaign Description")
{
ApplicationArea = RelationshipMgmt;
Editable = false;
}
field("Campaign Target"; Rec."Campaign Target")
{
ApplicationArea = RelationshipMgmt;
Enabled = CampaignTargetEnable;
trigger OnValidate()
begin
CampaignTargetOnAfterValidate();
end;
}
field("Campaign Response"; Rec."Campaign Response")
{
ApplicationArea = RelationshipMgmt;
Enabled = CampaignResponseEnable;
trigger OnValidate()
begin
CampaignResponseOnAfterValidat();
end;
}
}
}
area(factboxes)
{
systempart(Control1900383207; Links)
{
ApplicationArea = RecordLinks;
Visible = false;
}
systempart(Control1905767507; Notes)
{
ApplicationArea = Notes;
Visible = false;
}
}
}
actions
{
area(navigation)
{
group("&Segment")
{
Caption = '&Segment';
Image = Segment;
action(Criteria)
{
ApplicationArea = RelationshipMgmt;
Caption = 'Criteria';
Image = "Filter";
RunObject = Page "Segment Criteria";
RunPageLink = "Segment No." = field("No.");
ToolTip = 'View a list of the actions that you have performed (adding or removing contacts) in order to define the segment criteria.';
}
action("Oppo&rtunities")
{
ApplicationArea = RelationshipMgmt;
Caption = 'Oppo&rtunities';
Image = OpportunityList;
RunObject = Page "Opportunity List";
RunPageLink = "Segment No." = field("No.");
RunPageView = sorting("Segment No.");
ToolTip = 'View the sales opportunities that are handled by salespeople for the segment. Opportunities must involve a contact and can be linked to campaigns.';
}
action("Create opportunity")
{
ApplicationArea = RelationshipMgmt;
Caption = 'Create Opportunity';
Image = NewOpportunity;
RunObject = Page "Opportunity Card";
RunPageLink = "Segment No." = field("No.");
RunPageMode = Create;
ToolTip = 'Create a new opportunity card.';
}
action("Create opportunities")
{
ApplicationArea = RelationshipMgmt;
Caption = 'Create opportunities';
ToolTip = 'Create a new opportunity card related to the segment.';
trigger OnAction()
begin
CreateOpportunitiesForAllContacts();
end;
}
action("T&asks")
{
ApplicationArea = RelationshipMgmt;
Caption = 'T&asks';
Image = TaskList;
RunObject = Page "Task List";
RunPageLink = "Segment No." = field("No."),
"System To-do Type" = filter(Organizer | "Salesperson Attendee");
RunPageView = sorting("Segment No.");
ToolTip = 'View all marketing tasks that involve the segment.';
}
action("Modify Word Template")
{
ApplicationArea = RelationshipMgmt;
Caption = 'Modify Word Template';
ToolTip = 'Modify the currently selected Word Template to be used for this segment.';
trigger OnAction()
begin
Rec.CreateWordTemplateAttachment();
UpdateEditable();
CurrPage.SegLines.PAGE.UpdateForm();
end;
}
}
}
area(processing)
{
action(LogSegment)
{
ApplicationArea = RelationshipMgmt;
Caption = '&Log';
Image = Approve;
ToolTip = 'Log segments and interactions that are assigned to your segments and delivery attachments that you have sent.';
trigger OnAction()
var
LogSegment: Report "Log Segment";
begin
LogSegment.SetSegmentNo(Rec."No.");
LogSegment.RunModal();
if not Rec.Get(Rec."No.") then begin
Message(LoggedSegmentLbl, Rec."No.");
CurrPage.Close();
end;
end;
}
group("F&unctions")
{
Caption = 'F&unctions';
Image = "Action";
group(Contacts)
{
Caption = 'Contacts';
Image = CustomerContact;
action(AddContacts)
{
ApplicationArea = RelationshipMgmt;
Caption = 'Add Contacts';
Ellipsis = true;
Image = AddContacts;
ToolTip = 'Select which contacts to add to the segment.';
trigger OnAction()
var
SegHeader: Record "Segment Header";
begin
SegHeader := Rec;
SegHeader.SetRecFilter();
REPORT.RunModal(REPORT::"Add Contacts", true, false, SegHeader);
end;
}
action(ReduceContacts)
{
ApplicationArea = RelationshipMgmt;
Caption = 'Reduce Contacts';
Ellipsis = true;
Image = RemoveContacts;
ToolTip = 'Select which contacts to remove from your segment.';
trigger OnAction()
var
SegHeader: Record "Segment Header";
begin
SegHeader := Rec;
SegHeader.SetRecFilter();
REPORT.RunModal(REPORT::"Remove Contacts - Reduce", true, false, SegHeader);
end;
}
action(RefineContacts)
{
ApplicationArea = RelationshipMgmt;
Caption = 'Re&fine Contacts';
Ellipsis = true;
Image = ContactFilter;
ToolTip = 'Select which contacts to keep in your segment.';
trigger OnAction()
var
SegHeader: Record "Segment Header";
begin
SegHeader := Rec;
SegHeader.SetRecFilter();
REPORT.RunModal(REPORT::"Remove Contacts - Refine", true, false, SegHeader);
end;
}
}
group("S&egment")
{
Caption = 'S&egment';
Image = Segment;
action("Go Back")
{
ApplicationArea = RelationshipMgmt;
Caption = 'Go Back';
Image = Undo;
ToolTip = 'Go one step back, for example if you have added contacts to a segment by mistake.';
trigger OnAction()
var
SegmentHistoryMgt: Codeunit SegHistoryManagement;
begin
Rec.CalcFields("No. of Criteria Actions");
if Rec."No. of Criteria Actions" > 0 then
if Confirm(UndoLastCriteriaMsg, false) then
SegmentHistoryMgt.GoBack(Rec."No.");
end;
}
separator(Action54)
{
Caption = '';
}
action(ReuseCriteria)
{
ApplicationArea = RelationshipMgmt;
Caption = 'Reuse Criteria';
Ellipsis = true;
Image = Reuse;
ToolTip = 'Reuse a saved segment criteria.';
trigger OnAction()
begin
Rec.ReuseCriteria();
end;
}
action("Reuse Segment")
{
ApplicationArea = RelationshipMgmt;
Caption = 'Reuse Segment';
Ellipsis = true;
Image = Reuse;
ToolTip = 'Reuse a logged segment.';
trigger OnAction()
begin
Rec.ReuseLogged(0);
end;
}
action(SaveCriteria)
{
ApplicationArea = RelationshipMgmt;
Caption = 'Save Criteria';
Ellipsis = true;
Image = Save;
ToolTip = 'Save a segment criteria.';
trigger OnAction()
begin
Rec.SaveCriteria();
end;
}
}
separator(Action59)
{
Caption = '';
}
group(Action60)
{
Caption = 'Attachment';
Image = Attachments;
action(Open)
{
ApplicationArea = RelationshipMgmt;
Caption = 'Open';
Image = Edit;
ShortCutKey = 'Return';
ToolTip = 'Open the card for the selected record.';
trigger OnAction()
begin
Rec.TestField("Interaction Template Code");
Rec.OpenAttachment();
end;
}
action(Create)
{
ApplicationArea = RelationshipMgmt;
Caption = 'Create';
Image = New;
ToolTip = 'Create an attachment.';
trigger OnAction()
begin
Rec.TestField("Interaction Template Code");
Rec.CreateAttachment();
end;
}
action(Import)
{
ApplicationArea = RelationshipMgmt;
Caption = 'Import';
Image = Import;
ToolTip = 'Import an attachment.';
trigger OnAction()
begin
Rec.TestField("Interaction Template Code");
Rec.ImportAttachment();
end;
}
action(Export)
{
ApplicationArea = RelationshipMgmt;
Caption = 'Export';
Image = Export;
ToolTip = 'Export an attachment.';
trigger OnAction()
begin
Rec.TestField("Interaction Template Code");
Rec.ExportAttachment();
end;
}
action(Remove)
{
ApplicationArea = RelationshipMgmt;
Caption = 'Remove';
Image = Cancel;
ToolTip = 'Remove an attachment.';
trigger OnAction()
begin
Rec.TestField("Interaction Template Code");
Rec.RemoveAttachment(false);
end;
}
}
action(ExportContacts)
{
ApplicationArea = RelationshipMgmt;
Caption = 'E&xport Contacts';
Image = ExportFile;
ToolTip = 'Export the list of contacts to a file on your device. For Business Central online, the file is an Excel workbook. For Business Central on-premises, it''s a text file that you can then open in Excel.';
trigger OnAction()
var
SegLineLocal: Record "Segment Line";
EditinExcel: Codeunit "Edit in Excel";
EditinExcelFilters: Codeunit "Edit in Excel Filters";
ODataUtility: Codeunit "ODataUtility";
EnvironmentInfo: Codeunit "Environment Information";
begin
SegLineLocal.SetRange("Segment No.", Rec."No.");
if EnvironmentInfo.IsSaaS() then begin
EditinExcelFilters.AddFieldV2(ODataUtility.ExternalizeName(SegLineLocal.FieldName(SegLineLocal."Segment No.")), Enum::"Edit in Excel Filter Type"::Equal, Rec."No.", Enum::"Edit in Excel Edm Type"::"Edm.String");
EditinExcel.EditPageInExcel(Text.CopyStr(CurrPage.Caption, 1, 240), Page::"Segment Subform", EditinExcelFilters)
end
else
XMLPORT.Run(XMLPORT::"Export Segment Contact", false, false, SegLineLocal);
end;
}
action("Apply &Mailing Group")
{
ApplicationArea = RelationshipMgmt;
Caption = 'Apply &Mailing Group';
Image = DistributionGroup;
ToolTip = 'Assign a mailing group to a segment.';
trigger OnAction()
var
SegHeader: Record "Segment Header";
begin
SegHeader := Rec;
SegHeader.SetRecFilter();
REPORT.Run(REPORT::"Apply Mailing Group", true, true, SegHeader);
end;
}
}
group("&Print")
{
Caption = '&Print';
Image = Print;
action(CoverSheet)
{
ApplicationArea = RelationshipMgmt;
Caption = 'Print Cover &Sheets';
Image = PrintCover;
ToolTip = 'View cover sheets to send to your contact.';
trigger OnAction()
var
SegHeader: Record "Segment Header";
ContactCoverSheet: Report "Contact Cover Sheet";
begin
SegHeader := Rec;
SegHeader.SetRecFilter();
ContactCoverSheet.SetRunFromSegment();
ContactCoverSheet.SetTableView(SegHeader);
ContactCoverSheet.RunModal();
end;
}
action("Print &Labels")
{
ApplicationArea = RelationshipMgmt;
Caption = 'Print &Labels';
Image = Print;
ToolTip = 'View mailing labels with names and addresses.';
trigger OnAction()
var
SegHeader: Record "Segment Header";
begin
SegHeader := Rec;
SegHeader.SetRecFilter();
REPORT.Run(REPORT::"Segment - Labels", true, false, SegHeader);
end;
}
}
}
area(Promoted)
{
group(Category_Process)
{
Caption = 'Process';
actionref(LogSegment_Promoted; LogSegment)
{
}
actionref(AddContacts_Promoted; AddContacts)
{
}
actionref(CoverSheet_Promoted; CoverSheet)
{
}
}
}
}
trigger OnAfterGetCurrRecord()
begin
UpdateEditable();
end;
trigger OnAfterGetRecord()
begin
Rec.CalcFields("Attachment No.");
Rec.CalcFields("Modified Word Template");
end;
trigger OnInit()
begin
UnitDurationMinEnable := true;
UnitCostLCYEnable := true;
InitiatedByEnable := true;
InformationFlowEnable := true;
IgnoreContactCorresTypeEnable := true;
AttachmentEnable := true;
LanguageCodeDefaultEnable := true;
SubjectDefaultEnable := true;
CorrespondenceTypeDefaultEnabl := true;
CampaignResponseEnable := true;
CampaignTargetEnable := true;
end;
var
LoggedSegmentLbl: Label 'Segment %1 has been logged.', Comment = '%1 = Segment No.';
UndoLastCriteriaMsg: Label 'This will undo the last criteria action.\Do you want to continue?';
CampaignTargetEnable: Boolean;
CampaignResponseEnable: Boolean;
CorrespondenceTypeDefaultEnabl: Boolean;
SubjectDefaultEnable: Boolean;
LanguageCodeDefaultEnable: Boolean;
AttachmentEnable: Boolean;
IgnoreContactCorresTypeEnable: Boolean;
InformationFlowEnable: Boolean;
InitiatedByEnable: Boolean;
UnitCostLCYEnable: Boolean;
UnitDurationMinEnable: Boolean;
CreateOppQst: Label 'Do you want to create an opportunity for all contacts in segment?';
local procedure UpdateEditable()
var
SegmentInteractionLanguage: Record "Segment Interaction Language";
begin
CampaignTargetEnable := Rec."Campaign No." <> '';
CampaignResponseEnable := Rec."Campaign No." <> '';
CorrespondenceTypeDefaultEnabl := Rec."Ignore Contact Corres. Type" = true;
LanguageCodeDefaultEnable := Rec."Interaction Template Code" <> '';
SubjectDefaultEnable := SegmentInteractionLanguage.Get(Rec."No.", 0, Rec."Language Code (Default)");
AttachmentEnable := Rec."Interaction Template Code" <> '';
IgnoreContactCorresTypeEnable := Rec."Interaction Template Code" <> '';
InformationFlowEnable := Rec."Interaction Template Code" <> '';
InitiatedByEnable := Rec."Interaction Template Code" <> '';
UnitCostLCYEnable := Rec."Interaction Template Code" <> '';
UnitDurationMinEnable := Rec."Interaction Template Code" <> '';
LanguageCodeDefaultEnable := Rec."Interaction Template Code" <> '';
OnAfterUpdateEditable();
end;
local procedure DateOnAfterValidate()
begin
CurrPage.SegLines.PAGE.UpdateForm();
end;
local procedure SalespersonCodeOnAfterValidate()
begin
CurrPage.SegLines.PAGE.UpdateForm();
end;
local procedure DescriptionOnAfterValidate()
begin
CurrPage.SegLines.PAGE.UpdateForm();
end;
local procedure InteractionTemplateCodeOnAfter()
begin
UpdateEditable();
CurrPage.SegLines.PAGE.UpdateForm();
CurrPage.Update();
end;
local procedure InformationFlowOnAfterValidate()
begin
CurrPage.SegLines.PAGE.UpdateForm();
end;
local procedure InitiatedByOnAfterValidate()
begin
CurrPage.SegLines.PAGE.UpdateForm();
end;
local procedure UnitCostLCYOnAfterValidate()
begin
CurrPage.SegLines.PAGE.UpdateForm();
end;
local procedure UnitDurationMinOnAfterValidate()
begin
CurrPage.SegLines.PAGE.UpdateForm();
end;
local procedure CorrespondenceTypeDefaultOnAft()
begin
CurrPage.SegLines.PAGE.UpdateForm();
end;
local procedure SendWordDocsasAttmtOnAfterVali()
begin
CurrPage.SegLines.PAGE.UpdateForm();
end;
local procedure LanguageCodeDefaultOnAfterVali()
begin
UpdateEditable();
CurrPage.SegLines.PAGE.UpdateForm();
CurrPage.Update();
end;
local procedure IgnoreContactCorresTypeOnAfter()
begin
UpdateEditable();
CurrPage.SegLines.PAGE.UpdateForm();
end;
local procedure SubjectDefaultOnAfterValidate()
begin
CurrPage.SegLines.PAGE.UpdateForm();
end;
local procedure CampaignResponseOnAfterValidat()
begin
CurrPage.SegLines.PAGE.UpdateForm();
end;
local procedure CampaignTargetOnAfterValidate()
begin
CurrPage.SegLines.PAGE.UpdateForm();
end;
local procedure CampaignNoOnAfterValidate()
begin
if Rec."Campaign No." = '' then begin
Rec."Campaign Target" := false;
Rec."Campaign Response" := false;
end;
Rec.CalcFields("Campaign Description");
CampaignTargetEnable := Rec."Campaign No." <> '';
CampaignResponseEnable := Rec."Campaign No." <> '';
CurrPage.SegLines.PAGE.UpdateForm();
end;
local procedure CreateOpportunitiesForAllContacts()
begin
if Confirm(CreateOppQst) then
Rec.CreateOpportunities();
end;
[IntegrationEvent(true, false)]
local procedure OnAfterUpdateEditable()
begin
end;
}