Auftrag: Eigene Felder in DotLiquid Vorlage verwenden [Wawi 1.9.4.5] [SQL]

Powalowski

Sehr aktives Mitglied
20. Januar 2019
177
195
WAWI 1.9: Anders als im Workflow, kann man in der Auftragsvorlage nicht direkt auf die Eigenen Felder zugreifen.
Eine kleine SQL Abfrage wird benötigt:

Code:
{% comment  -%}Eigenes Feld Holen{% endcomment -%}
{% assign Feldname = "Auftragsart" -%}
{% capture query -%}\
SELECT TOP(1) [cValue] FROM [eazybusiness].[DbeS].[vAuftragUpdateAttribute]
WHERE [kAuftrag] = '{{ Report.InternalId }}' AND [cKey] = '{{ Feldname }}';
{% endcapture -%}
{% assign Auftragsart = query | DirectQueryScalar -%}
\
Ergebnis:
{{Auftragsart}}

Ich hoffe ich kann euch damit helfen. Es wäre cool, wenn es irgendwo eine Sammlung solcher Codeschnippsel geben könnte. Oder bin ich mal wieder nicht tief genug in der Community drin? ;)
 
Zuletzt bearbeitet:
  • Ich liebe es
Reaktionen: ergowebshop

ergowebshop

Sehr aktives Mitglied
14. Januar 2022
179
48
Oh da bist du nicht der Einzige, da sitzen wir alle im selben Boot, wo Datenbankabfragen benötigt werden um verschiedene Unzulänglichkeiten zu umgehen.

Ich wäre auch nicht auf die Idee gekommen die Eigenen Felder ausgerechnet in DbeS.vAuftragUpdateAttribute zu suchen, na gut mit einer Volltextsuche vielleicht.

Jedenfalls hat uns das gerade mega geholfen um in der Auftragsvorlage bei Speichern bearbeiten, Template für Dateinamen diesen aus einem Eigenen Feld zu ziehen, da sind ja sonst nur englische Variablen und keine Eigenen Felder. Besten Dank. :)
 
  • Gefällt mir
Reaktionen: Powalowski

Powalowski

Sehr aktives Mitglied
20. Januar 2019
177
195
Nachtrag: es gibt noch eine weitere View dbo.tBestellungAttribute.kBestellung In der oben genannten Tabelle View sind nicht immer alle Eigenen Felder drin. tBestelllungAttribute ist besser - ich habe aus dem Code der View aber nicht auf den ersten Blick verstanden, wo da der Unterschied ist. Sollte mal ein Eigenes Feld leer sein, diese Tabelle View konsultieren ;)

Bei eigenen Feldern, die ein Datumsfeld sind, war widerrum nur vAuftragUpdateAttribute befüllt. Da ich keine Zeit hatte das genauer zu verstehen, hab ich es von Fall zu Fall mit Stichproben geprüft.
 
Zuletzt bearbeitet:

kelvin.

Gut bekanntes Mitglied
15. Februar 2023
165
64
Frankfurt
Du verwechselst Tables mit Views. Tables sind Tabellen, in denen Daten gespeichert werden.
Ein View ist eine Select Abfrage, die in der Datenbank gespeichert ist.
vAuftragUpdateAttribute ist ein View.
tBestellungAttribute ist ein Table.

Für Wawi 1.9 würde ich tBestellungAttribute nicht benutzen. Das ist ein Überbleibsel aus 1.5.
Um die Werte der eigenen Felder zu bekommen müssen mehrere Tabellen verbunden werden.
Es gibt Tabellen mit den Namen Attribut und AttributSprache oder so ähnlich.
In AttributSprache gibt es eine Spalte für Text, ganze Zahlen, dezimal Zahlen und Datumswerte.

Eine komplette Sammlung an Codeschnippsel gibt es nicht. Im Forum müsste die Abfrage für eigene Felder zu finden sein.
 

ergowebshop

Sehr aktives Mitglied
14. Januar 2022
179
48
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Powalowski

Powalowski

Sehr aktives Mitglied
20. Januar 2019
177
195
Du verwechselst Tables mit Views. Tables sind Tabellen, in denen Daten gespeichert werden.
Ein View ist eine Select Abfrage, die in der Datenbank gespeichert ist.
vAuftragUpdateAttribute ist ein View.
tBestellungAttribute ist ein Table.
Hab's nur im Text verwechselt (und jetzt korrigiert, danke) - beides sind Views:

Screenshot 2024-08-06 141342.png

@kelvin. deine Benennungsvermutung wäre intuitiv richtig, nur nicht in der JTL-Welt 😂 Ich denke, die haben tBestellungAttribute als View für Kompatibilität "erhalten".

