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.059
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.059
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.301
695
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.059
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.301
695
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.059
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
161
19
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.436
792
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.436
792
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
Auftragsimport eBay in JTL-WaWi nicht automatisiert möglich JTL-Wawi 1.9 2
PayPal Zahlungsabgleich in Wawi nicht mehr sichtbar wegen zu langem Verwendungszweck? JTL-Wawi 1.9 0
Neu WAWI <-> Schweizer Post - Webshop Connector International Schnittstellen Import / Export 0
In JTL-POS Voucher drucken über JTL Wawi Allgemeine Fragen zu JTL-Vouchers 0
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 7
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 2
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 0
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
Neu Übernahme JTL Wawi mit Onlineshop und JTL-POS Starten mit JTL: Projektabwicklung & Migration 3
Issue angelegt [WAWI-75077] Workflow Mahnlauf ignoriert Karenztage JTL-Workflows - Fehler und Bugs 3
Verkaufte Artikel von eBay werden in wawi nicht angezeigt . JTL-Wawi 1.9 0
Neu Wawi keine Verbindung zur Datenbank mehr.... User helfen Usern - Fragen zu JTL-Wawi 6
Neu Kundendatenanonymisierung im Shop rückgängig machen, wenn in Wawi Storno rückgängig JTL-Shop - Fehler und Bugs 0
Neu Fehlermeldung bei Synchronisation aus der WaWi: "Artikel "XYZ" kann nicht hochgeladen werden, da der Shop den Steuersatz '19' nicht unterstützt." WooCommerce-Connector 1
Neu Expressbearbeitung (unter Zusatzverpackung) in der WaWi per Workflow abfangen Allgemeine Fragen zu JTL-Shop 2
Neu Einrichtung von Versandarten in JTL-Shop und Verknüpfung mit JTL-Wawi Installation / Updates von JTL-Shop 12
Neu Wie rufe ich Artikelbilder aus der Wawi im PowerBI Report Builder ab? User helfen Usern - Fragen zu JTL-Wawi 2
Neu Wawi 1.10.8.0 - nach Auftragsstorno werden alle 5 Minuten Stornomails versendet JTL-Wawi - Fehler und Bugs 2
Fehler beim Update JTL-Wawi JTL-Wawi 1.9 3
Issue angelegt [WAWI-80989] Workflow "Aufträge zusammenfassen" JTL-Workflows - Ideen, Lob und Kritik 1
Neu Wawi-API V1.9 salesorder User helfen Usern - Fragen zu JTL-Wawi 1
Neu JTL Shop und Wawi auf einem Server möglich? Installation / Updates von JTL-Shop 0
Neu FBA Lagerbestand in Wawi ansehen und Aufträge über FBA versenden User helfen Usern - Fragen zu JTL-Wawi 0
Neu Retourennummern in die WaWi importieren Schnittstellen Import / Export 2
Neu Ausliefern in WAWI mit Seriennummern JTL-Wawi - Fehler und Bugs 2
Neu BUG: kann die neu erstellte Vorlage für eine Rechnung nicht editieren, WAWI stürzt ab JTL-Wawi - Fehler und Bugs 3
Neu Barauszahkungen etc aus POS im WaWi irgendwo sichtbar? Allgemeine Fragen zu JTL-POS 2
Neu JTL WAWI amazon Express wird nicht erkannt beim Workflow Arbeitsabläufe von eazyAuction 2
Wawi auf Notebook mit 4k Display JTL-Wawi 1.9 4
Wawi 1.9 - Connector ändert MWST in Shopware 5 bei Lieferantenbestellungen JTL-Wawi 1.9 0
WaWi Shop JTL-Wawi 1.9 1
Neu JTL-Wawi 1.10.8.0 - Artikel bearbeiten = oft Wawi-Absturz JTL-Wawi - Fehler und Bugs 0
WAWI bzw. Shop-Kategorien nach Datum ein- bzw. Auszublenden JTL-Wawi 1.9 5
Neu Amazon Bestellung RA nicht freigeschaltet! Keine Übernahme in die Wawi möglich Amazon-Anbindung - Fehler und Bugs 12
Neu Merkmale aus Globalen Angebotsvorlagen werden bei erstellen über Ameise nicht übernommen Wawi 1.10 eBay-Anbindung - Fehler und Bugs 0
Neu JTL-Wawi 1.10.8.0 - Aufträge "Zusammenfassen [ist] deaktiviert" JTL-Wawi - Fehler und Bugs 18
Neu JTL Wawi REST-API - globale Schreibrechte Schnittstellen Import / Export 0
Neu Erneuter Komplettabgleich von Gambio zu Wawi Gambio-Connector 5
JTL WAWI GUI Internationalisierung JTL-Wawi 1.9 0

Ähnliche Themen