In Bearbeitung [WAWI-33933] Stücklisten/ Komponenten in neuer Rechnungsvorlage

ChrisGrape

Aktives Mitglied
22. Januar 2020
25
2
Guten Morgen,
vielen Dank erstmal für diesen Threat, das klappt einfach wunderbar. Das Problem ist, das ich in der Stückliste auch zwingend die HAN brauche. Ich versuche jetzt seit ein paar Stunden aus den Infos hier im Beitrag an die Anzeige des HAN Feldes in den Aufträgen zu kommen. Leider bis jetzt erfolglos.
SalesOrderPosition.SKU + Cond(JTL_DirectQuery (
"SELECT cHAN FROM tArtikel WHERE tArtikel.kArtikel = '"+ToString$(SalesOrderPosition.ProductInternalId)+"'
") == "", "", " ¶"+"HAN: " + JTL_DirectQuery (
"SELECT cHAN FROM tArtikel WHERE tArtikel.kArtikel = '"+ToString$(SalesOrderPosition.ProductInternalId)+"'
"))
Auf dieser Basis bin ich am rum testen. Klappt für den 'normalen' Artikel wunderbar.
Komme damit halt nicht bei den einzel Pos in der Stückliste weiter.

Für die Profis hier wahrscheinlich eine Sache von zwei Minuten oder ?
Wäre jemand bereit mir kurz zu helfen ? DANKE :)
 

NewBuy

Sehr aktives Mitglied
29. August 2016
2.103
319
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
Moin, danke für die Mühe :)
ich habe aber ein Problem, wenn der Text für die Bezeichnung zu lang ist passen irgendwie die Zeilen leider nicht mehr, eine Idee wie man dieses sauber lösen kann?
 

NewBuy

Sehr aktives Mitglied
29. August 2016
2.103
319
@Manuel Pietzsch
Gibt es eine Möglichkeit, die Stücklisten Anhand der Artikelnummer zu sortieren und nicht nach der internen ID, wenn letzteres nur der Fall ist habe ich ein großes Problem :(
 

wawi-dl

Sehr aktives Mitglied
29. April 2008
6.470
742
Sofern die Stücklisten-Abfrage per SQL erfolgt, dann ganz am Ende ein "ORDER BY tArtikel.cArtNr" anhängen, oder mal ChatGPT fragen :D
 
  • Gefällt mir
Reaktionen: NewBuy

NewBuy

Sehr aktives Mitglied
29. August 2016
2.103
319
Sofern die Stücklisten-Abfrage per SQL erfolgt, dann ganz am Ende ein "ORDER BY tArtikel.cArtNr" anhängen, oder mal ChatGPT fragen :D
ChtaGPT geht leider nicht, da ich kein ABO habe :(
Leider habe ich keine Ahnung wohin ich es setzten muss:
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$(SalesOrderPosition.ProductInternalId,0,0)," ","¶")
 

wawi-dl

Sehr aktives Mitglied
29. April 2008
6.470
742
ungetestet, versuche mal dat:

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$(SalesOrderPosition.ProductInternalId,0,0) + " ORDER BY la.cArtNr"," ","¶")

man kann das ORDER BY la.cArtNr noch mit ASC oder DESC erweitern und die Sortierungsreihenfolge ändern.

ORDER BY la.cArtNr DESC oder ORDER BY la.cArtNr ASC
 
  • Gefällt mir
Reaktionen: NewBuy

Koschmieder24.de

Mitglied
9. April 2024
3
0
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)," ","¶")
Hallo Tim.

Ich habe es fast genau so umgesetzt und bin sehr glücklich über deine Codes.
An einer Stelle hakt es: Die Menge der Kompenten wird mir nur am ersten Artikel (erste Zeile) angezeigt. Die anderen Zeilen bleiben an der Stelle leer. Was mache ich falsch? Ich hänge einen Screenshot an.