@ergowebshop, @kelvin. Das scheint der richtige Weg hängt irgendwie mit den Sprachen zusammen - sieht man auch im SELECT der View. Je nachdem ob man ein eigenes Feld per Oberfläche oder per Workflow befüllt, füllen sich diese Views jedoch unterschiedlich! Ich denke der Join aus dem Verlinkten Thread könnte am besten sein. Bei uns hatten mir je nachdem immer Werte einer der beiden Views gefehlt. @ergowebshop - ein finales Schnippselchen würd der Nachwelt (und uns :D) helfen👍🏻
 

mh1

Sehr aktives Mitglied
4. Oktober 2020
1.705
513
... deine Benennungsvermutung wäre intuitiv richtig, nur nicht in der JTL-Welt 😂 Ich denke, die haben tBestellungAttribute als View für Kompatibilität "erhalten".
Die Entwickler von JTL haben ursprünglich mal angefangen, alle Relationen und teilweise auch deren Attribute mit einem Prefix im Namen zu versehen.
Im Zuge von Updates, Erweiterungen des Datenbankschemas, Änderung der Datentypen u.s.w. ist dieses Prinzip der Namensgebung aber nicht mehr in allen Bereichen konsistent.
Auch aus Kompatibilitätsgründen werden in neueren Versionen z.b. Tabellen, die es in älteren Versionen noch gab als View abgebildet.
Und so hat man jetzt eben Views, die im Namen ein kleines T vorangestellt haben, obwohl sie ja keine Tabelle sind, sondern eben ein View.

Das mit den Prefixen hat man früher gerne so gemacht damit man "den jeweiligen Typ gleich erkennt".
Auch heute ist diese Praxis z.B. im Bereich der Vhs Kurse oder von Berufsschullehrern vermittelte 'Best Practice' (auch gerne im Bereich der C Programmierung )
Man zwängt sich dadurch aber in ein unangenehmes Korsett, das jede Änderung an der Struktur unnötig erschwert.
 
  • Gefällt mir
Reaktionen: Powalowski

ergowebshop

Sehr aktives Mitglied
14. Januar 2022
179
48
ein finales Schnippselchen würd der Nachwelt (und uns :D) helfen👍🏻
Oh wir haben es so gemacht wie im ersten Beitrag von dir, funktioniert für uns, das Verlinkte kannten wir ja erst später.
Also haben wir jetzt:
- hole den Wert aus dem eigenen Feld
- wenn da was drin steht, nimm das als Dateiname bei Auftrag speichern
- wenn nicht bastle es aus Auftragsnummer und Name, wenn es den nicht gibt dann alternativ Firma
- filtere " und / und : raus weil die in Dateinamen nicht zulässig sind, sonst kann er nicht Speichern und tut auch nicht Mailen (ja, gibt noch weitere unzulässige Zeichen)

Code:
{% capture query -%}\
SELECT TOP(1) [cValue] FROM [eazybusiness].[DbeS].[vAuftragUpdateAttribute] WHERE [kAuftrag] = '{{ Report.InternalId }}' AND [cKey] = 'AB_Dateiname';
{% endcapture -%}\
{% assign Dateiname = query | DirectQueryScalar -%}
\
\\server\Auftragsbestätigungen\
\{% if Dateiname != null %}{{Dateiname}}{% else %}\
{{ Report.SalesOrderNumber }} -{% if Report.Address.LastName != empty %} {{Report.Address.LastName | Replace: ':', '' | Replace: '/', ' ' | Replace: '\"', ''}}{% else %} {{ Report.Address.Company | Replace: ':', '' | Replace: '/', ' ' | Replace: '\"', '' }}{% endif %}\
{% endif %}\
.pdf


Den Anhang 112594 betrachten

Btw.: was nutzt du da für ein Datenbankprogramm?
 
  • Gefällt mir
Reaktionen: Powalowski

ergowebshop

Sehr aktives Mitglied
14. Januar 2022
179
48
Ich denke der Join aus dem Verlinkten Thread könnte am besten sein. Bei uns hatten mir je nachdem immer Werte einer der beiden Views gefehlt. @ergowebshop - ein finales Schnippselchen würd der Nachwelt (und uns :D) helfen👍🏻
Also zusammengefasste Schnipselchen für die Nachwelt. ;)

