Inhaltsverzeichnis

Allgemeine Funktionen

Aktionsmenü

Vorlagen anpassen

Einleitung

In foreknown werden Dokumente, wie z.B. Angebote, Aufträge, Rechnungen, Leistungsnachweise und -exporte verwaltet, die später auch für den Kunden exportiert werden müssen, um z.B. als PDF Dokument per E-Mail versandt werden zu können. Damit diese Dokumente den Anforderungen und dem Common Design (CD) Deines Unternehmens entsprechen, können individuelle Vorlagen in foreknown verwaltet werden.

Daher basieren alle Dokumente, die mit foreknown erstellt werden, immer auf einer Freemarker (HTML, CSS) Datei für Angebote, Aufträge, Rechnungen und Leistungsnachweise und auf Microsoft Excel Dateien für Leistungsexporte.

Hinweis: Freemarker ist eine Template Engine, mit deren Hilfe man HTML Seiten dynamisch mit Daten befüllen kann. In foreknown verwenden wir Freemarker Vorlagen (.fmt Dateien), um die Angebots-, Auftrags-, Rechnungs- und Leistungsdaten in die mit HTML/CSS gestalteten Vorlagen einzufügen. Weitere Informationen und eine umfangreiche Dokumentation zu Freemarker findest Du auf der Website https://freemarker.apache.org.

Diese Vorlagen können über die Vorlagenverwaltung in der System Administration zur individuellen Gestaltung heruntergeladen werden. Es können auch pro Dokumenttyp (Angebot, Auftrag, Rechnung, Leistungsnachweis, Leistungsexport, E-Mail) mehrere Varianten erstellt werden, um z.B. Vorlagen in mehreren Sprachen oder für festpreis- und aufwandsbezogene Angebote vorzuhalten.

Vorlagen verwalten


Die Verwaltung der Vorlagen wird über den Menüpunkt "System Administration / Vorlagen" aufgerufen. Der Aufruf ist nur für Benutzer mit der Rolle "Konto-Administrator" möglich.


Nach oben ↑


Allgemeine Funktionen

Vorlage suchen

Im oberen Bereich des Dialogs "Vorlagen verwalten" befindet sich das Suchfeld und der "+ Neu" Button (siehe auch Vorlage erstellen). Unterhalb dieses Bereichs werden alle bereits angelegten Vorlagen in Form einer blätter- und sortierbaren Liste angezeigt.

Gibt man nun in das Eingabefeld einen Suchbegriff ein, so zeigt die Liste nur noch die Vorlagen an, die den eingegebenen Suchbegriff im Namen enthalten. Auf diese Weise können einzelne Vorlagen schnell gefunden und bearbeitet werden.


Nach oben ↑


Vorlage erstellen

Um eine neue Vorlage zu erstellen, klickst Du auf den Button "+ Neu", der sich oben rechts neben dem Suchfeld befindet. Dieser Button öffnet den Popup Dialog "Vorlage erstellen".

Vorlagen - Vorlage erstellen


Folgende Eigenschaften müssen für eine neue Vorlage angegeben werden:

  1. Basis-Vorlage: Aus einer Drop-Down Liste muss eine Basis-Vorlage ausgewählt werden. Diese bestimmt auch den Verwendungszweck der Vorlage. Es kann eine Vorlage für Angebote, Aufträge, Rechnungen, Tätigkeitsnachweise und E-Mails erstellt werden.
  2. Name: Hier wird der Name der Vorlage eingegeben, der möglichst selbsterklärend sein sollte, um später bei der Auswahl einer Vorlage die gewünschte Variante erkennen zu können.

Mit der Aktion "Speichern" wird eine neue Vorlage erstellt. Mit der Aktion "Zurücksetzen" und "Abbrechen" werden die Eingaben verworfen und im Falle der Aktion "Abbrechen" wird der Dialog geschlossen.


Nach oben ↑


Aktionsmenü

Vor jedem Eintrag in der Liste der Vorlagen ist ein Aktionsmenü (Button mit 3 Punkten), welches alle Aktionen anbietet, die für eine Vorlage zur Verfügung stehen.

Vorlagen - Aktionsmenü


Nachfolgend werden alle Aktionen im Detail beschrieben.

Vorschau

Die Aktion "Vorschau" öffnet die ausgewählte Vorlage, befüllt diese mit den aktuell in den Variablen hinterlegten Werten und einigen Beispieldaten und erzeugt daraus ein PDF Dokument. Dieses wird anschließend zum Öffnen oder lokalen Speichern bereitgestellt.

Auf diese Weise kann man sich schnell einen Eindruck verschaffen, ob die aktuelle Version der Vorlage den Anforderungen des Unternehmens entspricht.

Hinweis: Für eine Vorlage vom Typ "Leistungsexport" steht diese Funktion nicht zur Verfügung.


Nach oben ↑


Aktuelle Vorlage herunterladen

Diese Aktion lädt die aktuelle Version der Vorlage als Freemarker Datei (.fmt) bzw. für Leistungsexporte als MS Excel (.xlsx) Datei herunter, sodass diese ggf. angepasst und wieder mit der Aktion "Bearbeitete Vorlage hochladen" hochgeladen werden kann.


Nach oben ↑


Basis-Vorlage herunterladen

Diese Aktion lädt die Basis-Version der Vorlage als Freemarker Datei (.fmt) bzw. für Leistungsexporte als MS Excel (.xlsx) Datei herunter, sodass diese ggf. angepasst und wieder hochgeladen werden kann. Basis-Version bedeutet, dass es die ursprüngliche von foreknown bereitgestellt und noch nicht angepasste Version der Vorlage ist.


Nach oben ↑


Bearbeitete Vorlage hochladen

Diese Aktion lädt eine ggf. angepasste Version der Freemarker Datei (.fmt) bzw. für Leistungsexporte der MS Excel (.xlsx) Datei hoch. Man überschreibt somit die aktuelle Version der Vorlage.

Hinweis: Mit dieser Aktion wird die aktuelle Version der Vorlage unwiederbringlich überschrieben.


Nach oben ↑


Als Standard setzen

Mit dieser Aktion wird die ausgewählte Vorlage als Basis-Vorlage des zugrunde liegenden Dokumententyps festgelegt. Das bedeutet, man kann für Angebote, Aufträge, Rechnungen, Leistungsnachweise und Leistungsexporte festlegen, welche der jeweiligen Vorlagen beim Erstellen eines neuen Dokuments voreingestellt sein soll.


Nach oben ↑


Stammdaten bearbeiten

Mit dieser Aktion öffnet sich der Dialog "Stammdaten bearbeiten", über den lediglich der Name der Vorlage geändert werden kann. Die Basis-Vorlage kann für eine bestehende Vorlage nicht mehr geändert werden.

Es sollte immer ein sprechender Name gewählt werden, damit bei der Zuordnung eines Templates zu einem Angebot, Auftrag, zu einer Rechnung und Leistungsnachweis und zu einem Leistungsexport sofort ersichtlich wird, um welche Vorlage es sich handelt.


Nach oben ↑


Variablen bearbeiten

Diese Aktion öffnet den Dialog "Variablen bearbeiten", über den einige "Platzhalter" für eine Vorlage mit konkreten Werten befüllt werden können. Bei den Variablen handelt es statische Werte, die bei der Verwendung einer Vorlage eingefügt werden.

Vorlagen - Variablen bearbeiten


Wichtig: Initial sind alle Variablen mit Demodaten befüllt und sollten daher an die eigenen Unternehmensdaten angepasst werden.

Über die Aktion "Variable hinzufügen" können weitere, eigene Variablen hinzugefügt werden. Damit diese allerdings in der Vorlage erscheinen, muss diese um einen neuen Platzhalter erweitert werden, der diese Variable referenziert.

Mit der Aktion "Speichern" werden die Änderungen gespeichert. Mit der Aktion "Zurücksetzen" und "Abbrechen" werden die Eingaben verworfen und im Falle der Aktion "Abbrechen" wird der Dialog geschlossen.

Platzhalter der MS Excel Basis-Vorlagen

Für die Vorlage "Leistungsexport" wird aktuell genau eine Variable bereits erstellt, da diese in der Basis-Vorlage verwendet wird:

  1. companyName: Name des Unternehmens. Dieser wird im Fussbereich der Basis-Vorlage angezeigt.

Es können, wie bereits erwähnt, aber auch beliebige, weitere Variablen hinzugefügt werden.

Platzhalter der Freemarker Basis-Vorlagen

In den mitgelieferten Basis-Vorlagen für Angebote, Aufträge, Rechnungen, Leistungsnachweise und E-Mails werden bereits einige Variablen verwendet, die über das Unternehmensprofil zentral mit Werten Deines Unternehmens vorbelegt werden können.