Außerdem würde ich gern noch die Seriennummer mit angeben wenn eine Komponente über eine verfügt. Vielleicht hast Du da auch noch einen Tipp?!

Danke!
VG Sascha
 

Anhänge

  • Screenshot 2024-04-29 100345.png
    Screenshot 2024-04-29 100345.png
    27,2 KB · Aufrufe: 17

NewBuy

Sehr aktives Mitglied
29. August 2016
2.103
319
ungetestet, versuche mal dat:



man kann das ORDER BY la.cArtNr noch mit ASC oder DESC erweitern und die Sortierungsreihenfolge ändern.

ORDER BY la.cArtNr DESC oder ORDER BY la.cArtNr ASC
Damit kann ich es machen, schöner wäre es wenn ich nach eigene Felder sortieren könnte.
Ich konnte den Chef überreden ein ABO bei ChatGPI abzuschließen und habe da mehrere Versuche gemacht aber alle sind gescheitert:
Code:
JTL_DirectTableQuery("SELECT la.cArtNr, ef.cWert FROM tArtikel a
LEFT JOIN tStueckliste l ON l.kStueckliste = a.kStueckliste
LEFT JOIN tArtikel la ON la.kArtikel = l.kArtikel
LEFT JOIN tEigeneFelder ef ON ef.kArtikel = la.kArtikel
JOIN tEigeneFeldGruppen efg ON ef.kEigeneFeldGruppe = efg.kEigeneFeldGruppe
WHERE a.kArtikel = " + str$(SalesOrderPosition.ProductInternalId,0,0) + " AND efg.cName = 'Reihenfolge'
ORDER BY ef.cWert", " ", "¶")
Ich erhalte bei allen Abfragen den Fehler "Error: Ungültiger Objectname tEigeneFelder"

Ich vermute mal, dass der Chat GPT von JTL da Probleme hat und es keine Tabelle "tEigeneFelder" gibt
 
21. September 2023
17
1
Ich habe ein Konfigurationsartikel in einem Angebot. Wir möchten nur den "Vaterartikel" im Angebot ausgeben. Die einzelnen Konfigurationsartikel sind für den Kunden bei uns irrlevant. Habe jetzt alles durchgesucht und auch hier vieles gelesen, aber nichts, was meine Frage so wirklich beantwortet. Über die Attribute hat es übrigens auch nicht funktioniert. Im L&L werden immer die Komponenten, weiterhin angezeigt.
 

DrGreen

Gut bekanntes Mitglied
24. Dezember 2017
183
23
Damit kann ich es machen, schöner wäre es wenn ich nach eigene Felder sortieren könnte.
Ich konnte den Chef überreden ein ABO bei ChatGPI abzuschließen und habe da mehrere Versuche gemacht aber alle sind gescheitert:
Code:
JTL_DirectTableQuery("SELECT la.cArtNr, ef.cWert FROM tArtikel a
LEFT JOIN tStueckliste l ON l.kStueckliste = a.kStueckliste
LEFT JOIN tArtikel la ON la.kArtikel = l.kArtikel
LEFT JOIN tEigeneFelder ef ON ef.kArtikel = la.kArtikel
JOIN tEigeneFeldGruppen efg ON ef.kEigeneFeldGruppe = efg.kEigeneFeldGruppe
WHERE a.kArtikel = " + str$(SalesOrderPosition.ProductInternalId,0,0) + " AND efg.cName = 'Reihenfolge'
ORDER BY ef.cWert", " ", "¶")
Ich erhalte bei allen Abfragen den Fehler "Error: Ungültiger Objectname tEigeneFelder"

Ich vermute mal, dass der Chat GPT von JTL da Probleme hat und es keine Tabelle "tEigeneFelder" gibt
richtig!

Es gibt keine tEigeneFelder

das läuft über

FROM
Verkauf.tAuftragAttribut AS aa

LEFT JOIN
Verkauf.tAuftragAttributSprache AS atts ON atts.kAuftragAttribut = aa.kAuftragAttribut
 

logics

Aktives Mitglied
16. Juli 2021
29
3
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)," ","¶")
Das war mir eine riesen Hilfe, ich habe es für Preisliste genutzt, welche ich auch als Bestandsliste nutze. Könnt ihr mir noch sagen, was ich für folgendes nutzen muss:
- Bestand
- Bestand Verfügbar
- Preis