Namen und Werte per Join:
SQL:
SELECT cName,cWertVarchar
FROM Verkauf.tAuftragAttribut AS Attribut
JOIN Verkauf.tAuftragAttributSprache AS Sprache ON Sprache.kAuftragAttribut = Attribut.kAuftragAttribut
JOIN tAttributSprache AS AttributSprache ON AttributSprache.kAttribut = Attribut.kAttribut
WHERE Attribut.kAuftrag = '1234'
Oder mit View wie oben schon beschrieben:
SQL:
SELECT cKey,cValue FROM [eazybusiness].[DbeS].[vAuftragUpdateAttribute] WHERE [kAuftrag] = '1234'

Wenn man aber die Namen der Felder nicht extra braucht sondern nur die Werte, aber ohne View, dann tut es auch ein Subselect:
SQL:
select cWertVarchar from Verkauf.tAuftragAttributSprache where kAuftragAttribut in (SELECT kAuftragAttribut FROM Verkauf.tAuftragAttribut where kAuftrag='1234')

Das liefert jedoch in jedem Fall alle Eigenen Felder, oft will man an einer bestimmten Stelle im Workflow oder in einer Dokumentvorlage nur ein bestimmtes Feld auswerten/ausgeben.

Bestimmtes Feld per Feldname geht dann z.B. mit:
SQL:
SELECT cKey,cValue FROM [eazybusiness].[DbeS].[vAuftragUpdateAttribute] WHERE [kAuftrag] = '1234' AND [cKey] = 'MeinFeld'

Aber das birgt die Gefahr: irgendwann benennt jemand bei euch das Feld um in Mein_Feld und dann geht die Vorlage bzw. der Workflow nicht mehr.

Geht auch vorzubeugen:
1. in einem Auftrag (in dem Fall des mit interner ID 1234) das Feld befüllen, denn sonst steht in der Datenbank nichts, auch kein Leerwert.
2. alle Werte im SMSS ausgeben mittels Subselect inkl. kAuftragAttribut:
SQL:
select kAuftragAttribut,cWertVarchar from Verkauf.tAuftragAttributSprache where kAuftragAttribut in (SELECT kAuftragAttribut FROM Verkauf.tAuftragAttribut where kAuftrag='1234')
Das liefert z.B.:
567, mail@example.com,
890, Berlin
999, Meine Bemerkung
man merke sich die Zahl vor dem Wert den man gerade befüllt hat, das ist das gewünschte Feld, z.B. 567
3. wir wissen das Feld hat intern die ID 567, auch wenn es mal umbenannt wird, dann wäre unser SQL:
SQL:
select cWertVarchar from Verkauf.tAuftragAttributSprache where kAuftragAttribut in (SELECT kAuftragAttribut FROM Verkauf.tAuftragAttribut where kAuftrag='1234' and kAttribut='567')
4. In Vorlage/Workflow ist dann nur noch die 1234 durch die interne Auftrags ID zu ersetzen, 567 bleibt so.
 
  • Gefällt mir
