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

Powalowski

Sehr aktives Mitglied
20. Januar 2019
174
192
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
147
32
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
174
192
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
164
62
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
147
32
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Powalowski

Powalowski

Sehr aktives Mitglied
20. Januar 2019
174
192
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.590
482
... 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
147
32
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
147
32
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 SQL Eigener Export - Eigene Felder im Auftrag User helfen Usern - Fragen zu JTL-Wawi 7
Neu Eigene Felder aus dem Auftrag in der Packtisch+ / WMS Ausgabe JTL-WMS / JTL-Packtisch+ - Ideen, Lob und Kritik 4
Gutschrift bzw Rechnungskorrektur größer als neuer Auftrag JTL-Wawi 1.9 2
Neu Wawi Auftrag in JTL POS öffnen (problem mit Kartenzahlung) Allgemeine Fragen zu JTL-POS 0
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 1
Neu REST-API - Auftrag erstellen - wie Versandposition hinzufügen? Schnittstellen Import / Export 0
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 Wie kann man Freipositionen in einem Auftrag gruppiert darstellen? Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 4
Neu Auftrag nachträglich bearbeiten User helfen Usern - Fragen zu JTL-Wawi 29
Neu Identische Aufträge - gleiche Stückliste aber unterschiedliche Artikelnummer im Auftrag Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 5
Auftrag nicht mehr Auslieferbar JTL-Wawi 1.9 3
Neu Variable oder SQL zum Feld "Gewinn netto" (im Auftrag) Eigene Übersichten in der JTL-Wawi 9
Neu Ablage von E-Mails bei einem Auftrag User helfen Usern - Fragen zu JTL-Wawi 4
Austausch eines bezahlten Artikels gegen einen preiswerteren in bereits bezahltem auftrag JTL-Wawi 1.7 6
Neu Wawi Fehler - Auftrag öffnet im Hintergrund JTL-Wawi - Fehler und Bugs 8
Neu WAWI 1.9.4.6 Amazon Auftrag hat keine Rechnungsnummer, obwohl die Rechnung zu Amazon hochgeladen wurde. Amazon-Anbindung - Fehler und Bugs 0
Auftrag mit Terminlieferung JTL-Wawi 1.9 2
Neu Workflow - Wert "Netto-EK" im Auftrag auf 0,00 € setzen für eine bestimmte Kundengruppe User helfen Usern - Fragen zu JTL-Wawi 1
Neu Artikelbezeichnung aus Auftrag in Druckvorlage für Picklisten Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 4
Neu Feld Kundenkommentar nur im Auftrag editierbar? User helfen Usern - Fragen zu JTL-Wawi 3
Neu Nach Abbruch von "Auftrag anlegen" wird anderes Programm angezeigt Arbeitsabläufe in JTL-Wawi 5
Versand, Auftrag, Dropshipping Übersicht bereits ausgelieferte ausblenden JTL-Wawi 1.9 0
Auftrag Pickliste Ausliefern JTL-Wawi 1.9 4
Neu Auftrag nach Rechnungsstellung ändern Arbeitsabläufe in JTL-Wawi 2
Neu Dokument aus Auftrag beim Packen Drucken User helfen Usern - Fragen zu JTL-Wawi 2
Auftrag ohne Versand aber mit Lagerbuchung abschließen JTL-Wawi 1.9 1
Neu Mindermengenzuschlag in Auftrag User helfen Usern - Fragen zu JTL-Wawi 3
Neu Amazon Rechungskorrekturen / Storno: Neu ausstellen / Es existiert kein Auftrag zur Rechnung Einrichtung und Installation von JTL-eazyAuction 8
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
Lieferscheine -versendet / Eigene Übersicht: Kundenkategorie aus den Kundenstammdaten JTL-Wawi 1.8 3
Neu Eigene Felder / Attribute spaltenweise exportieren JTL Ameise - Eigene Exporte 6
Neu Wie kann ich über eigene Felder eine Mehrfachauswahl erstellen? User helfen Usern - Fragen zu JTL-Wawi 4
Neu Eigene Übersichten - Beschaffung - Bestellvorschläge - nur Standardlieferant anzeigen Eigene Übersichten in der JTL-Wawi 4
Neu Eigene Übersicht Kunde QR Code Kundennummer Eigene Übersichten in der JTL-Wawi 4
Eigene USt-IdNr. fehlt in der Auftragsansicht bei Auslandsbestellungen (JTL-Wawi 1.8.12.2) JTL-Wawi 1.8 3
Neu Eigene Alerts im Template ausgeben bzw. hinzufügen Templates für JTL-Shop 0
Neu SCX (Alle Marktplätze) - habt ihr Kategorien, bei denen die Kategoriespezifischen Felder nicht laden / zuordnen nicht möglich / No Data available? Einrichtung und Installation von JTL-eazyAuction 0
Neu Zuordnung der Felder in EVO Designvorlage eBay-Designvorlagen - Ideen, Lob und Kritik 0

Ähnliche Themen