Danke euch!
 

John

Sehr aktives Mitglied
3. März 2012
3.868
929
Berlin
Anzeigen des Namens der Stücklistenkomponenten

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)," ","¶")

Ich denke, dieser Code macht Probleme, wenn man in der Wawi mehrere Shops/Plattformen angebunden hat, weil nur auf kSprache eingeschränkt wird.
Besser hier auch auf kShop=0 AND kPlattform = 1 gehen, damit man sicher nur den Duetschen Ausgabweg global bekommt.

Code:
[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 kShop = 0 AND kPlattform = 1 AND a.kArtikel= " + str$(SalesQuotationPosition.ProductInternalId,0,0)," ","¶")
 

logics

Aktives Mitglied
16. Juli 2021
29
3
Hallo an Alle,

ich habe meine Lösung für die 1.6 angepasst! 🥳 Es gehen nun auch die individuellen Stücklisten.

Beispiel
Hier habe ich eine Freiposition zu dem ersten Artikel hinzugefügt, sowie Kommentare zu den einzelnen Komponenten. Bei der Position 8 habe ich die Menge verändert, 100 Stk sind in dem Stücklistenartikel hinterlegt.
Ja, ich habe Überschriften und Textpositionen. ;)
Den Anhang 84343 betrachten

How-To
Ich gehe das ganze mal am Beispiel des Angebots durch:

Ich habe eine "PositionTable" und ich arbeite wieder mit Zeilendefinitionen und der Funktion "JTL_DirectTableQuery".
Den Anhang 84340 betrachten

Überschrifts-Zeile
In der Zeile "Components header" wird die Überschrift für die Komponentenliste angezeigt.
Die Anzeigebedingung der Zeile:
Code:
SalesQuotationPosition.BillOfMaterialsPosition <> "None" and JTL_GetProductCustomField("StkLst nicht andrucken", SalesQuotationPosition.ProductInternalId) <> "1"
Das heißt, die Zeile wird nur angezeigt, wenn es sich um eine Stückliste handelt und das Frei-Feld "StkLst nicht andrucken" nicht gesetzt ist.

In meinem Fall steht im header nur "Position beinhaltet folgende Komponenten:" und "Hinweis"

Inhalts-Zeile
In der Zeile "Components description" werden die Komponenten der Stückliste ausgegeben.
Die Anzeigebedingung ist die Selbe wie bei "Components header".

Der Inhalt der Spalten wird nun etwas anders ermittelt. Die nötigen Informationen sind in der Tabelle "Verkauf.tAuftragPosition". Dort stehen die individuell vergebenen Mengen, Preise, Artikelnamen, Komponenten, etc. des Angebots.
Diese Tabelle wird gefiltert nach StücklistenId, ArtikelId und AuftragId. Dabei ist wichtig, dass die ArtikelId nicht die gleiche ist, wie die ArtikelId des Stücklistenartikels, da dieser sonst mit in den Komponenten angezeigt wird. Die ArtikelId kann auch leer sein, damit Freipositionen mit angezeigt werden.

Sortiert wird alles nach der Sortiernummer, sprich Positions-Nummer.

Spalte "Pos", Inhalt:
Code:
JTL_DirectTableQuery("select nSort from Verkauf.tAuftragPosition
WHERE kAuftragStueckliste = " + str$(SalesQuotationPosition.BillOfMaterialsPositionParentId,0,0)+
" AND (kArtikel != "+str$(SalesQuotationPosition.ProductInternalId,0,0)+ "OR kArtikel is null)"+
" AND kAuftrag = " + str$(Report.InternalId,0,0)+
" ORDER BY nSort"," ","¶")

