Inhaltsverzeichnis
Allgemeine Funktionen
Aktionsmenü
- Vorschau
- Aktuelle Vorlage herunterladen
- Basis-Vorlage herunterladen
- Bearbeitete Vorlage hochladen
- Als Standard setzen
- Stammdaten bearbeiten
- Variablen bearbeiten
- Vorlage löschen
Vorlagen anpassen
- Freemarker-Vorlagen anpassen (Angebote, Aufträge, Rechnungen, Leistungsnachweise und E-Mails)
- Excelvorlagen anpassen (Leistungsexporte)
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.
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.
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.
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".
Folgende Eigenschaften müssen für eine neue Vorlage angegeben werden:
- 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.
- 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.
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.
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.
Hinweis: Wenn in der Vorlage ein Fehler enthalten ist z.B. Fehler im HTML oder in den Freemarker Platzhaltern, so wird in einem Popup Fenster der Fehler mit der Angabe einer Zeile und Spalte ausgegeben. Kommt es zu einem Fehler, weil z.B. eine Variable in manchen Fällen nicht gefüllt ist z.B. Ansprechpartner, und dieser Wert nicht auf NULL geprüft wurde, können keine Zeilen/Spalten Informationen ausgegeben werden, da der Fehler im erst im gerenderten HTML auftritt.
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.
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.
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.
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.
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.
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.
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:
- 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.
-
Adressdaten Deines Unternehmens
- companyName: Name des Unternehmens. Dieser wird im Kopfbereich und im Absender der Basis-Vorlagen angezeigt.
- companyAddressLine1: Adresszusatz 1. Zeile. Dieser wird in den Basis-Vorlagen nicht verwendet.
- companyAddressLine2: Addresszusatz 2. Zeile. Dieser wird in den Basis-Vorlagen nicht verwendet.
- companyStreetAddress: Straße und Hausnummer des Unternehmens. Diese wird im Kopfbereich und im Absender der Basis-Vorlagen angezeigt.
- companyPostalCode: PLZ des Unternehmens. Diese wird im Kopfbereich und im Absender der Basis-Vorlagen angezeigt.
- companyCity: Stadt des Unternehmens. Diese wird im Kopfbereich und im Absender der Basis-Vorlagen angezeigt.
- companyRegion: Region / Bundesland des Unternehmens. Dieses wird in den Basis-Vorlagen nicht verwendet.
- companyCountry: Land des Unternehmens. Dieses wird in den Basis-Vorlagen nicht verwendet.
-
Kontaktdaten Deines Unternehmens
- companyEmail: E-Mail-Adresse des Unternehmens. Diese wird im Kopfbereich der Basis-Vorlagen angezeigt.
- companyPhone: Telefon-Nr. des Unternehmens. Diese wird im Kopfbereich der Basis-Vorlagen angezeigt.
- companyFax: Telefon-Nr. des Unternehmens. Diese wird im Kopfbereich der Basis-Vorlagen angezeigt.
- companyWebsite: Website des Unternehmens. Diese wird im Kopfbereich der Basis-Vorlagen angezeigt.
-
Daten zum Standard-Ansprechpartner
- 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.
- responsibleFirstname: Vorname des allgemeinen Ansprechpartners des Unternehmens. Dieses wird in den Basis-Vorlagen nicht verwendet.
- responsibleLastname: Nachname des allgemeinen Ansprechpartners des Unternehmens. Dieses wird in den Basis-Vorlagen nicht verwendet.
- 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.
- 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.
-
Daten zur Bankverbindung
- bankName: Name der Bank des Unternehmens. Dieser wird im Kopfbereich der Basis-Vorlagen angezeigt.
- bankId: BIC des Kontos des Unternehmens. Diese wird im Kopfbereich der Basis-Vorlagen angezeigt.
- bankAccountNumber: IBAN des Kontos des Unternehmens. Diese wird im Kopfbereich der Basis-Vorlagen angezeigt.
-
Rechtliche Informationen
- management: Namen der Geschäftsführer des Unternehmens. Diese werden im Kopfbereich der Basis-Vorlagen angezeigt.
- salesTaxNumber: Umsatzsteuer-Ident Nummer des Unternehmens. Diese wird im Kopfbereich der Basis-Vorlagen angezeigt.
- commercialRegister: Handelsregister-Nr. des Unternehmens. Diese wird im Kopfbereich der Basis-Vorlagen angezeigt.
- jurisdiction: Gerichtsstand des Unternehmens. Dieser wird im Kopfbereich der Basis-Vorlagen angezeigt.
-
Bildmaterial
- companyImage1: Base64 String z.B. eines Logo Bildes. Dieses wird in der Kopfzeile rechts in den Basis-Vorlagen angezeigt.
- companyImage2: Base64 String z.B. eines weiteren Bildes. Dieses kann in individuellen Vorlagen verwendet werden.
- companyImage3: Base64 String z.B. eines weiteren Bildes. Dieses kann in individuellen Vorlagen verwendet werden.
-
Fonts
- companyFontFamily: Name der Font Family, welcher sich auf einen der unterstützten Fonts von foreknown oder auf einen Google Font beziehen kann.
- companyGoogleFontUrl: URL des Google Fonts, der verwendet werden soll. Der Wert unter companyFontFamily muss in diesem Fall zum referenzierten Google Font zusammenpassen.
-
Einstellungen
- showVatPerPosition: Für Rechnungs-, Angebots- und Auftragsvorlagen relevant. Flag, welches bestimmt, ob für jede Position der Umsatzsteuersatz mit ausgegeben werden soll. Initial: false
- 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
- showHeaderPerPosition: Nur für Rechnungsvorlagen relevant. Flag, welches bestimmt, ob jede Rechnungsposition eine eigene Spaltenüberschrift erhält. Initial: false
- showPaymentPlan: Nur für Angebots- und Auftragsvorlagen relevant. Flag, welches bestimmt, ob ein evtl. hinterlegter Zahlungsplan mit ausgegeben werden soll. Initial: false
- 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.
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.
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.
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.
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:
- 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.
- 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.
- 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.
- 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.
- 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.
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:
- Lesen einer Eigenschaft: z.B. ${offer.termsOfPayment.paymentDiscountDeadline}
- Abfragen einer Eigenschaft auf Inhalt: z.B. <#if offer.termsOfPayment.paymentDiscountDeadline?has_content>...</#if>
- Iterieren durch eine Liste: z.B. <#list offer.introductoryTextItems as introductoryTextItem>...</#list>
Welche Eigenschaften mit welchem Datentyp pro Vorlagentyp bereitgestellt werden, wird nachfolgend beschrieben.
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 |
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 |
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 |
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"
}
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.
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) |
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.
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.
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.
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.
- 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.
- 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.
- 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.
- 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.
- 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.