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

MirkoWK

Sehr aktives Mitglied
14. März 2022
607
208
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
607
208
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
Neu Suche nur in Kategorien anstatt Artikel Allgemeine Fragen zu JTL-Shop 0
Neu Normale Suche - Filterergebnisse unvollständig JTL-Shop - Fehler und Bugs 2
Neu Suche Download JTL WAWI 1.3.20.0 User helfen Usern - Fragen zu JTL-Wawi 8
Neu Suche gibt nicht mehr annähernd passende Ergebnisse JTL-Shop - Fehler und Bugs 4
Neu Suche jemanden BmeCat´s in Wawi Dienstleistung, Jobs und Ähnliches 2
Beantwortet #GEFUNDEN# Suche jemand , der uns eine (automatische) SQL Abfrage erstellen kann mit Mail Ausgabe Dienstleistung, Jobs und Ähnliches 2
Neu Suche Seite 2 gibt falsche URL aus JTL-Shop - Fehler und Bugs 4
Merkmalfilter im Shop aktivieren und einstellen, suche optimieren. Einrichtung JTL-Shop5 3
Neu Suche nach Dienstleister Dienstleistung, Jobs und Ähnliches 4
Neu Menü, Logo und Suche beim Scrollen anzeigen / Mobilansicht Templates für JTL-Shop 0
Fehlermeldung in der Suche Einrichtung JTL-Shop5 0
Neu Kurzbeschreibung als Tooltip in der Galerieansicht der Kategorie/Suche Betrieb / Pflege von JTL-Shop 1
Neu SUCHE JTL Service Partner - zuverlässig! User helfen Usern - Fragen zu JTL-Wawi 1
Neu HOME (Engl. Startseite) nicht editierbar (forbidden) - Bitte um Hilfe Gelöste Themen in diesem Bereich 7
Neu JTL 1.8.12.0 - Artikelattribut für Shop importieren - Format CSV-Datei / Hilfe bei Import von individuellen Attributen für JTL-Shop (googlekat) JTL-Ameise - Ideen, Lob und Kritik 1
Neu Hilfe - Performanceproblem mit Shop durch Worker JTL-Shop - Fehler und Bugs 28
Neu HILFE... >60 GB im tmp Allgemeine Fragen zu JTL-Shop 8
Neu Hilfe im Homeoffice für Amazon, ebay Kaufland etc. Dienstleistung, Jobs und Ähnliches 0
Frage zu Feature | WAWI-63484 - Übertragung von "Belegbildern" - Rechnungsdatenservice 2.0 - DATEV Unternehmen Online - Belege - Bitte um Hilfe JTL-Wawi 1.8 0
Neu MS SQL 14 Express wird langsam voll. Welche Lienzen benötigen wir? Bitte um Hilfe Eigene Übersichten in der JTL-Wawi 27
Neu Hilfe bei FBA - Artikel zusammenlegen User helfen Usern 1
Neu Hilfe zum Thema Versandart ändern User helfen Usern - Fragen zu JTL-Wawi 1
Neu Bitte um Hilfe: Seiten Variationskombis im Shop zeigen http:500 Allgemeine Fragen zu JTL-Shop 4
Neu Bitte um Hilfe beim Export/Import von Attributen JTL Ameise - Eigene Exporte 0
Hilfe - 1.8.10.0 JTL-WMS Waage Typ ADE EHR/EHQ geht nicht mehr JTL-Wawi 1.8 22
Komplexe SQL Abfrage zu gelieferten Artikeln mit eigenen Feldern - Hilfe gesucht JTL-Wawi 1.8 1
Neu Bestseller-Templates AVIA, CLEARIX, FIRE - schnell, universell, 100% kompatibel zum JTL-Shop Templates für JTL-Shop 1
Neu ASIN einem Produkt zuordnen zum aufschalten bei amazon JTL-Wawi 1.6 6
Neu Template anpassen - parallel zum bestehenden, ohne Aktivierung? Templates für JTL-Shop 4
Neu GLS Bank stellt FinTS/HBCI Serveradressen zum 13.03.2024 um (+ GenoBanken) User helfen Usern 2
Neu Stripe - Einstellung Sofortüberweisung zum 15.5.2024 Business Jungle 0
Neu Verbindungsproblem Wawi (1.8.12.0) zum JTL-Shop (5.2.4) über localhost User helfen Usern - Fragen zu JTL-Wawi 0
In Diskussion JTL-POS: Erkenntnisse zum Betrieb auf Windows (virtuell oder hardware) JTL-POS - Fragen zu Hardware 4
Neu Richtige Hook zum Berechnen der Lieferzeit in Artikel.php Technische Fragen zu Plugins und Templates 1
Neu Nach Installation eines neuen SQL Servers klappt die Verbindung vom Benutzer-PC zum Server-PC nicht mehr. Installation von JTL-Wawi 5
Kein Abgleich zum Shop, ich komme nicht in Plattformen/Verkaufskanäle rein JTL-Wawi 1.8 3
Neu Ameise - Logikfrage zum Import von Artikeln mit und ohne Varkombis gemäß Guide User helfen Usern - Fragen zu JTL-Wawi 0
Neu Wunschzettel Name verleitet zum Missbrauch JTL-Shop - Fehler und Bugs 0
Wunschzettel Name verleitet zum Missbrauch Einrichtung JTL-Shop5 5

Ähnliche Themen