Spalte "SKU", Inhalt:
Code:
JTL_DirectTableQuery("SELECT ISNULL(cArtNr, '-FREIPOSITION-') from Verkauf.tAuftragPosition
WHERE kAuftragStueckliste = " + str$(SalesQuotationPosition.BillOfMaterialsPositionParentId,0,0)+
" AND (kArtikel != "+str$(SalesQuotationPosition.ProductInternalId,0,0)+ "OR kArtikel is null)"+
" AND kAuftrag = " + str$(Report.InternalId,0,0)+
" ORDER BY nSort"," ","¶")
Wenn die Artikelnummer leer ist, dann schreibe "-FREIPOSITION-"

Spalte "Name", Inhalt:
Code:
JTL_DirectTableQuery("select cName from Verkauf.tAuftragPosition
WHERE kAuftragStueckliste = " + str$(SalesQuotationPosition.BillOfMaterialsPositionParentId,0,0)+
" AND (kArtikel != "+str$(SalesQuotationPosition.ProductInternalId,0,0)+ "OR kArtikel is null)"+
" AND kAuftrag = " + str$(Report.InternalId,0,0)+
" ORDER BY nSort"," ","¶")

Spalte "Quantity", Inhalt:
Code:
JTL_DirectTableQuery("SELECT FORMAT(fAnzahl, 'F', '"+Report.CultureInfo+"') from Verkauf.tAuftragPosition
WHERE kAuftragStueckliste = " + str$(SalesQuotationPosition.BillOfMaterialsPositionParentId,0,0)+
" AND (kArtikel != "+str$(SalesQuotationPosition.ProductInternalId,0,0)+ "OR kArtikel is null)"+
" AND kAuftrag = " + str$(Report.InternalId,0,0)+
" ORDER BY nSort"," ","¶")
Hier wird die Anzahl der Komponente als Kommazahl für die Berichts-Sprache formatiert.

Spalte "Unit", Inhalt:
Code:
JTL_DirectTableQuery("select cEinheit from Verkauf.tAuftragPosition
WHERE kAuftragStueckliste = " + str$(SalesQuotationPosition.BillOfMaterialsPositionParentId,0,0)+
" AND (kArtikel != "+str$(SalesQuotationPosition.ProductInternalId,0,0)+ "OR kArtikel is null)"+
" AND kAuftrag = " + str$(Report.InternalId,0,0)+
" ORDER BY nSort"," ","¶")

Spalte "Hint", Inhalt:
Code:
JTL_DirectTableQuery("SELECT cHinweis from Verkauf.tAuftragPosition
WHERE kAuftragStueckliste = " + str$(SalesQuotationPosition.BillOfMaterialsPositionParentId,0,0)+
" AND (kArtikel != "+str$(SalesQuotationPosition.ProductInternalId,0,0)+ "OR kArtikel is null)"+
" AND kAuftrag = " + str$(Report.InternalId,0,0)+
" ORDER BY nSort"," ","¶")

Wenn ihr wissen wollt, was ihr alles ausgeben könnt, dann würde ich hier schauen und nach dem Tabellennamen schauen: https://wawi-db.jtl-software.de/tables/1.6.38.2

Analog funktioniert das ganze mit Aufträgen und Rechnungen. Bei Rechnungen ist aber die Tabelle "Rechnung.tRechnungPosition" zu nehmen.

Edit:
Ich habe auf den Lieferscheinen auch die Komponenten mit Seriennummern ausgegeben, wenn Interesse da ist, kann ich auch erklären, wie ich es da gelöst habe.
Hey,
kannst du mir sagen, wie ich die Menge für die Preisliste ausgeben kann? Die Abfrage von dir ist Top für alles andere, aber für die Preisliste nicht nutzbar, weil es die Report.Cultureinfo nicht gibt. Und den Preis der fehlt mir auch :)

