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.086
316
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.086
316
@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.339
703
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.086
316
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.339
703
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.086
316
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
168
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.583
831
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.583
831
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 POS WaWi Scanner Allgemeine Fragen zu JTL-POS 0
Neu Fehler bei Anbindung JTL Wawi und JTL Shop 5 JTL-Shop - Fehler und Bugs 1
Shopify mit Wawi verbinden JTL-Wawi 1.6 0
Neu JTL Wawi REST API User helfen Usern - Fragen zu JTL-Wawi 3
Neu Steuerberater (digital) für e-commerce - JTL Wawi User helfen Usern - Fragen zu JTL-Wawi 1
Bildschirmskalierung und die Wawi JTL-Wawi 1.10 10
Neu Der Menüpunkt JTL-Wawi App fehlt JTL-Workflows - Fehler und Bugs 0
Neu Kunden auf WAWI in Shop übertragen Allgemeine Fragen zu JTL-Shop 0
Neu [gelöst] JTL Wawi REST API -> Menüpunkt App-Registrierungen fehlt User helfen Usern - Fragen zu JTL-Wawi 2
Neu Wawi 1.9 / 1.10: Reparaturtool und LS-POS 2.4.2 verwenden! Fragen rund um LS-POS 9
Neu Wawi Statistik Rechnungsposition -> Betrag: Externe Belege sollen berücksichtigt werden User helfen Usern - Fragen zu JTL-Wawi 2
Neu JTL-Shop zum JTL-WAWi anbinden JTL-Wawi - Fehler und Bugs 9
Neu Anbindung JTL-Connecor an WooCommerce nicht möglich - JSON-Fehler in der WAWI WooCommerce-Connector 2
Neu DATEV Rechnungsdatenservice 2.0 vs. 1.10.10.3 WAWI fehler!? JTL-Wawi - Fehler und Bugs 4
JTL Wawi Rest API Abweichende Endpunkte JTL-Wawi 1.9 0
Bestellverhalten stündlich durch JTL Wawi Statistik abbilden JTL-Wawi 1.9 2
sporadische Anzeige von Kassenverkauf aus einer Filiale in der Wawi JTL-Wawi 1.9 0
Neu Anmeldung Wawi 1.9 und 1.10. Installation von JTL-Wawi 6
Neu Bilder, Bildbeschreibungen und img_alt Tags in WAWI JTL-Wawi - Ideen, Lob und Kritik 0
Bug Wawi-62710 in 1.10 behoben? (Variable für externe Auftragsnummer beim Zusammenfassen von Aufträgen) JTL-Wawi 1.10 1
Neu JTL Experte auf Freelancer Basis für Projekteinführung und Support JTL wawi und shop gesucht: Dienstleistung, Jobs und Ähnliches 3
Neu Korretur-/Umbuchung führt zu WaWi Absturz JTL-Wawi - Fehler und Bugs 0
Wie kann ich in JTL WAWI 1.10.11.0 meine ServiceDesk Lizenz deaktivieren, damit ich Greyhound nutzen kann? JTL-Wawi 1.10 3
Neu JTL wawi Fehler beim Zugriff auf die Datenbank / Datenbankverwaltung aber funktioniert Installation von JTL-Wawi 3
Neu Seriennummern in der WMS / Wawi / Doppelter Scan / Prüfung User helfen Usern 0
Neu JTL WaWi entfernt Shopify Sales Channels JTL-Wawi - Fehler und Bugs 2
unterschiedlicher Rechnungsbetrag in JTL-Wawi, PDF-Rechnung und XML-Rechnung JTL-Wawi 1.9 3
Neu JTL Wawi an Testumgebung JTL Shop anbinden User helfen Usern - Fragen zu JTL-Wawi 3
Neu Amazon Stornoanfragen in Wawi Amazon-Anbindung - Fehler und Bugs 1
Neu Wawi-Aufträge auf JTL POS Kassenbericht / Tagesabschluss ausgeben JTL-POS - Fehler und Bugs 4
Neu Zusatzfelder aus Shopware 6 an WAWI übertragen Shopware-Connector 0
Neu Erfahrene Remote-Supportkraft für JTL-Wawi & Greyhound – flexibel & zuverlässig Dienstleistung, Jobs und Ähnliches 0
Neu Probleme beim Abgleich von JTL WAWI und JTL Shop JTL-Wawi - Fehler und Bugs 2
jtl wawi länge Metadaten Zeichen einstellen JTL-Wawi 1.9 5
Neu Anpassung Artikelansicht in der JTL WAWI APP Arbeitsabläufe in JTL-Wawi 0
Neu JTL-Wawi - WooCommerce - Pfand WooCommerce-Connector 0
Neu JTL WAWI Connector zu Shopify geht in den Timeout Shopify-Connector 0
Neu JTL WaWi (SQL Server)soll nur auf PC laufen User helfen Usern - Fragen zu JTL-Wawi 9
Neu JTL Wawi und Returnless Schnittstellen Import / Export 0
Neu JTL-WaWi 1.10.10.3 - JTL-Connector (Drittanbieter) Sonderpreise nicht im product.push enthalten JTL-Wawi - Fehler und Bugs 1
Neu Falscher FBA-Bestand in Wawi Amazon-Anbindung - Fehler und Bugs 2
Neu JTL-Wawi 1.10.8.0 Error bei Bestellhistorie erneut Abrufen vom Shop JTL-Wawi - Fehler und Bugs 0
Neu Zusammenspiel Greyhound Wawi Servicedesk (Beta) 2
Gelöst [WAWI-75772] Workflow Erscheinungsdatum Feld leeren deaktiviert Überverkäufe möglich JTL-Workflows - Fehler und Bugs 2
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 16
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

Ähnliche Themen