Neu Workflow zur Ausgabe von Daten als CSV

volvisti

Gut bekanntes Mitglied
18. Juli 2017
194
8
Hallo Zusammen,
habe mich nun bestimmt drei Stunden durch Netz, das Froum und die Doku zu DotLiquid gequält.
Leider ohne nennenswerte Erfolge.:(

Das SQL-Statement
select
k.cInhaber,
k.cIBAN,
k.cBIC,
g.cGutschriftNr + ' - Vielen Dank fuer die Unterstuetzung',
round(g.fPreis,2,0)
from dbo.tkontodaten k, dbo.tgutschrift g
where g.cstatus = 'GÜ'
and k.kkunde = g.kkunde;

holt mir die Rechnungskorrekturdaten aus der Db, die ich dann mit einem externen Programm in ein SEPA-Überweisungs-XML umwandeln kann.

Nun möchte ich das Ganze aber vereinfachen, denn bisher muss ich das Statement in Heidi-SQL ausführen, das Ergebnis als csv speichern und kann es dann weiter bearbeiten.

Mein Wunsch ist ein manueller Worklfow, der über die erweiterten Anweisungen das Statement als Dotliquid ausführt und in einem Netzordner die CSV ablegt.

Bei der Übersetzugn des Statements in DotLiquid bin ich kläglich gescheitert und habe auch nichts Aussagekräftiges gefunden, weder auf deutsch noch auf englisch.

Wo habt Ihr Euer Wissen über DotLiqiud her?
Mag mir jemand helfen?
Täte mich sehr freuen.
 

volvisti

Gut bekanntes Mitglied
18. Juli 2017
194
8
Hallo René,
danke für Deine Antwort.
Dort hatte ich schon nachgesehen, war aber nicht wirklich schlau aus der Abfrage geworden.
https://guide.jtl-software.de/JTL-Wawi:DotLiquid:Anwendungsbeispiele:Direkter_Datenbank-Zugriff

Diese Seite hat mir etwas besser weitergeholfen, weil zumindest rudimentär beschrieben.
Darf ich Dich Bitten mal einen Blick auf meine DotLiquid Abfrage zu werfen und mir zu schreiben, wo der Fehler ist?

Nach der Logik des Beispiels auf der obigen Seite müßte das hier doch eigentlich zum Erfolg führen, oder?

{ % assign A1 = 'select * from tgutschrift' | DirectQuery -% }
{ % for item in A1.daten % }

{ % capture itemquery % } select * from tkontodaten where kkunde = {{item.kkunde | SQLEscape }} and {{item.cStatus}} = 'GÜ' { % endcapture -% }

{ % assign A2 = itemquery | DirectQuery -% }
{ % for item2 in A2.Daten % }

{{ item2.cInhaber }};{{ item2.cIBAN }};{{ item2.BIC }};{{ item.cGutschriftNr }} Vielen Dank fuer die Unterstuetzung;{{item.fpreis| Nummer: N2}}

{ % endfor -% }
{ %endfor -% }


Ich lese erst die Daten der einen Tabelle aus und speichere sie in der Variablen A1, dann starte ich die Schleife, damit grundsätzliich die Daten der Gustschriften ausgegeben werden.
Mit Capture lese ich dann die zweite Tabelle aus und setze die Bedingungen (aus SQL g.cstatus = 'GÜ' and k.kkunde = g.kkunde)
Abspeichern in Variable A2
Dann lasse ich die Daten ausgeben, durch ';' getrennt.
Nur wird mir im Vorschau-Fenster das Statement angezeigt und nicht die Daten.
Die eigentlich Ausgabezeile sieht dann so aus: ;;; Vielen Dank fuer die Unterstuetzung;0,00
Das ist wenig zielführend :(
Schreibe ich die Abfrage um, d.h. lasse ich die Tabellen in der umgekehrten Reihenfolge auslesen, bleiben die Vorschau-Fenster komplett leer.

Ich denke, ich habe da entweder ein Logik- oder ein Übersetuzungsproblem, denn das SQL-Statement selbst bringt in Heidi-SQL das gewünschte Ergebnis.

Ich hoffe/denke, es ist nur eine Kleinigkeit.
Danke schon mal und noch einen schönen Abend.
 

Shopküche.de

Offizieller Servicepartner
SPBanner
Hallo René,


{ % assign A1 = 'select * from tgutschrift' | DirectQuery -% }
{ % for item in A1.daten % }

{ % capture itemquery % } select * from tkontodaten where kkunde = {{item.kkunde | SQLEscape }} and {{item.cStatus}} = 'GÜ' { % endcapture -% }

{ % assign A2 = itemquery | DirectQuery -% }
{ % for item2 in A2.Daten % }

{{ item2.cInhaber }};{{ item2.cIBAN }};{{ item2.BIC }};{{ item.cGutschriftNr }} Vielen Dank fuer die Unterstuetzung;{{item.fpreis| Nummer: N2}}

{ % endfor -% }
{ %endfor -% }


I

Ich kanns gerade nicht prüfen ob das Ergebnis so passt, aber die ganzen Leerzeichen nach und vor den Tags "{" und "}" sind das Problem.
Anbei der bereinigte Code der bei mir zumindest teilweise Daten ausgibt. Liegt aber wohl eher daran das mein Testsystem keine Gutschriften mit IBAN etc hat.

Code:
{% assign A1 = 'select * from tgutschrift' | DirectQuery -%}
{% for item in A1.daten %}

{% capture itemquery %} select * from tkontodaten where kkunde = {{item.kkunde | SQLEscape }} and {{item.cStatus}} = 'GÜ' {% endcapture -%}

{% assign A2 = itemquery | DirectQuery -%}
{% for item2 in A2.Daten %}

{{ item2.cInhaber }};{{ item2.cIBAN }};{{ item2.BIC }};{{ item.cGutschriftNr }} Vielen Dank fuer die Unterstuetzung;{{item.fpreis| Nummer: N2}}

{% endfor -%}
{% endfor -%}
 

volvisti

Gut bekanntes Mitglied
18. Juli 2017
194
8
Hallo René
leider klappt es mit Deinem Code auch nicht.
Hab schon den Status von GÜ zu GU geändert, um die Problematik mit den Umlauten auszuschließen.

Hast Du noch eine Idee?
 

Shopküche.de

Offizieller Servicepartner
SPBanner
Hallo René
leider klappt es mit Deinem Code auch nicht.
Hab schon den Status von GÜ zu GU geändert, um die Problematik mit den Umlauten auszuschließen.

Hast Du noch eine Idee?
Ich muss nochmal fragen was genau du machen willst und an welcher Stelle du dieses DotLiquid unterbringen willst. Das du Gutschriften aus dem System ziehen willst mit Bankverbindung und Betrag ist mir soweit klar, aber was ist der Status "GÜ"? Wo willst du das DotLiquid ausführen? (Manueller Workflow?) Sollen alle Gutschriften eines Kunden angezeigt werden oder nur die, die noch nicht gutgeschrieben worden sind?

Das obige DotLiquid bringt mir in meinem Testsystem schon ein Ergebnis, aber ich weiß nicht ob es das ist was du vorhast.
 

volvisti

Gut bekanntes Mitglied
18. Juli 2017
194
8
Hallo René,
Danke für Deine Unterstützung.

Im Grunde ist mein Anliegen ganz einfach.

Wir legen Honorargutschriften in der Rubrik "Rechnungskorrekturen" an.
Diese werden mit dem Status GÜ (für Geschäftskunden Überweisung) versehen.
Derzeit machen wir es so, wie oben beschrieben. Statement in HeidiSQL ausführen, Ergebnis als CSV-Datei speichern....
Diesen Schritt möchte ich vereinfachen und ihn als manuellem Workflow in die JTL-Oberfläche integrieren.

Der Schritt Umwandlung der CSV-Datei in eine SEPA-XML-Überweisungs-Datei wird wohl auf lange Sicht nicht zu vereinfachen sein, da dies eine Implementierung eines SEPA-Buttons in die Rubrik "Rechnugnskorrekturen" erfordern würde.
Hier sehe ich wenig Chancen.

Ich hoffe, es ist etwas verständlicher geworden.