Um diese zentral gepflegten Werte zu überschreiben, muss lediglich eine Variable mit gleichem Namen an der Vorlage erstellt werden. So kann zum Beispiel der zentrale Ansprechpartner für Angebote oder Aufträge individuell an den Vorlagen gesetzt werden.

  1. Adressdaten Deines Unternehmens

    1. companyName: Name des Unternehmens. Dieser wird im Kopfbereich und im Absender der Basis-Vorlagen angezeigt.
    2. companyAddressLine1: Adresszusatz 1. Zeile. Dieser wird in den Basis-Vorlagen nicht verwendet.
    3. companyAddressLine2: Addresszusatz 2. Zeile. Dieser wird in den Basis-Vorlagen nicht verwendet.
    4. companyStreetAddress: Straße und Hausnummer des Unternehmens. Diese wird im Kopfbereich und im Absender der Basis-Vorlagen angezeigt.
    5. companyPostalCode: PLZ des Unternehmens. Diese wird im Kopfbereich und im Absender der Basis-Vorlagen angezeigt.
    6. companyCity: Stadt des Unternehmens. Diese wird im Kopfbereich und im Absender der Basis-Vorlagen angezeigt.
    7. companyRegion: Region / Bundesland des Unternehmens. Dieses wird in den Basis-Vorlagen nicht verwendet.
    8. companyCountry: Land des Unternehmens. Dieses wird in den Basis-Vorlagen nicht verwendet.
  2. Kontaktdaten Deines Unternehmens

    1. companyEmail: E-Mail-Adresse des Unternehmens. Diese wird im Kopfbereich der Basis-Vorlagen angezeigt.
    2. companyPhone: Telefon-Nr. des Unternehmens. Diese wird im Kopfbereich der Basis-Vorlagen angezeigt.
    3. companyFax: Telefon-Nr. des Unternehmens. Diese wird im Kopfbereich der Basis-Vorlagen angezeigt.
    4. companyWebsite: Website des Unternehmens. Diese wird im Kopfbereich der Basis-Vorlagen angezeigt.
  3. Daten zum Standard-Ansprechpartner

    1. responsibleName: Allgemeiner Ansprechpartner des Unternehmens. Dieser wird im Kopfbereich der Basis-Vorlagen angezeigt und wird ggf. mit dem Namen des am Kunden hinterlegten Ansprechpartners überschrieben.
    2. responsibleFirstname: Vorname des allgemeinen Ansprechpartners des Unternehmens. Dieses wird in den Basis-Vorlagen nicht verwendet.
    3. responsibleLastname: Nachname des allgemeinen Ansprechpartners des Unternehmens. Dieses wird in den Basis-Vorlagen nicht verwendet.
    4. responsiblePhone: Telefon-Nr. des allgemeinen Ansprechpartners des Unternehmens. Diese wird im Kopfbereich der Basis-Vorlagen angezeigt und wird ggf. mit der Telefon-Nr. des am Kunden hinterlegten Ansprechpartners überschrieben.
    5. responsibleEmail: E-Mail-Adresse des allgemeinen Ansprechpartners des Unternehmens. Diese wird im Kopfbereich der Basis-Vorlagen angezeigt und wird ggf. mit der Telefon-Nr. des am Kunden hinterlegten Ansprechpartners überschrieben.
  4. Daten zur Bankverbindung

    1. bankName: Name der Bank des Unternehmens. Dieser wird im Kopfbereich der Basis-Vorlagen angezeigt.
    2. bankId: BIC des Kontos des Unternehmens. Diese wird im Kopfbereich der Basis-Vorlagen angezeigt.
    3. bankAccountNumber: IBAN des Kontos des Unternehmens. Diese wird im Kopfbereich der Basis-Vorlagen angezeigt.
  5. Rechtliche Informationen

    1. management: Namen der Geschäftsführer des Unternehmens. Diese werden im Kopfbereich der Basis-Vorlagen angezeigt.
    2. salesTaxNumber: Umsatzsteuer-Ident Nummer des Unternehmens. Diese wird im Kopfbereich der Basis-Vorlagen angezeigt.
    3. commercialRegister: Handelsregister-Nr. des Unternehmens. Diese wird im Kopfbereich der Basis-Vorlagen angezeigt.
    4. jurisdiction: Gerichtsstand des Unternehmens. Dieser wird im Kopfbereich der Basis-Vorlagen angezeigt.
  6. Bildmaterial

    1. companyImage1: Base64 String z.B. eines Logo Bildes. Dieses wird in der Kopfzeile rechts in den Basis-Vorlagen angezeigt.
    2. companyImage2: Base64 String z.B. eines weiteren Bildes. Dieses kann in individuellen Vorlagen verwendet werden.
    3. companyImage3: Base64 String z.B. eines weiteren Bildes. Dieses kann in individuellen Vorlagen verwendet werden.
  7. Fonts

    1. companyFontFamily: Name der Font Family, welcher sich auf einen der unterstützten Fonts von foreknown oder auf einen Google Font beziehen kann.
    2. companyGoogleFontUrl: URL des Google Fonts, der verwendet werden soll. Der Wert unter companyFontFamily muss in diesem Fall zum referenzierten Google Font zusammenpassen.
  8. Einstellungen

    1. showVatPerPosition: Für Rechnungs-, Angebots- und Auftragsvorlagen relevant. Flag, welches bestimmt, ob für jede Position der Umsatzsteuersatz mit ausgegeben werden soll. Initial: false
    2. showServiceEntryData: Nur für Rechnungsvorlagen relevant. Flag, welches bestimmt, ob die Leistungen und Zusatzleistungen mit auf der Rechnung als zusätzliche Seiten im Querformat ausgegeben werden sollen. Initial: false
    3. showHeaderPerPosition: Nur für Rechnungsvorlagen relevant. Flag, welches bestimmt, ob jede Rechnungsposition eine eigene Spaltenüberschrift erhält. Initial: false
    4. showPaymentPlan: Nur für Angebots- und Auftragsvorlagen relevant. Flag, welches bestimmt, ob ein evtl. hinterlegter Zahlungsplan mit ausgegeben werden soll. Initial: false
    5. sectionPageBreak: Nur für Leistungsnachweisvorlagen relevant. Flag, welches bestimmt, ob für jeden Typ einer Leistung (Abschlagszahlung, Zusatzleistungen, Leistungsnachweis) ein Seitenumbruch eingefügt werden soll.

Hinweise: Über das Unternehmensprofil können sämtliche Variablen (außer "Einstellungen") für alle Basis-Vorlagen zentral mit Werten vorbelegt werden. Wenn eine Basis-Vorlage einen bestimmten Wert überschreiben soll, so muss eine gleichnamige Variable für die Vorlage erstellt werden.

Die Daten des Ansprechpartners werden durch die Kontaktdaten des "Verantwortlichen" eines Angebots, Auftrags oder einer Rechnung überschrieben, sofern dieser gepflegt wurde.


Nach oben ↑


Vorlage löschen

Eine bestehende Vorlage kann über diese Aktion gelöscht werden. Es öffnet sich ein Bestätigungsdialog, wo durch einen Klick auf den Löschen-Button die Vorlage endgültig gelöscht wird.


Nach oben ↑


Vorlagen anpassen

Ziel der Vorlagen in foreknown ist es, die Möglichkeit zu schaffen, für alle Dokumente, die mit foreknown erstellt werden können, ein an Dein Unternehmen angepasstes Design realisieren zu können. Nachfolgend wird beschrieben, wie Du die verschiedenen Vorlagentypen anpassen kannst. Dabei wird zwischen Freemarker- und Excelvorlagen unterschieden, da es unterschiedliche Technologien sind, die für die Vorlagen verwendet werden.


Nach oben ↑


Freemarker-Vorlagen anpassen

Eine Freemarker Vorlage wird verwendet, um Angebote, Aufträge, Rechnungen und Leistungsnachweise als PDF Dokument zu erzeugen. Für jeden dieser Typen liegt eine Basis-Vorlage vor, die als Grundlage für die Erstellung einer individuellen Vorlage dienen soll.

Nachfolgend werden die unterschiedlichen Anpassungsmöglichkeiten näher beschrieben.


Nach oben ↑


Anpassungen über das Unternehmensprofil

Der einfachste Weg, um eine Vorlage anzupassen, geht über das Unternehmensprofil, welches sich über die Navigation unter "System Administration / Unternehmensprofil" aufrufen lässt. Dort können neben einigen Unternehmensdaten für den Briefkopf auch ein Logo hochgeladen und ein Font angepasst werden.

Auf diese Weise können die mitgelieferten Basis-Vorlagen bereits ohne "Programmierung" angepasst werden.

Dokumentation: Schau Dir die detaillierte Beschreibung des Unternehmensprofils an, um innerhalb weniger Minuten bereits individuelle Angebote, Aufträge, Rechnungen und Leistungsnachweise erstellen zu können.

Möchtest Du strukturelle Änderungen an den Vorlagen vornehmen, so führt kein Weg an den Freemarker-Vorlagen vorbei.

Design anpassen

Der erste Schritt für die Schaffung einer individuellen Vorlage ist, sich eine Basis-Vorlage der gewünschten Vorlagenart z.B. des Angebots herunterzuladen. Diese .fmt Datei kann anschließend in einem Editor bearbeitet werden. Es ist hilfreich, wenn man für die Bearbeitung einen Editor verwendet, der das .fmt (Freemarker) Format unterstützt und somit ein Text-Highlighting ermöglicht.

Hinweis: Die Freemarker Datei, die in eine foreknown Vorlage hochgeladen wird, muss die Endung ".fmt" haben und nicht die Endung ".ftl", die ebenfalls verwendet wird.

Die Basis-Vorlage stellt eine HTML-Datei mit eingebundenem CSS dar, welche zusätzlich noch über Freemarker Anweisungen verfügt.

Hinweis: Die Freemarker Templates dürfen kein Javascript enthalten.

Grundlegende Anpassungen der Freemarker-Templates erfordern auf jeden Fall gute Kenntnisse in HTML und CSS.

CSS-Anpassungen

Einige Veränderungen hinsichtlich der Schriftgrößen, Abstände und Farben können auch nur durch CSS-Anpassungen erfolgen, wenn keine grundlegenden strukturellen Veränderungen notwendig sind.

Sämtliche CSS-Anweisungen befinden sich im head-Bereich der .fmt (html) Datei und können dort direkt angepasst werden.

HTML Struktur anpassen

