- Allgemeine Erklärungen - Verständnisfragen
- Besondere Zugriffe auf Daten
- Besondere Schleifen und Hilfsschleifen
- Beispiele für
- Anschriften
- Absender und Anschrift aus dem Kontakt und einer Person
- Rechnungsanschrift aus dem aktuellen Vorgang
- Rechnungsanschrift aus dem Rechnungskonto
- Lieferanschrift aus dem aktuellen Vorgang
- Lieferanschrift aus dem Rechnungskonto des aktuellen Vorgangs
- Lieferanschrift aus dem Rechnungskonto mit User-Feldern für die Person
- Lieferadresse Optional
- Anreden
- Überschriften und Texte für Ausgangsrechnungen, Gutschriften und deren Korrekturen
- Formatierte Datumsangaben
- Rabatte
- Tabellen mit Posten in Vorgängen, Angeboten, Aufträgen oder Verträgen
- Zahlungsbedingungen
- Mahnungen
- Anschriften
An dieser Stelle finden Sie einen Überblick über Beispiele und Kopiervorlagen für Systemvorlagen. Darüber hinaus haben wir Ihnen auf der Einleitungsseite der Vorlagen bereits einige Mustervorlagen für Dokumente bereitgestellt, welche viele der hier vorhandenen Kopiervorlagen bereits beinhalten.
Administrator |
Allgemeine Erklärungen – Verständnisfragen #
Funktionen #
In der nachfolgenden Tabelle stellen wir Ihnen einige Funktionen vor, welche Sie in Ihren Vorlagen verwenden können. Dabei handelt es sich um eine allgemeine Beschreibung. Im Verlauf der Seite finden Sie viele Anwendungsbeispiele.
Funktion | Beschreibung |
---|---|
{if} {/if} | Beginn einer Überprüfungsfunktion nach der Regel Wenn-Dann. Jedes {if} muss mit einem {/if} abgeschlossen werden. |
{elseif} | Der {if}-Bedingung können beliebig viele {elseif}-Bedingungen vor dem Abschluss mit {/if} folgen. |
{else} | Stellt einen bedingungslosen Abschluss dar und kann verwendet werden. Lässt man diese Bedingung weg und keine der oberen Bedingungen trifft zu, wird nichts ausgegeben. |
isset | Auf „ist nicht null“ überprüfen. Diese Funktion kann in einer if-Anweisung verwendet werden und prüft zuvor Daten ab.
|
is_array | Auf „ist array“ überprüfen. Diese Funktion kann in einer if-Anweisung verwendet werden und prüft zuvor Daten ab.
|
{$LDELIM} {$RDELIM} |
Gibt die konfigurierten Trennzeichen „{“ und „}“ aus. {ldelim}Funktionsname{rdelim} Funktionen sehen so aus und werden automatisch zu {Funktionsname}Mit dieser Form der geschweiften Klammern wird die Variable und der errechnete Wert global Verfügbar. Das garantiert die Richtigkeit der Berechnung innerhalb der Schleife und kann auch tabellenübergreifend genutzt werden, um z.B. in einer weiteren Tabelle mit den Positionsnummern fortzufahren, sofern die Variable nicht zwischenzeitlich zurück gesetzt wurde. |
` | Wird mit Variablen innerhalb einer Funktion gerechnet, werden die darin verwendeten Variablen für die Abgrenzung zur Formel in schräge Hochkomma (Backtick) eingebunden. Shift + ´ + Space = `
{date format="Y-m-d" time="`$DATE_RAW`+10*day"} |
{foreach} {foreachelse} {/foreach} |
foreach wird verwendet, um ein Array zu durchlaufen. {foreach} Tags müssen mit {/foreach} tags kombiniert werden. Erforderliche Parameter sind: from und item. Der Name der {foreach}-Schleife kann frei vergeben werden und sowohl Buchstaben, Zahlen als auch Unterstriche enthalten. foreach-Schleifen können verschachtelt werden, dabei ist zu beachten, dass sich die definierten Namen voneinander unterscheiden.
from = Name des zu durchlaufenden Array |
string_format | Wird verwendet um eine Zeichenkette, wie zum Beispiel dezimale Werte, zu formatieren.
{$wert} = 12.569874 |
replace | Einfaches suchen/ersetzen in einer Variable. Dabei ist der erste String die zu ersetzende Zeichenkette und der zweite String die ersetzende Zeichenkette.
{$Variable|replace:“Original“:“Ersetzungs“} = Das ist ein Original-Text. → Das ist ein Ersetzungs-Text. |
truncate | Kürzt die Variable auf eine definierte Länge. Standardwert sind 80 Zeichen. Als optionaler zweiter Parameter kann eine Zeichenkette übergeben werden, welche der gekürzten Variable angehängt wird. Diese zusätzliche Zeichenkette wird bei der Berechnung der Länge berücksichtigt. Normalerweise wird „truncate“ versuchen, die Zeichenkette zwischen zwei Wörtern umzubrechen. Um die Zeichenkette exakt an der definierten Position abzuscheiden, können sie als dritten Parameter „true“ übergeben. |
{assign var=’…‘ value=’…‘ scope=…} | Erstellung einer eigenen Variable/Hilfsvariable, die man im Dokument weiter verwenden kann. Dabei definiert var den eigenen Variablennamen und value den Wert, welcher der Variable mitgegeben werden soll. Solche Variablen kann man auch zum Zählen oder Rechnen verwenden. scope ist der optionale Geltungsbereich dieser Variable und kann die Werte parent, root und global annehmen. |
{date format=’…‘ time=’…‘} | Der {date}-Tag gibt eine formatierte Datumsangabe in Smarty aus. Dieser Tag unterstützt die Attribute format und time. Format gibt das gewünschte Format des Datums aus (17.11.2026 oder 2026-11-17). Time liefert hingegen das Datum und ermöglicht das Rechnen oder die Tagesangabe. |
Operatoren #
Operator | Operator 2 | Bedeutung |
---|---|---|
== | eq | ist gleich |
!= | ne, neq | ist ungleich |
> | gt | größer als |
< | lt | kleiner als |
>= | gte, ge | größer oder gleich |
<= | lte, le | kleiner oder gleich |
=== | identisch | |
&& | AND | Und |
|| | OR | Oder |
! | not | Negierung des Wertes. Z. B. {if !$ARTICLES.IS_PART_OF_GROUPLINE}. In dem Fall steht:
|
( ) | Klammern sind erlaubt | |
even | Gibt an, ob eine Zahl gerade ist. | |
odd | Gibt an, ob eine Zahl ungerade ist. |
Beispiele für die Verwendung von verschachtelten if-Bedingungen in den Systemvorlagen #
Es besteht die Möglichkeit auch komplexe if-Bedingungen aufzubauen bzw. diese miteinander zu verschachteln. Dies erfolgt über mathematische Klammerlogik ( ).
Im ersten Schritt wird abgefragt, ob das Feld Land den Wert Deutschland enthält. An dieses angeschlossen folgt eine UND-Verknüpfung (AND). Es wird nun eine Abfrage mittels einer ODER-Verknüpfung (OR) gestellt, ob das Feld Region Baden-Württemberg oder Bayern beinhaltet. Sind die Kombinationen Deutschland UND Baden-Württemberg ODER Deutschland UND Bayern erfüllt, so wird der Kirchensteuersatz 8 % ausgegeben. Im zweiten Teil erfolgt wieder eine Abfrage (!= ungleich) auf das Feld Land. Über diese fragen Sie ab, ob ein anderer Wert als Deutschland gewählt wurde. Wenn dies der Fall ist, wird im Dokument nichts ausgegeben. Nachdem im zweiten Teil alle Länder außer Deutschland schon ausgeschlossen wurden, erfolgt im dritten und letzten Teil die Abfrage auf die Werte nicht Bayern und nicht Baden-Württemberg. Werden andere Werte als Bayern oder Baden-Württemberg in der Datenbank gespeichert, erfolgt die Ausgabe von 9 % Kirchensteuer für alle anderen Bundesländer.
Beispiel:
Besondere Zugriffe auf Daten #
Zugriff auf Personenfelder von benutzerdefinierten Kontaktverknüpfungen #
In einem Objekt haben Sie selbst ein Kontaktauswahlfeld angelegt. Dieses hat in der Datenbank beispielsweise die Bezeichnung user28 erhalten. Bitte aktualisieren Sie die Nummer immer anhand Ihrer Bezeichnung in Ihrem Fall.
Dabei wird als erstes auf das Kontaktauswahlfeld zugegriffen, über welches die Personeninformationen gezogen werden sollen. Dieses wird mit einem Unterstrich USER28_ von dem Modul PERSON getrennt. Danach greift man via Punkt .VARIABLE wieder auf das entsprechende Feld der Person zu.
Personendaten einer eigenen Kontaktverknüpfung:
Artikeltypen überspringen #
Es kann hilfreich sein, verschiedene Posten einer Artikelliste nicht auszugeben. Sei es ein Hinweistext oder Artikel eines bestimmten Typs. In einem Dokument können Sie beliebig oft die Schleife für Ihre Artikelliste mit den verschiedenen Posten durchlaufen. So können Sie beispielsweise in einer Tabelle zuerst nur die Beschreibungen ausgeben, im weiteren Verlauf die Artikel und Gruppenzeilen und in einer abschließenden Tabelle nur die Sonderposten. Eine solche Schleife wird immer mit allen Zeilen durchlaufen, also auch mit jenen Zeilen, die Sie gar nicht haben wollen. Um eine solche ungewollte Zeile zu entfernen, nutzt man die Anweisung SKIPTHISLINE.
Die Variable {$ARTICLES.TYPE} kann verschiedene Werte annehmen:
- text – sind mögliche Zwischenzeilen über die Funktion
- article – ist ein Artikel der Artikelliste über die Funktion
- groupline – ist eine Gruppenzeile über die Funktion
- special – ist ein Sonderposten über die Funktion
Im weiteren Verlauf finden Sie weitere Beispiele für diese Funktion. Textzeilen überspringen – Typ=text
Eigene Berechnung innerhalb des Dokumentes durchführen #
Grundlegend sollte in Dokumenten nicht gerechnet werden. Die Daten sollten eigentlich bereits über die Datenbank zur Verfügung gestellt werden. Sei dies durch Systemfelder oder durch Erweiterungen mittels Add-on. Nicht immer lässt sich dies vermeiden, wenn man an die Ausgabe von Positionsnummern denkt, die der eine vielleicht mit 1., 2., 3. und ein anderer vielleicht mit 100, 200, 300 etc. ausgeben möchte. Es gibt aber auch andere Möglichkeiten der Berechnung innerhalb eines Dokumentes, wie folgendes Beispiel zeigt.
Erklärung:
- Im ersten Schritt wird eine neue Variable gesetzt. Als Wert erhält diese den Einzelbetrag multipliziert mit der Menge. Über den nachfolgenden String wird die Ausgabe im richtigen Format gesteuert. WICHTIG: Es gibt derzeit keine Möglichkeit bei 1000er Stellen einen Punkt zu setzen. Die Funktion „replace“ ersetzt dabei den Punkt durch ein Komma, damit die Nachkommastellen durch ein Komma vom Wert getrennt werden.
- Die Variable GESAMTPREIS gibt die Summe der Zwischenbeträge aus.
Berechnung innerhalb eines Dokumentes:
Beispiel:
ZWISCHENBETRAG 500,00 (GESAMTPREIS = 0 + 500)
ZWISCHENBETRAG 300,00 (GESAMTPREIS = 500 + 300)
=============== ==============
GESAMTPREIS 800,00
Ersetzen und kürzen von Angaben #
Im nachfolgenden Beispiel werden formatierte Daten einer Variable gekürzt. In der Regel haben Sie die Möglichkeiten Daten formatiert {$TOTAL_BRUTTO} = 27.380,25 EUR oder unformatiert {$TOTAL_BRUTTO_RAW} = 27380.25 auszugeben. Nun kann es sein, dass Sie statt „EUR“ lieber „€“ stehen haben möchten oder zwar eine Zahlenformatierung mit Tausender-Trennung und Komma wünschen und gar keine Währungsangabe benötigen.
Ersetzung der Währung EUR gegen €
EUR wird durch nichts ersetzt. Die Prüfung erfolgt auf das Währungszeichen mit einem vorangestellten Leerzeichen. Dies dient dazu, dass das Leerzeichen bei der Ausgabe ebenfalls weggekürzt werden soll.
Ersetzung der Währung EUR gegen nichts
Kürzen von Texten oder Daten auf eine Anzahl von Zeichen. Dabei wird in diesem Beispiel Wortgenau getrennt und automatisch mit „…“ ergänzt.
Kürzen eines Textes auf automatische 80 bzw. gewünschte 30 Zeichen:
Besondere Schleifen und Hilfsschleifen #
Zählen von Artikeln – Artikelposition #
Mitunter müssen Attribute gezählt werden. Hierfür kann man mittels einer Hilfstabelle und dem Durchlauf der Schleife die Attribute ermitteln lassen, um diese später für Variablen verwenden zu können. Im Beispiel soll die Variable ARTIKELPOS hochgezählt werden, um zu wissen, wie viele Posten in einem Angebot enthalten sind.
Kopiervorlage – Variable wird auf „0“ gesetzt:
In einer Tabelle mit Schleifen (Textmarken) werden die Artikel durchlaufen. ❗ Textmarken nicht vergessen. Diese sind in der Kopiervorlage nicht vorhanden.
Position ohne Zählung der Gruppenzeile. Hier wird in der Schleife geschaut, ob es sich um Posten vom Typ Artikel oder Sonderposten handelt. Ist dies der Fall, wird die Variable jeweils um 1 hoch gezählt und anschließend der neue Wert ausgegeben. Da wir bei 0 beginnen, ist die erste Ausgabe 1.
Kopiervorlage für Postenzählung vom Typ Artikel oder Sonderposten:
Position 2-stellig ausgeben (bspw. 1.1, 1.2, 2.1 etc.) Dazu wird die Artikelposition außerhalb der Gruppenzeile hochgezählt. Innerhalb der Gruppenzeile wird die Subposition hochgezählt.
2-stellige Postenzählung:
Position 2-stellig ausgeben (bspw. 1.1, 2.2 etc.), Artikelposition wird hochgezählt bei Verwendung einer Textzeile dazwischen.
2-stellige Postenzählung:
Artikel-Posten anhand von Warengruppen Ausgeben #
Auch für dieses Beispiel gilt die Möglichkeit auf Basis von Artikelmerkmalen Schleifen zu durchlaufen und diese sortiert ausgeben zu lassen. Ob dies nun Warengruppen sind oder vielleicht Packungseinheiten oder ein selbst angelegtes Feld für Farben, spielt dabei keine Rolle. Das Prinzip ist jeweils dasselbe.
Sollen die Ausgabe von Artikelposten eines Vorgangs getrennt nach Warengruppen erfolgen, so ist hier ein mehrstufiger Vorgang notwendig.
Im ersten Schritt ist die Ermittlung der Warengruppen erforderlich. Dabei wird für jede Warengruppe eine separate Variable gesetzt. Im Beispiel für die Gruppe 1 und Gruppe 2. Gruppe X steht für jede weitere Warengruppe. Das Setzen der Variablen innerhalb der Schleife ist entsprechend Ihrer Anzahl an Warengruppen zu ergänzen.
Durchlauf der Artikel-Schleife und Prüfung der Warengruppen. Es wird der jeweils zuvor definierten Variable der Wert „1“ zugewiesen.
Die Gesetzten Variablen dienen nun vor einer individuellen Tabelle als „Schalter“, um die gewünschte Tabelle einzublenden (1) bzw. nicht einzublenden (0). Dabei muss nun die Artikelschleife je Warengruppe ein weiteres Mal durchlaufen werden. Selbstverständlich können nach dem Schalter auch individuelle Texte eingeblendet werden. Es muss also nicht zwingend die Artikelschleife durchlaufen werden, wenn Sie stattdessen nur einen Hinweis ausgeben möchten, wenn es Artikel aus der Warengruppe Dienstleistungen geben sollte.
Erneuter Durchlauf der Artikelschleife. Über die if-Bedingung werden alle Posten anderer Warengruppen übersprungen.
Ausgabe von Artikeln bestehend aus Stücklisten #
Eine Stückliste ist eine besondere Art eines Artikels innerhalb der Artikelverwaltung. Bei der Verwendung wird nur der Artikel selbst in eine Postenliste (z.B. Angebot) aufgenommen. Die einzelnen Details (Unterartikel) werden dabei nicht überführt. Möchte man diese mit ausgeben, so wird innerhalb der jeweiligen Artikel-Schleife eine foreach-Schleife ausgeführt. Ob dies nötig ist (Ausführung nur bei Stücklisten), kann über eine Bedingung geprüft werden.
Es wird geprüft, ob der Artikel eine Stückliste ist. In diesem Fall wird aus dem Posten innerhalb der Stückliste von {$ARTICLES.PARTSLIST} der deutschsprachige Name ausgegeben. Liegt keine Stückliste vor, so wird die Bezeichnung und Beschreibung des Artikels ausgegeben.
Beispiel für eine foreach-Schleife innerhalb einer Zelle einer Tabelle:
Beispiel für eine foreach-Schleife über eine Zeile einer Tabelle
Beispiele für #
Anschriften #
Absender und Anschrift aus dem Kontakt und einer Person #
Kopiervorlage Firmenanschrift mit Person:
Rechnungsanschrift aus dem aktuellen Vorgang #
Rechnungsanschriften sollten immer aus dem aktuellen Vorgang geholt werden. Nach der GoBD wird die Liefer- und Rechnungsanschrift direkt beim Vorgang gespeichert. Für die Unveränderlichkeit, ist diese Vorlage zu verwenden.
Kopiervorlage Rechnungsanschrift nach GoBD:
Rechnungsanschrift aus dem Rechnungskonto #
Möchte man Rechnungs- bzw. Lieferanschriften für Angebote oder Aufträge nutzen, aus denen nicht direkt Rechnungen erzeugt werden – daher sind hier Verträge nicht genannt – können Sie diese Vorlage verwenden. Dabei werden die Daten direkt aus dem Rechnungskonto geholt. Später könnte für einen Vorgang noch das Rechnungskonto gewechselt werden. Daher ist dieses nicht direkt GoBD-relevant.
Kopiervorlage Rechnungsanschrift:
Lieferanschrift aus dem aktuellen Vorgang #
Kopiervorlage Lieferanschrift nach GoBD:
Lieferanschrift aus dem Rechnungskonto des aktuellen Vorgangs #
Kopiervorlage Lieferanschrift:
Lieferanschrift aus dem Rechnungskonto mit User-Feldern für die Person #
Kopiervorlage Lieferanschrift:
Lieferadresse Optional #
Optionale Ausgabe der Lieferadresse auf Basis eines benutzerdefinierten Feldes (z.B. user28) im Rechnungskonto.
Kopiervorlage Lieferung für Leistungsscheine oder Rechnungen:
Anreden #
Anrede einer Person mit Standard-Feld Anrede #
Für Briefanreden kann man die Anrede auf Basis des Anrede-Feldes erstellen. Nutzen Sie dabei jeweils die Anreden, die Sie speziell verwenden wollen und eine alternative Anrede für alle sonstigen. Basierend auf einer Kontaktverknüpfung mit einer Personenauswahl werden die Daten der Person geholt. Diese Form funktioniert für Systemvorlagen nur dann, wenn im Kontaktfeld auch eine Person verknüpfbar ist. Bei Rechnungen ist dies nicht der Fall. In diesem Fall müssten Sie mit Angaben aus dem Rechnungskonto oder einem benutzerdefinierten Kontakt-Verknüpfungsfeld arbeiten und die Anrede im nächsten Beispiel verwenden.
Kopiervorlage Briefanrede auf Basis Standard-Kontaktfeldern:
Anrede einer Person mir benutzerdefiniertem Kontaktfeld und Standard-Feld Anrede #
Für Briefanreden kann man die Anrede auf Basis des Anrede-Feldes erstellen. Nutzen Sie dabei jeweils die Anreden, die Sie speziell verwenden wollen und eine alternative Anrede für alle sonstigen. Basierend auf einer Kontaktverknüpfung mit einer Personenauswahl werden die Daten der Person geholt. In unserem Beispiel heißt die benutzerdefinierte Kontaktverknüpfung user28.
Kopiervorlage Briefanrede auf Basis benutzerdefinierter Kontaktverknüpfung:
Anrede einer Person mit Standard-Feld Anrede und benutzerdefiniertem Titel-Feld #
Unser benutzerdefiniertes Titel-Feld ist im Beispiel user28. Bitte beachten Sie if-Anweisung für den Titel und das enthaltene Leerzeichen innerhalb der Anweisung.
Kopiervorlage Briefanrede mit benutzerdefiniertem Titel-Feld:
Anrede einer Person mit benutzerdefinierten-Feldern aus dem Rechnungskonto #
Die benutzerdefinierten Felder sind im Beispiel im CRM-System wie folgt gepflegt worden:
- user28 = Anrede
- user29 = Vorname
- user30 = Nachname
Kopiervorlage Briefanrede auf Basis Standard-Kontaktfeldern:
Überschriften und Texte für Ausgangsrechnungen, Gutschriften und deren Korrekturen #
Ausgabe einer Rechnungsnummer, einem Vorschauhinweis oder einem Korrekturhinweis #
Erzeugen Sie Ihre Rechnung in der Vorschau, enthält das Dokument noch keine Rechnungsnummer. Hier bietet sich an, an der Stelle einen alternativen Text auszugeben und beispielsweise Fett und rot zu markieren um deutlich zu machen, dass es sich nur um ein Vorschaudokument handelt. Dieser Textblock liefert die Rechnungsnummer, sobald diese vergeben wurde. Alternativ wird der Text „VORSCHAU“ ausgegeben. Sie haben die Möglichkeit einzelne Bereiche auch innerhalb Ihrer Vorlage zu formatieren. So wird hier der Begriff eingefärbt und Fett dargestellt, damit auch die Ausgabe so erfolgt. Hingegen wird die Rechnungsnummer normal ausgegeben.
Ausgangsrechnungen und Gutschriften bedürfen darüber hinaus gelegentlich einem Storno. Ist dies der Fall, wird die Variable {$IS_REVERSE} auf 1 gesetzt und ein automatischer Text ausgegeben. Diesen automatischen Text mittels Variable {$NAME} einer korrigierten Ausgangsrechnung oder Gutschrift können Sie mittels if-Anweisung auch verändern.
Die nachfolgenden Beispiele zeigen mögliche Ausgaben in Ausgangsrechnungen und Gutschriften:
Angabe der Umsatzsteuer-ID insbesondere für Auslandskunden #
Liefern Sie Waren und Dienstleistungen ins Ausland, müssen Sie auf der Rechnung die Umsatzsteuer-ID eines Firmenkunden ausweisen, wenn vorhanden. Da dies nur dann erforderlich ist, haben wir Ihnen eine Alternativzeile aufbereitet, wenn es sich um einen Auslandskunden handelt. Dieser Textblock liefert die Zeile der USt-ID nur dann, wenn es sich um einen Auslandskunden handelt. Liegt die ID eines Auslandskunden nicht vor, wird darüber hinaus noch ein alternativer Text ausgegeben. Wir haben darüber hinaus mal dieselbe Variablen in zwei verschiedenen Schreibweisen verwendet.
Formatierte Datumsangaben #
Oft benötigt man an verschiedenen Stellen ein Datum. Dabei ist es Hilfreich auf selbst formatierte Datumsangaben zurück zu greifen. In Ihrem Rechnungsdokument oder Ihrem Angebot möchten Sie immer das Datum in der Form mm.tt.jjjj schreiben. Allerdings liefert das TecArt CRM je nach persönlicher Einstellung des Anwenders das Datum mal so aus oder auch in anderen Schreibweisen, wie jjjj-mm-tt. Sie selbst können die Art der Anzeige beeinflussen, wenn Sie nicht nur das formatierte Datum ausgeben lassen sondern selbst darauf Einfluss nehmen.
Achten Sie darauf, dass Sie bei der Verwendung eines Datums auf Basis eines Feldes die unformatierte Ausgabe benötigen, also immer mit dem Zusatz _RAW – Sie wollen ja selbst formatieren.
Beschreibung | Beispiele | |
---|---|---|
format | Definiert das zurück zu gebende Format. Die Platzhalter entsprechen denen der PHP-Funktion |
|
time | Definiert den Zeitpunkt für die Rückgabe. Wird dieser nicht angegeben, so wird das aktuelle Datum + Uhrzeit verwendet | time=“month_end+1″ = Ende des aktuellen Monats + 1 Sekunde. Dadurch landet man im nachfolgenden Monat.
Weitere Möglichkeiten finden Sie hier: Variablen für Filter |
Rabatte #
Zeilenrabatt für einmalige Posten #
Dieses Beispiel zeigt die Möglichkeit bei einem errechneten Rabatt für einmalige Posten, entsprechende Angaben im Dokument einzufügen. Einmalige Posten finden Anwendung in Angeboten, Aufträgen und Verträgen. Weiterhin gelten diese für alle Vorgangsarten mit Dokumentenerzeugung, wie Ausgangsrechnungen, Lieferscheine und Gutschriften.
Tabellen mit Posten in Vorgängen, Angeboten, Aufträgen oder Verträgen #
Tabelle mit optionalen Kosten, Rabatten und Hochzählung der Position – Variante 1 #
Das Beispiel zeigt einen schematischen Aufbau. Dabei können Sie Teile der Bedingungen herauskopieren. Bitte achten Sie darauf entsprechende Schleifen (Textmarken) für die Tabellen zu benutzen.
Setzen Sie zuerst die Grundlage für das Hochzählen der Position mittels einer eigenen Variable. Diese muss am Anfang auf 0 stehen. Die Zählung wird später direkt am Anfang der Schleife vorgenommen und um die Zahl addiert, die Sie vorgegeben haben.
Variable auf 0 setzen vor der ersten Berechnung:
Die Variante 1 ermittelt in der Variable {$HAS_ARTICLES_DISCOUNT}, ob es generell einen Posten mit Rabatt gibt und gibt 1 zurück, wenn dies der Fall ist. Andernfalls ist der zurückgegebene Wert 0. Bitte beachten Sie auch die Variante 2, da sie das Prinzip erklärt, auch beliebige Tabellen anhand gewünschter Merkmale auszugeben.
Schematischer Aufbau mit Bedingungen für unterschiedliche Tabellenansichten:
Tabelle mit optionalen Kosten, Rabatten und Hochzählung der Position – Variante 2 #
Das Beispiel zeigt einen schematischen Aufbau. Dabei können Sie Teile der Bedingungen herauskopieren. Bitte achten Sie darauf entsprechende Schleifen (Textmarken) für die Tabellen zu benutzen.
Setzen Sie zuerst die Grundlage für das Hochzählen der Position mittels einer eigenen Variable. Diese muss am Anfang auf 0 stehen. Die Zählung wird später direkt am Anfang der Schleife vorgenommen und um die Zahl addiert, die Sie vorgegeben haben.
Variable auf 0 setzen vor der ersten Berechnung:
Die Variante 2 ermittelt in der ersten Schleife, ob es einen Posten gibt, in welchem ein Rabatt angegeben wurde und welcher nicht leer ist. Ist dies der Fall, wird die Variable {$DISCOUNT_TABLE} auf 1 gesetzt. Andernfalls ist der zurückgegebene Wert weiterhin 0. Das erklärte Prinzip können Sie auch für andere Beispiele anwenden, um vorhandene Werte zu ermitteln und abweichende Tabellen oder Texte auszugeben.
Schematischer Aufbau mit Bedingungen für unterschiedliche Tabellenansichten:
Zahlungsbedingungen #
Zahlungsbedingungen können einfache oder auch komplexe Anweisungen enthalten. Je nach Bedarf können Sie Ihre Bedingungen individuell gestalten. Die Beispiele zeigen einfache Bedingungen ohne und mit Skonto oder auch mal ein komplexeres Beispiel mit vielen Bedingungen. Dabei zeigen die Beispiele verschiedene Möglichkeiten der Variablennutzung.
Einfache Zahlungsbedingung #
Kopiervorlage einfache Zahlungsbedingung:
Einfache Zahlungsbedingung mit Skonto #
Kopiervorlage einfache Zahlungsbedingung mit Skonto:
Einfache Zahlungsbedingung mit Abbuchung oder Überweisung #
Kopiervorlage einfache Zahlungsbedingung mit Abbuchung oder Überweisung:
Zahlungsinformation mit Einbindung des Saldos #
Kopiervorlage einfache Zahlungsbedingung mit Einbindung des Saldos:
Komplexe Zahlungsbedingungen anhand Zahlungsart und Zahlungsfrist #
In diesem Beispiel wird mit zwei Feldern gearbeitet, welche aus dem Rechnungskonto übernommen bzw. innerhalb der Rechnung individuell verwendet werden können. Diese basieren auf der Zahlungsart (payment_type) und dem Zahlungsziel in Tagen (payment_target).
Kopiervorlage komplexe Zahlungsbedingungen. Die Anweisung wird später in eine Zeile geschrieben und ist für die Übersichtlichkeit im Beispiel mit Umbrüchen:
Bedingung für das Reverse-Charge-Verfahren #
Das Reverse-Charge-Verfahren dreht die Schuld zur Zahlung der Umsatzsteuer vom leistenden Unternehmen auf den Leistungsempfänger um. Dies ist in der Regel bei grenzüberschreitenden Lieferungen der Fall. In diesem Fall ist die Versandzone {$SHIPPING_ZONE_RAW} zur Berechnung der Umsatzsteuer im Zusammenhang mit dem Rechnungskonto ausschlaggebend. Dabei gibt es folgende Werte: 0 – Inland, 1 – EG-Land mit Umsatzsteuer-ID, 2 – EG-Land ohne Umsatzsteuer-ID, 3 – Ausland.
Kopiervorlage Reverse-Charge-Verfahren. Die Anweisung wird später in eine Zeile geschrieben und ist für die Übersichtlichkeit im Beispiel mit Umbrüchen:
Mahnungen #
Betreff #
Für den Betreff einer Mahnung nutzt man die Mahnstufe mit dem Feldnamen LEVEL. Dahinter befindet sich eine Drop-Down-Liste, in welcher Sie beliebige Bezeichnungen für die maximal drei Mahnstufen mit den Index 0, 1 und 2 angeben können. Sie müssen nicht alle Mahnstufen verwenden und können auch weitere Mahnstufen angeben, allerdings funktioniert der automatische Mahnlauf nur mit den definierten Index zusammen mit den in der Administration festgelegten Einstellungen.
Überschrift einer Mahnung:
Mahnungstexte #
Nachfolgend finden Sie ein paar Beispiele möglicher Einleitungstexte auf Basis verschiedener Mahnstufen.
Mahnungstabelle für Ausgangsrechnungen #
Im Gegensatz zu den Ausgangsrechnungen oder Gutschriften wird die Tabelle für die Mahnungen allgemein mit den offenen Forderungen der Ausgangsrechnungen befüllt. Je nach Art der Erstellung einer Mahnung kann eine Mahnung aufgrund einer offenen Forderung einer Ausgangsrechnung erzeugt werden oder eine Mahnung auf Basis eines Rechnungskontos mit der gleichzeitigen Auflistung mehrerer offener Ausgangsrechnungen und vorangegangener Mahnungen.
Möchten Sie gleichzeitig die Position mit ausgeben, können Sie dies ebenfalls mit einer Schleife tun. Andernfalls können Sie dies auch weglassen.
Hierbei ist es wichtig zuerst die Variablenwerte zu setzen: