User Tools

Site Tools


offer-cube:howto:pdf-special-variables

offer-cube / PDF Power-User Funktionen: Variablen und Funktionen

Allgemeines / Zusammenfassung

Die PDF Erweiterungen für Power-User ermöglichen folgende Funktionalitäten (link auf die entsprechenden Dokumente):

Hier in diesem Dokument werden speziell folgende Funktionalitäten erläutert:

Gesteuert werden diese Funktionen über Funktionsaufrufe, die zwischen jeweils 2 eckigen Klammern aufgerufen werden. Hier gibt es die Möglichkeit Daten von Objekten (z.B: Gesamtpreis, Rechnungsdatum, Angebotsnummer, etc.) aus dem System zu holen und über Variablen einzufügen. Oder es gibt eine Funktion um Bilder-Attachments zu holen und als Bilder in das PDF einzufügen.

Diese Erweiterungen lassen sich auf folgende Objekte/Felder anwenden:

  • Angebote/Aufträge/Rechnungen: Felder “Überschrift/Titel”, “… Beschreibung”, “… Appendix”
  • Position: Felder “Positions-Bezeichnung”, “Positions-Beschreibung”
  • Artikel: Feld “Beschreibung”

Variablen/Funktionen lassen sich größtenteils wie in der Dokumentation der Template Engine smarty http://www.smarty.net/docs/en/ verwenden.

ACHTUNG: seit Build 313 (2020-06-01) muss _objref statt _ref verwendet werden

Details: Variablen zuweisen

Mit [[assign var="Variable" value="Wert" scope="global"]] kann der Variable “$Variable” der Text “Wert” zugewiesen werden.

Das “scope=“global”” sorgt dafür, dass diese Variable auch später zur Verfügung steht.

Hinweis: Die Texte (und damit die Variablenzuweisungen) werden der Reihenfolge nach durchgegangen, wie sie auch im PDF angezeigt werden.
Das bedeutet, die Variable $styp ist in allen nachfolgenden Positionen ebenfalls (mit dem letzten gesetzten Wert) verfügbar (durch scope=“global”). In den vorhergehenden Positionen jedoch nicht!
Die Variable ist auch im Auftrags-Appendix verfügbar - jedoch nicht in der Auftrags-Beschreibung (da diese VOR den Positionen kommt).

Beispiel siehe FAQ: Positionsgruppen/Text mit Variable

Details: vorhandene Variablen

Einige Variablen stehen grundsätzlich zur Verfügung.

Siehe Variablen Übersicht

Hierzu gehören unter anderem:

Details: Variablen ausgeben

Die Variablen lassen sich größtenteils in der von smarty bekannten Syntax ausgeben bzw. verwenden - siehe http://www.smarty.net/docs/en/language.syntax.variables.tpl

ACHTUNG:
Entgegen der Angabe in der smarty Dokumentation werden Variablen und Funktionen mit 2 eckigen Klammern aufgerufen.

Also z.B. Aufruf einer Funktion [[funktion parameter="wert"]] ODER Ausgabe einer Variable [[$variable]]

Beispiel: Verwendung des Firmennamens als Variable

Vielen Dank für Ihren Auftrag, 
Ihr [[$CONFIGURATION.ownCompany]] Team

Verwendung der $CONFIGURATION Variablen

Anwendungsbeispiel: Verwendung der Rechnungsnummer und des Preises einer Rechnung

Für die Zahlungsanweisung an den Kunden kann z.B. in der Bankverbindung (Einstellungen → Eigene Firmendaten → Bankverbindung) nochmals auf den Gesamtpreis und die Rechnungsnummer als Verwendungszweck verwiesen werden.

Das aktuelle Objekt ist über die Variable [[$obj.<fieldname>]] zugreifbar.

Beispiel: Bankverbindung mit Verwendungszweck Angabe:

Bitte überweisen Sie den offenen Rechnungsbetrag von <b>[[$obj.price_wtax|d2bcurrency]]</b> auf unser Konto und geben Sie als Verwendungszweck die Rechnungsnummer <b>[[$obj._objref]]</b> an.

Verwendung des aktuellen Objekts mit [[$obj]]

In diesem Beispiel wird auch die Schriftstil-Formatierung mit <b> verwendet.

Zusätzlich kommt ein Modifikator d2bcurrency zur Verwendung, der eine Zahl als Euro Betrag mit Tausendertrennzeichen und Komma formatiert.

TIPP: Ein vollständiger Code der auch unterschiedliche Zahlungsarten berücksichtigt findet sich hier: Zahlungsart in Bankverbindung verwenden

Details: Holen eines Objekts mit [[getobject]]

Die Funktion [[getobject]] erlaubt das Holen von Daten eines Objekts aus der Datenbank.
Ein Objekt kann hierbei ein Angebot/Auftrag/Rechnung sein, aber auch andere Objekte wie resource oder article.

Beispiel: Holen einer resource mit Namen und Verwendung der Beschreibung description:

Ihr Projektleiter: [[getobject module="resource" by="name" name="Leo Eibler" assign="projectmgr"]]
[[$projectmgr.description|nl2br]]