Um strukturelle Veränderungen an einer Basis-Vorlage vorzunehmen, sind einige Aspekte zu berücksichtigen:

  1. Die aktuellen Vorlagen orientieren sich an den Größen einer DIN A4 Seite als Portrait. Viele Breiten- und Höhenangaben werden in Millimeter (mm) angegeben, um sicherzustellen, dass die Maße dem DIN A4 Format entsprechen. Daher ist bei der Anpassung der verwendeten Tabellenstrukturen darauf zu achten, dass die Spaltenbreiten sich im Rahmen einer DIN A4 Seite bewegen. Weiterhin wurden einige CSS-Anweisungen verwendet, die speziell für eine Druckausgabe verwendet wurden, um z.B. einen Fußbereich mit Seitenzahl ausgeben zu können.
  2. Bei den Angebots- und Auftragsvorlagen ist zu beachten, dass es in foreknown verschiedene Positionstypen und Einstellungen gibt. Jeder Type, ob "Festpreis", "Dienstleistung nach Aufwand" oder "Sonstige Position" hat andere Daten die unterschiedlich dargestellt werden. Weiterhin gibt es noch Varianten, die sich aus den Eigenschaften einer Position ergeben z.B. wenn keine Mengenangabe erforderlich ist oder wenn eine Preisspanne aktiviert wurde. Aus diesem Grund gibt es für jede Variation in der Basis-Vorlage einen eigenen HTML-Bereich. Diese sollte man bei Anpassungen alle einzeln berücksichtigen.
  3. Neben den Positionen gibt es auch noch Text-Positionen. In der Basis-Vorlage wird ersichtlich, wie man zwischen einer normalen Position und einer Text-Position unterscheiden kann und wie ggf. gesetzte Linien ober- und unterhalb einer Position identifiziert und ausgegeben werden können.
  4. Es gibt einige Variablen, die die Darstellung bestimmter Informationen steuern z.B. die Variable showHeaderPerPosition sorgt dafür, dass in einer Rechnung die Spaltenüberschriften pro Position wiederholt werden, wenn der Wert auf "true" gesetzt wurde.
  5. Die Daten des Angebots, des Auftrags, der Rechnung, der Leistungsdaten und damit verbunden die Kundendaten werden ebenfalls über die Notation ${offer | order | invoice.} eingebunden. Die Basis-Vorlage des jeweiligen Vorlagentyps liefert dazu alle erforderlichen Variablen. Stelle sicher, dass alle Eigenschaften, die einen null oder leeren Wert haben können, mit einer entsprechenden if-Abfrage umgeben werden z.B. mit der Notation <#if ${offer | order | invoice.}?has_content>...</#if>

Grundsätzlich gilt, dass die Basis-Vorlagen vollständig hinsichtlich des HTML und CSS angepasst werden können und somit ein großer Gestaltungsspielraum besteht.

Empfehlung: Wenn größere Änderungen an einer Basis-Vorlage vorgenommen werden sollen, sollten Entwickler mit HTML- und CSS-Kenntnissen und grundlegendem Verständnis für eine Template-Engine wie Freemarker vorhanden sein. Um während der Entwicklung die grundlegende Struktur (ohne Freemarker-Anweisungen) zu testen, kann folgender Service genutzt werden: https://sandbox.openhtmltopdf.com/

Um Vorlagen mit Freemarker Ausdrücken zu testen, muss eine neue Version einer .fmt Datei in foreknown über die Vorlagenverwaltung mit der Aktion "Bearbeitete Vorlage hochladen" hochgeladen und über den Druck z.B. eines Angebots im Entwurf getestet werden.

Falls Du Unterstützung bei der Gestaltung Deiner individuellen Vorlagen wünscht, wende die gerne an uns über support@foreknown.io.


Nach oben ↑


Daten einfügen

Jedem Vorlagentyp (Angebot, Auftrag, Rechnung, Leistungsnachweis) werden alle erforderlichen Daten in Form einer hierarchischen Struktur bereitgestellt. Ein Zugriff auf diese Daten erfolgt in der Regel über folgende Freemarker Befehle:

  1. Lesen einer Eigenschaft: z.B. ${offer.termsOfPayment.paymentDiscountDeadline}
  2. Abfragen einer Eigenschaft auf Inhalt: z.B. <#if offer.termsOfPayment.paymentDiscountDeadline?has_content>...</#if>
  3. Iterieren durch eine Liste: z.B. <#list offer.introductoryTextItems as introductoryTextItem>...</#list>

Welche Eigenschaften mit welchem Datentyp pro Vorlagentyp bereitgestellt werden, wird nachfolgend beschrieben.


Nach oben ↑


Angebotsdaten zugreifen

Einer Vorlage vom Typ "Angebot" werden folgende Daten bereitgestellt:

Name Format Beschreibung
offer.creator Object
-- offer.creator.id long Eindeutige Id des Erstellers
-- offer.creator.name String Name des Erstellers
offer.creationDate String Datum der technischen Erstellung
offer.offerDate String Gepflegtes Angebotsdatum
offer.offerNumber String Angebotsnummer
offer.periodOfValidity String Bindefrist (Datum)
offer.status String Status des Angebots
offer.customerId String Eindeutige ID des Kunden
offer.vatNumber String Steuernummer des Kunden
offer.supplierNumber String Lieferanten-Nr., die vom Kunden bereitgestellt wurde
offer.customer Object
-- offer.customer.salutationType String Typ der Anrede (DEFAULT, MR, MS)
-- offer.customer.salutation String Anrede ohne Namen
-- offer.customer.salutationWithName String Anrede mit Namen
-- offer.customer.streetAddress String Straße und Hausnummer des Kunden
-- offer.customer.postalCode String Postleitzahl der Kundenadresse
-- offer.customer.city String Stadt der Kundenadresse
-- offer.customer.postalCodeAndCity String PLZ und Stadt der Kundenadresse
-- offer.customer.region String Region der Kundenadresse
-- offer.customer.country String Land der Kundenadresse
-- offer.customer.addressLine1 String Adresszusatz 1 der Kundenadresse
-- offer.customer.addressLine2 String Adresszusatz 2 der Kundenadresse
-- offer.customer.phone String Telefonnummer des Kunden
-- offer.customer.email String E-Mail Adresse des Kunden
-- offer.customer.website String Website des Kunden
offer.customerContact Object
-- offer.customerContact.salutationType String Typ der Anrede (DEFAULT, MR, MS)
-- offer.customerContact.salutation String Anrede ohne Namen
-- offer.customerContact.salutationWithName String Anrede mit Namen
-- offer.customerContact.streetAddress String Straße und Hausnummer des Kundenkontakts
-- offer.customerContact.postalCode String Postleitzahl der Kundenkontaktadresse
-- offer.customerContact.city String Stadt der Kundenkontaktadresse
-- offer.customerContact.postalCodeAndCity String PLZ und Stadt der Kundenkontaktadresse
-- offer.customerContact.region String Region der Kundenkontaktadresse
-- offer.customerContact.country String Land der Kundenkontaktadresse
-- offer.customerContact.addressLine1 String Adresszusatz 1 der Kundenkontaktadresse
-- offer.customerContact.addressLine2 String Adresszusatz 2 der Kundenkontaktadresse
-- offer.customerContact.phone String Telefonnummer des Kundenkontakts
-- offer.customerContact.email String E-Mail Adresse des Kundenkontakts
-- offer.customerContact.website String Website des Kundenkontakts
offer.billingAddressText String Vollständige Angebotsadresse
offer.offerReference String Referenznummer des Angebots
offer.name String Name des Angebots
offer.currency String Währung des Angebots
offer.currencySymbol String Währungssymbol der Währung des Angebots
offer.introductoryTextItems List Liste der Einführungstexte
-- itItem.textItem Object
---- itItem.textItem.sortIndex int Index für die Sortierung
---- itItem.textItem.lineTop boolean Flag, ob oberhalb eine Linie angezeigt werden soll
---- itItem.textItem.lineBottom boolean Flag, ob unterhalb eine Linie angezeigt werden soll
---- itItem.textItem.text String HTML-formatierter Text
offer.items List Liste der Angebots- und Text Positionen
-- item.position int Positionsnummer
-- item.sortIndex int Index für die Sortierung
-- item.lineItem Object Enthält die Daten einer Angebotsposition
---- item.lineItem.description String Beschreibungstext
---- item.lineItem.type.name String Technischer Name des Positionstyps (TIME_AND_MATERIALS, FIXED_PRICE, STANDARD)
---- item.lineItem.type.displayName String Anzeigename des Positionstyps
---- item.lineItem.itemReference String ...
---- item.lineItem.taxRate String Umsatzsteuersatz in Prozent
---- item.lineItem.taxRateValue String Umsatzsteuerbetrag mit Währungssymbol
---- item.lineItem.renderAmount boolean Flag, ob Menge angezeigt werden soll
---- item.lineItem.amountNotSpecified boolean Flag, ob "Keine Mengenangabe" gesetzt wurde
---- item.lineItem.amountRange boolean Flag, ob eine Preisspanne ausgewählt wurde
---- item.lineItem.amountMin String Menge (Min)
---- item.lineItem.amount String Menge
---- item.lineItem.unit String Einheit
---- item.lineItem.pricePerUnit String Preis pro Einheit mit Währungssymbol
---- item.lineItem.priceTotalMin String Gesamtpreis Netto (Min)
---- item.lineItem.priceTotal String Gesamtpreis Netto
---- item.lineItem.discounted boolean Flag, ob ein Rabatt angegeben wurde
---- item.lineItem.discountType String Typ des Rabatts (Prozent, Betrag)
---- item.lineItem.discountValue String Prozentualer oder absoluter Wert des Rabatts
---- item.lineItem.discountTotalMin String Berechneter Rabatt auf Basis des Prozentwerts (Min)
---- item.lineItem.discountTotal String Berechneter Rabatt auf Basis des Prozentwerts
---- item.lineItem.itemTotalMin String ...
---- item.lineItem.itemTotal String ...
---- item.lineItem.priceTotalGrossMin String Gesamtpreis Brutto (Min)
---- item.lineItem.priceTotalGross String Gesamtpreis Brutto
---- item.lineItem.billable boolean Flag, ob die Position abrechenbar ist
---- item.lineItem.lineTop boolean Flag, ob eine Linie oberhalb angezeigt werden soll
---- item.lineItem.lineBottom boolean Flag, ob eine Linie unterhalb angezeigt werden soll
---- item.lineItem.items List Liste aller Leistungsartpositionen
-- item.textItem Object Enthält die Textpositionsdaten
---- item.textItem.sortIndex int Index für die Sortierung
---- item.textItem.lineTop boolean Flag, ob oberhalb eine Linie angezeigt werden soll
---- item.textItem.lineBottom boolean Flag, ob unterhalb eine Linie angezeigt werden soll
---- item.textItem.text String HTML-formatierter Text
offer.closingTextItems List Liste der Schlusstexte
-- ctItem.textItem Object
---- ctItem.textItem.sortIndex int Index für die Sortierung
---- ctItem.textItem.lineTop boolean Flag, ob oberhalb eine Linie angezeigt werden soll
---- ctItem.textItem.lineBottom boolean Flag, ob unterhalb eine Linie angezeigt werden soll
---- ctItem.textItem.text String HTML-formatierter Text
offer.termsOfPayment Object Enthält die Zahlungsbedingungen
-- offer.termsOfPayment.paymentDeadline int Zahlungsziel in Tagen
-- offer.termsOfPayment.paymentDiscountDeadline int Skontofrist in Tagen
-- offer.termsOfPayment.paymentDiscountPercent String Skonto in Prozent
-- offer.termsOfPayment.paymentDiscountAmount String Berechneter Skontobetrag
-- offer.termsOfPayment.totalGrossAfterPaymentDiscount String Angebotsbetrag nach Skonto
-- offer.termsOfPayment.paymentDiscountExists boolean Flag, ob ein Skontobetrag > 0 existiert
offer.showTotals boolean Flag, ob Angebotssummen angezeigt werden können
offer.totals Object Summen des Angebots
-- offer.totals.range boolean Flag, ob eine Preisspanne aktiviert wurde
-- offer.totals.priceTotalNetMinUndiscounted String Nettobetrag exklusiv Gesamtrabatte (Min)
-- offer.totals.priceTotalNetUndiscounted String Nettobetrag exklusiv Gesamtrabatte
-- offer.totals.positionDiscounts boolean Flag, ob Positionsrabatte existieren
-- offer.totals.totalDiscounts boolean Flag, ob Gesamtrabatte existieren
-- offer.totals.discounts List Liste aller Gesamtrabatte
---- discount.type String Rabatt Typ (AMOUNT, PERCENTAGE)
---- discount.value String Prozentualer oder absoluter Rabattwert
---- discount.amountMin String Negativer monetärer Wert des Rabatts (Min)
---- discount.amount String Negativer monetärer Wert des Rabatts
-- offer.totals.priceTotalNetMin String Nettobetrag inklusiv Gesamtrabatte (Min)
-- offer.totals.priceTotalNet String Nettobetrag inklusiv Gesamtrabatte
-- offer.totals.taxTotals List Liste der Umsatzsteuerbeträge
---- offer.totals.taxTotals.taxRate String Umsatzsteuersatz in Prozent mit Bezeichnung
---- offer.totals.taxTotals.value String Umsatzsteuersatz in Prozent
---- offer.totals.taxTotals.totalSumMin String Nettobetrag des Angebots (Min)
---- offer.totals.taxTotals.totalSum String Nettobetrag des Angebots
---- offer.totals.taxTotals.taxSumMin String Summe aller Umsatzsteuerbeträge (Min)
---- offer.totals.taxTotals.taxSum String Summe aller Umsatzsteuerbeträge
offer.paymentPlan Object
-- offer.paymentPlan.currency String Währung des Zahlungsplans
-- offer.paymentPlan.items List Liste aller Zahlungsplaneinträge
---- ppItem.description String Beschreibungstext
---- ppItem.dueDate String Fälligkeitsdatum
---- ppItem.status String Status (NOT_INVOICED, INVOICE_IN_PROGRESS, INVOICED)
---- ppItem.taxRate String Umsatzsteuersatz in Prozent
---- ppItem.amount String Menge
---- ppItem.unit String Einheit
---- ppItem.pricePerUnit String Preis pro Einheit
---- ppItem.paymentTotal String Betrag der Abschlagszahlung
---- ppItem.invoicedTotal String Abgerechneter Betrag

