Page 1604 Office New Contact Dlg, source in 29
Source29
src/Layers/W1/BaseApp/CRM/Outlook/OfficeNewContactDlg.Page.al148 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.Outlook;
using Microsoft.CRM.BusinessRelation;
using Microsoft.CRM.Contact;
page 1604 "Office New Contact Dlg"
{
Caption = 'Do you want to add a new contact?';
DeleteAllowed = false;
InsertAllowed = false;
SourceTable = Contact;
SourceTableTemporary = true;
layout
{
area(content)
{
group(Control2)
{
InstructionalText = 'The sender of this email is not among your contacts.';
//The GridLayout property is only supported on controls of type Grid
//GridLayout = Rows;
ShowCaption = false;
field(NewPersonContact; StrSubstNo(CreatePersonContactLbl, TempOfficeAddinContext.Name))
{
ApplicationArea = All;
Editable = false;
ShowCaption = false;
ToolTip = 'Specifies a new person contact.';
trigger OnDrillDown()
begin
CreateNewContact(Rec.Type::Person);
end;
}
field(LinkContact; LinkContactLbl)
{
ApplicationArea = All;
Editable = false;
ShowCaption = false;
ToolTip = 'Specifies the contacts in your company.';
trigger OnDrillDown()
begin
Page.Run(Page::"Contact List");
end;
}
field(Lb1; '')
{
ApplicationArea = All;
Editable = false;
ShowCaption = false;
}
field(Lb2; '')
{
ApplicationArea = All;
Editable = false;
ShowCaption = false;
}
field(CurrentCompany; StrSubstNo(CurrentCompanyLbl, CompanyName()))
{
ApplicationArea = All;
Editable = false;
ShowCaption = false;
}
field(ChangeCompany; ChangeCompanyLbl)
{
ApplicationArea = All;
Editable = false;
ShowCaption = false;
trigger OnDrillDown()
var
OfficeMgt: Codeunit "Office Management";
begin
OfficeMgt.SelectAndChangeCompany();
end;
}
}
}
}
actions
{
}
trigger OnOpenPage()
var
OfficeMgt: Codeunit "Office Management";
begin
OfficeMgt.GetContext(TempOfficeAddinContext);
end;
var
CreatePersonContactLbl: Label 'Add %1 as a contact', Comment = '%1 = Contact name';
LinkContactLbl: Label 'View existing contacts';
TempOfficeAddinContext: Record "Office Add-in Context" temporary;
ChangeCompanyLbl: Label 'Wrong company?';
CurrentCompanyLbl: Label 'Current company: %1', Comment = '%1 - the name of the current company';
local procedure NotLinked(Contact: Record Contact): Boolean
var
ContBusRel: Record "Contact Business Relation";
begin
// Person could be linked directly or through Company No.
ContBusRel.SetFilter("Contact No.", '%1|%2', Contact."No.", Contact."Company No.");
ContBusRel.SetFilter("No.", '<>''''');
exit(ContBusRel.IsEmpty);
end;
local procedure CreateNewContact(ContactType: Enum "Contact Type")
var
TempContact: Record Contact temporary;
Contact: Record Contact;
NameLength: Integer;
begin
Contact.SetRange("Search E-Mail", TempOfficeAddinContext.Email);
if not Contact.FindFirst() then begin
NameLength := 50;
if StrPos(TempOfficeAddinContext.Name, ' ') = 0 then
NameLength := 30;
TempContact.Init();
TempContact.Validate(Type, ContactType);
TempContact.Validate(Name, CopyStr(TempOfficeAddinContext.Name, 1, NameLength));
TempContact.Validate("E-Mail", TempOfficeAddinContext.Email);
TempContact.Insert();
Commit();
end;
if Action::LookupOK = Page.RunModal(Page::"Office Contact Details Dlg", TempContact) then begin
Clear(Contact);
Contact.TransferFields(TempContact);
Contact.Insert(true);
Commit();
if NotLinked(Contact) then
Page.Run(Page::"Contact Card", Contact)
else
Contact.ShowBusinessRelation(Enum::"Contact Business Relation Link To Table"::" ", false);
CurrPage.Close();
end;
end;
}