Erstellung personalisierter Anruferkarten-Factboxes
Erstellen der Factbox
Diese Dokumentation erklärt, wie Sie eine benutzerdefinierte Factbox für die Phone Connect Caller Card erstellen und wie Sie diese mit den Caller Cards verknüpfen.
Wir beginnen mit der Erstellung einer benutzerdefinierten Factbox, die in diesem Beispiel die Projekte anzeigt, die mit dem jeweiligen Kontakt oder Kunden verknüpft sind.
| AL |
|---|
| page 00002 "SIM_CTI Meine Neue Factbox"
{
ApplicationArea = All;
Caption = 'Meine Neue Factbox';
PageType = Cardpart;
layout
{
area(content)
{
group(Allgemein)
{
Caption = 'Allgemein';
field("ArtikelNr."; GlobalProjectAmountInteger)
{
Caption = 'Projekte';
ToolTip = 'Hier sehen Sie die gefundenen Projekteinträge';
// Wird ausgelöst, wenn der Benutzer auf das Feld klickt (Drill-Down-Aktion)
trigger OnDrillDown()
var
LocalJobListPage: Page "Job List";
begin
// Nur markierte Datensätze in der Jobliste anzeigen
GlobalRecordJob.MarkedOnly;
// Die Ansicht der Jobliste auf die markierten Datensätze setzen
LocalJobListPage.SetTableView(GlobalRecordJob);
// Die Jobliste ausführen
LocalJobListPage.RunModal();
CalcEntries();
CurrPage.Update();
end;
}
}
}
}
// Bestimmt die Beziehung zwischen einem Kontakt oder Kunden und setzt globale Variablen entsprechend
procedure CheckRelation(ParamCode: Code[20]; ParamEnumSIMCTIBusinessMappingType: Enum "SIM_CTI Business Mapping Type")
var
LocalRecordContact: Record Contact;
LocalRecordContactBusinessRelation: Record "Contact Business Relation";
begin
// Geschäftsbeziehungen auf die mit Kunden verknüpften beschränken
LocalRecordContactBusinessRelation.SetRange("Link to Table", LocalRecordContactBusinessRelation."Link to Table"::Customer);
// Logik basierend auf dem Mapping-Typ (Kontakt oder Kunde) behandeln
case ParamEnumSIMCTIBusinessMappingType of
ParamEnumSIMCTIBusinessMappingType::Contact:
begin
// Den Kontaktdatensatz abrufen
LocalRecordContact.Get(ParamCode);
// Den globalen Kontaktcode abhängig davon setzen, ob der Kontakt Teil eines Unternehmens ist
if LocalRecordContact."Company No." <> '' then
GlobalContactCode := LocalRecordContact."Company No."
else
GlobalContactCode := ParamCode;
// Den zugehörigen Kunden für den Kontakt finden
LocalRecordContactBusinessRelation.SetRange("Contact No.", GlobalContactCode);
if LocalRecordContactBusinessRelation.FindFirst() then
GlobalCustomerCode := LocalRecordContactBusinessRelation."No.";
end;
ParamEnumSIMCTIBusinessMappingType::Customer:
begin
// Wenn der Mapping-Typ Kunde ist, Kunden setzen und den zugehörigen Kontakt finden
GlobalCustomerCode := ParamCode;
LocalRecordContactBusinessRelation.SetRange("No.", ParamCode);
if LocalRecordContactBusinessRelation.FindFirst() then
GlobalContactCode := LocalRecordContactBusinessRelation."Contact No.";
end;
end;
// Nach dem Setzen der globalen Variablen die Projekteinträge berechnen
CalcEntries();
end;
// Berechnet die Anzahl der relevanten Job-/Projekteinträge
procedure CalcEntries()
var
LocalRecordContact: Record Contact; // Lokale Variable zum Durchlaufen der Kontakte
begin
GlobalProjectAmountInteger := 0; // Projektzähler zurücksetzen
if GlobalContactCode <> '' then begin
// Kontakte basierend auf der gespeicherten Firmennummer filtern
LocalRecordContact.SetRange("Company No.", GlobalContactCode);
if LocalRecordContact.FindSet() then
repeat
// Kundenfilter anwenden, falls gesetzt
if GlobalCustomerCode <> '' then
GlobalRecordJob.SetRange("Sell-to Customer No.", GlobalCustomerCode);
// Jobs nach Kontaktnummer filtern
GlobalRecordJob.SetRange("Sell-to Contact No.", LocalRecordContact."No.");
// Passende Projekteinträge markieren
if GlobalRecordJob.FindSet() then begin
GlobalRecordJob.Mark();
GlobalRecordJob.Reset(); // Filter für die nächste Schleifeniteration zurücksetzen
end;
until LocalRecordContact.Next() = 0;
end;
// Filter zurücksetzen und erneut anwenden, um markierte Jobs zu zählen
GlobalRecordJob.Reset();
GlobalRecordJob.SetRange("Sell-to Customer No.", GlobalCustomerCode);
GlobalRecordJob.MarkedOnly;
// Die markierten Projekteinträge zählen
GlobalProjectAmountInteger += GlobalRecordJob.Count;
// Die Seite aktualisieren, um die Feldanzeige zu erneuern
CurrPage.Update();
end;
var
GlobalRecordJob: Record Job; // Enthält die Projekteinträge
GlobalProjectAmountInteger: Integer; // Speichert die Anzahl der gefundenen Jobs
GlobalCustomerCode: Code[20]; // Speichert den Kundencode
GlobalContactCode: Code[20]; // Speichert den Kontaktcode
}
|
Der unten gezeigte Beispielcode demonstriert, wie die Beziehung zwischen dem Kontakt und dem Kunden identifiziert wird und wie die entsprechenden Daten sowohl für den Kontakt als auch für den Kunden anschließend angezeigt werden.
Hinzufügen der Factbox zur Caller Card
Nachdem Sie Ihre Factbox erstellt haben, muss sie mit der gewünschten Phone Connect Caller Card verknüpft werden.
Dazu muss eine neue Page Extension der entsprechenden Caller Card erstellt werden.
Im unten gezeigten Beispiel wird die Caller Card "Call In Contact Sales" erweitert. Da es sich um eine Kontakt-Caller-Card handelt, wird der Enum-Wert entsprechend auf Kontakt gesetzt.
| AL |
|---|
| pageextension 00001 "SIM_CTIDocu CTI" extends "SIM_CTI Call In Cont. - Sales"
{
layout
{
addafter(SIM_CTISalesFB)
{
part(NewFactbox; "SIM_CTI Meine Neue Factbox")
{
ApplicationArea = all;
}
}
}
trigger OnAfterGetCurrRecord()
var
LocalEnumSIMCTIBusinessMappingType: Enum "SIM_CTI Business Mapping Type";
begin
CurrPage.NewFactbox.Page.CheckRelation(Rec."No.", LocalEnumSIMCTIBusinessMappingType::Contact);
end;
}
|
Nachdem Sie Ihre benutzerdefinierte Factbox erstellt und mit der Caller Card verknüpft haben, ist die Einrichtung abgeschlossen.
Ihre Factbox ist nun bereit für die nahtlose Nutzung.