====== offer-cube / Zeitaktionen und Erinnerungs-Mails ====== Zurück zur [[offer-cube:howto|Anleitungen / HowTos]] Siehe auch [[offer-cube:howto:settings#smtp_email-server|Einstellungen - Eigenen SMTP Server]] \\ Siehe auch [[offer-cube:howto:syncsetting|Synchronisierungen und Hooks]] \\ Siehe auch [[offer-cube:howto:pdf-special-variables|PDF Power User Variablen/Funktionen]] \\ Siehe auch [[offer-cube:howto:docmeta|Dokument Vorlagen für Textblöcke und Emails]] \\ ===== Allgemeines / Zusammenfassung ===== Mit den sog. "//Zeitaktionen//" können automatisiert Erinnerungen hinterlegt werden, um bei Erreichen eines bestimmten Zeitpunktes eine Erinnerungs-Mail zu versenden. Diese Email kann an eine fixe Email Adresse gerichtet sein oder an einen Benutzer des Systems (z.B. letzter Bearbeiter oder Versender eines Angebots) oder aber auch an einen Kunden bzw. Lieferanten. Zusätzlich zu Emails lassen sich auch [[offer-cube:howto:syncsetting|Hooks für Synchronisierungen]] auslösen, um z.B. mehrere Emails zu versenden oder Webservice Aufrufe durchzuführen (Slack Message, Teams Message, etc.) ===== Details: Einrichten der Mailvorlage ===== Um eine Email zu versenden, muss vorher eine [[offer-cube:howto:docmeta|Email Vorlage]] angelegt werden. Unter // Einstellungen // --> //Dokument Vorlagen// wird eine neue Mail Vorlage angelegt. {{offer-cube:howto:docmeta-email:offer-cube_howto-docmeta-email-51-syscron-template-offer-reviewdate.png|Dokumente - Email Vorlage für Angebot Wiedervorlage}} Im entsprechenden [[offer-cube:howto:docmeta|Textblock]] wird ebenfalls mit [[offer-cube:howto:pdf-special-variables|PDF Power User Variablen und Funktionen]] gearbeitet.

Hallo [[$obj.modified_user__firstname]] [[$obj.modified_user__lastname]],

dias Angebot [[$obj._objref]] [[if $obj.summary != ""]]mit dem Titel "[[$obj.summary|escape]]" [[/if]]wurde am [[$obj.status_sent|ut2humandate:1]] versendet.

Das Datum für die Wiedervorlage [[$obj.reviewdate|ut2humandate:1]] wurde erreicht.

Bitte kümmere Dich darum.

Link zum Angebot: [[myurl absolute=true noGetParams=true script='b']]#/detail/offer/[[$payload.id]]

Weitere Daten:

Angebot: [[$payload._objref]] [[$obj.summary|escape]]
[[if $obj.status_sent != 0]]Gesendet am: [[$obj.status_sent|ut2humandate:1]]
[[/if]] [[if $obj.reviewdate != 0]]Wiedervorlage am: [[$obj.reviewdate|ut2humandate:1]]
[[/if]] [[if $payload.site_company != ""]]Kunde-Firma: [[$payload.site_company|escape]]
[[/if]] [[if $payload.site_name != ""]]Kunde-Name: [[$payload.site_name|escape]]
[[/if]] [[if $payload.site_email != ""]]Email: [[$payload.site_email|escape]]
[[/if]] [[if $obj.site_phone != ""]]Telefon: [[$obj.site_phone|escape]]
[[/if]] [[if $obj.site_mobile != ""]]Mobil: [[$obj.site_mobile|escape]]
[[/if]] [[if $obj.customer != 0]]Kunde: [[$obj.customer___objref]] [[$obj.customer__comboname|escape]]
Link zum Kunden: [[myurl absolute=true noGetParams=true script='b']]#/detail/customer/[[$obj.customer]]
[[/if]]
[[if $payload.annotation != ""]]Notiz:
[[$payload.annotation|escape|nl2br]][[/if]]

 

Mit freundlichen Grüßen
[[$CONFIGURATION.ownCompany|escape]]

{{offer-cube:howto:docmeta-email:offer-cube_howto-docmeta-email-52-syscron-template-offer-reviewdate-textblock.png|Email Textblock}} ===== Details: Einrichten der Zeitaktion ===== Unter // Einstellungen // --> //Zeitaktionen// wird eine neue Zeitaktion angelegt. === Aufgetretenes Event === Dieses Event löst die Zeitaktion aus. Hierbei wird unterschieden zwischen der Durchführung eines Vorgangs (z.B. "//Wiedervorlage Datum gesetzt//") und einem eventuell befüllten Datumsfeld (z.B. der tatsächliche Inhalt des Wiedervorlage Datums mit Event "//Wiedervorlage Datum gesetzt **und verwenden**//"). Beispiel 1 "//gesetzt//": Event "//Wiedervorlage Datum gesetzt//" und Verzögerung +1 Tag --> Es wird 1 Tag nach dem Setzen des Datums (also der Zeitpunkt des Speicherns) die Email versendet. \\ Der Versand erfolgt **völlig unabhängig des ausgefüllten Datums**. Beispiel 2 "//gesetzt **und verwenden**//": Event "//Wiedervorlage Datum gesetzt und verwenden//" und Verzögerung +1 Tag --> Es wird 1 Tag nach dem eingegebenen Datum (also Wiedervorlagedatum + 1 Tag) die Email versendet. \\ Der Versand **hängt nur vom ausgefüllten Datum ab**. === Nur 1 mal pro Objekt ausführen === Ist diese Option aktiv, so wird die Aktion nur 1 einziges Mal ausgeführt. Beispiel: Das Event "//Wiedervorlage Datum gesetzt und verwenden//" wurde gewählt und das Datum ist erreicht und die Benachrichtigung mit der Erinnerung wird an den Mitarbeiter versendet. \\ Nun öffnet der Mitarbeiter das Angebot, ruft den Kunden an und wählt ein neues Wiedervorlagedatum aus. \\ Ist die Option "//Nur 1 mal pro Objekt ausführen//" aktiviert, so wird die Erinnerung **kein weiteres Mal** versendet. \\ Ist die Option nicht aktiv, so wird erneut eine Erinnerungsmail basierend auf dem eingetragenen Wiedervorlagedatum versendet. === Zeitraum (Verzögerung) +/- Tage, Stunden, Minuten === Hiermit kann die Verzögerung für die Erinnerung eingestellt werden. Beispiel: Das Event "//Wiedervorlage Datum gesetzt und verwenden//" wurde gewählt und als Wiedervorlagedatum wurde der 21.11.2023 eingetragen. Ist nun **+ 2 Tage** als Verzögerung ausgewählt, so wird die Erinnerung am 23.11.2023 (also 21.11. + 2 Tage) versendet. \\ Ist nun **- 1 Tag** als Verzögerung ausgewählt, so wird die Erinnerung am 20.11.2023 (also 20.11. - 1 Tag, also 1 Tag vor dem eingetragenen Datum) versendet. \\ === Hook aufrufen, Email senden === Mit Auswahl der Option "//Hook aufrufen//" wird der frei wählbare Hook-Code im Feld "//Auszuführender Hook-Code//" zum entsprechenden Zeitpunkt ausgelöst. \\ Hierzu muss eine entsprechende [[offer-cube:howto:syncsetting|Synchronisierung]] für diesen Hook-Code angelegt sein. \\ Dort könnte dann ebenfalls eine Email versendet werden (z.B. über einen [[offer-cube:howto:syncsetting|anderen SMTP-Server]]) oder per Webservice Aufruf ein Post in einen MS-Teams oder Slack-Channel ausgeführt werden. Mit Auswahl der Option "//Email senden//" wird direkt die vorher angelegte [[offer-cube:howto:docmeta|Email Vorlage]] an die im Feld "//Alternative Empfänger Email//" hinterlegte Adresse versendet. === Auszuführender Hook-Code === Mit Auswahl der Option "//Hook aufrufen//" wird der frei wählbare Hook-Code im Feld "//Auszuführender Hook-Code//" zum entsprechenden Zeitpunkt ausgelöst. \\ === Alternative Empfänger Email === Mit Auswahl der Option "//Email senden//" wird direkt die vorher angelegte [[offer-cube:howto:docmeta|Email Vorlage]] an die im Feld "//Alternative Empfänger Email//" hinterlegte Adresse versendet. Als Email Adresse kann auch eine [[offer-cube:howto:pdf-special-variables|PDF Power User Variable oder Funktion]] verwendet werden: ^ Variable ^ Bedeutung ^ | [[$obj.modified_user__username]] | UserID (=Email) des letzten Bearbeiter des Objekts | | [[$obj.created_user__username]] | UserID (=Email) des Users, der das Objekt angelegt hat | | [[$obj.site_email]] | Angebot, Auftrag, Rechnung eingetragene Email Adresse des Kunden | | [[$obj.customer__email]] | Angebot, Auftrag, Rechnung Email Adresse des Kunden-Stammdatensatzes | === Beschreibung === Eine interne Beschreibung z.b. zwecks Dokumentation für diese Zeitaktion. === Script === Ein optionales Script, das die [[offer-cube:howto:pdf-special-variables|PDF Power User Variablen und Funktionen]] verwendet, um zum Zeitpunkt der Ausführung weitere Bedingungen zu prüfen. Beispiel: Es kann geprüft werden ob ein Datumsfeld gesetzt ist (gt = greater than = größer als 0). [[if $obj.deliverypln_dt gt 0]] LIEFERTERMIN GESETZT [[setskip]] [[/if]] Dieser Code prüft ob in den [[offer-cube:howto:supplierorder|Lieferantenbestellungen]] das Feld Liefertermin "//deliverypln_dt//" gesetzt ist. \\ Falls dies zutrifft, wird mittels "//**[[setskip]]**//" die weitere Abarbeitung unterbrochen - das bedeutet, die Aktion (Versand einer Email) wird **nicht** ausgeführt. \\ Der zusätzliche Text (//LIEFERTERMIN GESETZT//) innerhalb der //[[if]]// Anweisung wird ignoriert und dient dem eigenen Verständnis. \\ Es kommt nur darauf an, ob die "//**[[setskip]]**//" Anweisung ausgeführt wird (Aktion z.B. Email Versand wird dann abgebrochen) oder nicht (Aktion z.B. Email Versand wird durchgeführt). {{offer-cube:howto:syscron:offer-cube_howto_syscron_01-create.png|Zeitaktion anlegen}} ===== TODO Erinnerungs Email ===== ==== Todo Erinnerung: Zeitaktion einrichten ==== Um eine [[offer-cube:howto:todo|TODO]] Erinnerung (z.B. 30 Minuten vor dem //Erledigen bis// Datum) zu versenden, muss folgende Zeitaktion eingerichtet werden: **Zeitaktion:** | Aufgetretenes Event: | Todo Erledigen bis Datum gesetzt und verwenden | | Auszuführende Aktion: | Hook aufrufen | | Maximale Ausführungen pro Objekt: | Beliebig oft | | Auszuführender Hook-Code: | syscron-remind-todo | | Zeitraum | - 30 Minuten | Der Hook-Code (in diesem Beispiel "//syscron-remind-todo//" kann frei gewählt werden. \\ Er muss exakt mit dem eigegebenen Hook-Code in der [[offer-cube:howto:syncsetting|Synchronisierung Hook]] übereinstimmen. ==== Todo Erinnerung: Mailvorlage für Benachrichtigung (HTML) ==== Name der [[offer-cube:howto:docmeta|Email Vorlage]] z.B. //Email Todo Erinnerung an User// (muss dann im nächsten Schritt in der Synchronisierung ausgewählt werden). **Textblock:**

Hallo [[if $obj.user_assigned != 0]][[$obj.user_assigned__firstname|escape]] [[$obj.user_assigned__lastname|escape]][[else]][[$obj.modified_user__firstname|escape]] [[$obj.modified_user__lastname|escape]][[/if]],

das Todo [[$obj._objref]] mit dem Betreff "[[$obj.name|escape]]" ist heute ([[$obj.enddate|ut2humandate:1:1:0]]) fällig!

Link zum Todo: [[myurl absolute=true noGetParams=true script='b']]#/detail/todo/[[$obj.id]]

[[if $obj.customer != 0]]Kunde: [[$obj.customer___objref]] [[$obj.customer__comboname|escape]]
Link zum Kunden: [[myurl absolute=true noGetParams=true script='b']]#/detail/customer/[[$obj.customer]]
[[/if]] [[if $obj._type == "customer"]]Kunde: [[$obj._objref]] [[$obj.comboname|escape]]
Link zum Kunden: [[myurl absolute=true noGetParams=true script='b']]#/detail/customer/[[$obj.id]]
[[/if]] [[if $obj.offer != 0]]Angebot: [[$obj.offer___objref]] [[if $obj.offer__summary != ""]][[$obj.offer__summary|escape]][[/if]]
Link zum Angebot: [[myurl absolute=true noGetParams=true script='b']]#/detail/offer/[[$obj.offer]]
[[/if]] [[if $obj.order != 0]]Auftrag: [[$obj.order___objref]] [[if $obj.order__summary != ""]][[$obj.order__summary|escape]][[/if]]
Link zum Auftrag: [[myurl absolute=true noGetParams=true script='b']]#/detail/order/[[$obj.order]]
[[/if]] [[if $obj.invoice != 0]]Rechnung: [[$obj.invoice___objref]] [[if $obj.invoice__summary != ""]][[$obj.invoice__summary|escape]][[/if]]
Link zur Rechnung: [[myurl absolute=true noGetParams=true script='b']]#/detail/invoice/[[$obj.invoice]]
[[/if]] [[if $obj.ticket != 0]]Ticket: [[$obj.ticket___objref]] [[if $obj.ticket__summary != ""]][[$obj.ticket__summary|escape]][[/if]]
Link zum Ticket: [[myurl absolute=true noGetParams=true script='b']]#/detail/ticket/[[$obj.ticket]]
[[/if]]

[[if strlen($obj.description) GT 0]]
Beschreibung:
[[$obj.description|escape|nl2br]]
[[/if]]

Mit freundlichen Grüßen
Ihr [[$CONFIGURATION.ownCompany|escape]] Team

==== Todo Erinnerung: Synchronisierung Hook einrichten ==== Nun eine [[offer-cube:howto:syncsetting|Synchronisierung mit Typ "Hook"]] anlegen. Als "//Hook-Code//" den in der Zeitaktion hinterlegten Hook-Code (in unserem Beispiel //syscron-remind-todo//) exakt identisch geschrieben eintragen. **Synchronisierung:** | Bezeichnung: | Email Todo Erinnerung an User | | Typ: | Hook | | Hook-Code: | syscron-remind-todo | | Methodenname | mail | | Dokument Vorlage | Email Todo Erinnerung an User (die vorher angelegte Mailvorlage auswählen) | | Alternative Empfänger Email: | [[$obj.user_assigned__username]] | Die Variable // [[$obj.user_assigned__username]] // wird dann durch die Email Adresse des zum Todo zugeordneten Benutzers ersetzt.