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;