How to – Smart notifications

Veröffentlicht von

Mit Smart Notifications können vereinfacht Benutzerinteraktionen während eines aktuellen Prozesses umgesetzt werden. (Detailinfos)

Im aktuellen Beispiel wird bei der Auftragserfassung geprüft, ob ein Debitor eine Email Adresse für einen Belegversand per Mail hinterlegt hat. Bei Bedarf kann er die Mailadresse des Kunden direkt aus dem Verkaufsbeleg heraus ergänzen.

1. Funktion für die Notification erstellen

Hier wird die Notification erstellt. Message beinhaltet die Benutzermeldung, Scope local definiert, dass die Notifikation sich auf die lokale Page bezieht. Mit SetData können verschieden Inhalte an die «Scope Action» übergeben werden.  Send aktiviert die Anzeige der Notification.

procedure CheckCustomer(SalesHeader: Record "Sales Header")
var
    CustNotification: Notification;
    CustomerMsg: Label 'Der Debitor hat keine Mailadresse eingetragen';
    CustCardTxt: Label 'Debitorenkarte...';
begin
    if SalesHeader."Sell-to E-Mail" = '' THEN begin
        CustNotification.Message(CustomerMsg);
        CustNotification.Scope(NotificationScope::LocalScope);
        CustNotification.SetData('Customer No.', SalesHeader."Sell-to Customer No.");
        CustNotification.AddAction(CustCardTxt, 50102, 'OpenCustomerCard');
        CustNotification.Send();
    end;
end;

2. Funktion für die Aktion erstellen

In der Action Funktion wird die gewünschte Interaktion ausprogrammiert. Hier das Öffnen der Debitorenkarte zur Ergänzung der Mail Adresse.

procedure OpenCustomerCard(CustomerNotification: Notification)
var
  Cust: Record Customer;
  CustCard: Page "Customer Card";
begin
  Cust.Reset();
  Cust.SetRange("No.", CustomerNotification.GetData('Customer No.'));
  CustCard.SetTableView(Cust);
  CustCard.RunModal();
end;

3. Event für den Aufruf der Notification erstellen

Mit dem Event wird die Notifier Funktion beim Validieren der Debitorennummer aufgerufen.

[EventSubscriber(ObjectType::Table, Database::"Sales Header", 
    'OnAfterValidateEvent', 'Sell-to Customer No.', true, true)]
local procedure CheckCountry(var Rec: Record "Sales Header")
begin
  CheckCustomer(Rec);
end;