Danke dir.
LG
 

John

Sehr aktives Mitglied
3. März 2012
3.868
929
Berlin
kannst du mir sagen, wie ich die Menge für die Preisliste ausgeben kann? Die Abfrage von dir ist Top für alles andere, aber für die Preisliste nicht nutzbar, weil es die Report.Cultureinfo nicht gibt. Und den Preis der fehlt mir auch :)

Der Teil mit Report.CultureInfo formatiert nur die Kommzahl schön und abhängig von der Landessprache.
Du kannst das auch fix auf Deutschland stellen mit

Code:
FORMAT(fAnzahl, 'F', 'de-de')

ABER

Ich denke, nicht, dass die SQLs sich 1:1 in eine Preisliste übernehmen lassen, weil Sie auf kAuftrag = " + str$(Report.InternalId,0,0) referenzieren und das gilt so in einer Preisliste nicht.
 
  • Gefällt mir
Reaktionen: logics

logics

Aktives Mitglied
16. Juli 2021
29
3
Der Teil mit Report.CultureInfo formatiert nur die Kommzahl schön und abhängig von der Landessprache.
Du kannst das auch fix auf Deutschland stellen mit

Code:
FORMAT(fAnzahl, 'F', 'de-de')

ABER

Ich denke, nicht, dass die SQLs sich 1:1 in eine Preisliste übernehmen lassen, weil Sie auf kAuftrag = " + str$(Report.InternalId,0,0) referenzieren und das gilt so in einer Preisliste nicht.
Top, das hatte geholfen *.* Jetzt muss ich nur noch basteln für den Preis.
 

hifidesign

Mitglied
17. Mai 2023
3
1
Hallo an Alle,

ich habe meine Lösung für die 1.6 angepasst! 🥳 Es gehen nun auch die individuellen Stücklisten.

Beispiel
Hier habe ich eine Freiposition zu dem ersten Artikel hinzugefügt, sowie Kommentare zu den einzelnen Komponenten. Bei der Position 8 habe ich die Menge verändert, 100 Stk sind in dem Stücklistenartikel hinterlegt.
Ja, ich habe Überschriften und Textpositionen. ;)
Den Anhang 84343 betrachten

How-To
Ich gehe das ganze mal am Beispiel des Angebots durch:

Ich habe eine "PositionTable" und ich arbeite wieder mit Zeilendefinitionen und der Funktion "JTL_DirectTableQuery".
Den Anhang 84340 betrachten

Überschrifts-Zeile
In der Zeile "Components header" wird die Überschrift für die Komponentenliste angezeigt.
Die Anzeigebedingung der Zeile:
Code:
SalesQuotationPosition.BillOfMaterialsPosition <> "None" and JTL_GetProductCustomField("StkLst nicht andrucken", SalesQuotationPosition.ProductInternalId) <> "1"
Das heißt, die Zeile wird nur angezeigt, wenn es sich um eine Stückliste handelt und das Frei-Feld "StkLst nicht andrucken" nicht gesetzt ist.

In meinem Fall steht im header nur "Position beinhaltet folgende Komponenten:" und "Hinweis"

Inhalts-Zeile
In der Zeile "Components description" werden die Komponenten der Stückliste ausgegeben.
Die Anzeigebedingung ist die Selbe wie bei "Components header".

Der Inhalt der Spalten wird nun etwas anders ermittelt. Die nötigen Informationen sind in der Tabelle "Verkauf.tAuftragPosition". Dort stehen die individuell vergebenen Mengen, Preise, Artikelnamen, Komponenten, etc. des Angebots.
Diese Tabelle wird gefiltert nach StücklistenId, ArtikelId und AuftragId. Dabei ist wichtig, dass die ArtikelId nicht die gleiche ist, wie die ArtikelId des Stücklistenartikels, da dieser sonst mit in den Komponenten angezeigt wird. Die ArtikelId kann auch leer sein, damit Freipositionen mit angezeigt werden.

