AW: Sonderpreis - Originalpreis
Das lässt sich schon machen, dazu musst Du aber den Original-Preis direkt aus der JTL Datenbank auslesen. Wenn keine Staffelpreise festgelegt sind und Du nicht nach Käufergruppen "sortierst", ist das recht einfach, sonst wird's schnell komplex...
Hier ist die reine SQL Query für den ursprünglichen Netto Preis des aktuellen Artikels, zur Veranschaulichung des Prinzips der JTL_DirectQuery:
Code:
JTL_DirectQuery ("SELECT tArtikel.fVKNetto FROM dbo.tArtikel WHERE tartikel.cArtNr='"+ToString$(Auftragspositionen.Artikel.Artikelnummer)+"'")
Damit könntest Du zum Beispiel ein neues Element mit Namen "Sonderpreis" im Berichtscontainer unterhalb der Artikelbeschreibung anlegen, und folgenden (RTF-)Text ausgeben lassen:
Code:
"Aktueller Sonderpreis: "+ Fstr$(Auftragspositionen.NettopreisEinzel,"-?,?,?&.##") + " € statt regulär " + Fstr$(JTL_DirectQuery ("SELECT tArtikel.fVKNetto FROM dbo.tArtikel WHERE tartikel.cArtNr='"+ToString$(Auftragspositionen.Artikel.Artikelnummer)+"'"),"-?,?,?&.##") + " €"
... also etwa "Aktueller Sonderpreis: 421,30 € statt regulär 466,00 €"
Oder zum Beispiel mit End-Datum und dass dann auch nur, falls die Bedingung ein End-Datum ist, sonst mit Hinweis auf Verfügbarkeit als Bedingung ...
Code:
"Sonderpreis" + Cond(JTL_DirectQuery ("SELECT tArtikelSonderpreis.nIstDatum FROM dbo.tArtikelSonderpreis JOIN tartikel ON tartikel.kArtikel=tArtikelSonderpreis.kArtikel WHERE tartikel.cArtNr='"+ToString$(Auftragspositionen.Artikel.Artikelnummer)+"'")="1", " bis " + Left$(JTL_DirectQuery("SELECT tArtikelSonderpreis.dEnde FROM dbo.tArtikelSonderpreis JOIN tartikel ON tartikel.kArtikel=tArtikelSonderpreis.kArtikel WHERE tartikel.cArtNr='"+ToString$(Auftragspositionen.Artikel.Artikelnummer)+"'"),10),", solange verfügbar") + ":" + Fstr$(Auftragspositionen.NettopreisEinzel,"-?,?,?&.##") + " € statt regulär" + Fstr$(JTL_DirectQuery ("SELECT tArtikel.fVKNetto FROM dbo.tArtikel WHERE tartikel.cArtNr='"+ToString$(Auftragspositionen.Artikel.Artikelnummer)+"'"),"-?,?,?&.##") + " €"
... also etwa "Sonderpreis bis 21.04.2015: 421,30 € statt regulär 466,00 €" oder eben "Sonderpreis, solange verfügbar: 421,30 € statt regulär 466,00 €" falls kein Enddatum festgelegt wurde.
Und damit der Text nur erscheint, wenn auch tatsächlich ein Sonderpreis hinterlegt UND aktiv ist, setzt Du die Darstellungsbedingung für die Berichtscontainer Textzeile wie folgt...
Code:
JTL_DirectQuery ("SELECT tArtikelSonderpreis.nAktiv FROM dbo.tArtikelSonderpreis JOIN tartikel ON tartikel.kArtikel=tArtikelSonderpreis.kArtikel WHERE tartikel.cArtNr='"+ToString$(Auftragspositionen.Artikel.Artikelnummer)+"'")="1"
Diese Abfrage ist schon ein wenig komplexer, da wir einen Wert aus tArtikelSonderpreis abfragen, nämlich nAktiv, unser Referenzwert, die Artikelnummer findet sich aber in tArtikelSonderpreis gar nicht. Dafür findet sich sowohl in tArtikel, wie auch in tArtikelSonderpreis die Variable kArtikel, über die wir mit JOIN den Bezug zwischen den beiden Tabellen herstellen.
Ist eigentlich ganz einfach und solange Du nur Abfragen machst, wie oben, kannst Du auch nichts zerlegen. Du solltest Dich aber ein wenig mit dem Microsoft SQL Server Management Studio vertraut machen (ggfls. erst runterladen und installieren), sonst kommst Du nirgendwohin. Und falls Du noch keine Erfahrung mit SQL hast, Tutorials dazu gibt es wie Sand am Meer, z.B. hier
SQL lernen - SQL Tutorial, Anleitung
Viel Erfolg,
Ingmar