Neu Workflow-Bedingung: Hat der Kunde noch offene Bestellungen?

Xantiva

Sehr aktives Mitglied
28. August 2016
1.795
316
Düsseldorf
Hallo,

vielleicht könnte mir jemand bei der Erstellung eines Workflows helfen?

Wenn ein Auftrag erstellt wird, möchte ich prüfen ob die Zahlart "Rechnung" ist und der Kunde ggf. noch nicht bezahlte Aufträge hat. Ich finde nur leider kein passendes Feld für die Bedingung "noch unbezahlte Bestellungen" ...

Und ich fürchte, für die Erweiterten Eigenschaften fehlen mir noch ein paar grundlegende Kenntnisse in DotLiquid, etc.

Danke,
Mike
 

Xantiva

Sehr aktives Mitglied
28. August 2016
1.795
316
Düsseldorf
In der Zwischenzeit habe ich mal herumexperimentert ...

Die erste Bedingung ist Zahlart des Auftrags = Rechnung.

Dann habe ich diese Abfrage erstellt:

Sind weitere Bestellungen für die Kundennummer vorhanden, die nicht bezahlt sind (Datum Bezahlt => NULL).
Code:
{% capture query %}
SELECT k.cKundenNr
FROM tBestellung AS b
LEFT JOIN tKunde AS k ON(b.[tKunde_kKunde] = k.kKunde)
WHERE k.cKundenNr LIKE '{{ Vorgang.Stammdaten.Kunde.Kundennummer }}' 
  AND b.cBestellNr NOT LIKE '{{ Vorgang.Stammdaten.Auftragsnummer }}'
  AND b.dBezahlt IS NULL
{% endcapture -%}\
{% assign result = query | DirectQueryScalar %}\
{{ result }}

Falls das Ergebnis > 0, dann E-Mail versenden.

Die Tests funktionieren. Gibt es noch andere Bedingungen, die berücksichtigt werden sollten?

Ciao,
Mike
 
  • Gefällt mir
Reaktionen: frohkost

css-umsetzung

Offizieller Service Partner
SPBanner
6. Juli 2011
8.651
2.703
Berlin
Firma
css-umsetzung
Code:
WHERE k.cKundenNr LIKE '{{ Vorgang.Stammdaten.Kunde.Kundennummer }}'

ein LIKE wird verwendet wenn du einen Teilstring suchst, also Beispielsweise:
Code:
WHERE k.cKundenNr LIKE '%{{ Vorgang.Stammdaten.Kunde.Kundennummer }}'

Diese Suche geht auf die Performance (je nach Menge der Kunden oder Bestellungen).
Bei dir sind die gesuchten Felder aber eindeutig, daher solltest du lieber einfach nur diese Art der Abfrage nehmen
Code:
WHERE k.cKundenNr = '{{ Vorgang.Stammdaten.Kunde.Kundennummer }}'
und bei dem anderem dann anstelle von NOT LIKE einfach !=
 

aaLeeX_010401

Aktives Mitglied
19. Dezember 2017
108
3
Vielen Dank für diesen Beitrag. Genau das was ich gesucht habe.

Ich habe verwende diesen Code(für alle Zahlungsarten), jedoch fällt mir auf, dass ich bei jedem Auftrag der erstellt wird eine E-Mail bekomme. Mein Wunsch ist es nur dann eine E-Mail zu bekommen, wenn der Kunden
alte Aufträge hat die nicht bezahlt wurden. Wenn ein Auftrag gerade angelegt wird, ist es ja klar, dass er noch nicht bezahlt wurde.

Nochmal zum Workflow:
If Code > 0 then E-Mail

Evtl. @css-umsetzung eine Idee?
 

css-umsetzung

Offizieller Service Partner
SPBanner
6. Juli 2011
8.651
2.703
Berlin
Firma
css-umsetzung
also diese Abfrage hier "SELECT k.cKundenNr" setzt vorraus das deine Kundennummer nur aus Zahlen besteht wenn du das mit >0 abfragst.
Ich hätte das schon wegen der Performance anders gemacht weil mich die Kundentabelle hier gar nicht interessiert.

Code:
{% capture query %}
select count(kBestellung) from dbo.tBestellung
    where tKunde_kKunde={{ Vorgang.Stammdaten.Kunde.InterneKundennummer }}
    and kBestellung != {{ Vorgang.Stammdaten.InterneAuftragsnummer }}
    and dBezahlt is null
{% endcapture -%}\
{% assign result = query | DirectQueryScalar %}\
{{ result }}

nun solltest du als result die Anzahl der unbezahlten Aufträge bekommen, der vorhandene Auftrag wird nicht einbezogen.
 
  • Gefällt mir
Reaktionen: aaLeeX_010401

aaLeeX_010401

Aktives Mitglied
19. Dezember 2017
108
3
Vielen Dank. Ich habs umgestellt. Werde ausprobieren und berichten.

*Bei mir sind die Kundennummern ausschließlich Zahlen
 

css-umsetzung

Offizieller Service Partner
SPBanner
6. Juli 2011
8.651
2.703
Berlin
Firma
css-umsetzung
Das Problem beim oberen ist auch, was steht in result wenn es keine weitere Bestellung gab, denn da ist die Frage wie DotLiquid dann '' oder eben null wertet.
Das ist also eigentlich zu unsicher, meine Abfrage bringt eine eindeutige Zahl, 0 oder irgendwas >0.
 
  • Gefällt mir
Reaktionen: aaLeeX_010401

aaLeeX_010401

Aktives Mitglied
19. Dezember 2017
108
3
Das Problem beim oberen ist auch, was steht in result wenn es keine weitere Bestellung gab, denn da ist die Frage wie DotLiquid dann '' oder eben null wertet.
Das ist also eigentlich zu unsicher, meine Abfrage bringt eine eindeutige Zahl, 0 oder irgendwas >0.

Ich habe die Abfrage jetzt mal im Betrieb laufen lassen.

Es ist trotzdem so, dass eine E-Mail ausgelöst wird, wenn der Kunde nur einen Auftrag hat und zwar den, der gerade angelegt wurde.

Liegt es evtl. an mir? Weil du bist ja der Überzeugung, dass die Abfrage stimmt
 

css-umsetzung

Offizieller Service Partner
SPBanner
6. Juli 2011
8.651
2.703
Berlin
Firma
css-umsetzung
Es muss an dir liegen 🙂
es ist ja kein Ding, man kann einzelne Aufträge prüfen, was da ausgegeben wird, wenn du das nicht hin bekommst
kann ich dir da auch helfen aber wenn ich per Teamview kommen muss, dann muss ich daran auch was verdienen weil das dann über den normalen Forums Support hinaus geht.
 
  • Gefällt mir
Reaktionen: aaLeeX_010401

aaLeeX_010401

Aktives Mitglied
19. Dezember 2017
108
3
Ich habe den Workflow getestet und geguckt, was er ausgibt bei den zwei Aufträgen, zu denen ich bereits eine E-Mail bekommen habe. (Screenshots anbei)

Ich vermute, dass der Wert größer 1 sein muss? Damit die WAWI nur die zweite Bestellung nimmt? xD
Bild 3 ist nämlich der Fall, wo der Kunde nur einen Auftrag hat und trzdem eine Mail ausgelöst wurde
Bild 4 ist wie es sein sollte, Kunde hat zwei Aufträge (beide nicht bezahlt - der zweite wurde aber gerade erst angelegt)
-> Mail kam an und ich wusste Bescheid, hey der muss seine alte Rechnung erstmal begleichen.

Könntest du bitte kurz in den Workflow schauen? (Screenshots anbei)

Ich komme auf deinen Support definitiv noch zurück, da wir noch mehr Abfragen benötigen.
 

Anhänge

  • Bild1.jpg
    Bild1.jpg
    37,8 KB · Aufrufe: 25
  • Bild2.jpg
    Bild2.jpg
    57,1 KB · Aufrufe: 23
  • Bild3.jpg
    Bild3.jpg
    53,3 KB · Aufrufe: 22
  • Bild4.jpg
    Bild4.jpg
    55,7 KB · Aufrufe: 24

css-umsetzung

Offizieller Service Partner
SPBanner
6. Juli 2011
8.651
2.703
Berlin
Firma
css-umsetzung
kannst du mal meinen Query in deinem email text einbinden und dir dann {{ query }} anzeigen lassen.

also das hier fügst du in deinem Mailtext am ende ein:

Code:
-------------------
{% capture query %}
select count(kBestellung) from dbo.tBestellung
    where tKunde_kKunde={{ Vorgang.Stammdaten.Kunde.InterneKundennummer }}
    and kBestellung != {{ Vorgang.Stammdaten.InterneAuftragsnummer }}
    and dBezahlt is null
{% endcapture -%}\
{% assign result = query | DirectQueryScalar %}\
{{ result }}
{{ query }}

Dann sehen wir ja was in dem Query steht und auch was in dem result ist.
 
  • Gefällt mir
Reaktionen: aaLeeX_010401

aaLeeX_010401

Aktives Mitglied
19. Dezember 2017
108
3
Für Bild/Auftrag 3 = 1 select count(kBestellung) from dbo.tBestellung where tKunde_kKunde=8936 and kBestellung != 4433 and dBezahlt is null

Für Bild/Auftrag 4 = 2 select count(kBestellung) from dbo.tBestellung where tKunde_kKunde=8735 and kBestellung != 4326 and dBezahlt is null
 

css-umsetzung

Offizieller Service Partner
SPBanner
6. Juli 2011
8.651
2.703
Berlin
Firma
css-umsetzung
hast du einen SQL Mananger oder Heidi SQL?
dann gib mal das da drin ein:

Code:
select *  from dbo.tBestellung where tKunde_kKunde=8936 and kBestellung != 4433 and dBezahlt is null

dann siehst du welchen Auftrag er dir anzeigt.

und hier dann ja beide
Code:
select * from dbo.tBestellung where tKunde_kKunde=8735 and kBestellung != 4326 and dBezahlt is null
 

aaLeeX_010401

Aktives Mitglied
19. Dezember 2017
108
3
hast du einen SQL Mananger oder Heidi SQL?
dann gib mal das da drin ein:

Code:
select *  from dbo.tBestellung where tKunde_kKunde=8936 and kBestellung != 4433 and dBezahlt is null

dann siehst du welchen Auftrag er dir anzeigt.

und hier dann ja beide
Code:
select * from dbo.tBestellung where tKunde_kKunde=8735 and kBestellung != 4326 and dBezahlt is null

Kannst du genauer beschreiben, wo man das eingeben soll?

War im SQL Konfig Manager und habe nichts gefunden
 

Ähnliche Themen