Hallo Vtiger Nutzer,

In dieser Serie möchte ich ein paar coole Funktionen meines Workflow Designers Modules für das Open Source VtigerCRM vorstellen, damit Ihr einen Eindruck davon bekommt, was mit diesem Modul überhaupt möglich ist.
Das alles sind natürlich nur Vorschläge und sollen die Funktionsweise erklären und euch dazu bringen, eure Probleme damit möglichst elegant zu lösen.

In diesem ersten Teil möchte ich einen speziellen Prozess abbilden, welcher eigentlich nicht sehr komplex ist, aber viele Funktionen des Workflow Designers verwendet.

Er soll am Ende im Eintrag einer Person, welche z.B. gerade am Telefon ist, eine E-Mail mit einer PDF Rechnung erneut versenden, welche aber nur mit der selben Organisation verknüpft sein braucht.
Das ist in Situationen hilfreich, in denen für eine Organisation mehrere Personen angelegt wurden, Ihr aber nicht wisst, welche Person beim Anlegen der Rechnung gerade aktuell war.
Von dieser Unsicherheit soll der Gesprächspartner natürlich möglichst nichts mitbekommen.

Für diesen Workflow ist die PDFMaker Erweiterung von its4you notwendig! Außerdem wird die PRO Version des Workflow Designers erstellt. Das nächste Tutorial wird sich auch mit der Basic Version umsetzen lassen. Versprochen!

Außerdem bekomme ich direkt eine Liste mit allen Rechnung für das Unternehmen gezeigt und muss nur die betreffende Rechnung auswählen.

Die Schritte sind dabei folgende:

– Rechnung auswählen und festlegen ob die Organisation die Mail zusätzlich als CC bekommen soll
– Das PDF erstellen und im temporären Dateispeicher zwischenspeichern
– E-Mail mit PDF an Person senden
– Kommentar in Rechnung und Person hinterlegen, dass Rechnung versendet wurde

So einfach wird der Prozess am Ende aussehen:WorklfowDesigner1

Also wirklich ohne Verzweigung bzw. Unterbrechungen noch ziemlich übersichtlich.

Diese Funktion lässt sich fast gänzlich ohne Kenntnisse einer Programmiersprache implementieren. Ganz ohne geht es allerdings nicht, da ich als Entwickler dieses Designers natürlich nicht alle evtl. aufkommenden Funktionen abbilden kann. Jedes Unternehmen hat andere Anforderungen. Daher ist es auf jeden Fall hilfreich einfachste Grundlagen von PHP zu verstehen.

1. Schritt – Der StartblockWorkflowDesigner2

Jeder Workflow hat immer einen Startblock.
Hier beginnt das System die Ausführung, weshalb dieser Block auch nicht gelöscht werden kann.

Mit einem Doppelklick öffnet Ihr die Konfiguration des Blockes.
Hier habt Ihr die Möglichkeit die notwendige Auswahl der Rechnung und die Entscheidung, ob CC oder nicht, zu hinterlegen.
Der obere Abschnitt ist für diesen Workflow nicht relevant, da der Workflow immer direkt und nur manuell ausgeführt werden soll.

1.1 Auswahl der Rechnung

Im Abschnitt „Vor Ausführung abgefragte Variablen“ müsst Ihr jetzt die beiden Felder „Rechnung“ und „CC an Unternehmen“ anlegen.

Das Feld Rechnung wird vom Typ „Objekt auswählen“ und für das Modul „Rechnungen“ konfiguriert.

Unter „Bedingung“ könnt Ihr jetzt festlegen, welche Einträge dann später wählbar sein sollen. Wir möchten hier alle Einträge zeigen, welche „Organisation = $account_id“ besitzen, also mit der Organisation verlinkt sind. Wir verwenden hier $account_id, da der Vtiger nur im, für den Nutzer sichtbaren, Frontend den Unternehmensnamen zeigt. Intern wird aber mit der ID der Organisation gearbeitet.

Die Konfiguration sollte wie folgt am Ende definiert sein:

WorkflowDesigner3

Die Konfiguration „CC an Unternehmen“ muss zum Abschluss als „Checkbox“ und mit dem Variablennamen „send_cc_company“ angelegt werden um später auch darauf zugreifen zu können.

Da der Workflow für Personen, welche keine Organisation gesetzt haben, zu Fehlern führen würde, definieren wir im letzten Teil des Start Blocks eine Bedingung für diesen Workflow, sodass er nur bei Personen gezeigt wird, welche auch eine Organisation „besitzen“.

Der Startblock sollte dann folgendermaßen aussehen:

