Codeunit 5053 TAPIManagement, source in 29
Source29
src/Layers/W1/BaseApp/CRM/Interaction/TAPIManagement.Codeunit.al189 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.Interaction;
using Microsoft.Bank.BankAccount;
using Microsoft.CRM.BusinessRelation;
using Microsoft.CRM.Contact;
using Microsoft.CRM.Segment;
using Microsoft.CRM.Task;
using Microsoft.Purchases.Vendor;
using Microsoft.Sales.Customer;
codeunit 5053 TAPIManagement
{
trigger OnRun()
begin
end;
var
#pragma warning disable AA0074
Text001: Label 'No Contact found.';
#pragma warning disable AA0470
Text002: Label 'No registered phone numbers have been found for this %1.';
#pragma warning restore AA0470
#pragma warning restore AA0074
procedure Dial(PhoneNumber: Text[80]): Boolean
begin
HyperLink(StrSubstNo('tel:%1', PhoneNumber));
exit(true);
end;
procedure DialContCustVendBank(TableNo: Integer; No: Code[20]; PhoneNo: Text[30]; ContAltAddrCode: Code[10])
var
ContBusRel: Record "Contact Business Relation";
Contact: Record Contact;
Task: Record "To-do";
TempSegmentLine: Record "Segment Line" temporary;
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeDialContCustVendBank(TableNo, No, PhoneNo, ContAltAddrCode, IsHandled);
if IsHandled then
exit;
case TableNo of
Database::Contact:
Contact.Get(No);
Database::"To-do":
begin
Task.Get(No);
Task.TestField("Contact No.");
Contact.Get(Task."Contact No.");
end;
else begin
ContBusRel.Reset();
ContBusRel.SetCurrentKey("Link to Table", "No.");
case TableNo of
Database::Customer:
ContBusRel.SetRange("Link to Table", ContBusRel."Link to Table"::Customer);
Database::Vendor:
ContBusRel.SetRange("Link to Table", ContBusRel."Link to Table"::Vendor);
Database::"Bank Account":
ContBusRel.SetRange("Link to Table", ContBusRel."Link to Table"::"Bank Account");
else
OnDialContCustVendBankCaseElse(ContBusRel, TableNo);
end;
ContBusRel.SetRange("No.", No);
if ContBusRel.FindFirst() then
Contact.Get(ContBusRel."Contact No.")
else
Error(Text001);
end;
end;
OnDialContCustVendBankOnBeforemakePhoneCall(Contact);
// Call Make Phone Call Wizard
TempSegmentLine.MakePhoneCallFromContact(Contact, Task, TableNo, PhoneNo, ContAltAddrCode);
end;
procedure ShowNumbers(ContactNo: Code[20]; ContAltAddrCode: Code[10]): Text[260]
var
TempCommunicationMethod: Record "Communication Method" temporary;
Contact: Record Contact;
Contact2: Record Contact;
ContAltAddrCode2: Code[10];
begin
if not Contact.Get(ContactNo) then
exit;
if ContAltAddrCode = '' then
ContAltAddrCode2 := Contact.ActiveAltAddress(Today)
else
ContAltAddrCode2 := ContAltAddrCode;
CreateCommMethod(Contact, TempCommunicationMethod, ContactNo, ContAltAddrCode);
// Get linked company phonenumbers
if (Contact.Type = Contact.Type::Person) and (Contact."Company No." <> '') then begin
Contact2.Get(Contact."Company No.");
if ContAltAddrCode = '' then
ContAltAddrCode2 := Contact2.ActiveAltAddress(Today)
else
ContAltAddrCode2 := ContAltAddrCode;
CreateCommMethod(Contact2, TempCommunicationMethod, ContactNo, ContAltAddrCode2);
end;
if TempCommunicationMethod.FindFirst() then begin
if PAGE.RunModal(PAGE::"Contact Through", TempCommunicationMethod) = ACTION::LookupOK then
exit(TempCommunicationMethod.Number);
end else
Error(Text002, Contact.TableCaption());
end;
local procedure TrimCode("Code": Code[20]) TrimString: Text[20]
begin
TrimString := CopyStr(Code, 1, 1) + LowerCase(CopyStr(Code, 2, StrLen(Code) - 1))
end;
local procedure CreateCommMethod(Contact: Record Contact; var TempCommunicationMethod: Record "Communication Method" temporary; ContactNo: Code[20]; ContAltAddrCode: Code[10])
var
ContAltAddr: Record "Contact Alt. Address";
begin
TempCommunicationMethod.Init();
TempCommunicationMethod."Contact No." := ContactNo;
TempCommunicationMethod.Name := Contact.Name;
if Contact."Phone No." <> '' then begin
TempCommunicationMethod."Key" += 1;
TempCommunicationMethod.Description := CopyStr(Contact.FieldCaption("Phone No."), 1, MaxStrLen(TempCommunicationMethod.Description));
TempCommunicationMethod.Number := Contact."Phone No.";
TempCommunicationMethod.Type := Contact.Type;
TempCommunicationMethod.Insert();
end;
if Contact."Mobile Phone No." <> '' then begin
TempCommunicationMethod."Key" += 1;
TempCommunicationMethod.Description := CopyStr(Contact.FieldCaption("Mobile Phone No."), 1, MaxStrLen(TempCommunicationMethod.Description));
TempCommunicationMethod.Number := Contact."Mobile Phone No.";
TempCommunicationMethod.Type := Contact.Type;
TempCommunicationMethod.Insert();
end;
// Alternative address
if ContAltAddr.Get(Contact."No.", ContAltAddrCode) then begin
if ContAltAddr."Phone No." <> '' then begin
TempCommunicationMethod."Key" += 1;
TempCommunicationMethod.Description :=
CopyStr(TrimCode(ContAltAddr.Code) + ' - ' + ContAltAddr.FieldCaption("Phone No."), 1, MaxStrLen(TempCommunicationMethod.Description));
TempCommunicationMethod.Number := ContAltAddr."Phone No.";
TempCommunicationMethod.Type := Contact.Type;
TempCommunicationMethod.Insert();
end;
if ContAltAddr."Mobile Phone No." <> '' then begin
TempCommunicationMethod."Key" += 1;
TempCommunicationMethod.Description :=
CopyStr(TrimCode(ContAltAddr.Code) + ' - ' + ContAltAddr.FieldCaption("Mobile Phone No."), 1, MaxStrLen(TempCommunicationMethod.Description));
TempCommunicationMethod.Number := ContAltAddr."Mobile Phone No.";
TempCommunicationMethod.Type := Contact.Type;
TempCommunicationMethod.Insert();
end;
end;
OnAfterCreateCommMethod(Contact, TempCommunicationMethod, ContactNo, ContAltAddrCode);
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeDialContCustVendBank(TableNo: Integer; No: Code[20]; PhoneNo: Text[30]; ContAltAddrCode: Code[10]; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnDialContCustVendBankOnBeforemakePhoneCall(var Contact: Record Contact)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnDialContCustVendBankCaseElse(var ContactBusinessRelation: Record "Contact Business Relation"; TableNo: Integer)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterCreateCommMethod(Contact: Record Contact; var TempCommunicationMethod: Record "Communication Method" temporary; ContactNo: Code[20]; ContAltAddrCode: Code[10])
begin
end;
}