Integration Events für Entwickler

Connector 365 Addressee Control bietet verschiedene Integration Events, die es Entwicklern ermöglichen, die Funktionalität der App zu erweitern und an spezifische Anforderungen anzupassen.

Diese Dokumentation richtet sich an AL-Entwickler. Grundkenntnisse in der Business Central Extension-Entwicklung werden vorausgesetzt.

OnBeforeGetRecipients

Dieses Event wird aufgerufen, bevor die Empfängeradressen ermittelt werden. Es ermöglicht die vollständige Kontrolle über den Prozess der Empfängerermittlung.

Verwendung

1
2
3
4
5
6
[IntegrationEvent(false, false)]
local procedure OnBeforeGetRecipients(
    BaseParameters: Record "BEL365 Base Parameters";
    var TempRecipient: Record "BEL365 Temp Recipient" temporary;
    var OverrideRecipients: Boolean
)

Parameter

Parameter Typ Beschreibung
BaseParameters: Record “BEL365 Base Parameters” Enthält alle relevanten Parameter zum aktuellen Vorgang
TempRecipient Record “BEL365 Base Parameters” temporary Temporäre Tabelle für Empfänger. Kann befüllt werden, um Standard-Empfänger zu ergänzen oder zu ersetzen
OverrideRecipients Boolean Wenn auf true gesetzt, wird die Standard-Logik übersprungen

Beispiel

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
[EventSubscriber(ObjectType::Codeunit, Codeunit::"BELADC Addressee Control Mgmt", 'OnBeforeGetRecipients', '', false, false)]
local procedure OnBeforeGetRecipientsCustom(
    BaseParameters: Record "BEL365 Base Parameters;
    var TempRecipient: Record "BEL365 Temp Recipient temporary;
    var OverrideRecipients: Boolean
)
var
    SalesHeader: Record "Sales Header";
    DocumentRecRef: RecordRef;
begin
    DocumentRecRef.GetTable(BaseParameters."Record ID");
    
    if DocumentRecRef.Number <> Database::"Sales Header" then
        exit;
        
    DocumentRecRef.SetTable(SalesHeader);
    
    // Beispiel: Für VIP-Kunden immer zusätzlich die Geschäftsleitung informieren
    if IsVIPCustomer(SalesHeader."Sell-to Customer No.") then begin
        AddRecipient(TempRecipient, 'management@company.com', TempRecipient."Recipient Type"::CC);
    end;
end;

OnGetHeaderFromReportUsageOnCaseElse

Dieses Event ermöglicht die Unterstützung kundenspezifischer Belegarten, die nicht standardmäßig von der App unterstützt werden.

Verwendung

1
2
3
4
5
6
[IntegrationEvent(false, false)]
local procedure OnGetHeaderFromReportUsageOnCaseElse(
    ReportUsage: Enum "Report Selection Usage";
    PostedDocNo: Code[20];
    var DocumentHeaderVariant: Variant
)

Parameter

Parameter Typ Beschreibung
ReportUsage Enum “Report Selection Usage” Die Berichtsverwendung
PostedDocNo Code[20] Die Belegnr. um den Belegkoopf zu erhalten
DocumentHeaderVariant Variant Der Belegkopf, der zurückgegeben werden soll

Beispiel

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
[EventSubscriber(ObjectType::Codeunit, Codeunit::"CBC Document Header Mgt.", 'OnGetHeaderFromReportUsageOnCaseElse', '', false, false)]
local procedure HandleCustomDocumentType(
    ReportUsage: Enum "Report Selection Usage";
    PostedDocNo: Code[20];
    var DocumentHeaderVariant: Variant;
)
var
    Job: Record Job;
begin
    if ReportUsage = ReportUsage::JQ then
        if Job.Get(PostedDocNo) then
            DocumentHeaderVariant := Job
end;

OnIsReportUsageSupportedOnCaseElse

Dieses Event ermöglicht es, zusätzliche Berichtsverwendungen als unterstützt zu markieren, die nicht standardmäßig von der App erkannt werden.

Verwendung

1
2
3
4
5
[IntegrationEvent(false, false)]
local procedure OnIsReportUsageSupportedOnCaseElse(
    ReportUsage: Enum "Report Selection Usage";
    var Supported: Boolean
)

Parameter

Parameter Typ Beschreibung
ReportUsage Enum “Report Selection Usage” Die zu prüfende Berichtsverwendung
Supported Boolean Muss auf true gesetzt werden, damit die Verwendung unterstützt wird

