Hallo an Alle,
ich habe mir eine Vorlage gebastelt, die Stücklisten mit andruckt. Bisher nur als Angebot, aber die Vorgehensweise ist überal gleich. Ich möchte euch mal zeigen wie ich das geschafft habe:
Den Anhang 37591 betrachten
Ich habe unter der Beschreibung des Artikels zwei neue Datenzeilen eingefügt:
Den Anhang 37587 betrachten
Die erste Zeile ist für die Überschrift "Poisition besteht aus folgenden Komponenten:".
Die zweite Zeile beinhaltet die Auflistung der Komponenten.
Anzeige Bedingung:
Beide Zeilen werden nur angezeigt, wenn folgende Bedingung wahr ist:
Code:
SalesQuotationPosition.BillOfMaterialsPosition <> "None" and JTL_GetProductCustomField("StkLst nicht andrucken", SalesQuotationPosition.ProductInternalId) <> "1"
Der erste Teil sorgt dafür, dass die Zeile nur dann angezeigt werden, wenn es sich um einen Stücklistenartikel handelt.
Der zweite Teil überprüft eine Combobox mit den Namen "StkLst nicht andrucken" in den eigenen Feldern des Artikels. Ist dieses gesetzt, wird die Stückliste nicht ausgegeben.
Inhalt der Datenzeilen:
Um die Stückliste ausgeben zu können, habe ich die JTL_DirectTableQuery-Funktion benutzt. Der Trick war, für jede Zeile der Komponenten-Tabelle eine Query zu schreiben.
Zum Beispiel stelle ich so die Artikelnummer (Spalte
Components SKU) der Komponente dar:
Code:
JTL_DirectTableQuery("SELECT la.cArtNr from tArtikel a
LEFT JOIN tStueckliste l ON l.kStueckliste = a.kStueckliste
LEFT JOIN tArtikel la ON la.kArtikel = l.kArtikel
WHERE a.kArtikel = " + str$(SalesQuotationPosition.ProductInternalId,0,0)," ","¶")
Über die Abfrage bekomme ich alle Artikelnummern der Komponenten. Im gegensatz zu einer "normalen" JTL_DirectQuery-Funktion, kann man mit der JTL_DirectTableQuery-Funktion Zeilen und Spalten ausgeben.
Der zweite Parameter der Funktion sagt, wie Spalten getrennt werden sollen und der dritte wie Zeilen getrennt werden sollen.
Da die Query nur eine Spalte mit mehreren Zeilen zurück gibt, ist der zweite Paramter der Funktion nicht so relevant. Den dritten Parameter habe ich mit einem Zeilenumbruch bestückt, somit werden mir die Artikelnummern untereinander als Liste ausgegeben.
Das gleich habe ich dann für jede Spalte gemacht.
Components Name:
Code:
JTL_DirectTableQuery("select ab.cName from tArtikel a
left join tStueckliste l ON l.kStueckliste = a.kStueckliste
left join tArtikel la ON la.kArtikel = l.kArtikel
left join tArtikelBeschreibung ab ON ab.kArtikel = la.kArtikel
WHERE ab.kSprache = 1 AND a.kArtikel= " + str$(SalesQuotationPosition.ProductInternalId,0,0)," ","¶")
Components Quantity:
Code:
JTL_DirectTableQuery("select cast(l.fAnzahl as int) from tArtikel a
left join tStueckliste l ON l.kStueckliste = a.kStueckliste
WHERE a.kArtikel = " + str$(SalesQuotationPosition.ProductInternalId,0,0)," ","¶")
Components Unit:
Code:
JTL_DirectTableQuery("select ab.cName from tArtikel a
left join tStueckliste l ON l.kStueckliste = a.kStueckliste
left join tArtikel la ON la.kArtikel = l.kArtikel
left join tEinheitSprache ab ON ab.kEinheit = la.kVerkaufsEinheit
WHERE ab.kSprache = 1 AND a.kArtikel = " + str$(SalesQuotationPosition.ProductInternalId,0,0)," ","¶")