Nach oben ↑


Auftragsdaten zugreifen

Einer Vorlage vom Typ "Auftrag" werden folgende Daten bereitgestellt:

Name Format Beschreibung
order.creator Object
-- order.creator.id long Eindeutige Id des Erstellers
-- order.creator.name String Name des Erstellers
order.creationDate String Datum der technischen Erstellung
order.orderDate String Gepflegtes Auftragsdatum
order.orderNumber String Auftragsnummer
order.internal boolean Flag, ob es sich um einen internen Auftrag handelt.
order.status String Status des Auftrags
order.customerId String Eindeutige ID des Kunden
order.vatNumber String Steuernummer des Kunden
order.supplierNumber String Lieferanten-Nr., die vom Kunden bereitgestellt wurde
order.customer Object
-- order.customer.salutationType String Typ der Anrede (DEFAULT, MR, MS)
-- order.customer.salutation String Anrede ohne Namen
-- order.customer.salutationWithName String Anrede mit Namen
-- order.customer.streetAddress String Straße und Hausnummer des Kunden
-- order.customer.postalCode String Postleitzahl der Kundenadresse
-- order.customer.city String Stadt der Kundenadresse
-- order.customer.postalCodeAndCity String PLZ und Stadt der Kundenadresse
-- order.customer.region String Region der Kundenadresse
-- order.customer.country String Land der Kundenadresse
-- order.customer.addressLine1 String Adresszusatz 1 der Kundenadresse
-- order.customer.addressLine2 String Adresszusatz 2 der Kundenadresse
-- order.customer.phone String Telefonnummer des Kunden
-- order.customer.email String E-Mail Adresse des Kunden
-- order.customer.website String Website des Kunden
order.customerContact Object
-- order.customerContact.salutationType String Typ der Anrede (DEFAULT, MR, MS)
-- order.customerContact.salutation String Anrede ohne Namen
-- order.customerContact.salutationWithName String Anrede mit Namen
-- order.customerContact.streetAddress String Straße und Hausnummer des Kundenkontakts
-- order.customerContact.postalCode String Postleitzahl der Kundenkontaktadresse
-- order.customerContact.city String Stadt der Kundenkontaktadresse
-- order.customerContact.postalCodeAndCity String PLZ und Stadt der Kundenkontaktadresse
-- order.customerContact.region String Region der Kundenkontaktadresse
-- order.customerContact.country String Land der Kundenkontaktadresse
-- order.customerContact.addressLine1 String Adresszusatz 1 der Kundenkontaktadresse
-- order.customerContact.addressLine2 String Adresszusatz 2 der Kundenkontaktadresse
-- order.customerContact.phone String Telefonnummer des Kundenkontakts
-- order.customerContact.email String E-Mail Adresse des Kundenkontakts
-- order.customerContact.website String Website des Kundenkontakts
order.billingAddressText String Vollständige Auftragsadresse
order.orderReference String Referenznummer des Auftrags
order.relatedOfferNumber String Nummer des zugehörigen Angebots
order.relatedOfferTitle String Bezeichnung des zugehörigen Angebots
order.relatedOfferDate String Datum des zugehörigen Angebots
order.name String Name des Auftrags
order.currency String Währung des Auftrags
order.currencySymbol String Währungssymbol der Währung des Auftrags
order.introductoryTextItems List Liste der Einführungstexte
-- itItem.textItem Object
---- itItem.textItem.sortIndex int Index für die Sortierung
---- itItem.textItem.lineTop boolean Flag, ob oberhalb eine Linie angezeigt werden soll
---- itItem.textItem.lineBottom boolean Flag, ob unterhalb eine Linie angezeigt werden soll
---- itItem.textItem.text String HTML-formatierter Text
order.items List Liste der Auftrags- und Text Positionen
-- item.position int Positionsnummer
-- item.sortIndex int Index für die Sortierung
-- item.lineItem Object Enthält die Daten einer Auftragsposition
---- item.lineItem.description String Beschreibungstext
---- item.lineItem.type.name String Technischer Name des Positionstyps (TIME_AND_MATERIALS, FIXED_PRICE, STANDARD)
---- item.lineItem.type.displayName String Anzeigename des Positionstyps
---- item.lineItem.itemReference String ...
---- item.lineItem.taxRate String Umsatzsteuersatz in Prozent
---- item.lineItem.taxRateValue String Umsatzsteuerbetrag mit Währungssymbol
---- item.lineItem.renderAmount boolean Flag, ob Menge angezeigt werden soll
---- item.lineItem.amountNotSpecified boolean Flag, ob "Keine Mengenangabe" gesetzt wurde
---- item.lineItem.amountRange boolean Flag, ob eine Preisspanne ausgewählt wurde
---- item.lineItem.amountMin String Menge (Min)
---- item.lineItem.amount String Menge
---- item.lineItem.unit String Einheit
---- item.lineItem.pricePerUnit String Preis pro Einheit mit Währungssymbol
---- item.lineItem.priceTotalMin String Gesamtpreis Netto (Min)
---- item.lineItem.priceTotal String Gesamtpreis Netto
---- item.lineItem.discounted boolean Flag, ob ein Rabatt angegeben wurde
---- item.lineItem.discountType String Typ des Rabatts (Prozent, Betrag)
---- item.lineItem.discountValue String Prozentualer oder absoluter Wert des Rabatts
---- item.lineItem.discountTotalMin String Berechneter Rabatt auf Basis des Prozentwerts (Min)
---- item.lineItem.discountTotal String Berechneter Rabatt auf Basis des Prozentwerts
---- item.lineItem.itemTotalMin String ...
---- item.lineItem.itemTotal String ...
---- item.lineItem.priceTotalGrossMin String Gesamtpreis Brutto (Min)
---- item.lineItem.priceTotalGross String Gesamtpreis Brutto
---- item.lineItem.billable boolean Flag, ob die Position abrechenbar ist
---- item.lineItem.lineTop boolean Flag, ob eine Linie oberhalb angezeigt werden soll
---- item.lineItem.lineBottom boolean Flag, ob eine Linie unterhalb angezeigt werden soll
---- item.lineItem.items List Liste aller Leistungsartpositionen
-- item.textItem Object Enthält die Textpositionsdaten
---- item.textItem.sortIndex int Index für die Sortierung
---- item.textItem.lineTop boolean Flag, ob oberhalb eine Linie angezeigt werden soll
---- item.textItem.lineBottom boolean Flag, ob unterhalb eine Linie angezeigt werden soll
---- item.textItem.text String HTML-formatierter Text
order.closingTextItems List Liste der Schlusstexte
-- ctItem.textItem Object
---- ctItem.textItem.sortIndex int Index für die Sortierung
---- ctItem.textItem.lineTop boolean Flag, ob oberhalb eine Linie angezeigt werden soll
---- ctItem.textItem.lineBottom boolean Flag, ob unterhalb eine Linie angezeigt werden soll
---- ctItem.textItem.text String HTML-formatierter Text
order.termsOfPayment Object Enthält die Zahlungsbedingungen
-- order.termsOfPayment.paymentDeadline int Zahlungsziel in Tagen
-- order.termsOfPayment.paymentDiscountDeadline int Skontofrist in Tagen
-- order.termsOfPayment.paymentDiscountPercent String Skonto in Prozent
-- order.termsOfPayment.paymentDiscountAmount String Berechneter Skontobetrag
-- order.termsOfPayment.totalGrossAfterPaymentDiscount String Auftragsbetrag nach Skonto
-- order.termsOfPayment.paymentDiscountExists boolean Flag, ob ein Skontobetrag > 0 existiert
order.showTotals boolean Flag, ob Auftragssummen angezeigt werden können
order.totals Object Summen des Auftrags
-- order.totals.range boolean Flag, ob eine Preisspanne aktiviert wurde
-- order.totals.priceTotalNetMinUndiscounted String Nettobetrag exklusiv Gesamtrabatte (Min)
-- order.totals.priceTotalNetUndiscounted String Nettobetrag exklusiv Gesamtrabatte
-- order.totals.positionDiscounts boolean Flag, ob Positionsrabatte existieren
-- order.totals.totalDiscounts boolean Flag, ob Gesamtrabatte existieren
-- order.totals.discounts List Liste aller Gesamtrabatte
---- discount.type String Rabatt Typ (AMOUNT, PERCENTAGE)
---- discount.value String Prozentualer oder absoluter Rabattwert
---- discount.amountMin String Negativer monetärer Wert des Rabatts (Min)
---- discount.amount String Negativer monetärer Wert des Rabatts
-- order.totals.priceTotalNetMin String Nettobetrag inklusiv Gesamtrabatte (Min)
-- order.totals.priceTotalNet String Nettobetrag inklusiv Gesamtrabatte
-- order.totals.taxTotals List Liste der Umsatzsteuerbeträge
---- order.totals.taxTotals.taxRate String Umsatzsteuersatz in Prozent mit Bezeichnung
---- order.totals.taxTotals.value String Umsatzsteuersatz in Prozent
---- order.totals.taxTotals.totalSumMin String Nettobetrag des Auftrags (Min)
---- order.totals.taxTotals.totalSum String Nettobetrag des Auftrags
---- order.totals.taxTotals.taxSumMin String Summe aller Umsatzsteuerbeträge (Min)
---- order.totals.taxTotals.taxSum String Summe aller Umsatzsteuerbeträge
order.paymentPlan Object
-- order.paymentPlan.currency String Währung des Zahlungsplans
-- order.paymentPlan.items List Liste aller Zahlungsplaneinträge
---- ppItem.description String Beschreibungstext
---- ppItem.dueDate String Fälligkeitsdatum
---- ppItem.status String Status (NOT_INVOICED, INVOICE_IN_PROGRESS, INVOICED)
---- ppItem.taxRate String Umsatzsteuersatz in Prozent
---- ppItem.amount String Menge
---- ppItem.unit String Einheit
---- ppItem.pricePerUnit String Preis pro Einheit
---- ppItem.paymentTotal String Betrag der Abschlagszahlung
---- ppItem.invoicedTotal String Abgerechneter Betrag