Beispiel

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
[EventSubscriber(ObjectType::Codeunit, Codeunit::"CBC Report Usage Mgt.", 'OnIsReportUsageSupportedOnCaseElse', '', false, false)]
local procedure OnIsReportUsageSupportedCustom(
    ReportUsage: Enum "Report Selection Usage";
    var Supported: Boolean
)
begin
    // Beispiel: Unterstützung für eine benutzerdefinierte Berichtsverwendung
    case ReportUsage of
        ReportUsage::Job
            Supported := true;
    end;
end;

Verwendungszweck

Verwenden Sie dieses Event, wenn Sie:

  • Eigene Berichtsverwendungen erstellt haben
  • Die Addressee Control Funktionalität für diese Verwendungen aktivieren möchten
  • Die Einrichtung der Adresspriorität für benutzerdefinierte Berichte ermöglichen wollen

OnBeforeSetDefaultAddressPrioritiesForUsage

Dieses Event wird aufgerufen, bevor die Standard-Adressprioritäten für eine Berichtsverwendung gesetzt werden. Es ermöglicht das Definieren eigener Standard-Prioritäten für benutzerdefinierte Berichtsverwendungen.

Verwendung

1
2
3
4
5
[IntegrationEvent(false, false)]
local procedure OnBeforeSetDefaultAddressPrioritiesForUsage(
    ReportUsage: Enum "Report Selection Usage";
    var IsHandled: Boolean
)

Parameter

Parameter Typ Beschreibung
ReportUsage Enum “Report Selection Usage” Die Berichtsverwendung, für die Prioritäten gesetzt werden
IsHandled Boolean Muss auf true gesetzt werden, damit die Standardlogik ersetzt wird

Beispiel

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[EventSubscriber(ObjectType::Codeunit, Codeunit::"CBC Address Priority Setup", 'OnBeforeSetDefaultAddressPrioritiesForUsage', '', false, false)]
local procedure OnBeforeSetDefaultAddressPrioritiesCustom(
    ReportUsage: Enum "Report Selection Usage";
    var IsHandled: Boolean
)
var
    Field: Record Field;
    CustomReportSelectionSetup: Record "BELADC Cus. Rep. Sel. Mapping";
    AddressPriority: Record "BELADC Address Priority";
    AddresseeControlMgmt: Codeunit "BELADC Addressee Control Mgmt";
begin
    if ReportUsage <> ReportUsage::Job then
        exit;
        
    CustomReportSelectionSetup."Report Usage" := ReportUsage;
    CustomReportSelectionSetup."Cus. Rep. Select. Field No." := 2;
    if Field.Get(AddresseeControlMgmt.GetTableIdFromReportUsage(ReportUsage), CustomReportSelectionSetup."Cus. Rep. Select. Field No.") then begin
        CustomReportSelectionSetup."Cus. Rep. Select. Field Name" := Field."Field Caption";
        CustomReportSelectionSetup.Insert();
    end;

    AddressPriority.Init();
    AddressPriority.NewRecord();
    AddressPriority."Target Table No." := Database::"Custom Report Selection";
    AddressPriority."Target Field No." := 9;
    if AddressPriority.Insert() then;
    
    IsHandled := true;
end;

Verwendungszweck

Verwenden Sie dieses Event, wenn Sie:

  • Standard-Adressprioritäten für benutzerdefinierte Berichtsverwendungen definieren möchten
  • Eine konsistente Einrichtung über mehrere Mandanten hinweg sicherstellen wollen
  • Die manuelle Einrichtung der Adressprioritäten automatisieren möchten

Best Practices

  1. Prüfen Sie immer den Record-Typ: Verwenden Sie RecordRef.Number oder RecordRef.Name, um sicherzustellen, dass Sie den richtigen Datensatz bearbeiten
  2. Setzen Sie IsHandled bzw. OverrideRecipients bewusst: Diese Parameter bestimmen, ob die Standard-Verarbeitung durchgeführt wird
  3. Testen Sie gründlich: Events greifen tief in die Kernlogik ein und sollten ausführlich getestet werden
  4. Dokumentieren Sie Ihre Erweiterungen: Halten Sie fest, welche Events Sie verwenden und warum

Weitere Informationen

Für detaillierte technische Informationen und weitere Events konsultieren Sie bitte die AL-Objektdokumentation in Ihrer Entwicklungsumgebung oder wenden Sie sich an den BELWARE Support.

Kompatibilität

Event Verfügbar ab Version
OnBeforeGetRecipients 1.12.0.0
OnIsReportUsageSupportedOnCaseElse 1.14.0.0
OnBeforeSetDefaultAddressPrioritiesForUsage 1.14.0.0
OnGetHeaderFromReportUsageOnCaseElse 1.15.0.0
Events können sich in zukünftigen Versionen ändern. Beachten Sie die Release Notes bei Updates der App.