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.070
315
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.070
315
@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.319
700
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.070
315
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.319
700
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

Neues Mitglied
9. April 2024
2
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.070
315
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
164
20
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.484
806
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.484
806
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
Neu Erfahrungen Quivo "Send it Yourself" Labels + mögliche Alternativen - Versanddatenaustausch via JTL Wawi JTL-ShippingLabels - Ideen, Lob und Kritik 1
Neu Amazon Custom: Werte werden nicht in die WaWi übergeleitet Amazon-Anbindung - Fehler und Bugs 1
Neu JTL WAWI 1.9.8.0 - Manuell eingegebene Trackingnummern werden nicht mehr übertragen JTL-ShippingLabels - Fehler und Bugs 1
Neu WAWI 1.9.8.0 In Lieferadresse fehlen wichtige Daten Amazon-Anbindung - Fehler und Bugs 0
Neu Sortiernummer - WaWi Kategorien werden immer vor die eihnen Seiten sortiert Allgemeine Fragen zu JTL-Shop 0
Neu Rechnungs- und Lieferadresse werden nicht in die WAWI übertragen JTL-Shop - Fehler und Bugs 1
Neu Retouren unter Wawi 1.9 einbuchen - ich raffe es nicht. User helfen Usern - Fragen zu JTL-Wawi 0
Neu Retouren unter Wawi 1.9 einbuchen - ich raffe es nicht. Arbeitsabläufe in JTL-Wawi 1
Neu JTL-Wawi kein Datenbankzugriff nach Windows Update JTL-Wawi - Fehler und Bugs 8
Neu Hilfe! Nach dem Update auf 1.10.10.3 startet WAWI GUI nicht mehr! JTL-Wawi - Fehler und Bugs 1
Artikel Duplizieren bringt Fehlermeldung und WaWi hängt sich auf WaWi 1.10.10.3 JTL-Wawi 1.10 3
Neu Das Stable Release von JTL-Wawi 1.10 ist da! Releaseforum 0
Neu Server Hardware für eigenes Wawi / SQL Hosting Installation von JTL-Wawi 3
Neu Direkte Anbindung Wawi <-> Zahlungsanbieter möglich Schnittstellen Import / Export 3
Neu JTL Wawi / Shop / POS in der Schweiz Starten mit JTL: Projektabwicklung & Migration 0
Neu das JTL Konfigurator-Modul kann ich ab welcher Wawi Version nutzen ? User helfen Usern - Fragen zu JTL-Wawi 6
Neu Dienstleistungs-Gutschein in Deutschland -> Verkauf in die Schweiz (Steuereinstellung Wawi) Arbeitsabläufe in JTL-Wawi 2
Kategorien ohne WaWi aus Shop entfernen Einrichtung JTL-Shop5 2
JTL Wawi startet nicht mehr nach Windows Update KB5055683 JTL-Wawi 1.9 1
Nach Shopabgleich wird der Auftrag in Wawi immer mit Versandart "Abholung" gesetzt JTL-Wawi 1.9 0
Inkompatible Version JTL WAWI - Die verwendete Version ist zu alt JTL-Wawi 1.9 3
Artikel wird nach Erstellung nicht in der Wawi angezeigt, ist aber in der Datenbank vorhanden. JTL-Wawi 1.9 4
Neu Wie läuft eine Bestellung ab und wie bekomme ich die Aufträge aus dem Shop in die Wawi übertragen? Betrieb / Pflege von JTL-Shop 0
JTL-Wawi 1.9.7.1 – Wie kann man "Suchbegriffe" für Kaufland.de anlegen? JTL-Wawi 1.9 0
Amazon Bestellungen mit Versandentgelt kaufen im Seller Central automatisch in der Wawi abschließen JTL-Wawi 1.9 0
Neu Probleme beim Abgleich von JTL WAWI und JTL Shop JTL-Wawi - Fehler und Bugs 8
Neu JTL Wawi - SaaS Shopware 6 - Eigene Felder anlegen User helfen Usern - Fragen zu JTL-Wawi 0
Neu JTL Wawi Beschaffung - keine EK Preise User helfen Usern - Fragen zu JTL-Wawi 6
Email aus der WAWI 1.9.7.0 werden nicht an Kunden gesendet JTL-Wawi 1.9 3
Neu Import demo database for Wawi User helfen Usern - Fragen zu JTL-Wawi 0
Neu Übermittlung von Transparency-Seriennummern an Amazon mit JTL-Wawi Amazon-Anbindung - Ideen, Lob und Kritik 1
Auftragsimport eBay in JTL-WaWi nicht automatisiert möglich JTL-Wawi 1.9 3
PayPal Zahlungsabgleich in Wawi nicht mehr sichtbar wegen zu langem Verwendungszweck? JTL-Wawi 1.9 2
Neu WAWI <-> Schweizer Post - Webshop Connector International Schnittstellen Import / Export 0
In JTL-POS Voucher drucken über JTL Wawi Allgemeine Fragen zu JTL-Vouchers 4
adjust markup on jtl-wawi 1.9.7.0 JTL-Wawi 1.9 0
häufige Abstürze JTL Wawi 1.9.0 auf einzelnen Clients JTL-Wawi 1.9 13
JTL WaWi Rest API Server startet nicht über die Konsole Windows Server JTL-Wawi 1.9 1
Neu "JTL-Wawi funktioniert nicht mehr" JTL-Wawi - Fehler und Bugs 1
Massenumbenennung der Bilder in Wawi und Shop JTL-Wawi 1.9 2
Neu Warum wird im Shop 5 der Lieferanten-Artikelname anstatt WAWI-Artikelname angezeigt? Wie kann ich das ändern? Betrieb / Pflege von JTL-Shop 1
Neu Amazon Prime durch Verkäufer mit JTL-Wawi verknüpfen Amazon-Anbindung - Fehler und Bugs 1
WaWi Installieren auf Win10 JTL-Wawi 1.9 8
Neu Wawi 1.10.10.0 - Seit Update XRechnungen nicht mehr speicherbar JTL-Wawi - Fehler und Bugs 13
Neu Versandlabel direkt aus JTL WaWi JTL-ShippingLabels - Ideen, Lob und Kritik 1
Abgeschnittenes Fenster - JTL Wawi 1.9.5.4 JTL-Wawi 1.9 0
Neu JTL WAWI Versandarten Tracking URL Felder werden nicht agezeigt JTL-Wawi - Fehler und Bugs 1
Neu Gastkunde registriert sich bei zweiter Bestellung - und die Wawi bekommt es nicht mit! Shopware-Connector 0
Neu Bedienbarkeit von JTL-Wawi per Screenreader NVDA/JAWS JTL-Wawi - Ideen, Lob und Kritik 1
Keine Verbindung Mit JTL Shop 5 obwohl sync PW und Sync Benutzer in php identisch mit Wawi Einrichtung JTL-Shop5 5

Ähnliche Themen