Nach oben ↑


Rechnungsdaten zugreifen

Einer Vorlage vom Typ "Rechnung" werden folgende Daten bereitgestellt:

Name Format Beschreibung
invoice.creator Object
-- invoice.creator.id long Eindeutige Id des Erstellers
-- invoice.creator.name String Name des Erstellers
invoice.creationDate String Datum der technischen Erstellung
invoice.invoiceDate String Gepflegtes Rechnungsdatum
invoice.invoiceNumber String Rechnungsnummer
invoice.servicePeriodStartDate String Startdatum des Leistungszeitraums
invoice.servicePeriodEndDate String Enddatum des Leistungszeitraums
invoice.servicePeriodMonth String Startdatum des Leistungszeitraums
invoice.servicePeriodYear String Enddatum des Leistungszeitraums
invoice.status String Status der Rechnung
invoice.customerId String Eindeutige ID des Kunden
invoice.vatNumber String Steuernummer des Kunden
invoice.supplierNumber String Lieferanten-Nr., die vom Kunden bereitgestellt wurde
invoice.customer Object
-- invoice.customer.salutationType String Typ der Anrede (DEFAULT, MR, MS)
-- invoice.customer.salutation String Anrede ohne Namen
-- invoice.customer.salutationWithName String Anrede mit Namen
-- invoice.customer.streetAddress String Straße und Hausnummer des Kunden
-- invoice.customer.postalCode String Postleitzahl der Kundenadresse
-- invoice.customer.city String Stadt der Kundenadresse
-- invoice.customer.postalCodeAndCity String PLZ und Stadt der Kundenadresse
-- invoice.customer.region String Region der Kundenadresse
-- invoice.customer.country String Land der Kundenadresse
-- invoice.customer.addressLine1 String Adresszusatz 1 der Kundenadresse
-- invoice.customer.addressLine2 String Adresszusatz 2 der Kundenadresse
-- invoice.customer.phone String Telefonnummer des Kunden
-- invoice.customer.email String E-Mail Adresse des Kunden
-- invoice.customer.website String Website des Kunden
invoice.customerContact Object
-- invoice.customerContact.salutationType String Typ der Anrede (DEFAULT, MR, MS)
-- invoice.customerContact.salutation String Anrede ohne Namen
-- invoice.customerContact.salutationWithName String Anrede mit Namen
-- invoice.customerContact.streetAddress String Straße und Hausnummer des Kundenkontakts
-- invoice.customerContact.postalCode String Postleitzahl der Kundenkontaktadresse
-- invoice.customerContact.city String Stadt der Kundenkontaktadresse
-- invoice.customerContact.postalCodeAndCity String PLZ und Stadt der Kundenkontaktadresse
-- invoice.customerContact.region String Region der Kundenkontaktadresse
-- invoice.customerContact.country String Land der Kundenkontaktadresse
-- invoice.customerContact.addressLine1 String Adresszusatz 1 der Kundenkontaktadresse
-- invoice.customerContact.addressLine2 String Adresszusatz 2 der Kundenkontaktadresse
-- invoice.customerContact.phone String Telefonnummer des Kundenkontakts
-- invoice.customerContact.email String E-Mail Adresse des Kundenkontakts
-- invoice.customerContact.website String Website des Kundenkontakts
invoice.billingAddressText String Vollständige Rechnungsadresse
invoice.offerReference String Referenznummer des zugehörigen Angebots
invoice.orderReference String Referenznummer des zugehörigen Auftrags
invoice.orderNumber String Nummer des zugehörigen Angebots
invoice.orderName String Bezeichnung des zugehörigen Auftrags
invoice.orderDate String Datum des zugehörigen Auftrags
invoice.name String Bezeichnung der Rechnung
invoice.costCenterId String Id der Kostenstelle
invoice.currency String Währung der Rechnung
invoice.currencySymbol String Währungssymbol der Währung der Rechnung
invoice.invoiceNumberCancelled String Rechnungsnummer der zugehörigen Stornorechnung
invoice.invoiceDateCancelled String Datum der Stornierung der zugehörigen Stornorechnung
invoice.invoiceNameCancelled String Bezeichnung der zugehörigen Stornorechnung
invoice.cancellationInvoice boolean Flag, ob es sich um eine Stornorechnung handelt.
invoice.introductoryTextItems List Liste der Einführungstexte
-- itItem.textItem Object
---- itItem.textItem.sortIndex int Index für die Sortierung
---- itItem.textItem.lineTop boolean Flag, ob oberhalb eine Linie angezeigt werden soll
---- itItem.textItem.lineBottom boolean Flag, ob unterhalb eine Linie angezeigt werden soll
---- itItem.textItem.text String HTML-formatierter Text
invoice.items List Liste der Rechnungs- und Text Positionen
-- item.position int Positionsnummer
-- item.sortIndex int Index für die Sortierung
-- item.lineItem Object Enthält die Daten einer Rechnungsposition
---- item.lineItem.description String Beschreibungstext
---- item.lineItem.type.name String Technischer Name des Positionstyps (TIME_AND_MATERIALS, FIXED_PRICE, STANDARD)
---- item.lineItem.type.displayName String Anzeigename des Positionstyps
---- item.lineItem.itemReference String ...
---- item.lineItem.taxRate String Umsatzsteuersatz in Prozent
---- item.lineItem.taxRateValue String Umsatzsteuerbetrag mit Währungssymbol
---- item.lineItem.renderAmount boolean Flag, ob Menge angezeigt werden soll
---- item.lineItem.amountNotSpecified boolean Flag, ob "Keine Mengenangabe" gesetzt wurde
---- item.lineItem.amountRange boolean Flag, ob eine Preisspanne ausgewählt wurde
---- item.lineItem.amount String Menge
---- item.lineItem.unit String Einheit
---- item.lineItem.pricePerUnit String Preis pro Einheit mit Währungssymbol
---- item.lineItem.priceTotal String Gesamtpreis Netto
---- item.lineItem.discounted boolean Flag, ob ein Rabatt angegeben wurde
---- item.lineItem.discountType String Typ des Rabatts (Prozent, Betrag)
---- item.lineItem.discountValue String Prozentualer oder absoluter Wert des Rabatts
---- item.lineItem.discountTotal String Berechneter Rabatt auf Basis des Prozentwerts
---- item.lineItem.itemTotal String ...
---- item.lineItem.priceTotalGross String Gesamtpreis Brutto
---- item.lineItem.billable boolean Flag, ob die Position abrechenbar ist
---- item.lineItem.lineTop boolean Flag, ob eine Linie oberhalb angezeigt werden soll
---- item.lineItem.lineBottom boolean Flag, ob eine Linie unterhalb angezeigt werden soll
---- item.lineItem.items List Liste aller Leistungsartpositionen
------ serviceItem.pos String Position-Nr. der Leistungsposition
------ serviceItem.amountMin String Minimale Menge (bei aktivierter Preisspanne)
------ serviceItem.amount String Menge
------ serviceItem.unit String Einheit
------ serviceItem.billRate String Abrechnungssatz
------ serviceItem.priceTotalMin String Minimale Gesamtsumme (bei aktivierter Preisspanne)
------ serviceItem.priceTotal String Gesamtsumme
---- item.lineItem.serviceEntryData List Liste der Leistungen, die der Rechnungsposition zugrunde liegen.
------ serviceEntryData... ... Siehe Einträge unterhalb von "invoice.serviceEntryData" (weiter unten)
-- item.textItem Object Enthält die Textpositionsdaten
---- item.textItem.sortIndex int Index für die Sortierung
---- item.textItem.lineTop boolean Flag, ob oberhalb eine Linie angezeigt werden soll
---- item.textItem.lineBottom boolean Flag, ob unterhalb eine Linie angezeigt werden soll
---- item.textItem.text String HTML-formatierter Text
invoice.closingTextItems List Liste der Schlusstexte
-- ctItem.textItem Object
---- ctItem.textItem.sortIndex int Index für die Sortierung
---- ctItem.textItem.lineTop boolean Flag, ob oberhalb eine Linie angezeigt werden soll
---- ctItem.textItem.lineBottom boolean Flag, ob unterhalb eine Linie angezeigt werden soll
---- ctItem.textItem.text String HTML-formatierter Text
invoice.termsOfPayment Object Enthält die Zahlungsbedingungen
-- invoice.termsOfPayment.paymentDeadline int Zahlungsziel in Tagen
-- invoice.termsOfPayment.paymentDiscountDeadline int Skontofrist in Tagen
-- invoice.termsOfPayment.paymentDiscountPercent String Skonto in Prozent
-- invoice.termsOfPayment.paymentDiscountAmount String Berechneter Skontobetrag
-- invoice.termsOfPayment.totalGrossAfterPaymentDiscount String Rechnungsbetrag nach Skonto
-- invoice.termsOfPayment.paymentDiscountExists boolean Flag, ob ein Skontobetrag > 0 existiert
invoice.totals Object Summen der Rechnung
-- invoice.totals.range boolean Flag, ob eine Preisspanne aktiviert wurde
-- invoice.totals.priceTotalNetUndiscounted String Nettobetrag exklusiv Gesamtrabatte
-- invoice.totals.positionDiscounts boolean Flag, ob Positionsrabatte existieren
-- invoice.totals.totalDiscounts boolean Flag, ob Gesamtrabatte existieren
-- invoice.totals.discounts List Liste aller Gesamtrabatte
---- discount.type String Rabatt Typ (AMOUNT, PERCENTAGE)
---- discount.value String Prozentualer oder absoluter Rabattwert
---- discount.amount String Negativer monetärer Wert des Rabatts
-- invoice.totals.priceTotalNet String Nettobetrag inklusiv Gesamtrabatte
-- invoice.totals.taxTotals List Liste der Umsatzsteuerbeträge
---- invoice.totals.taxTotals.taxRate String Umsatzsteuersatz in Prozent mit Bezeichnung
---- invoice.totals.taxTotals.value String Umsatzsteuersatz in Prozent
---- invoice.totals.taxTotals.totalSum String Nettobetrag der Rechnung
---- invoice.totals.taxTotals.taxSum String Summe aller Umsatzsteuerbeträge
invoice.serviceEntryData List Enthält je Rechnungsposition zugehörige Leistungen bzw. Zusatzleistungen
---- seItem.id long Id der Leistung bzw. Zusatzleistung
---- seItem.name String Bezeichnung
---- seItem.date String Datum
---- seItem.amount String Menge
---- seItem.unit String Einheit
---- seItem.pricePerUnit String Preis pro Einheit
---- seItem.priceTotal String Gesamtpreis
---- seItem.type String Typ der Datenstruktur
- DefaultPaymentPlanEntryExportData
- DefaultAdditionalServiceEntryExportData
- DefaultServiceEntryExportData
---- seItem.data HashMap Datenstruktur in Abhängigkeit des Typs

