In Diskussion Suche Hilfe zum Thema Dotliquid / SQL / For-Schleife / Stückliste

MirkoWK

Mitglied
14. März 2022
32
4
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

Mitglied
14. März 2022
32
4
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 Mindestzeichenanzahl Allgemeine Fragen zu JTL-Shop 0
Neu Wawi 1.6.38.2: Erweiterte Suche in der Artikelverwaltung - "Artikel" funktioniert nicht mehr JTL-Wawi - Fehler und Bugs 1
Neu Artikelverwaltung: Erweiterte Suche - filtern nach Vaterartikel mit verkaufter Menge X der letzten Tage X User helfen Usern - Fragen zu JTL-Wawi 0
Neu Artikelnummer suche in Eigene ID oder UPC? Arbeitsabläufe in JTL-Wawi 0
Neu Artikel / erweiterte Suche nach eigenen Artikelattributen User helfen Usern - Fragen zu JTL-Wawi 0
Neu Suche Empfehlung für neuen Packtisch Drucker User helfen Usern 3
Neu Shopeigene Suche: Suchanfragen sichten User helfen Usern 1
Neu Suche SQL Spezialist der Mwst Sätze u. Beträge in der dbo.tbestellpos von Amazon VCS Bestellungen ändern kann Dienstleistung, Jobs und Ähnliches 3
Neu Suche: Zebra TC20 Betriebssystem Update ( BSP 01.48.12 / LifeGuard Update 02) User helfen Usern 11
Neu Suche SDL für Wawi und Shop 5 Dienstleistung, Jobs und Ähnliches 2
Neu Suche Tool zum bearbeiten der Amazon Artikelbeschreibungen/-attribute Smalltalk 0
Neu Suche ... "eigenartig" JTL-Shop - Fehler und Bugs 1
Neu 📢 Plugin "Live-Suche Plugin für JTL-Shop 5 (Ajax-Suche)" von CIN GmbH Plugins für JTL-Shop 1
Neu Bestimmte Artikel in der Suche zuerst anzeigen Allgemeine Fragen zu JTL-Shop 2
Neu JTL Search - Suche nach Artikelnummern von Variationen JTL-Search 0
HILFE PICKLISTE WIRD GEDRUCKT BEIM AUSLIEFERN JTL-Wawi 1.6 1
Dringend Hilfe Update JTL-Wawi 1.6 2
Hilfe! Habe Probleme, "Rechnungskorrekturen" FINAL zu verstehen - traue mich nicht mehr, irgendwas zu machen! JTL-Wawi 1.6 22
Neu Benötige Hilfe für die Optimierung Shop / WaWi Dienstleistung, Jobs und Ähnliches 0
Neu US Zoll lehnt Import meiner (Waren)Sendung ab - bitte um Hilfe User helfen Usern - Fragen zu JTL-Wawi 3
Neu PROBLEM HILFE Angebot enthält zu viele Varianten über Jtl und verbindet sich nicht mehr mit ebay ! error code 21919314 User helfen Usern - Fragen zu JTL-Wawi 4
Neu Hilfe bei korrekter Anlage von Variationen und Stücklisten User helfen Usern - Fragen zu JTL-Wawi 7
Neu Amazon Settlement Hilfe User helfen Usern 0
Neu APG ECD410 Kassenladen zum Sonderpreis wegen A-Kunde Smalltalk 0
In Bearbeitung Verbindung zum EC-Terminal geht verloren JTL-POS - Fehler und Bugs 3
Neu Große Bilder (über 2560x2560px) führen zum wiederholten Upload in WooCommerce WooCommerce-Connector 0
Neu Anpassungen an Google Shopping Feed zum 13.06. Plugins für JTL-Shop 4
Neu JTL Shop 5.1.2 - Email über "Frage zum Artikel" wird nicht versendet Allgemeine Fragen zu JTL-Shop 1
In Diskussion Verbindung zum Display JTL-POS - Fehler und Bugs 3
Gelöst Workflow zum Erstellens eines Ordner am PC + abspeichern von Daten JTL-Workflows - Ideen, Lob und Kritik 5
Neu Auswahlassistenten mit Merkmalen nur zum Produkt Allgemeine Fragen zu JTL-Shop 0
Neu Feedback zum Servicedesk Umfragen rund um JTL 1
Eigene Seite Informationen zum Versand Upgrade JTL-Shop4 auf JTL-Shop5 1
Neu Kind aus Amazon Listing zum Einzelartikel machen? User helfen Usern - Fragen zu JTL-Wawi 4
Inbetriebnahme vom JTL5 Shop / Reibungsloser Übergang vom bestehenden 4er zum neuen 5er Shop mit WaWi Upgrade JTL-Shop4 auf JTL-Shop5 9
Neu Keine Verbindung zum SQL Server User helfen Usern - Fragen zu JTL-Wawi 4
Neu B2B-Verkäufe, Zahlung durch Rechnungen zum Quartalsende User helfen Usern - Fragen zu JTL-Wawi 1
Neu Interne Infos zum Artikel anlegen, z.B. zur Kalkulation User helfen Usern - Fragen zu JTL-Wawi 1
In Bearbeitung JTL-POS v. 1.0.6.2 Bug: Artikel wird nach Eingabe der EAN 2x zum Bon hinzugefügt JTL-POS - Fehler und Bugs 5
Neu Neukundenübertragung von der WaWi zum Shop mit id: 0 Allgemeines zu den JTL-Connectoren 1

Ähnliche Themen