Grundlagen
Grundlegende Angaben
Folgende Angaben müssen Sie bei allen Aktionen vornehmen:
Aktiv
Sobald Sie eine Aktion aktivieren, wird diese in Salesware sichtbar.
Bezeichnung
Benennen Sie die Aktion so, dass der Benutzer weiß, welchen Schritt er damit auslöst. Dies ist insbesondere wichtig, wenn er über ein Kontext- oder Dreipunktmenü darauf zugreifen kann. Mit Hilfe einer eindeutigen und selbsterklärenden Bezeichnung weiß der Benutzer, welches Ergebnis er durch das Anklicken des Eintrags erwarten kann.
Tipp
Nennen Sie Ihre Aktion lieber „Rücklieferschein erstellen” als „Rücklieferschein”.
Aktionstyp
Sie können eine Aktion genau einem Aktionstyp zuordnen. Der Aktionstyp legt fest, welche Einstiegspunkte für die automatische Ausführung zur Verfügung stehen und ob die Aktion auch im Kontext- oder Dreipunktmenü der Entität zur Verfügung steht.
Wichtig
Nach dem Speichern können Sie den Aktionstyp nicht mehr ändern.
Entität
Je nach Aktion können Sie auswählen, in welcher Entität diese aktiviert wird. Möchten Sie eine Aktion in verschiedenen Entitäten mit einer anderen Logik versehen, so können Sie diese einfach ein weiteres Mal anlegen und die Aktionen jeweils anderen Entitäten zuordnen.
Endpunkttyp
Legen Sie den Endpunkttyp der Aktion fest.
Sage Appserver
Für den Endpunkttyp Sage Appserver sind zwei weitere Felder Pflicht:
Aktion Geben Sie hier bitte den Namen der Klasse ein, die die Implementierung der Aktion beinhaltet, inklusive kompletten Namespace. (z.B. „Custom.Action.TestAction“)
DLL_Datei Tragen Sie bitte den Namen der dll-Datei ein, die auf dem von Salesware genutzten Application Server im Shared-Verzeichnis der Sage100 liegt. (z.B. „Custom.Action.dll“)
Die unter Aktion angegebene Klasse muss eine Methode mit folgender Signatur aufweisen:
public Dictionary<string,object> Execute(Dictionary<string, object> parameter)
Codebeispiel: Sage Appserver
using System.Collections.Generic;
namespace Custom.TestAssembly
{
public class ExampleAction
{
public Dictionary<string,object> Execute(Dictionary<string, object> parameter)
{
var client = parameter.TryGetValue("Client", out var clientObj) ? clientObj as Mandant : null;
var documentId = parameter.TryGetValue("DocumentId", out var documentIdObj) && int.TryParse(documentIdObj?.ToString(), out var documentIdParsed) ? documentIdParsed : (int?)null;
var cultureId = parameter.TryGetValue("CultureId", out var cultureIdObj) && cultureIdObj != null ? cultureIdObj?.ToString() : "de-DE (Fallback)";
var erpUser = parameter.TryGetValue("ErpUser", out var erpUserObj) ? erpUserObj as string : null;
var locationKey = parameter.TryGetValue("LocationKey", out var locationKeyObj) ? locationKeyObj as string : null;
var result = new Dictionary<string, object>();
result.Add("Message", new string[] {
$"Standort: {locationKey}",
$"Lokalisierung: {cultureId}",
$"ERP-Benutzer: {erpUser}"
});
result.Add("MessageType", "Information");
result.Add("PrintDocumentId", documentId);
return result;
}
}
}
Cloud
Für den Endpunkttyp Cloud kann über den Button "Code bearbeiten" JavaScript Code hinterlegt werden.
Bei Klick öffnet sich ein modales Fenster, in welches direkt bis zu 20KB JavaScript Code eingefügt werden kann. Außerdem stehen folgende Umbegungsvariablen zur Verfügung:
- parameters Dieses Objekt ist mit allen Eingabeparametern des jeweiligen Aktionstyps vorbelegt und kann ausschließlich lesend verwendet werden
- result Dieses Objekt kann von Ihnen für die Rückgabe von Daten in Salesware verwendet werden. Ausgewertet werden alle Ausgabeparameter des jeweiligen Aktionstyps.
Codebeispiel: Cloud
result.message = [];
result.message.push('Standort: ' + parameters.locationKey);
result.message.push('Lokalisierung: ' + parameters.cultureId);
result.message.push('ERP-Benutzer: ' + parameters.user.erpUser);
result.messageType = 'information';