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:

ACHTUNG: Immer Groß- und Kleinschreibung beachten!

$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.ownBankIBAN Eigene Bankverbindung IBAN: EinstellungEigene Firmendaten
$CONFIGURATION.ownBankBIC Eigene Bankverbindung BIC: EinstellungEigene Firmendaten
$CONFIGURATION.ownBankOwner Eigene Bankverbindung Inhaber: EinstellungEigene Firmendaten
$CONFIGURATION.ownBankAccount Eigene Bankverbindung: EinstellungDruck Standard Texte
$CONFIGURATION.useInvoicePdfOwnBankAccountHeadline Überschrift Rechnung Bankverbindung: EinstellungDruck Standard Texte
$CONFIGURATION.useInvoicePdfOwnBankAccountHeadline_EN Überschrift Rechnung Bankverbindung (Englisch): EinstellungDruck Standard Texte
$CONFIGURATION.ownBankAccount_EN Eigene Bankverbindung (Englisch): EinstellungDruck Standard Texte
$ANREDE Für Angebot, Auftrag und Rechnung automatisch generierte Anrede per-Sie z.B. “Sehr geehrter Herr Ing. Max Mustermann, MSc
$ANREDE_DU Für Angebot, Auftrag und Rechnung automatisch generierte Anrede per-Du z.B. “Lieber Max
$SALUTATION Für Angebot, Auftrag und Rechnung automatisch generierte Anrede in englisch per-Sie z.B. “Dear Mr. Ing. Max Mustermann, MSc
$SALUTATION_DU Für Angebot, Auftrag und Rechnung automatisch generierte Anrede in englisch per-Du z.B. “Hello Max
$PDF_LINK Für Angebot, Auftrag und Rechnung direkter Link auf das PDF aufrufbar durch den Kunden
$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) als assoziatives Array
$obj.id Aktuelle interne numerische ID des Objekts (ohne Objektkürzel) - z.B. bei Angebot interne Angebots-ID 1234, bei Auftrag interne Auftrags-ID 1234 oder bei Rechnung interne Rechnungs-ID 1234
$obj._ref Aktuelle interne Referenz-ID des Objekts (mit internem Objektkürzel) - z.B. bei Angebot interne Angebots-Referenz-ID xo1234, bei Auftrag interne Auftrags-Referenz-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.created_user__email Email Adresse des Benutzer der das Objekt (z.B. Angebot) angelegt hat
$obj.modified_user Benutzer der das Objekt (z.B. Angebot) zuletzt geändert hat
$obj.modified_user__email Email Adresse des Benutzer der das Objekt (z.B. Angebot) zuletzt geändert hat
$obj.projectmgr_user Projektleiter Benutzer der dem Objekt zugeordnet ist - siehe FAQ: Projektleiter
$obj.projectmgr_user__email Email Adresse des Projektleiter Benutzers
$obj.customer Die Referenz zum Kundenstammdatensatz
$obj.customer___objref Kundennummer (ACHTUNG: 3 Unterstriche!)
$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_company Firmenname 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_firstname Vorname für das jeweilige Objekt (Achtung: muss nicht identisch mit dem Stammdatensatz sein)
$obj.site_lastname Nachname für das jeweilige Objekt (Achtung: muss nicht identisch mit dem Stammdatensatz sein)
$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:

escape Sollte immer bei allen Textfeldern benutzt werden und entfernt HTML Steuerzeichen - z.B.
[[$obj.summary|escape]]
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|escape|nl2br]]
(inkl. escape, damit andere HTML Steuerzeichen unterbunden werden - WICHTIG: escape muss VOR nl2br kommen, da sonst der HTML Code für den Zeilenumbruch ebenfalls entfernt wird )

Eine Übersicht der gängigsten Funktionen:

addimg Die Funktion [[addimg]] fügt ein Bild in das PDF ein - siehe PDF Power-User Funktionen: Einfügen von Bildern aus Attachments
getobject Die Funktion [[getobject]] holt Daten zu einem Objekt - siehe oben: Details: Holen eines Objekts
setskip Die Funktion [[setskip]] wird nur bei der Abbruchbedingung für Erinnerung-Emails mittels Zeitaktionen verwendet.

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 und Dokument Vorlagen für Textblöcke und Emails ausgewertet.

Siehe auch Email zusätzlicher Text und Anhänge.
Soehe auch Dokument Vorlagen für Textblöcke und Emails.

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 aufgrund der Variablen gesetzt.
HINWEIS: Üblicherweise sollte direkt die Variable “[[$ANREDE]]” verwendet werden.

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]]

Beispiel: Benachrichtigung bei Angebot beauftragt oder abgelehnt

Das System schickt eine Email an die Firmenmailadresse, wenn ein Kunde im Bestellportal ein Angebot beauftragt oder abgelehnt hat - siehe FAQ: Email bei Angebotsbeauftragung.

Alternativ dazu kann das System auch einen Slack Channel Post machen - siehe FAQ: Nachrichten in SLACK Channel.

Beispiel: Benachrichtigung an Projektleiter bei Erhalten der Artikel einer Lieferantenbestellung

Das System schickt eine Email, wenn eine Lieferantenbestellung als Erhalten markiert wird - siehe FAQ: Projektleiter

offer-cube/howto/pdf-special-variables.txt · Last modified: 2024/02/19 11:26 (external edit)