Sortiert wird alles nach der Sortiernummer, sprich Positions-Nummer.

Spalte "Pos", Inhalt:
Code:
JTL_DirectTableQuery("select nSort from Verkauf.tAuftragPosition
WHERE kAuftragStueckliste = " + str$(SalesQuotationPosition.BillOfMaterialsPositionParentId,0,0)+
" AND (kArtikel != "+str$(SalesQuotationPosition.ProductInternalId,0,0)+ "OR kArtikel is null)"+
" AND kAuftrag = " + str$(Report.InternalId,0,0)+
" ORDER BY nSort"," ","¶")

Spalte "SKU", Inhalt:
Code:
JTL_DirectTableQuery("SELECT ISNULL(cArtNr, '-FREIPOSITION-') from Verkauf.tAuftragPosition
WHERE kAuftragStueckliste = " + str$(SalesQuotationPosition.BillOfMaterialsPositionParentId,0,0)+
" AND (kArtikel != "+str$(SalesQuotationPosition.ProductInternalId,0,0)+ "OR kArtikel is null)"+
" AND kAuftrag = " + str$(Report.InternalId,0,0)+
" ORDER BY nSort"," ","¶")
Wenn die Artikelnummer leer ist, dann schreibe "-FREIPOSITION-"

Spalte "Name", Inhalt:
Code:
JTL_DirectTableQuery("select cName from Verkauf.tAuftragPosition
WHERE kAuftragStueckliste = " + str$(SalesQuotationPosition.BillOfMaterialsPositionParentId,0,0)+
" AND (kArtikel != "+str$(SalesQuotationPosition.ProductInternalId,0,0)+ "OR kArtikel is null)"+
" AND kAuftrag = " + str$(Report.InternalId,0,0)+
" ORDER BY nSort"," ","¶")

Spalte "Quantity", Inhalt:
Code:
JTL_DirectTableQuery("SELECT FORMAT(fAnzahl, 'F', '"+Report.CultureInfo+"') from Verkauf.tAuftragPosition
WHERE kAuftragStueckliste = " + str$(SalesQuotationPosition.BillOfMaterialsPositionParentId,0,0)+
" AND (kArtikel != "+str$(SalesQuotationPosition.ProductInternalId,0,0)+ "OR kArtikel is null)"+
" AND kAuftrag = " + str$(Report.InternalId,0,0)+
" ORDER BY nSort"," ","¶")
Hier wird die Anzahl der Komponente als Kommazahl für die Berichts-Sprache formatiert.

Spalte "Unit", Inhalt:
Code:
JTL_DirectTableQuery("select cEinheit from Verkauf.tAuftragPosition
WHERE kAuftragStueckliste = " + str$(SalesQuotationPosition.BillOfMaterialsPositionParentId,0,0)+
" AND (kArtikel != "+str$(SalesQuotationPosition.ProductInternalId,0,0)+ "OR kArtikel is null)"+
" AND kAuftrag = " + str$(Report.InternalId,0,0)+
" ORDER BY nSort"," ","¶")

Spalte "Hint", Inhalt:
Code:
JTL_DirectTableQuery("SELECT cHinweis from Verkauf.tAuftragPosition
WHERE kAuftragStueckliste = " + str$(SalesQuotationPosition.BillOfMaterialsPositionParentId,0,0)+
" AND (kArtikel != "+str$(SalesQuotationPosition.ProductInternalId,0,0)+ "OR kArtikel is null)"+
" AND kAuftrag = " + str$(Report.InternalId,0,0)+
" ORDER BY nSort"," ","¶")