Reaktionen: Powalowski
Ähnliche Themen
Titel Forum Antworten Datum
Neu Auftragsadresse nach Anlage Auftrag ändern User helfen Usern - Fragen zu JTL-Wawi 4
Gewichtsabweichung eines Artikels bei Variationen wird nicht in Auftrag übernommen JTL-Wawi 1.8 3
Gelöst Workflow Auftrag mit Positionsabfrage geht nicht, wegen Textposition für den Versand JTL-Workflows - Ideen, Lob und Kritik 1
Beantwortet Version 1.0.11.1 Auftrag öffnen - kann nichts eingeben JTL-POS - Fehler und Bugs 0
In Bearbeitung Auftrag in WaWi via POS abrechnen ohne Rechnung nur Kassenbon Allgemeine Fragen zu JTL-POS 2
In Diskussion Gesamtgewicht aus mehreren Paketen je Auftrag JTL-Workflows - Ideen, Lob und Kritik 1
Neu Picklisten Druckvorlage pro Auftrag Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 1
Neu Ausgelieferter Auftrag wieder in Versandansicht User helfen Usern - Fragen zu JTL-Wawi 0
Gebinde anlegen und Eingabe im Auftrag JTL-Wawi 1.9 1
Neu Manuelle Gewichtseingabe bei "Auftrag verpacken" Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 2
Rechnung Korrigieren -> Es existiert kein Auftrag zur Rechnung. JTL-Wawi 1.9 3
Neu Bestätigungs e-mail für Auftrag stornieren Arbeitsabläufe in JTL-Wawi 1
Neu Auftrag ohne Rechnung Arbeitsabläufe in JTL-Wawi 3
Neu Reihenfolge Kartonage bei Auftrag verpacken Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 0
Neu Ersparnis in Euro anzeigen lassen unter Rabatt (Formulareditor Angebot / Auftrag) Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 5
Neu ein Auftrag mehrere Rechnungen am Packtisch ausdrucken Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 0
Neu Packhinweis bei Eigenem Feld im Auftrag nicht möglich?! Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 0
Neu Neuen ähnlichen Artikel direkt aus Auftrag - wie erstellen? User helfen Usern - Fragen zu JTL-Wawi 3
Auftrag splitten bei bereits ersteller Rechnung JTL-Wawi 1.9 1
Dokumentenvorlage Auftrag - Prüfung Checkbox JTL-Wawi 1.9 1
Bankverbindung aus Kunde in neuen Shop-Auftrag übernehmen JTL-Wawi 1.9 0
Neu Aus Angebot direkt Auftrag an Kunden mailen JTL-Wawi - Ideen, Lob und Kritik 1
XRechnung: Vorgang.Auftrag.Anmerkung als "Weitere rechtliche Informationen" einbauen JTL-Wawi 1.9 2
Neu Wir würdet Ihr vorgehen? ( Teilgelieferten Auftrag anderen Artikel ausliefern) User helfen Usern - Fragen zu JTL-Wawi 1
In Diskussion Auftrag auf die Pickliste setzen JTL-Workflows - Fehler und Bugs 5
Gutschrift bzw Rechnungskorrektur größer als neuer Auftrag JTL-Wawi 1.9 2
In Bearbeitung Wawi Auftrag in JTL POS öffnen (problem mit Kartenzahlung) Allgemeine Fragen zu JTL-POS 2
Auftrag Inlandskunde mit USt-Id - wie erfassen JTL-Wawi 1.7 6
Neu Voraussichtliches Lieferdatum aus Auftrag als Rechnungsdatum/Leistungsdatum Arbeitsabläufe in JTL-Wawi 2
Neu REST-API - Auftrag erstellen - wie Versandposition hinzufügen? Schnittstellen Import / Export 4
In Bearbeitung offene Rechnung im Pos bezahlen nicht Auftrag JTL-POS - Ideen, Lob und Kritik 3
Mailausgabe in JTL WaWi steuern (Rechnung mailen, Auftrag mailen etc.) JTL-Wawi 1.9 0
Neu Übernahme eigene Dashboard Konfig und Statistiken auf anderen Client Eigene Übersichten in der JTL-Wawi 0
Neu Eigene Zahlart im Shop anlegen Umstieg auf JTL-Shop 2
Neu Eigene Übersicht im 360° Widgetfenster - Eigene Felder im Kundenstamm Eigene Übersichten in der JTL-Wawi 2
Neu 🛒𝐍𝐞𝐮𝐞𝐬 𝐏𝐥𝐮𝐠-𝐈𝐧: Eigene Lösung für Rechnungskauf mit Bonitäts- & Betrugsprüfung direkt im Check-out - JTL5? Plugins für JTL-Shop 3
Neu Vorlagen in Version 1.9.6.5 und Eigene Felder? Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 0
Beantwortet Eigene Übersicht - Artikel Beschreibung im F2 Panel einbetten Eigene Übersichten in der JTL-Wawi 2
email Vorlage eigene Felder Variable English JTL-Wawi 1.9 6
Neu Möglichkeit Variablen in Html in Eigene > Inhalte > Seiten auszugeben Allgemeine Fragen zu JTL-Shop 4
Eigene UST ID wird nicht eingetragen JTL-Wawi 1.9 9
Neu Eigene Übersicht - Artikelbestand alle Läger Eigene Übersichten in der JTL-Wawi 1
JT WAWI 1.9.6.1 Eigene Felder werden nicht mehr übertragen, bzw. gelöscht JTL-Wawi 1.9 11
Neu Eigene Kategorien für ebay Angebote oder JTL Wawi Kategorie Baum nutzen Einrichtung und Installation von JTL-eazyAuction 1
Neu List & Label - Eigene SQL-Abfrage als Grundlage für Tabelle im Berichtscontainer? User helfen Usern - Fragen zu JTL-Wawi 10
QR-Code Formel kann nicht in die eigene Vorlage hinzugefügt werden JTL-Wawi 1.9 1
Neu JTL Shop 5.4.0 eigene Inhalte/Seiten hinzufügen nicht möglich JTL-Shop - Fehler und Bugs 5
Verkaufskanal Felder Amazon - Feldbeschreibungen übersetzen in Fremdsprachen JTL-Wawi 1.9 1
Neu Amazon Lister 2.0 - Kategorieindividuelle Felder auf Root eben möglich, z.B. für bullet_point1-5 Amazon-Lister - Ideen, Lob und Kritik 1
Neu Leere Hersteller Felder über die Suche finden (GPSR) User helfen Usern - Fragen zu JTL-Wawi 2

Ähnliche Themen