Nach oben ↑


Aktuell werden drei unterschiedliche Datenstrukturen in der "seItem.Data" Hashmap bereitgestellt, die nachfolgend als JSON-Struktur dargestellt werden. Der Zugriff auf diese Daten erfolgt mit folgender beispielhaften Notation in Freemarker:

<#list invoice.serviceEntryData?filter(d -> d.type == 'DefaultServiceEntryExportData') as serviceEntryData>
    <tr>
        <td>${(serviceEntryData.date)!}</td>
        <td>${(invoice.items[serviceEntryData.data.invoiceItemIndex].lineItem.name)!}</td>
        <td>${(serviceEntryData.data['taskKey'])!}</td>
        <td>${(serviceEntryData.name)!}</td>
        <td>${(serviceEntryData.amount)!}</td>
        <td>${(serviceEntryData.unit)!}</td>
        <td>${(serviceEntryData.pricePerUnit)!}</td>
        <td>${(serviceEntryData.priceTotal)!}</td>
    </tr>
</#list>

In der ersten Zeile wird aus der Menge aller Datensätze, die unterhalb von ServiceEntryData stehen, die Menge der Leistungen aus Arbeitszeiten herausgefiltert und über ein List-Element durchiteriert.

<#list invoice.serviceEntryData?filter(d -> d.type == 'DefaultServiceEntryExportData') as serviceEntryData>

Um auf eine Eigenschaft der Daten unter seItem.data zugreifen zu können, wird folgende Notation verwendet:

${(serviceEntryData.data['taskKey'])!}

Um sich die zugehörige Rechnungsposition auslesen zu können, wird die Eigenschaft "data.invoiceItemIndex" verwendet.

<td>${(invoice.items[serviceEntryData.data.invoiceItemIndex].lineItem.name)!}</td>

DefaultServiceEntryExportData

Dieser Typ beschreibt eine Leistung, die durch die Übernahme von Arbeitszeiten entstanden ist. Folgende Daten werden bereitgestellt:

"data" : {
    "date" : "2022-06-27",
    "serviceType" : "Junior Frontend Entwickler:in",
    "taskKeyWithName" : "WD-1: Workshop konzipieren",
    "employeeWithCostCenter" : "Max Mustermann (KS1234)",
    "orderNumber" : "AU-2022-10001",
    "projectKeyWithName" : "WD: Website Development",
    "taskKey" : "WD-1",
    "description" : "Konzept für den Workshop entwickeln (WD-1)",
    "typeHint" : "DefaultServiceEntryExportData",
    "employee" : "Max Mustermann",
    "descriptionWithTaskKey" : "Workshop konzipieren (WD-1)",
    "projectDetails" : "WD: Website Development",
    "pricePerUnit" : 110.0000,
    "amountRecorded" : 8,
    "projectKey" : "WD",
    "invoiceItemIndex" : 0,
    "customerId" : "KD-2022-10001",
    "currency" : "EUR",
    "id" : 90,
    "priceBillTotal" : 880.0000,
    "orderName" : "Website Relaunch",
    "amount" : 8.0000,
    "unitName" : "Stunde",
    "customerName" : "Demo AG",
    "orderDetails" : "AU-2022-10001 / Website Relaunch / Konzeption / Junior Frontend Entwickler:in",
    "unit" : {
        "id" : 1,
        "name" : "HOURLY_RATE",
        "additionalAttributes" : { },
        "displayName" : "Stunde"
    },
    "name" : "Website Relaunch",
    "taskName" : "Konzeption",
    "projectName" : "Website Development"
}

DefaultAdditionalServiceEntryExportData

Dieser Typ beschreibt Zusatzleistungen. Folgende Daten werden bereitgestellt:

"data" : {
  "date" : "2023-10-18",
  "amount" : 4.0000,
  "orderNumber" : "AU-2022-10005",
  "employeeWithCostCenter" : "Max Mustermann (AB1234)",
  "unitName" : "Stück",
  "description" : "<p>Lizenzkosten</p>",
  "typeHint" : "DefaultAdditionalServiceEntryExportData",
  "employee" : "Max Mustermann",
  "customerName" : "Demo AG",
  "pricePerUnit" : 120.0000,
  "orderDetails" : "AU-2022-10005 / Website Relaunch - Zusatzleistungen / Lizenzkosten",
  "unit" : {
    "id" : 0,
    "name" : "PIECE",
    "additionalAttributes" : { },
    "displayName" : "Stück"
  },
  "invoiceItemIndex" : 0,
  "customerId" : "KD-2022-10001",
  "name" : "Lizenzkosten",
  "currency" : "EUR",
  "id" : 41,
  "priceBillTotal" : 480.0000,
  "orderName" : "Website Relaunch"
} 

DefaultPaymentPlanEntryExportData

Dieser Typ beschreibt Abschlagszahlungen. Folgende Daten werden bereitgestellt:

