Ga naar inhoud

Persoonlijke bellerkaart factboxes maken

De FactBox maken

Deze documentatie legt uit hoe je een aangepaste FactBox maakt voor de Phone Connect Caller Card en hoe je deze koppelt aan de Caller Cards. We beginnen met het maken van een aangepaste FactBox die in dit voorbeeld de projecten toont die gekoppeld zijn aan de betreffende contactpersoon of klant.

AL
page 00002 "SIM_CTI Mijn Nieuwe FactBox"
{
    ApplicationArea = All;
    Caption = 'Mijn Nieuwe FactBox';
    PageType = Cardpart;

    layout
    {
        area(content)
        {
            group(Algemeen)
            {
                Caption = 'Algemeen';
                field("ArtikelNr."; GlobalProjectAmountInteger)
                {
                    Caption = 'Projecten';
                    ToolTip = 'Hier ziet u de gevonden projectvermeldingen';

                    // Wordt geactiveerd wanneer de gebruiker op het veld klikt (Drill-Down-actie)
                    trigger OnDrillDown()
                    var
                        LocalJobListPage: Page "Job List";
                    begin
                        // Alleen gemarkeerde records in de projectlijst tonen
                        GlobalRecordJob.MarkedOnly;

                        // De weergave van de lijst instellen op gemarkeerde records
                        LocalJobListPage.SetTableView(GlobalRecordJob);

                        // De projectlijst uitvoeren
                        LocalJobListPage.RunModal();
                        CalcEntries();
                        CurrPage.Update();
                    end;
                }
            }
        }
    }

    // Bepaalt de relatie tussen een contactpersoon of klant en stelt globale variabelen in
    procedure CheckRelation(ParamCode: Code[20]; ParamEnumSIMCTIBusinessMappingType: Enum "SIM_CTI Business Mapping Type")
    var
        LocalRecordContact: Record Contact;
        LocalRecordContactBusinessRelation: Record "Contact Business Relation";
    begin
        // Alleen bedrijfsrelaties tonen die gekoppeld zijn aan klanten
        LocalRecordContactBusinessRelation.SetRange("Link to Table", LocalRecordContactBusinessRelation."Link to Table"::Customer);

        // Logica verwerken op basis van het Mapping Type (Contact of Klant)
        case ParamEnumSIMCTIBusinessMappingType of
            ParamEnumSIMCTIBusinessMappingType::Contact:
                begin
                    // De contactrecord ophalen
                    LocalRecordContact.Get(ParamCode);

                    // De globale contactcode instellen afhankelijk van bedrijfsnummer
                    if LocalRecordContact."Company No." <> '' then
                        GlobalContactCode := LocalRecordContact."Company No."
                    else
                        GlobalContactCode := ParamCode;

                    // De gekoppelde klant vinden
                    LocalRecordContactBusinessRelation.SetRange("Contact No.", GlobalContactCode);
                    if LocalRecordContactBusinessRelation.FindFirst() then
                        GlobalCustomerCode := LocalRecordContactBusinessRelation."No.";
                end;

            ParamEnumSIMCTIBusinessMappingType::Customer:
                begin
                    // Als het Mapping Type Klant is, klantcode instellen en gekoppeld contact zoeken
                    GlobalCustomerCode := ParamCode;
                    LocalRecordContactBusinessRelation.SetRange("No.", ParamCode);
                    if LocalRecordContactBusinessRelation.FindFirst() then
                        GlobalContactCode := LocalRecordContactBusinessRelation."Contact No.";
                end;
        end;

        // Na instellen van de globale variabelen de projectvermeldingen berekenen
        CalcEntries();
    end;

    // Berekent het aantal relevante projectvermeldingen
    procedure CalcEntries()
    var
        LocalRecordContact: Record Contact; // Lokale variabele om contactpersonen te doorlopen
    begin
        GlobalProjectAmountInteger := 0; // Teller resetten

        if GlobalContactCode <> '' then begin
            // Filter op contactpersonen met hetzelfde bedrijfsnummer
            LocalRecordContact.SetRange("Company No.", GlobalContactCode);

            if LocalRecordContact.FindSet() then
                repeat
                    // Filter op klant indien ingesteld
                    if GlobalCustomerCode <> '' then
                        GlobalRecordJob.SetRange("Sell-to Customer No.", GlobalCustomerCode);

                    // Filter op contactnummer
                    GlobalRecordJob.SetRange("Sell-to Contact No.", LocalRecordContact."No.");

                    // Relevante projecten markeren
                    if GlobalRecordJob.FindSet() then begin
                        GlobalRecordJob.Mark();
                        GlobalRecordJob.Reset(); // Reset voor volgende iteratie
                    end;
                until LocalRecordContact.Next() = 0;
        end;

        // Filters resetten en gemarkeerde projecten tellen
        GlobalRecordJob.Reset();
        GlobalRecordJob.SetRange("Sell-to Customer No.", GlobalCustomerCode);
        GlobalRecordJob.MarkedOnly;

        // Aantal gemarkeerde projecten optellen
        GlobalProjectAmountInteger += GlobalRecordJob.Count;

        // Pagina verversen om het veld bij te werken
        CurrPage.Update();
    end;

    var
        GlobalRecordJob: Record Job;                 // Bevat projectvermeldingen
        GlobalProjectAmountInteger: Integer;         // Aantal gevonden projecten
        GlobalCustomerCode: Code[20];                // Klantcode
        GlobalContactCode: Code[20];                 // Contactcode
}

De onderstaande voorbeeldcode toont hoe de relatie tussen de contactpersoon en de klant wordt bepaald, en hoe de bijbehorende gegevens voor beide worden weergegeven.

De FactBox toevoegen aan de Caller Card

Zodra je je FactBox hebt gemaakt, moet deze gekoppeld worden aan de gewenste Phone Connect Caller Card. Hiervoor maak je een nieuwe Page Extension van de betreffende Caller Card.

In het onderstaande voorbeeld wordt de Caller Card "Call In Contact Sales" uitgebreid. Aangezien dit een contactpersoon betreft, wordt de Enum-waarde ingesteld op Contact.

AL
pageextension 00001 "SIM_CTIDocu CTI" extends "SIM_CTI Call In Cont. - Sales"
{
    layout
    {
        addafter(SIM_CTISalesFB)
        {
            part(NewFactbox; "SIM_CTI Mijn Nieuwe FactBox")
            {
                ApplicationArea = all;
            }
        }
    }

    trigger OnAfterGetCurrRecord()
    var
        LocalEnumSIMCTIBusinessMappingType: Enum "SIM_CTI Business Mapping Type";
    begin
        CurrPage.NewFactbox.Page.CheckRelation(Rec."No.", LocalEnumSIMCTIBusinessMappingType::Contact);
    end;
}

Zodra je je aangepaste FactBox hebt gemaakt en gekoppeld aan de Caller Card, is de configuratie voltooid. Je FactBox is nu klaar voor gebruik.