Verwendung der Funktion [[getobject]]

Details: Variablen Übersicht

Eine Übersicht der gängigsten Variablen:

$CONFIGURATION Die systemweite Konfigurations-Variable $CONFIGURATION ist ein assoziatives Array mit Systemeinstellungen, Standardtexten, etc.
$obj Das aktuelle Objekt (Angebot, Auftrag, Rechnung) als assoziatives Array

Beispiele:

$CONFIGURATION.ownCompany Eigener Firmenname: EinstellungEigene Firmendaten
$CONFIGURATION.ownAddress Eigene Firmen Adresse (mit Newlines): EinstellungEigene Firmendaten
$CONFIGURATION.ownTelephone Eigene Firmen Telefon Nummer: EinstellungEigene Firmendaten
$CONFIGURATION.ownFax Eigene Firmen Fax Nummer: EinstellungEigene Firmendaten
$CONFIGURATION.ownMail Eigene Firmen Mailadresse: EinstellungEigene Firmendaten
$CONFIGURATION.ownWeb Eigene Firmen Internetseite: EinstellungEigene Firmendaten
$CONFIGURATION.ownUID Eigene Umsatzsteuer ID: EinstellungEigene Firmendaten
$CONFIGURATION.useInvoicePdfOwnBankAccountHeadline Überschrift Rechnung Bankverbindung: EinstellungDruck Standard Texte
$CONFIGURATION.ownBankAccount Eigene Bankverbindung: EinstellungDruck Standard Texte
$CONFIGURATION.useInvoicePdfOwnBankAccountHeadline_EN Überschrift Rechnung Bankverbindung (Englisch): EinstellungDruck Standard Texte
$CONFIGURATION.ownBankAccount_EN Eigene Bankverbindung (Englisch): EinstellungDruck Standard Texte
$time Aktuelles Datum/Uhrzeit als Unixtimestamp (Sekunden seit 1.1.1970 UTC) - siehe 'date_format'
$obj Das aktuelle Haupt-Objekt (z.B. Angebot, Auftrag, Rechnung)
$obj._ref Aktuelle interne ID des Objekts - z.B. bei Angebot interne Angebots-ID xo1234, bei Auftrag interne Auftrags-ID xn1234 oder bei Rechnung interne Rechnungs-ID xr1234
$obj._objref Aktuelle Referenz-Nummer des Objekts lt. Nummernkreise - z.B. bei Angebot Angebotsnr. o1234, bei Auftrag Auftragsnr n1234 oder bei Rechnung Rechnungsnr r1234
Siehe auch Einstellungen Nummernkreise
$obj.price Ursprungspreis netto ohne Mehrwertsteuer.
$obj.price_wdiscount Rabattierter Preis netto ohne Mehrwertsteuer.
$obj.price_wtax End-Preis mit Mehrwertsteuer. Kann mit Tausendertrennzeichen und 2 Nachkommastellen formatiert werden mit [[$obj.price_wtax|d2bCurrency]]
$obj.tax_portion_a Mehrwertsteuer für Satz-A (mit _b für Satz-B usw)
$obj.summary Überschrift
$obj.description Beschreibung
$obj.appendix Appendix
$obj.startdate Start Datum als Unix-Timestamp. Kann zu lesbaren Datum formatiert werden mit [[$obj.startdate|ut2humandate]]
$obj.enddate End Datum als Unix-Timestamp. Kann zu lesbaren Datum formatiert werden mit [[$obj.enddate|ut2humandate]]
$obj.invoice_dt Nur bei Rechnung: Rechnungsdatum als Unix-Timestamp. Kann zu lesbaren Datum formatiert werden mit [[$obj.invoice_dt|ut2humandate]]
$obj.duepayment_dt Nur bei Rechnung: Zahlungsziel als Unix-Timestamp. Kann zu lesbaren Datum formatiert werden mit [[$obj.duepayment_dt|ut2humandate]]
$obj.created_user Benutzer der das Objekt (z.B. Angebot) angelegt hat
$obj.modified_user Benutzer der das Objekt (z.B. Angebot) zuletzt geändert hat
$obj.customer Die Referenz zum Kundenstammdatensatz
$obj.customer___objref Kundennummer
$obj.customer__language Sprache des Kunden: 0=Standard (Deutsch), 1=Deutsch, 2=Englisch
$obj.site_name Zusammengesetzter Kundenname für das jeweilige Objekt (Achtung: muss nicht identisch mit dem Stammdatensatz sein)
$obj.site_title Anrede des Kunden: 0=Unbekannt/nicht gepflegt, 1=Herr, 2=Frau, 4=Familie
$obj.site_cashdiscount_percent Skonto Prozent - siehe Zahlungskonditionen/Skonto
$obj.site_duepayment_days Zahlungsziel Tage (bei einer Rechnung wird das beim Versand nach Auswahl des Zahlungsziel automatisch angepasst) - siehe Zahlungskonditionen/Skonto
$obj.site_cashdiscount_days Skonto (Tage) - siehe Zahlungskonditionen/Skonto
$obj.site_paymethod Zahlungsart (interner Code 0=Überweisung/Rechnung, 11=Einziehungsauftrag, 15=Nachnahme, 18=Vorkasse) - siehe Zahlungskonditionen/Skonto
$obj.site_tax Flag ob Inlands-Steuersatz angewendet wird (20) oder keine Steuer (0).
Hinweis: Dies ist NICHT der Steuersatz sondern nur eine Kennzeichnung ob Steuersätze grundsätzlich angewendet werden.
$obj.site_country_code2 2 stelliger ISO 3166-2 Ländercode
$position Die aktuelle Position (nur innerhalb einer Position sinnvoll)
$position.posnr Die Positionsnummer der aktuellen Position
$position.amount Die Anzahl der aktuellen Position
$position.price Ursprungspreis netto ohne Mehrwertsteuer der aktuellen Position
$position.price_wdiscount Rabattierter Preis netto ohne Mehrwertsteuer der aktuellen Position
$position.price_wtax End-Preis mit Mehrwertsteuer der aktuellen Position. Kann mit Tausendertrennzeichen und 2 Nachkommastellen formatiert werden mit [[$position.price_wtax|d2bCurrency]]

