Gelöst Kundengruppe ändern nach 2 bezahlten Bestellungen

BioRabauken

Aktives Mitglied
1. Januar 2022
37
10
Hallo miteinander,
ich versuche einen Workflow einzurichten, der automatisch die Kundengruppe ändert,
nachdem ein Neukunde zwei Bestellungen bezahlt hat.
Leider funktioniert meine bisherige Konfiguration nicht wie gewünscht.

Aktueller Stand:

Auslöser: "Bestellung bezahlt"
Bedingung: Kundengruppe = Neukunde
Bedingung: Anzahl bezahlter Bestellungen >= 2
Aktion: Kundengruppe ändern auf [Zielgruppe]

Problem:
Für den Workflow finde ich keine Bedingung "Anzahl bezahlter Bestellungen >= 2".
Und Anzahl Zahlungen = 2 setzen führt wohl nur zur Prüfung ob für den jeweiligen Auftrag 2 Zahlungen vorliegen.
Statt die Gesamtzahl der bezahlten Aufträge eines Kunden zu prüfen.

Gewünschtes Verhalten:
Kunde bestellt zum ersten Mal → bleibt in Gruppe "Neukunde"
Kunde bestellt und bezahlt zum zweiten Mal → Workflow erkennt "2 bezahlte Aufträge" und ändert die Kundengruppe



Fragen:

Ist diese Art von Workflow überhaupt möglich?
Falls ja, wie muss die Bedingung korrekt konfiguriert werden?
Gibt es eventuell eine alternative Lösung für diesen Anwendungsfall?

Über Hilfe und Anregungen würde ich mich sehr freuen!
Beste Grüsse
Anis
 

Anhänge

  • Screenshot 2025-01-28 084107.png
    Screenshot 2025-01-28 084107.png
    64,6 KB · Aufrufe: 5

frankell

Sehr aktives Mitglied
9. September 2019
2.685
840
Flensburg
Da es auch für andere interessant sein kann, hier schon mal, wie man es anstellen kann (gibt natürlich auch andere Wege der SQL-Abfrage).

Erstelle eine Erweiterte Eigenschaft (siehe hier, Schritt 3) mit diesem Code:

Code:
{% capture query -%}
SELECT CASE WHEN EXISTS (
    SELECT
        1
    FROM
        Verkauf.tAuftragEckdaten AS AE
        JOIN Verkauf.tAuftrag AS A ON AE.kAuftrag = A.kAuftrag
    WHERE
        AE.kAuftrag <> {{ Vorgang.Stammdaten.InterneAuftragsnummer }}
        AND AE.fOffenerWertOhneStorno <= 0.01
        AND A.kKunde = {{ Vorgang.Stammdaten.Kunde.InterneKundennummer }}
        AND A.nStorno = 0
    )
    THEN 1
    ELSE 0
    END;
{% endcapture -%}
{% assign result = query | DirectQueryScalar -%}
{% if result == 1 -%}True{% else -%}False{% endif -%}

Hier wird prüft, ob es neben dem vorliegenden Auftrag noch einen weiteren des Kunden gibt, der einen offenen Betrag von maximal 1 Cent besitzt (wegen eventueller Rundungsdifferenzen) und nicht storniert ist.

Der Rückgabetyp der Erweiterten Eigenschaft (rechts oben) muss auf "Boolean" gestellt sein. Dann kannst Du diese Erweiterte Eigenschaft als Bedingung nutzen mit "Gleich" "Wahr".
 
  • Gefällt mir
Reaktionen: BioRabauken

BioRabauken

Aktives Mitglied
1. Januar 2022
37
10
Gewünschtes Verhalten:
Kunde bestellt zum ersten Mal → bleibt in Gruppe "Neukunde"
Kunde bestellt und bezahlt zum zweiten Mal → Workflow erkennt "2 bezahlte Aufträge" und ändert die Kundengruppe

Hier wäre die Lösung:
Admin > Workflows > Aufträge > Auftrag Komplett bezahlt

1. Bedingung - aktueller Auftrag wird bezahlt
2. Bedingung - gewünschte Kundengruppe
3. Bedingung "frankell Prüfung - existiert vorherig bezahlter Auftrag":
siehe Screenshots für Setupdetails

Details der 3. Bedingung:
Den Code als "Erweiterte Eigenschaft" als Bedingung mit Rückgabetyp "Bolean" platzieren.
Dieser sucht nach einem anderen Auftrag dieses Kunden,
der keinen offenen Betrag mehr aufweist.
Wird ein anderer Auftrag gefunden,
sind es ja mindestens zwei vorhandene Aufträge dieses Kunden ohne offenen Betrag, also das, was wir wollten.
Dann spuckt die SQL-Abfrage 1 aus, was DotlIquid in "True" umwandelt.
Wenn kein anderer Auftrag gefunden wird, wird 0 ausgespuckt, woraus DotLiquid "False" macht.

{% capture query -%}
SELECT CASE WHEN EXISTS (
SELECT
1
FROM
Verkauf.tAuftragEckdaten AS AE
JOIN Verkauf.tAuftrag AS A ON AE.kAuftrag = A.kAuftrag
WHERE
AE.kAuftrag <> {{ Vorgang.Stammdaten.InterneAuftragsnummer }}
AND AE.fOffenerWertOhneStorno <= 0.01
AND A.kKunde = {{ Vorgang.Stammdaten.Kunde.InterneKundennummer }}
AND A.nStorno = 0
)
THEN 1
ELSE 0
END;
{% endcapture -%}
{% assign result = query | DirectQueryScalar -%}
{% if result == 1 -%}True{% else -%}False{% endif -%}
 

Anhänge

  • 1. Bedingung - aktueller wird Auftrag bezahlt.png
    1. Bedingung - aktueller wird Auftrag bezahlt.png
    13,3 KB · Aufrufe: 4
  • 2. Bedingung - gewünschte Kundengruppe berücksichtigen.png
    2. Bedingung - gewünschte Kundengruppe berücksichtigen.png
    13,9 KB · Aufrufe: 4
  • 3. Bedingung - frankell Prüfung - existiert vorherig bezahlter Auftrag.png
    3. Bedingung - frankell Prüfung - existiert vorherig bezahlter Auftrag.png
    40,6 KB · Aufrufe: 4
Zuletzt bearbeitet:

frankell

Sehr aktives Mitglied
9. September 2019
2.685
840
Flensburg
Gewünschtes Verhalten:
Kunde bestellt zum ersten Mal → bleibt in Gruppe "Neukunde"
Kunde bestellt und bezahlt zum zweiten Mal → Workflow erkennt "2 bezahlte Aufträge" und ändert die Kundengruppe

Hier wäre die Lösung:

Es scheint zu funktionieren, prima!

Vielleicht ergänzt Du in Deine Darstellung noch, wo der Workflow angelegt wird (auslösendes Ereignis) und dass der Rückgabetyp Boolean ist, dann ist alles in einem Post enthalten. 🙂
 
  • Gefällt mir
Reaktionen: BioRabauken

Ähnliche Themen