Wenn ihr wissen wollt, was ihr alles ausgeben könnt, dann würde ich hier schauen und nach dem Tabellennamen schauen: https://wawi-db.jtl-software.de/tables/1.6.38.2

Analog funktioniert das ganze mit Aufträgen und Rechnungen. Bei Rechnungen ist aber die Tabelle "Rechnung.tRechnungPosition" zu nehmen.

Edit:
Ich habe auf den Lieferscheinen auch die Komponenten mit Seriennummern ausgegeben, wenn Interesse da ist, kann ich auch erklären, wie ich es da gelöst habe.
Hallo Tim,

vielen Dank für die hervorragende Lösung, diese Anpassung auf 1.6 funktioniert bei mir aber leider nicht, da bleiben die Felder leer. Unsere WAWI Version ist 1.9.6.5.

Viel mehr würde mich aber dringend interessieren, wie die Seriennummern mit einbezogen werden können. Wir brauchen das unbedingt auch auf unseren Rechnungen.

Vielen Dank, Alex
 
Zuletzt bearbeitet:
Ähnliche Themen
Titel Forum Antworten Datum
Wawi in englischer Übersetzung JTL-Wawi 1.9 0
Neu Gutscheine werden nicht an die WaWi übermittelt Modified eCommerce-Connector 0
Keine Anmeldung mehr möglich in JTL Wawi seit Update? JTL-Wawi 1.11 4
JTL-Wawi stürzt beim Speichern des Shopify-Connectors jedes Mal ab JTL-Wawi 1.11 0
Hilfe WAWI Lizenzen JTL-Wawi 1.11 5
Neu Sql Express 2022 - wawi sagt beim Start es ist ein Update bereit - gelöst Installation von JTL-Wawi 3
Globale Textbausteine – Inhalte werden nicht gespeichert (Wawi 1.11.1) JTL-Wawi 1.11 5
Neu Wawi 1.10 weigert sich zu starten und 1.11 kann man nicht downloaden JTL-Wawi - Fehler und Bugs 4
eBay-Merkmal wird nach Ameise-Import nicht übernommen (Wawi 1.10.11.0) JTL-Wawi 1.10 1
Neu WaWi 1.11 Dashboard-Webbrowser (WebView2) Absturz JTL-Wawi - Fehler und Bugs 0
JTL Lob - gebuchte Wawi Edition in Fenster-Kopfleiste angezeigt JTL-Wawi 1.11 4
Issue angelegt [WAWI-71085] JTL Dashboard fehlerhafte Anzeige JTL-Wawi - Fehler und Bugs 3
1.11 mit 2 Mandanten - Dashboard bei Advanced Wawi zerschossen - JTL Start funktioniert JTL-Wawi 1.11 1
1.11 installiert - Wawi Sharp Version jetzt Standard - Startparameter funktionieren nicht mehr - gelöst JTL-Wawi 1.11 2
Was ist mit der Wawi 1.11.0? JTL-Wawi 1.11 20
Neu PC-Umzug mit Datenbanksicherung von JTL-Wawi 1.5.48 User helfen Usern - Fragen zu JTL-Wawi 5
Neu JTL-Wawi 1.11.1 Stable Release Releaseforum 1
Neu Zugferd und Wawi Endbeträge um 0,1 cent unterschiedlich JTL-Wawi - Fehler und Bugs 0
Neu JTL Wawi 1.10.14.3 / Unbehandelte Ausnahme im WaWi-Error-Log / Die Sammlung wurde geändert. Der Enumerationsvorgang kann möglicherweise .... JTL-Wawi - Fehler und Bugs 1
Neu JTL Shop Update von 5.3.3 auf 5.6 mit der Community Free Edition - WaWi funktion weiter gegeben? User helfen Usern - Fragen zu JTL-Wawi 1
Probleme mit dem Einstellen von Artikeln auf Amazon über JTL Wawi mit dem Lister 2.0 Amazon-Lister - Fehler und Bugs 6
Otto Variantenanlage ohne Vaterartikel in der Wawi Otto.de - Anbindung (SCX) 0
Neu Update von JTL-Wawi von 1.6 auf 1.9 Installation von JTL-Wawi 12
Neu Verbindung zur Wawi manchmal langsam Allgemeine Fragen zu JTL-POS 0
Neu Amazon VCS Lite Rechnungen als PDF speichern in Wawi 1.10 User helfen Usern - Fragen zu JTL-Wawi 1
Neu Auftrag über WaWi versenden Arbeitsabläufe in JTL-Wawi 3
Neu Gewinnbasierte Provision & gezielte Kunden-Zuordnung im JTL Shop / Wawi User helfen Usern 0
Neu Netzwerkprobleme JTL Wawi sucht Datenbank beim Start unter falscher IP User helfen Usern 4
Neu Wie kommen die Versandarten aus JTL-Wawi in den JTL-Shop? Betrieb / Pflege von JTL-Shop 7
Produkt-API v4 Support bei OTTO läuft aus (10.12.2025) – Zukunft mit JTL Wawi unklar Otto.de - Anbindung (SCX) 23
Neu JTL WaWi 1.10 - Packtisch+ - Automatische abmeldung JTL-WMS / JTL-Packtisch+ - Fehler und Bugs 5
Neu Kein Abgleich zwischen WaWi und Shop seit Update möglich Onlineshop-Anbindung 5
Wawi macht keinen Abgleich mehr nach Shop Update JTL-Wawi 1.10 0
Neu (Bank-)Rückzahlungen aus der Wawi heraus nicht mehr möglich JTL-Wawi - Fehler und Bugs 2
Neu KI-WaWi-Workflows: Eigene KI-Endpunkte direkt aus JTL-Workflows ansprechen – ohne Plugin, flexibel und schnell Dienstleistung, Jobs und Ähnliches 3
Neu Verkäufe aus LS-Pos werden nicht mehr in der Wawi angezeigt Fragen rund um LS-POS 2
Neu WaWi verweigert den Abgleich eines Artikels in einer Sprache User helfen Usern - Fragen zu JTL-Wawi 8
Neu Shopify Kategorie /(Produkt Taxonomie) und kategoriespezifische Attribute in JTL Wawi pflegen Shopify-Connector 0
Neu JTL Wawi Auswertungen - Abweichungen zum Steuerberater User helfen Usern - Fragen zu JTL-Wawi 6
Neu Verschachtelte Stücklisten in JTL-Wawi User helfen Usern - Fragen zu JTL-Wawi 2
Neu Zahlungszuordnung Wawi Auftrag mit Barzahlung im Laden User helfen Usern - Fragen zu JTL-Wawi 0
Amazon Retouren automatisch in Wawi anlegen JTL-Wawi 1.10 3
Neu Plugin-Idee: Überkäufe Lieferantenbestände & Lieferzeiten (API/CSV/XML) in Shop & Wawi Plugins für JTL-Shop 2
Anhänge in JTL-Wawi bei Rechnung JTL-Wawi 1.10 0
Neu Magento2 mit Synesty in JTL-Wawi verbinden Allgemeines zu den JTL-Connectoren 9
Neu XML-Import in JTL-Wawi – Kundenfelder werden nicht übernommen Schnittstellen Import / Export 1
Neu JTL Wawi und Etikettendrucker Brother QL-820NWBc Installation von JTL-Wawi 2
Issue angelegt [WAWI-44314] Workflow automatisch 2 Pakete erstellen bei bestimmen Produkten? JTL-Workflows - Ideen, Lob und Kritik 2
Kundenstammdaten: Wie erkenne ich in der Wawi, ob ein Shop-Kunde ein Kundenkonto angelegt hat? JTL-Wawi 1.9 2
Neu Standardlager WAWI in WMS Lager umbuchen Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 5

Ähnliche Themen