Gelöst Suche Hilfe zum Thema Dotliquid / SQL / For-Schleife / Stückliste

MirkoWK

Sehr aktives Mitglied
14. März 2022
810
294
Hallo zusammen,

wir werden bald auf JTL umsteigen und sind noch in der Vorbereitungsphase. Bei dem folgenden Thema komme ich nicht zum Abschluss und verzweifle dabei gerade etwas.. 😅

Wir verkaufen Möbel, welche oft aus mehreren Teilen bestehen (Packstücke / Stückliste). Die Information zu den Packstücken (Anzahl, Maße, Gewicht) werden aktuell in einem String an unser Shopware gesendet, welches diese Informationen dann dem Kunden im Frontend anzeigt.

Nun versuche ich diesen String per JTL Workflow mit Dotliquid und SQL-Query zu reproduzieren:

Hier meine erweiterte Eigenschaft:
Code:
{% capture query -%}
SELECT
    tArtikelBeschreibung.cName AS 'name',
    CAST(tStueckliste.fAnzahl AS decimal(18,2)) AS 'quantity',
    CAST(aname.fHoehe AS decimal(18,2)) AS 'height',
    CAST(aname.fBreite AS decimal(18,2)) AS 'width',
    CAST(aname.fLaenge AS decimal(18,2)) AS 'length',
    CAST(aname.fArtGewicht AS decimal(18,2)) AS 'weight'
FROM
    dbo.tArtikel
    INNER JOIN dbo.tStueckliste ON tStueckliste.kVaterArtikel = tArtikel.kArtikel
    INNER JOIN dbo.tArtikel AS aname ON tStueckliste.kArtikel = aname.kArtikel
    INNER JOIN dbo.tArtikelBeschreibung ON tArtikelBeschreibung.kArtikel = tStueckliste.kArtikel
WHERE
    tArtikel.cArtNr = '{{ Vorgang.Allgemein.Stammdaten.ArtNrSku | SqlEscape }}'
{% endcapture -%}
[{% assign ausgabe = query | DirectQuery -%}
    {%- for item in ausgabe.Daten -%}{"name":"{{ item.name }}","quantity":{{ item.quantity }},"measurements":[{"type":"height","value":{{ item.height }},"unit":"cm"},{"type":"width","value":{{ item.width }},"unit":"cm"},{"type":"depth","value":{{ item.length }},"unit":"cm"},{"type":"weight","value":{{ item.weight }},"unit":"kg"}]},{% endfor -%}
]{{ ausgabe }}

2 Probleme habe noch:
  • Die Zahlen sollen ein "." als Dezimaltrennzeichen haben (alternativ müsste es shopwareseitig angepasst werden)
  • das letzte "," vor dem schließenden "]" muss weg
    • mit replace hatte ich keinen Erfolg
    • auch habe ich versucht irgendwie zu schauen, was der letzte Schleifendurchlauf ist, um dann das "," nicht zu setzen .. leider ebenso erfolglos

Das Ergebnis sieht aktuell so aus:
[{"name":"Packstücke-Name-1","quantity":2,00,"measurements":[{"type":"height","value":90,00,"unit":"cm"},{"type":"width","value":182,00,"unit":"cm"},{"type":"depth","value":45,00,"unit":"cm"},{"type":"weight","value":90,00,"unit":"kg"}]},{"name":"Packstücke-Name-2","quantity":1,00,"measurements":[{"type":"height","value":78,00,"unit":"cm"},{"type":"width","value":68,00,"unit":"cm"},{"type":"depth","value":13,00,"unit":"cm"},{"type":"weight","value":9,00,"unit":"kg"}]},{"name":"Packstücke-Name-3","quantity":1,00,"measurements":[{"type":"height","value":80,00,"unit":"cm"},{"type":"width","value":42,00,"unit":"cm"},{"type":"depth","value":30,00,"unit":"cm"},{"type":"weight","value":21,00,"unit":"kg"}]},{"name":"Packstücke-Name-4","quantity":1,00,"measurements":[{"type":"height","value":185,00,"unit":"cm"},{"type":"width","value":45,00,"unit":"cm"},{"type":"depth","value":35,00,"unit":"cm"},{"type":"weight","value":44,00,"unit":"kg"}]},]

Hat hierzu vielleicht jemand eine Idee, oder schon ähnliche Erfahrungen gemacht?

Ich hoffe, ich konnte mein Problem transportieren ^^.

Viele Grüße
Mirko
 

MirkoWK

Sehr aktives Mitglied
14. März 2022
810
294
Falls jemand ein ähnliches/ gleiches Problem hat - ich konnte beide offenen Punkte nun doch selbst lösen, indem ich die Zusammenstellung der Daten bereits in der SQL-Abfrage vornehme.
Um den letzten oder ersten Eintrag anders zu behandeln, habe ich eine Variable mit der Anzahl der Ergebnisse deklariert und vergleiche diesen Wert dann mit der Ergebniszeile:

