OpenXE/userdata/wiki/XentralHandbuch/default/TransferSmarty

1 line
12 KiB
Plaintext
Raw Normal View History

2021-05-21 08:49:41 +02:00
<strong><span style="font-size:28px;">Smarty</span></strong><h1>Features</h1>Mit Hilfe der integrierten Template-Engine Smarty k&ouml;nnen einfach und flexibel zeichenbasierte Ausgabestrukturen von Datenformaten wie CSV, XML oder JSON an die Bed&uuml;rfnisse des Kunden angepasst werden. Im Grunde muss lediglich das vorhandene Zielformat in eine Textdatei kopiert und mit den entsprechenden Variablen gef&uuml;llt werden. Diese k&ouml;nnen dabei noch umformatiert werden.<br />Belegdaten finden sich z.B. in der Smarty-Variable $beleg und werden in gewohnter PHP-Objektschreibweise angesprochen, z.B. $beleg-&gt;kundennummer oder $beleg-&gt;belegnr. Die Namensgebung gleicht der Benennung von Datenbank-Spaltennamen. Auch ein Zugriff auf komplexere Strukturen ist m&ouml;glich (je nach Beleg). So kann im Lieferschein auf den zu Grunde liegenden Auftrag zugegriffen werden: $beleg-&gt;auftrag-&gt;lieferdatum.Verk&uuml;rztes Beispiel mit fiktivem Format<p>&nbsp;{* Beleg-Stammdaten -------------------------------- *}<br />{$beleg-&gt;status}<br />{$beleg-&gt;datum|date_format:&#39;%d.%m.%Y&#39;}<br />{$beleg-&gt;belegnr}<br />{$beleg-&gt;kundennummer}<br />{$beleg-&gt;name}<br />{* Zugriff auf Daten des zugrundeliegenden Auftrages *}<br />{$beleg-&gt;auftrag-&gt;lieferdatum}<br />{* Weitere Felder entfernt *}</p><p>{* Positionen - Beginn ------------------------------ *}<br />&nbsp;&nbsp; {* Schleife durchl&auml;uft alle verf&uuml;gbaren Positionen *}<br />&nbsp;&nbsp; {foreach from=$beleg-&gt;positionen key=keypos item=position}<br />&nbsp;&nbsp;&nbsp;&nbsp; {$position-&gt;nummer}<br />&nbsp;&nbsp;&nbsp;&nbsp; {$position-&gt;bezeichnung}<br />&nbsp;&nbsp;&nbsp;&nbsp; {$position-&gt;beschreibung}<br />&nbsp;&nbsp;&nbsp;&nbsp; {$position-&gt;menge}<br />&nbsp;&nbsp;&nbsp;&nbsp; {$position-&gt;preis}<br />&nbsp;&nbsp;&nbsp;&nbsp; {* Weitere Felder entfernt *}&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp; {/foreach}<br />{* Positionen - Ende -------------------------------- *}</p><h1>Datenmanipulation und Strukturen</h1><h2>Formatumwandlung</h2> Datumswerte k&ouml;nnen nach Anforderung ausgegeben werden:<ul><li>Int. Datumsformat (ISO 8601): {$beleg-&gt;datum|date_format:&#39;%Y-%m-%d&#39;}</li><li>Deutsches Datumsformat (DIN 5008): {$beleg-&gt;datum|date_format:&#39;%d.%m.%Y&#39;}</li></ul>Zahlen k&ouml;nnen nach Bedarf umformatiert werden. Hier am Beispiel der Spalte &quot;Menge&quot;:<ul><li>Ausgabe ohne Nachkommastellen (als Ganzzahl): {$position-&gt;menge|string_format:&#39;%d&#39;}</li><li>Ausgabe mit einer Nachkommastelle: {$position-&gt;menge|string_format:&#39;%.1f&#39;}</li><li>Ausgabe mit zwei Nachkommastellen: {$position-&gt;menge|string_format:&#39;%.2f&#39;}</li></ul>Grunds&auml;tzlich k&ouml;nnen alle Formate ausgegeben werden, die durch die Funktion <a href="https://www.php.net/manual/de/function.sprintf.php" target="_blank">sprintf in PHP</a> verf&uuml;gbar sind.<h2>Anrufen komplexerer Strukturen</h2><h3>ArtikelStammdaten aus Positionen anprechen</h3><p>&Uuml;ber die Belegpositionen k&ouml;nnen auch &quot;darunterliegende&quot; Strukturen abgerufen werden, die nicht direkt im Beleg gespeichert sind. Ein Beispiel daf&uuml;r ist das Gewicht eines Artikels. Dieses kann &uuml;ber {$position-&gt;articledata-&gt;gewicht} abgerufen werden. So kann, z.B. durch eine Multiplikation mit der Menge der Position und dem Aufaddieren aller Gewichte, auch das Gesamtgewicht aller Artikel eines Beleges berechnet und &uuml;bertragen werden.<br />&Uuml;ber $position-&gt;articledata k&ouml;nnen alle Spalten aus der Tabelle artikel angesprichen werden. Dabei sollte immmer beachtet werden ob Informationen aus den Artikel-Stammdaten evtl. in der Auftragsposition beereirts ver&auml;ndert worden sein k&ouml;nnten. Im Zweifelsfall sollte der Wert aus dem Beleg verwendet werden.</p><h1>Beispiele</h1> Im Folgenden haben wir Ihnen einige Beispiele zusammengefasst, die die Ausgabe verschiedener Lieferscheinformate in den Formaten EDI, CSV und XML erm&ouml;glichen. Bitte pr&uuml;fen Sie bei eigener Anwendung die Spaltenbeschriftungen