WorkflowDesigner4

 

Zum Abschluss noch die Ergänzung, dass die beiden Felder, welche wir hier angelegt werden, als Umgebungsvariable während der kompletten Workflow Ausführung zur Verfügung steht.

2. Das Sammeln der Informationen

Jetzt kommen wir zu dem einzigen Abschnitt dieses Workflows, welcher individuell in PHP erstellt werden muss.
Für diese Aufgaben gibt es den Block „invididuelle Expression“. Das dieser Block zwei Ausgänge besitzt, ist hier nicht relevant. Wichtig ist, dass Ihr den oberen Ausgang verwendet.

Wieder öffnen wir die Konfiguration, welche hier nur aus einem Textfeld besteht. Nichts anderes macht dafür Sinn, da ich in diesem Block auf eine an PHP angelehnte Skriptsprache zurückgreifen kann.
Im Hintergrund liegt natürlich PHP, es wird aber alles durch einen eigenen Interpreter geschickt, welcher sich um die notwendige Sicherheit kümmert. Aus diesem Grund sind nur grundlegende Konstrukte und Befehl, aber auch einige extra für den Vtiger integrierte Funktionen möglich.

Einen Überblick gibt es in der Dokumentation dieser Funktion.

Wir verwenden folgenden Inhalt für diesen Block:

Kurz zur Erklärung der Funktionen:

$env hatte ich ja schon einmal erwähnt. Es stellt einen globalen Variablenspeicher dar, welchen ich nutzen kann um Werte von einem Block zu einem anderen zu übertragen.

Die Funktion wf_get_entity lädt alle Felder mit den jeweiligen Werten eines Eintrages. Das nutzen wir für die Rechnung und speichern alle Informationen in der Variable $env[„invoice“] um darauf später zurückgreifen zu können.

Die Funktion wf_log erlaubt es, Einträge in die statistische Auswertung einzufügen, welche zum Zweck der Fehlersuche genutzt werden kann.
Hier schreiben wir die ausgewählte ID der Rechnung in diese Statistik, um später sehen zu können ob der Wert gesetzt war, in dem Fall, dass ein Fehler auftreten sollte.

Die if Bedingung prüft jetzt, ob der Haken gesetzt war, welcher der Organisation die Mail als CC senden soll.
Wenn dies der Fall ist, wird über die Funktion wf_fieldvalue ein spezieller Wert aus einem bestimmten Eintrag geladen. Hier der Wert aus dem Feld email1 aus einem Eintrag des Moduls Accounts geladen (Organisationen), welcher mit der Variable $account_id bestimmt wird. ($account_id beinhaltet den Wert aus dem Feld account_id des Eintrages, zu welchem der Workflow ausgeführt wird)

Zuletzt geben mir mit return „yes“; an, dass wir den Block mit dem oberen Ausgang verlassen möchten.

3. Das Erstellen der PDF Datei

In diesem Schritt verwenden wir den Block „PDFMaker Integration“, welcher die Anbindung zum PDFMaker darstellt und unser PDF erzeugen wird.

Die Konfiguration wieder von oben nach unten erklärt.

Hier ist es wichtig, dass Ihr zuerst einen Titel des Blockes setzt, um manuelles Neuladen der Konfiguration zu umgehen.

Da wir kein PDF aus dem aktuellen Modul „Personen“ erstellen möchte, sondern aus dem Modul „Rechnungen“ setzen wir die Auswahl auf „with matched Records/s“. Das bedeutet soviel wie, „Erstelle mir ein PDF mit den Vtiger Einträgen, welche ich über die Bdingung selektiere.“

Nachdem die Konfiguration automatisch neu geladen wurde, müsst Ihr unter „From Module“ die Auswahl auf „Rechnung“ setzen.

In der Auswahl für die Bedingung müsst Ihr nur „ID entspricht $env[„value“][„invoice_id“]“ einstellen. (Zur Erinnerung: $env[„value“][„invoice_id“] beinhaltet die ID der ausgewählten Rechnung)

Sodass es danach folgendermaßen konfiguriert ist:WorkflowDesigner5

Als PDF Template wählt Ihr das Templates, welches verwendet werden soll. Ihr könntet auch mehrere Templates wählen, welche dann jeweils in einer Datei verbunden werden.

Den Dateinamen der PDF Datei setzen wir auf
Rechung $env[„invoice“][„invoice_no“].pdf

Zuletzt setzen wir die Option von „What to do with the file“ auf „Store in Filestore“ und die ID auf „invoice„.

