Hallo Rainer,
ok, "Hilfe bis Mittwoch" war dann doch zu ehrgeizig, aber jetzt bin ich endlich dazu gekommen und hier ist meine Anleitung zum Einfügen von Sonderpreisen in die Preisliste ...
Wie oben schon gesagt, werden Sonderpreise leider nicht mit an die Preislisten-Vorlage übergeben, man muß sie sich also selbst aus der Datenbank holen. Das macht man mit einem
JTL_DirectQuery() Befehl, dem man ein SQL Statement mit auf den Weg gibt und man bekommt dann den gewünschten Wert zurück. Diesen Rückgabewert kann man dann wie einen normalen Text, Zahlen- oder Währungswert weiterverarbeiten, z.B. auch so formatieren, wie es sich für Deutschland gehört. Das habe ich hier gleich noch mit erledigt und der gesamte Befehle sieht dann so aus...
Code:
LocCurrL$(Val(JTL_DirectQuery("SELECT fNettoPreis FROM tSonderpreise JOIN tArtikelSonderpreis ON tArtikelSonderpreis.kArtikelSonderpreis=tSonderpreise.kArtikelSonderpreis JOIN tKundenGruppe ON tKundenGruppe.kKundenGruppe=tSonderpreise.kKundenGruppe WHERE tArtikelSonderpreis.nAktiv=1 AND tKundenGruppe.cName='"+Vorgang.Kundengruppendetails.Name+"' AND tArtikelSonderpreis.kArtikel="+ToString$(Preislistenartikel.InterneArtikelnummer))),"de-DE")
... und wenn Du Dir den Befehl einmal genau anschaust, dann siehst Du, dass an zwei Stellen "Unterbrechungen" im SQL Code sind, nämlich dort, wo die aktuelle Kundengruppe über
Vorgang.Kundengruppendetails.Name und später dann die aktuelle (interne) Artikelnummer mit
Preislistenartikel.InterneArtikelnummer übergeben werden. Das sind also sozusagen die Variablen, die für jeden Artikel neu bestimmt und mit übergeben werden.
Damit jetzt aber nicht so ein Trum von Befehl in Deiner Tabelle steht, habe ich noch einen Trick angewandt und habe im Bereich
Projekt (oben im Fenster) eine
Benutzervariable namens
@SonderPreis angelegt und habe den obenstehenden Code dort als Inhalt von
@SonderPreis abgelegt. Das sieht dann so aus...
Das führt dazu, dass jedesmal, wenn Du in Deiner Tabelle in einer Spalte den Wert
@SonderPreis eingibst, die Benutzervariable neu aus der Datenbank geladen und Dir der Sonderpreis des aktuellen Artikels zurückgegeben wird, oder eben 0,00€, falls kein Sonderpreis existiert oder einer existierte, aber schon wieder inaktiv ist. Das sieht dann in der Tabelle mit Deinen Artikelpositionen so aus...
Ich habe hierfür einfach eine Preislistenvorlage im "Standard" Format genommen und den Barcode rausgeschmissen, damit es von der Tabellenbreite her passt. Das musst Du natürlich an Deine Anforderungen anpassen, aber als Referenz habe ich Dir meine Beispielvorlage unten auch einmal angehängt.
Zwei Hinweise noch:
1. Es gibt in den Preislistenvorlagen zwar auch eine Variable
Vorgang.Kundengruppe, die wird aber beim Aufruf der Vorlage
nicht mit der aktuellen Kundengruppe versorgt, man muß also tatsächlich
Vorgang.Kundengruppendetails.Name nehmen.
2.
Keine der Kundengruppen-Variablen werden beim Aufruf der Vorlage zum Editieren mit Werten versorgt! - Die Abfrage auf Sonderpreise läuft im Editier-Modus also immer auf die Rückgabe von 0,00€ hinaus. Zum tatsächlichen Testen der Vorlage muß man also über
Verkauf > Preisliste in der
Wawi gehen, Kundengruppe und ggfls. Sprache auswählen, usw.
Gruß,
Ingmar