Eine Übersicht der gängigsten Modifikatoren:

d2bCurrency Formatierung von Euro Beträgen mit Tausenderpunkt und Kommazeichen - z.B.
[[$obj.price_wtax|d2bCurrency]]
date_format formatiert eine Unixtimestamp Zeitangabe - z.B.
[[$obj.invoice_dt|date_format:"%d.%m.%Y"]]

%d = Tag, %m = Monat, %Y = Jahr 4 stellig
nl2br Sorgt für einen Zeilenumbruch im PDF, falls die Eingabevariable einen Zeilumbruch beinhaltet - z.B.
[[$projectmgr.description|nl2br]]

Die Variablen sind immer in [[ und ]] einzufassen.
Also z.B. um den eigenen Firmennamen zu verwenden: [[$CONFIGURATION.ownCompany]]

Die Variablen werden in PDFs (z.B. bei der Angebotsbeschreibung, Auftragsbeschreibung, Rechnungsbeschreibung, Annex, etc.) als auch bei den Email Zusatz-Texten ausgewertet.

Siehe auch Email zusätzlicher Text und Anhänge.

Beispiele

Nachfolgend finden sich Beispiele für den Variablen Einsatz.

Beispiel: Angebot Gültigkeit

Mit folgendem Schnipsel in den Angebots-Standardtexten (siehe EinstellungDruck Standard Texte ) wird die Gültigkeit (hier 14 Tage) automatisch berechnet und als Datum ausgewiesen.
Die 14 Tage lassen sich beliebig verändern, in dem in der Formel 14 durch die Anzahl an Tage ersetzt wird.

Angebot gültig bis [[($time+14*86400)|date_format:"%d.%m.%Y"]]

Beispiel: Angebot Anrede

In diesem Beispiel wird die Anrede (Sehr geehrter Herr, Sehr geehrte Frau, Sehr geehrte Damen und Herren) automatisch korrekt gesetzt.

Weiters wird das Hauptbild des Angebots mit [ [ addimg ] ] eingefügt (siehe Einfügen von Bildern aus Attachments).

Zum Abschluss wird der Benutzer, der das Angebot erstellt hat automatisch eingefügt sowie die Firmentelefonnummer und der Firmenname.

Sehr geehrte[[if $obj.site_name != ""]][[if $obj.site_title == 0]](r)[[elseif $obj.site_title == 1]]r[[/if]] [[$obj.site_name]][[else]] Damen und Herren[[/if]],

vielen Dank für Ihre Anfrage zu unseren Leistungen.

Anbei finden Sie unser Angebot.

[[addimg]]

Falls das Angebot noch nicht zur Gänze Ihren Wünschen entspricht,
zögern Sie nicht Ihren persönlichen Betreuer [[$obj.created_user__firstname]] [[$obj.created_user__lastname]] unter [[$CONFIGURATION.ownTelephone]] zu kontaktieren.

Ihre [[$CONFIGURATION.ownCompany]]

Resultat:

Erstelltes PDF mit Platzhalter

Beispiel: Rechnung Reverse Charge, i.g. Lieferung automatischer Text

Das folgende Beispiel kann in den Rechnungsstandardtext eingefügt werden und erkennt automatisch ob es sich um eine steuerfreie Bauleistung im österreichischem Inland handelt oder eine steuerfreie Lieferung im EU Ausland.

[[if $obj.site_tax == 0 AND ( $obj.site_country_code2 == '' OR $obj.site_country_code2 == 'AT' )]] §19 Reverse Charge Bauleistungen 
[[else if $obj.site_tax == 0]] §19 Reverse Charge innergemeinschaftliche Lieferung
[[else]] [[/if]]

offer-cube/howto/pdf-special-variables.txt · Last modified: 2022/07/19 14:36 (external edit)