"data" : {
  "date" : "2022-07-31",
  "amount" : 1.0000,
  "orderNumber" : "AU-2022-10002",
  "employeeWithCostCenter" : "Max Mustermann",
  "unitName" : "Stück",
  "description" : "<p>Schlusszahlung</p>",
  "typeHint" : "DefaultPaymentPlanEntryExportData",
  "employee" : "Max Mustermann",
  "customerName" : "Demo AG",
  "pricePerUnit" : 110.0000,
  "orderDetails" : "AU-2022-10002 / Website Relaunch / -",
  "unit" : {
    "id" : 0,
    "name" : "PIECE",
    "additionalAttributes" : { },
    "displayName" : "Stück"
  },
  "invoiceItemIndex" : 0,
  "customerId" : "KD-2022-10001",
  "name" : "Schlusszahlung",
  "currency" : "EUR",
  "id" : 27,
  "priceBillTotal" : 110.0000,
  "orderName" : "Website Relaunch"
}

Nach oben ↑


Leistungsnachweis - Daten zugreifen

Für die Erstellung eines Leistungsnachweises werden dieselben Daten bereitgestellt, wie bei einer Rechnung, da ein Leistungsnachweis immer im Kontext einer Rechnung steht. Der Zugriff auf diese Daten aus einem Leistungsnachweis unterscheidet sich lediglich im Prefix.

Beispiel: Statt ${invoice.invoiceNumber} wird ${activity_report.invoiceNumber} verwendet.


Nach oben ↑


E-Mails - Daten zugreifen

Für die Erstellung von Rahmenvorlagen vom Type "E-Mail" werden zusätzlich noch folgende Daten bereitgestellt:

Name Format Beschreibung
sender.email String E-Mail Adresse des angemeldeten Benutzers
sender.name String Vollständiger Name des angemeldeten Benutzers
subject String Betreff der E-Mail
content String Text der E-Mail (enthält HTML)

Nach oben ↑


Vorlagen-Variablen verwenden

Um den Wert einer Variable in einer freemarker Vorlage einzubinden wird zum Beispiel folgender Ausdruck verwendet:

<# if var.companyName?has_content>
  <div>${var.<name-der-variable>}</div>
</#if>

Mit dem If-Statement wird sichergestellt, dass die Ausgabe des Unternehmensnamens nur dann erfolgt, wenn die Variable einen Wert besitzt. Würde man auf eine Variable zugreifen, die nicht existiert, würde der Freemarker Prozess einen Fehler bekommen und es würde kein Angebot, Auftrag bzw. keine Rechnung mit dieser Vorlage gedruckt werden können.


Nach oben ↑


Excel-Vorlage anpassen

Eine Excel-Vorlage wird verwendet, um gefilterte Daten für Leistungen in Form einer Tabelle exportieren zu können. Das Konzept der Excel-Vorlagen basiert auf verschiedenen Arten von Platzhaltern, die Du innerhalb einer Excel-Tabelle in der Kopfzeile, Fußzeile und in der Tabelle platzieren kannst. Dabei sind allerdings ein paar Regeln zu beachten.

Der nachfolgende Screenshot zeigt, wie eine Excelvorlage aussehen kann.

Vorlage - Leistungsnachweis


