Dokumentenmanagement

Die Dokumentenvorlagen dienen dem Versand von E-Mails, der Erstellung von Drucksachen und auch für Rechnungen und Lieferscheine1 - werden in der Datenbank in der Tabelle co_list_mail gespeichert.

Hinweis

Die Legacy-Verarbeitung unterscheidet sich in der Bedeutung der Felder.

Ein Dokument besteht im wesentlichen aus einem Inhalt und einem Kontext. Der Inhalt definiert die Struktur des Dokumentes und der Kontext legt die Inhalte der Platzhalter fest. Ein Platzhalter ist über ${ und } definiert.

So wird der Platzhalter ${example}, durch den Wert des Schlüssel im Kontext ersetzt.

Der Type des Template wird über den MimeType im Feld mimeType definiert. Im Feld charset wird der Zeichensatz defniert. Der Standard sollte hier utf-8 sein.

Dokument anlegen

Die Dokumente werden über den Trait Alvine\Application\Platform\Bridge\Commerce\Document\Template geladen.

Diese Felder werden in der Tabelle co_list_mail für die Auswahl verwendet:

Feld Wert Beschreibung
template_type AlvineApplicationPlatformCommerceDocumentContextMailOrderConfirmationPaymentPaypalPlus Kontext
sys_archived 0 achiviert
language de Sprache
sys_country de Land
sys_asign_company_SHID 1 Mandant
Feld Wert Beschreibung
sys_template db://10 Rahmen
sys_mime_type text/html Mime Type

Kontext

Der Kontext wird über das Feld context.class definiert und von der verwendeten Funktion vorgegeben. Der Kontext defniert die Inhalte eines Dokuments und bestimmt die Platzhalter.

Der Kontext kann in einer Funktion über die Funktion DocumentManager::getContextClass() geholt werden. Dieser Mechanismus erlaubt es den Kontext zu überschreiben. Im Standard wird die übergebene Klasse 1:1 zurückgegeben.

$contextClass=\Alvine\Application\Assembly::getInstance()
          ->getDocumentManager()->getContextClass(
    \Alvine\Application\Platform\Commerce\Document\Context\LoginTokenPerMail::class
);

Um einen eigenen Manager zu verwenden, muss die Anwendungsklasse überschrieben werden und der eigene Manager zurückgegeben werden.

Der DefaultContext enthält bereits die Platzhalter des ausgewählten Mandanten. Alle davon abgeleiteten Kontexte verfügen somit über die Unternehmensdaten.

siehe auch DefaultContext

Wie legt der Benutzer neue Nachrichten an

Hinweis

Funktion ist noch nicht programmiert https://gitlab.schukai.com/alvine/application/platform/-/issues/211

Der Benutzer muss die möglichkeit haben über eine Oberfläche Klassen anzulegen. Diese Kontexte kann man dann später auch noch mit sonderfunktionen erweitern.

Eigenschaften

Neben dem Kontext verfügt ein Template über Eigenschaften, die als Platzhalter im Template zur Verfügung stehen. Die Eigenschaften können über Sprache und Land lokalisert werden. Darüber können die Inhalte eines Dokuments lokalisiert werden.

to Platzhalter

Der to Platzhalter wird gesondert behandelt. Dieser kann nicht über die Eigenschaften überschrieben werden. Die Klasse die ->sendMail() verwendet,definiert an wen die eMail versendet wird.

Hinweis

Gleichnamige Eigenschaften des Templates überschreiben die Eigenschaften des Rahmen.
Es dürfen hier nicht Platzhalter definiert werden, die auf sich selbst referenzieren , zum Beispiel 'cc' => '${cc}'

Feld Wert Beschreibung
context.class AlvineApplication...PaypalPlus Alternativer Kontext-Klasse inkl. Namespace
from $ Sender
subject Vielen Dank für Ihre Bestellung (eq Betreff

Rahmen

Einige Inhalte - wie zum Beispiel der Footer einer Mail - kommen in allen Templates vor. Hier besteht die Möglichkeit ein übergeordnetes Template anzulegen. Dieses Template muss den Platzhalter ${content} enthalten.

Ein abgeleitetes Template wird dann an dieser Stelle in den Rahmen eingefügt. Das Rahmentemplate darf ebenfalls Platzhalter enthalten. Die Referenzierung erfolgt über das Feld frame. Hier muss db://<id> stehen. <id> steht hier für die ID des Rahmens, z.B db://10 für den Rahmen im Datensatz 10.

Das Rahmentemplate besitzt keinen Kontext, so das die verwendeten Platzhalter im Kontext des Template definiert sein müssen.


  1. Gilt nicht für die Legacy-Dialoge