Diese Einstellung sorgt dafür, dass die PDF Datei aus diesem Block in einem temporären Dateispeicher abgelegt wird, sodass wir später noch darauf zurückgreifen können.

Die Konfiguration dieses Blockes sollte jetzt folgendermaßen aussehen:

WorkflowDesigner6

4. Versenden der E-Mail

Jetzt kommt der Block, welcher die E-Mail versendet. Er ist einfach „eMail senden“ benannt.

Die Konfiguration der Felder sollte weitgehend klar sein, da Sie den normalen Bezeichnungen eines E-Mail Programmes folgen. Deshalb hier nur die Übersicht der Werte, welche ich verwendet habe:

Absender Name = $(smownerid: (Users) first_name) $(smownerid: (Users) last_name)
Absender eMail = $(smownerid: (Users) email1)

Das setzt den Nutzer, welcher für die Person zuständig ist, als Absender.

Empfänger = $email
CC = $env[„cc“]

Das setzt die E-Mail Adresse des aktuellen Eintrags (der Person) als Empfänger und evtl. eine CC Adresse wenn die Variable gesetzt wurde.

Betreff = Ihre Rechnung #$env[„invoice“][„invoice_no“]
Inhalt = Hier bekommen Sie Ihre Rechnung #$env[„invoice“][„invoice_no“] zugesendet.

Betreff und Inhalt können, bzw. sollten, Sie anpassen. Wir greifen darin über $env[„invoice“] jetzt auf die Werte zurück, welche wir in dem „custom expression“ block geladen haben. Daher stehen hier alle Felder der Rechnung zur verfügung.

Jetzt müssen wir die PDF Datei natürlich noch anhängen. Sich können sich daran erinnern, dass wir diese in einen temporären Dateispeicher gelegt haben? Aus diesem können wir uns jetzt Dateien als Anhänge laden.

Rechts oben klicken Sie bitte auf „Attach File from temporarily filestore“ und geben in das erschienene Textfeld „invoice“ ein. (Die ID aus dem PDFMaker Block). Zuletzt noch per „add“ hinzufügen und den Block speichern.

Jetzt würde die E-Mail bereits mit dem PDF versandt werden.

5. Kommentar anlegen

Zuletzt wollen wir noch einen Block erstellen, welcher einen Kommentar in die Einträge schreibt, damit wir später noch nachvollziehen können, dass die Rechnung versendet wurde.

Dazu einfach einen Block „Kommentar erstellen“ einfügen.

In dessen Konfiguration stellen wir die Auswahl „Kommentar zu diesem Eintrag“ auf „benutzerdefinierte Einträge“, da wir direkt einen Kommentar in mehrere Einträge schreiben wollen.
Wir könnten jetzt auch 2 einzelne Blöcke erstellen, welche die Kommentare erstellen, aber diese müssten dann jeweils individuell bei Änderungen angepasst werden.

In das Feld „CRMIDs erstellen“ fügen wir folgendes ein:

$env[„value“][„invoice_id“],$crmid

Damit sagen wir dem Block, dass der Kommentar einmal in den Eintrag der Rechnung und einmal in den aktuellen Eintrag (die Person) eingefügt werden soll.

Der Text des Kommentars sollte natürlich angepasst werden. Ich verwende:

Rechung $env[„invoice“][„invoice_no“] versendet an $firstname $lastname $email

Damit beinhaltet der Kommentar die Rechnungsnummer und den Namen der Person, an welche wir die Rechnung gesendet haben.

6. Der komplette Workflow

Wenn Ihr es noch nicht getan habt, müsst Ihr jetzt noch die einzelnen Blöcke miteinander verbinden, sodass folgender Prozess entsteht:

WorkflowDesigner7

 

Und wenn noch nicht getan, dem Workflow einen eindeutigen Namen geben und Ihn aktivieren.WorkflowDesigner8

Wenn Ihr jetzt einen Eintrag im Modul Personen öffnet, seht ihr links in der Sidebar den Workflow unter „Workflows“ und könnt Ihn da ausführen.

Wenn Ihr alles richtig gemacht habt, sollte jetzt ein PopUp aufgehen, welches euch die Rechnung wählen lässt, welche der Prozess danach versendet.
Wenn das nicht passiert geht nochmal alle Schritte durch und prüft eure Einstellungen.

Oder sendet mir eine E-Mail an support@redoo-networks.de. Ihr bekommt garantiert binnen kurzer Zeit eine persönliche Antwort von mir.

Für den nächsten Teil lasse ich mir wieder etwas interessantes einfallen wünsche euch aber viel Spaß beim Experimentieren.

Stefan

Schreibe einen Kommentar