Code:
{% capture query -%}
DECLARE @ZEILENCOUNTER INT
SET @ZEILENCOUNTER =
(
    SELECT
        COUNT(tStueckliste.fAnzahl)
    FROM
        dbo.tArtikel
        INNER JOIN dbo.tStueckliste ON tStueckliste.kVaterArtikel = tArtikel.kArtikel
        INNER JOIN dbo.tArtikel AS aname ON tStueckliste.kArtikel = aname.kArtikel
        INNER JOIN dbo.tArtikelBeschreibung ON tArtikelBeschreibung.kArtikel = tStueckliste.kArtikel
    WHERE
        tArtikel.cArtNr = '{{ Vorgang.Allgemein.Stammdaten.ArtNrSku | SqlEscape }}'
)
SELECT
    ROW_NUMBER() OVER(ORDER BY tStueckliste.fAnzahl DESC) AS 'Zeile',
    CASE
         WHEN ROW_NUMBER() OVER(ORDER BY tStueckliste.fAnzahl DESC) = 1 THEN CONCAT('{"name":"',tArtikelBeschreibung.cName, '","quantity":',CAST(tStueckliste.fAnzahl AS decimal(18,2)), ',"measurements":[{"type":"height","value":', CAST(aname.fHoehe AS decimal(18,2)), ',"unit":"cm"},{"type":"width","value":', CAST(aname.fBreite AS decimal(18,2)), ',"unit":"cm"},{"type":"depth","value":', CAST(aname.fLaenge AS decimal(18,2)), ',"unit":"cm"},{"type":"weight","value":', CAST(aname.fArtGewicht AS decimal(18,2)),'"unit":"kg"}]}' )
         WHEN @ZEILENCOUNTER = ROW_NUMBER() OVER(ORDER BY tStueckliste.fAnzahl DESC) THEN CONCAT('"name":"',tArtikelBeschreibung.cName, '","quantity":',CAST(tStueckliste.fAnzahl AS decimal(18,2)), ',"measurements":[{"type":"height","value":', CAST(aname.fHoehe AS decimal(18,2)), ',"unit":"cm"},{"type":"width","value":', CAST(aname.fBreite AS decimal(18,2)), ',"unit":"cm"},{"type":"depth","value":', CAST(aname.fLaenge AS decimal(18,2)), ',"unit":"cm"},{"type":"weight","value":', CAST(aname.fArtGewicht AS decimal(18,2)),'"unit":"kg"}]}' )
         ELSE CONCAT('"name":"',tArtikelBeschreibung.cName, '","quantity":',CAST(tStueckliste.fAnzahl AS decimal(18,2)), ',"measurements":[{"type":"height","value":', CAST(aname.fHoehe AS decimal(18,2)), ',"unit":"cm"},{"type":"width","value":', CAST(aname.fBreite AS decimal(18,2)), ',"unit":"cm"},{"type":"depth","value":', CAST(aname.fLaenge AS decimal(18,2)), ',"unit":"cm"},{"type":"weight","value":', CAST(aname.fArtGewicht AS decimal(18,2)),'"unit":"kg"}]},' )
    END AS name    
FROM
    dbo.tArtikel
    INNER JOIN dbo.tStueckliste ON tStueckliste.kVaterArtikel = tArtikel.kArtikel
    INNER JOIN dbo.tArtikel AS aname ON tStueckliste.kArtikel = aname.kArtikel
    INNER JOIN dbo.tArtikelBeschreibung ON tArtikelBeschreibung.kArtikel = tStueckliste.kArtikel
WHERE
    tArtikel.cArtNr = '{{ Vorgang.Allgemein.Stammdaten.ArtNrSku | SqlEscape }}'
{% endcapture -%}
[{% assign ausgabe = query | DirectQuery -%}
    {%- for item in ausgabe.Daten -%}{{ item.name }}{% endfor -%}
]{{ ausgabe }}

Ich hoffe, dass kann auch jemanden anderen helfen.

Viele Grüße
Mirko
 
Ähnliche Themen
Titel Forum Antworten Datum
Suche Hilfe beim Anpassen (Design) von Druck- / Email- / Exportvorlage JTL-Wawi 1.10 3
Neu Amazon VCS - JTL Wawi > 1.10 - Lexware: Suche Best Practice Amazon-Anbindung - Ideen, Lob und Kritik 1
Neu Shop 5.61 - fehlende Sprachvariablen - suche *.slf Datei zum Import Betrieb / Pflege von JTL-Shop 3
Neu SUCHE Freelancer für JTL WAWI Anbindung an WooCommerce und Einrichtung Dienstleistung, Jobs und Ähnliches 2
Neu Leere Suche – Ergebnis definieren mit Doofinder User helfen Usern - Fragen zu JTL-Wawi 0
Neu Suche Freelancer für Aufsetzen JTL B2B Shop Dienstleistung, Jobs und Ähnliches 3
Suche mittels einer Freiposition Bezeichnung JTL-Wawi 1.10 1
Hilfe WAWI Lizenzen JTL-Wawi 1.11 6
JTL Wawi 1.8.11.2 zum Download JTL-Wawi 1.8 1
Workflow zum abrufen der Upload-Datei aus dem Shop-Auftrag JTL-Wawi 1.11 0
Neu Zugang zum Fullfilment Network FFN Dienstleistung, Jobs und Ähnliches 0
Neu Workflow zum automatischen Stornieren einer Rechnung nach Versand User helfen Usern - Fragen zu JTL-Wawi 4
Neu Frage zum Thema Skonto bei Bezahlungsarten Barzahlung und QR-Code Betrieb / Pflege von JTL-Shop 0
Neu UPS Abholanmeldung zum 01. November Pflicht JTL-ShippingLabels - Fehler und Bugs 1
Neu Fragen zum KBA Finder Plugin (CiN) Plugins für JTL-Shop 1
Neu Hinweistext zum Kunden - Kundennotiz JTL-Wawi - Ideen, Lob und Kritik 7
Neu OSS rückwirkend zum 01.10.25 - Amazon VCS-Rechnungen korrigieren Arbeitsabläufe in JTL-Wawi 1
Neu JTL Wawi Auswertungen - Abweichungen zum Steuerberater User helfen Usern - Fragen zu JTL-Wawi 6
Update 1.9.8.0 auf 1.10.14.0 Frage zum Rechnungen IDU JTL-Wawi 1.10 3
Neu E-Mail von DHL Abschaltung Geschäftskunden-Versand API GKV v3 zum 31.05.2026 Arbeitsabläufe in JTL-Wawi 10

Ähnliche Themen