Wir sehen die Kopfzeile mit der statischen Überschrift "Leistungsnachweis" und dem Platzhalter [#FILTER#monthYear#]. Darunter befindet sich die eigentliche Tabelle mit verschiedenen Platzhaltern und am Ende noch die Fußzeile, in der ein Platzhalter [#VARIABLE#companyName#] und Standardfelder von Excel verwendet werden.


Nach oben ↑


Besonderheiten & Einschränkungen

In Exceltabellen wird zwischen der Kopfzeile, der Tabelle und der Fußzeile unterschieden. Nicht alle Platzhalter können in allen Bereichen verwendet werden. Es gibt folgende Einschränkungen zu beachten.

  1. Die Kopf- und Fußzeile einer Exceltabelle ist in drei Feldern aufgeteilt. In diesen Feldern können ausschließlich Platzhalter vom Typ "FILTER" und "VARIABLE" verwendet werden. Allerdings können mehrere Platzhalter pro Feld eingefügt werden.
  2. In der Tabelle können alle Platzhaltertypen verwendet werden. Es gilt allerdings, dass in einer Zelle immer genau ein Platzhalter eingefügt werden kann. Es dürfen dann auch keine weiteren Texte mit einem Platzhalter in einer Zelle stehen.
  3. Der "LIST" Platzhalter darf nur genau einmal verwendet werden und alle "LIST" Platzhalter müssen sich in genau einer Zeile der Tabelle befinden. In dieser Zeile können keine anderen Platzhalter verwendet werden. Es können aber Spalten mit Formeln oder statischen Werten eingefügt werden, die dann in jede erzeugte Leistungszeile übernommen werden.
  4. Für eine korrekte Darstellung der Werte in den Zellen der Tabelle, die Platzhalter enthalten, ist die Exceltabelle verantwortlich. Obwohl durch das Einfügen eines Platzhalters ein "Text" eingefügt wurde, muss die Zelle den korrekten Typ und das gewünschte Format in Excel zugewiesen bekommen, um den eingefügten Wert korrekt darzustellen. So muss z.B. die Zelle mit dem Datum einer Leistung auch als "Datum" mit dem gewünschten Format in Excel eingestellt werden.
  5. Möchte man Exceltabellen in verschiedenen landesspezifischen Versionen (DE, US) bereitstellen können, so müssen pro Land eigene Vorlagen erstellt werden, in denen die Zellen entsprechend formatiert sind.

foreknown Platzhalter für Leistungen

Um die Daten aus foreknown in eine Exceltabelle einfügen zu können, werden eine Vielzahl von Platzhaltern unterschiedlichen Typs bereitgestellt, die nachfolgend beschrieben werden. Ein Platzhalter ist immer wie folgt aufgebaut:

[#TYP#name#]

Es gibt 4 verschiedene Platzhalter-Typen: FILTER, LIST, VARIABLE, SUM

FILTER Platzhalter

Diese Platzhalter stellen im Wesentlichen die Informationen bereit, die sich aus den aktuell gewählten Filtereinstellungen ergeben. Diese Platzhalter können in der Kopfzeile, in der Tabelle und in der Fußzeile verwendet werden.

  • [#FILTER#accountName#]: Liefert den Namen Deines foreknown Accounts.
  • [#FILTER#createdAt#]: Liefert das aktuelle Tagesdatum. Das Datumsformat wird in der Zelle der Exceltabelle festgelegt. Der Zelle muss ein Datumsformat in Excel zugewiesen werden.
  • [#FILTER#monthYear#]: Liefert den Monat und das Jahr des im Filter ausgewählten Zeitraums. Es gelten folgende Regeln:
    • Wenn kein Zeitraum im Filter gesetzt wurde, wird "Monat/Jahr" aus dem Tagesdatum ermittelt.
    • Wenn ein Zeitraum gewählt wurde, der innerhalb eines Monats liegt, wird "Monat/Jahr" des Zeitraums zurückgeliefert.
    • Wenn ein Zeitraum gewählt wurde, der mehrere Monate umfasst, wird "Monat/Jahr - Monat/Jahr" aus dem ersten und letzten Monat ermittelt.
    • Der Zelle muss ein Text-Format in Excel zugewiesen werden.
  • [#FILTER#amount#]: Liefert die Anzahl gefundener Einträge, die sich aus den Filtereinstellungen ergeben, zurückgeliefert. Der Zelle muss ein numerisches Format in Excel zugewiesen werden.
  • [#FILTER#startDate#]: Liefert das Startdatum des im Filter ausgewählten Zeitraums. Ist kein Zeitraum gesetzt, wird der Text "Kein Startdatum ausgewählt" angezeigt. Der Zelle muss ein Datumsformat in Excel zugewiesen werden.
  • [#FILTER#endDate#]: Liefert das Enddatum des im Filter ausgewählten Zeitraums. Ist kein Zeitraum gesetzt, wird der Text "Kein Enddatum ausgewählt" angezeigt. Der Zelle muss ein Datumsformat in Excel zugewiesen werden.
  • [#FILTER#period#]: Liefert das Start- und Enddatum als Text z.B. "01.01.2021 - 31.01.2021". Die Zelle in der Exceltabelle muss daher das Format "Text" erhalten. Das Datumsformat wird in Abhängigkeit der eingestellten Sprache in foreknown erzeugt. Ist kein Zeitraum gesetzt, wird der Text "Kein Zeitraum ausgewählt" angezeigt.
  • [#FILTER#status#]: Liefert einen Text mit allen Status, die in den Filtereinstellungen ausgewählt wurden. Wurde der Filter nicht gesetzt, erscheint der Text "Kein Status ausgewählt". Der Zelle muss ein Textformat in Excel zugewiesen werden.
  • [#FILTER#orders#]: Liefert einen Text mit allen Auftragsnummern, die in den Filtereinstellungen ausgewählt wurden. Wurde der Filter nicht gesetzt, erscheint der Text "Kein Auftrag ausgewählt". Der Zelle muss ein Textformat in Excel zugewiesen werden.
  • [#FILTER#employees#]: Liefert einen Text mit allen Mitarbeitern, die in den Filtereinstellungen ausgewählt wurden. Wurde der Filter nicht gesetzt, erscheint der Text "Kein Mitarbeiter ausgewählt". Der Zelle muss ein Textformat in Excel zugewiesen werden.
  • [#FILTER#customers#]: Liefert einen Text mit allen Kundennummern, die in den Filtereinstellungen ausgewählt wurden. Wurde der Filter nicht gesetzt, erscheint der Text "Kein Kunde ausgewählt". Der Zelle muss ein Textformat in Excel zugewiesen werden.
  • [#FILTER#serviceTypes#]: Liefert einen Text mit allen Leistungsarten, die in den Filtereinstellungen ausgewählt wurden. Wurde der Filter nicht gesetzt, erscheint der Text "Keine Leistungsart ausgewählt". Der Zelle muss ein Textformat in Excel zugewiesen werden.
  • [#FILTER#invoices#]: Liefert einen Text mit allen Rechnungen, die in den Filtereinstellungen ausgewählt wurden. Wurde der Filter nicht gesetzt, erscheint der Text "Keine Rechnung ausgewählt". Der Zelle muss ein Textformat in Excel zugewiesen werden.
  • [#FILTER#summary#]: Liefert einen Text, der sich aus den Filtereinstellungen für Status, Aufträge, Mitarbeiter, Kunden, Rechnungen und Leistungsarten dynamisch zusammensetzt und nur die ausgewählten Filter in einem mehrzeiligen Text ausgibt. Sind keine Filter gesetzt, wird der Text "Keine Filter ausgewählt" angezeigt. Der Zelle muss ein Textformat in Excel zugewiesen werden.
LIST Platzhalter

Diese Platzhalter stellen die Daten der Leistungen bereit, die sich aus den aktuell gewählten Filtereinstellungen ergeben. Diese Platzhalter können ausschließlich in der Tabelle verwendet werden und müssen sich in einer Zeile befinden.

  • [#LIST#employee#]: Liefert den Namen des Mitarbeiters, der der der Leistung zugrunde liegt. Der Zelle muss ein Textformat in Excel zugewiesen werden.
  • [#LIST#employeeWithCostCenter#]: Liefert den Namen des Mitarbeiters mit der Kostenstelle dahinter.
  • [#LIST#date#]: Liefert das Datum der Leistung. Der Zelle muss ein Datumsformat in Excel zugewiesen werden.
  • [#LIST#duration#]: Liefert die fakturierbare Dauer in Stunden oder Tagen je nach Einheit. Der Zelle muss ein numerisches Format in Excel zugewiesen werden.
  • [#LIST#durationBooked#]: Liefert die gebuchte Dauer in Stunden oder Tagen je nach Einheit. Der Zelle muss ein numerisches Format in Excel zugewiesen werden.
  • [#LIST#orderName#]: Liefert die Bezeichnung des Auftrags, der der Leistung zugeordnet ist. Der Zelle muss ein Textformat in Excel zugewiesen werden.
  • [#LIST#orderNumber#]: Liefert die Auftragsnummer des Auftrags, der der Leistung zugeordnet ist. Der Zelle muss ein Textformat in Excel zugewiesen werden.
  • [#LIST#orderDetails#]: Liefert in einem Text die Auftragsnummer, Auftragsbezeichnung, Positionsnummer und Leistungsart, die der Leistung zugeordnet sind. Der Zelle muss ein Textformat in Excel zugewiesen werden. Es sollte auch "Textumbruch" gesetzt werden.
  • [#LIST#serviceType#]: Liefert den Namen der Leistungsart, die der Leistung zugeordnet ist. Der Zelle muss ein Textformat in Excel zugewiesen werden.
  • [#LIST#task#]: Liefert den Schlüssel und Namen der Aufgabe, für die eine Leistung entstanden ist. Da eine Leistung auch aus mehreren Arbeitszeitbuchungen bestehen kann (Tagessätze), werden u.U. mehrere Schlüssel/Name Paare komma-separiert ausgegeben.
  • [#LIST#taskKey#]: Liefert den Schlüssel der Aufgabe, für die eine Leistung entstanden ist. Da eine Leistung auch aus mehreren Arbeitszeitbuchungen bestehen kann (Tagessätze), werden u.U. mehrere Schlüssel komma-separiert ausgegeben.
  • [#LIST#taskName#]: Liefert den Namen der Aufgabe, für die eine Leistung entstanden ist. Da eine Leistung auch aus mehreren Arbeitszeitbuchungen bestehen kann (Tagessätze), werden u.U. mehrere Namen komma-separiert ausgegeben.
  • [#LIST#customerId#]: Liefert die Kundennummer des Kunden, der der Leistung zugeordnet ist. Der Zelle muss ein Textformat in Excel zugewiesen werden.
  • [#LIST#customerName#]: Liefert den Namen des Kunden, der der Leistung zugeordnet ist. Der Zelle muss ein Textformat in Excel zugewiesen werden.
  • [#LIST#description#]: Liefert die Beschreibung der Leistung. Da eine Leistung auch aus mehreren Arbeitszeitbuchungen bestehen kann (Tagessätze), werden u.U. mehrere Beschreibungen, Schlüssel und Namen komma-separiert ausgegeben.Der Zelle muss ein Textformat in Excel zugewiesen werden.
  • [#LIST#descriptionWithTaskKey#]: Liefert die Beschreibung der Arbeitszeit und den Schlüssel der Aufgabe, für die eine Leistung entstanden ist. Da eine Leistung auch aus mehreren Arbeitszeitbuchungen bestehen kann (Tagessätze), werden u.U. mehrere Beschreibung/Schlüssel Paare komma-separiert ausgegeben.
  • [#LIST#rate#]: Liefert den Stunden- bzw. Tagessatz der Leistung. Der Zelle muss ein Buchhaltungsformat in Excel zugewiesen werden.
  • [#LIST#unit#]: Liefert die Einheit der Leistung z.B. Stunden, Tage. Der Zelle muss ein Textformat in Excel zugewiesen werden.
  • [#LIST#priceTotal#]: Liefert den Betrag der Leistung (Dauer * Rate). Der Zelle muss ein Buchhaltungsformat in Excel zugewiesen werden.
  • [#LIST#accountLabel#]: Liefert den Wert des Labels mit dem Präfix "Account:" zurück. Falls mehrere Arbeitszeiten (z.B. bei Tagessätzen) mit unterschiedlichen Tempo-Accounts der Leistung zugrunde liegen, wird eine komma-separierte Liste zurückgeliefert. Der Zelle muss ein Textformat in Excel zugewiesen werden.
  • [#LIST#customerLabel#]: Liefert den Wert des Labels mit dem Präfix "Customer:" zurück. Falls mehrere Arbeitszeiten (z.B. bei Tagessätzen) mit unterschiedlichen Tempo-Customers der Leistung zugrunde liegen, wird eine komma-separierte Liste zurückgeliefert. Der Zelle muss ein Textformat in Excel zugewiesen werden.
  • [#LIST#projectLabel#]: Liefert den Wert des Labels mit dem Präfix "Project:" zurück. Falls mehrere Arbeitszeiten (z.B. bei Tagessätzen) mit unterschiedlichen Projekten der Leistung (z.B. bei Tagessätzen) zugrunde liegen, wird eine komma-separierte Liste zurückgeliefert. Der Zelle muss ein Textformat in Excel zugewiesen werden.
  • [#LIST#epicLabel#]: Liefert den Wert des Labels mit dem Präfix "Epic:" zurück. Falls mehrere Arbeitszeiten mit unterschiedlichen Epics der Leistung (z.B. bei Tagessätzen) zugrunde liegen, wird eine komma-separierte Liste zurückgeliefert. Der Zelle muss ein Textformat in Excel zugewiesen werden.
  • [#LIST#project#]: Liefert den Projektschlüssel und Projektnamen zu einer Leistung zurück, wenn diese auf einer Aufgabe eines Projekts basiert.
  • [#LIST#projectKey#]: Liefert den Projektschlüssel zu einer Leistung zurück, wenn diese auf einer Aufgabe eines Projekts basiert.
  • [#LIST#projectName#]: Liefert den Projektnamen zu einer Leistung zurück, wenn diese auf einer Aufgabe eines Projekts basiert.
  • [#LIST#projectNumber#]: Liefert den Projektnummer zu einer Leistung zurück, wenn diese auf einer Aufgabe eines Projekts basiert.
  • [#LIST#projectDetails#]: Liefert den Projektschlüssel, Projektnamen und die Projektnummer zu einer Leistung zurück, wenn diese auf einer Aufgabe eines Projekts basiert. Format: <Projektschlüssel>: ()
VARIABLE Platzhalter

Dieser Platzhalter kann die Werte der Variablen, die an der Vorlage gepflegt werden können, einfügen. Der Platzhalter kann in der Kopf- und Fußzeile und in der Tabelle verwendet werden. Eine Verwendung in der Zeile, die die LIST Platzhalter enthält, ist nicht möglich. Nachfolgend wird ein Beispiel aufgezeigt.

  • [#VARIABLE#companyName#]: Liefert den Wert der Variable "companyName", die an der Vorlage gepflegt wurde.

Alle Zellen, die einen VARIABLE Platzhalter enthalten, müssen das Format "Text" erhalten.

Doku-Link: Detaillierte Informationen zur Pflege von Variablen an Vorlagen findest Du auf dieser Seite unter "Variablen bearbeiten"

Weiterhin werden folgende Variablen angeboten, die sich aus den Daten der Leistungen ergeben.

  • [#VARIABLE#projects#]: Liefert eine komma-separierte Liste von Projektdaten, die den Aufgaben aus den Leistungen zugeordnet sind. Format: <Projektschlüssel>:, <Projektschlüssel>:, ...
  • [#VARIABLE#projectKeys#] Liefert eine komma-separierte Liste von Projektschlüsseln, die den Aufgaben aus den Leistungen zugeordnet sind. Format: <Projektschlüssel>, <Projektschlüssel>, ...
SUM Platzhalter

Dieser Platzhalter wird verwendet, um für bestimmte Leistungseigenschaften Summen in die Exceltabelle einfügen zu können.

  • [#SUM#duration#]: Liefert eine Formel, die alle Zeilen der Spalte "Fakturierbare Dauer" als Teilergebnis summiert. Die Zelle muss ein numerisches Format in Excel erhalten.
  • [#SUM#durationBooked#]: Liefert eine Formel, die alle Zeilen der Spalte "Gebuchte Dauer" als Teilergebnis summiert. Die Zelle muss ein numerisches Format in Excel erhalten.
  • [#SUM#priceTotal#]: Liefert eine Formel, die alle Zeilen der Spalte "Betrag" als Teilergebnis summiert. Die Zelle muss ein Buchhaltungsformat in Excel erhalten.

Hinweis: Für jeden verwendeten SUM Platzhalter muss es immer eine Spalte mit dem zugehörigen LIST Platzhalter geben. Beispiel: Verwendet man den Platzhalter [#SUM#duration#], so muss auch der Platzhalter [#LIST#duration#] in der Auflistungszeile verwendet werden.


Nach oben ↑