Gelöst Kunde auf Bestellung prüfen

3jojojo

Sehr aktives Mitglied
20. Januar 2016
783
45
Hi Leute und schöne Ostern

Ich will Kunden die sich im Shop neu angemeldet haben darauf prüfen ob sie nach 2 Tagen auch eine Bestellung gemacht haben.

Hierfür habe ich bei den Workflows unter Kunde Neu erstellt einen Workflow angelegt.

1)Verzögerung 2 Tage
2) Bedingungen ist das Problem.
Es gibt zwar {{ Vorgang.Rechnungen.ErstesObjekt.Auftrag.Auftragsnummer }} aber nicht den Auftrag
Damit kann ich wohl nur prüfen ob der Kunde schon eine Rechnung hat.

folgendes habe ich probiert
{{ Vorgang.Stammdaten.Auftragsnummer }}
{{ Vorgang.AuftragsPositionen.Positionen.Anzahl }}
{{ Vorgang.Kundenhistorie.ErstesObjekt.Eintrag }}
{{ Vorgang.Bestellung.Anzahl }}
jedoch liefert keines ein Ergebnis.

Hat jemand eine Idee wie man neuen Kunden auf einen Auftrag prüft???
 

Shopworker.de

Offizieller Service Partner
SPBanner
4. Januar 2011
4.205
584
Arnsberg, Sauerland
Firma
Shopworker GmbH
Habe ich einen Gedankenfehler oder werden Kunden, die sich im Shop angemeldet, aber noch nicht bestellt haben in der Wawi noch gar nicht als Kunden angelegt?
Die musst du meines Wissens erst manuell in die Wawi übernehmen; erst dann könntest du z.B. über einen Workflow nach Anzahl Rechnungen oder über den Auftrag prüfen ...
 

3jojojo

Sehr aktives Mitglied
20. Januar 2016
783
45
Ist richtig aber das kann man ja einfach machen über Onlineshop -> Neukunden machen.
 

3jojojo

Sehr aktives Mitglied
20. Januar 2016
783
45
Deine Aufgabenstellung war aber:



Und das geht so nicht ...
Wieso? 2 Tage nachdem der Kunde in der Wawi erstellt wurde. Ob Shop automatisch oder manuell oder auch von der Hand erstellt spielt dabei keine Rolle.

Eigentlich muß man ja nur prüfen ob der Kunde xxxxx einen Auftrag oder eine Auftragsnummer hat. {{ Vorgang.Rechnungen.ErstesObjekt.Auftrag.Auftragsnummer }} gibt die Rechnungsnummer. Nur wie fragt man nicht nach der Rechnung sondern nach einem Auftrag. Die Rechnung wird ja erst später erstellt.
 

css-umsetzung

Offizieller Service Partner
SPBanner
6. Juli 2011
8.648
2.700
Berlin
Firma
css-umsetzung
Über die Erweiterten Eigenschaften bei der Abfrage dieses hier erstellen und dann prüfen ob das Ergebnis <1 ist Bitte am Ende kein Return nach {{result}}

Code:
{% capture query %}
SELECT COUNT(*) FROM tBestellung WHERE tKunde_kKunde= '{{Vorgang.InterneKundennummer}}'
{% endcapture -%}\
{% assign result = query | DirectQueryScalar %}\
{{ result }}
 

3jojojo

Sehr aktives Mitglied
20. Januar 2016
783
45
Über die Erweiterten Eigenschaften bei der Abfrage dieses hier erstellen und dann prüfen ob das Ergebnis <1 ist Bitte am Ende kein Return nach {{result}}

Code:
{% capture query %}
SELECT COUNT(*) FROM tBestellung WHERE tKunde_kKunde= '{{Vorgang.InterneKundennummer}}'
{% endcapture -%}\
{% assign result = query | DirectQueryScalar %}\
{{ result }}

genial. Klappt super auch mit dem Zeitversatz 😉

Gehe ich Richtig in der Annahme das Select Count die Anzahl der Bestellungen nimmt??
 

3jojojo

Sehr aktives Mitglied
20. Januar 2016
783
45
Kann ich damit auch an die Crosseling Artikel eines Artikels kommen ({{ Vorgang.AuftragsPositionen.Positionen.ErstesObjekt.Artikel.Artikelnummer }} )
Im Prinzip müßte man doch nur die Crosseling Artikel Tabelle nehmen wo die Artikelnummer (oder wohl ID) gleich der des Artikels ({{ Vorgang.AuftragsPositionen.Positionen.ErstesObjekt.Artikel.Artikelnummer }} ) oder hast du ne andere Idee?
 

css-umsetzung

Offizieller Service Partner
SPBanner
6. Juli 2011
8.648
2.700
Berlin
Firma
css-umsetzung
Das ist eine viel komplexere Abfrage sa du an diese Artikel nur über ein join von der crossselling Gruppe kommst und es ja mehrere Gruppen geben kann.

Über die beiden existierenden Query Funktionen kannst du alle in der Datenbank befindlichen Daten abfragen.
 

3jojojo

Sehr aktives Mitglied
20. Januar 2016
783
45

css-umsetzung

Offizieller Service Partner
SPBanner
6. Juli 2011
8.648
2.700
Berlin
Firma
css-umsetzung
@css-umsetzung
Bei mir im Test ist der Wert immer 2 mit deinem Code. Egal was ich auswähle.
Hab ich nen Denkfehler?

ja vermutlich, an der Abfrage ist ja eigentlich nichts außergewöhnliches Ich hatte das bei mir eben extra mit mehreren Kunden gecheckt, es passt immer

@jojojo

Die Abfrage selbst würde dann ja in Etwa so aussehen wobei 482 dann die Artikel ID wäre (Das ist aber nur eine einfache minimalistische Abfrage).

Code:
SELECT tx.kXSellGruppe, ta.* FROM dbo.tXSell AS tx
LEFT JOIN tArtikel AS ta ON ta.kArtikel = tx.kXsellArtikel
WHERE tx.kArtikel=482 ORDER BY tx.kXSellGruppe

Das ganze würde dann so wie hier abgefragt werden, nur eben das du das zusammensetzen des Querys wieder in einem capture machen musst damit du die Variablen übergeben kannst.
https://guide.jtl-software.de/Komplexe_SQL_Abfragen_(DirectQuery)


Ich verstehe nur nicht ganz warum du das möchtest, weil in der Kundenabfrage nutzt dir das nichts in einer Eingehenden Bestellung auch nicht weil da gehört jeweils wieder mehr dazu weil es ja mehr als ein Artikel sein könnte der gekauft wurde.
Das ist also eigentlich nur als Beispiel anzusehen wie man die Crosselling Artikel über die DB auslesen könnte
 

3jojojo

Sehr aktives Mitglied
20. Januar 2016
783
45
ja vermutlich, an der Abfrage ist ja eigentlich nichts außergewöhnliches Ich hatte das bei mir eben extra mit mehreren Kunden gecheckt, es passt immer

@jojojo

Die Abfrage selbst würde dann ja in Etwa so aussehen wobei 482 dann die Artikel ID wäre (Das ist aber nur eine einfache minimalistische Abfrage).

Code:
SELECT tx.kXSellGruppe, ta.* FROM dbo.tXSell AS tx
LEFT JOIN tArtikel AS ta ON ta.kArtikel = tx.kXsellArtikel
WHERE tx.kArtikel=482 ORDER BY tx.kXSellGruppe

Das ganze würde dann so wie hier abgefragt werden, nur eben das du das zusammensetzen des Querys wieder in einem capture machen musst damit du die Variablen übergeben kannst.
https://guide.jtl-software.de/Komplexe_SQL_Abfragen_(DirectQuery)


Ich verstehe nur nicht ganz warum du das möchtest, weil in der Kundenabfrage nutzt dir das nichts in einer Eingehenden Bestellung auch nicht weil da gehört jeweils wieder mehr dazu weil es ja mehr als ein Artikel sein könnte der gekauft wurde.
Das ist also eigentlich nur als Beispiel anzusehen wie man die Crosselling Artikel über die DB auslesen könnte


Danke erstmal für dein Hilfe @css-umsetzung
Code:
{% capture query %}
SELECT tx.kXSellGruppe, ta.* FROM dbo.tXSell AS tx
LEFT JOIN tArtikel AS ta ON ta.kArtikel = tx.kXsellArtikel
WHERE tx.kArtikel='{{ Vorgang.AuftragsPositionen.ArtikelPositionen.ErstesObjekt.Artikel.InterneArtikelnummer }}' ORDER BY tx.kXSellGruppe
{% endcapture -%}\
{% assign result = query | DirectQueryScalar %}\
{{ result }}

habe ich mir jetzt zusammengebaut was 9 als Wert zurück gibt. Ich denke das die Crosseling Gruppe. Wie komme ich damit aber an die jeweiligen Artikel? Also an sagen wir die ersten beiden Artikel aus der Gruppe (Name, Bild)???
 

css-umsetzung

Offizieller Service Partner
SPBanner
6. Juli 2011
8.648
2.700
Berlin
Firma
css-umsetzung
Ich hab doch extra den Link dazu geschrieben, weil es nicht über DirectQueryScalar geht.

Und dann braucgst du wie in dem Beispiel vom Link gezeigt die for schleife.

Dann siehst du auch das du
Vorgang.AuftragsPositionen.ArtikelPositionen.ErstesObjekt.Artikel.InterneArtikelnummer
Verwendest, du hast also aus einer Bestellung nur einen Artikel, auch wenn der Kunde 10 Bestellt hat.
Auch hier müsste dann eine for schleife gebaut werden die aussen herum, um dein capture sitzt.

Darum sagte ich, es ist etwas komplizierter und kann am Ende auch eine recht lange Liste zum Vorschein bringen.
 

3jojojo

Sehr aktives Mitglied
20. Januar 2016
783
45
@css-umsetzung

Vorgang.AuftragsPositionen.ArtikelPositionen.ErstesObjekt.Artikel.InterneArtikelnummer ist schon erstmal okay wenn nur der erste Artikel der Bestellung genommen wird.

Leider kann ich kein SQL und daher fummel ich eher etwas rum wie es zu verstehen auch wenn ich begriffen habe ich das eine Schleife brauche.

Kurz zum vorgehen. Zuerst die Crosseling Gruppe ermitteln mit:
Code:
{% capture query %}
SELECT tx.kXSellGruppe, ta.* FROM dbo.tXSell AS tx
LEFT JOIN tArtikel AS ta ON ta.kArtikel = tx.kXsellArtikel
WHERE tx.kArtikel='{{ Vorgang.AuftragsPositionen.ArtikelPositionen.ErstesObjekt.Artikel.InterneArtikelnummer }}' ORDER BY tx.kXSellGruppe
{% endcapture -%}\
{% assign result = query | DirectQueryScalar %}\
{{ result }}

dann mit der Schleife und
Code:
{{ result }}
die einzelnen Werte ausgeben lassen???
Code:
{% assign Artikel = 'query' | DirectQuery %}
 {% for item in Artikel.Daten %}
 {{ item.cArtNr }}
 {% endfor %}
 

css-umsetzung

Offizieller Service Partner
SPBanner
6. Juli 2011
8.648
2.700
Berlin
Firma
css-umsetzung
Puhhhhhhhhh das geht aber weit über den Forumssupport hinaus, ich sagte ja nicht umsonst das es komplex.
Sagte ich schon wo meine Kaffeekasse steht?

PHP:
{% for item in Vorgang.AuftragsPositionen.ArtikelPositionen %}\
{% capture query %}\
{% assign gruppe = 0 %}\
SELECT txsg.cName as gruppeName, tx.kXSellGruppe,tab.cName, ta.* FROM dbo.tXSell AS tx
LEFT JOIN tArtikel AS ta ON ta.kArtikel = tx.kXsellArtikel
LEFT JOIN tArtikelBeschreibung AS tab on tab.kArtikel = tx.kXsellArtikel AND tab.kSprache=1
LEFT JOIN tXSellGruppe as txsg on txsg.kXSellGruppe = tx.kXSellGruppe AND txsg.kSprache=1
WHERE tx.kArtikel='{{ item.InterneArtikelnummer }}' ORDER BY tx.kXSellGruppe
{% endcapture -%}\
{% assign result = query | DirectQuery %}\
\
{% if result.Daten|Size  > 0 %}\
\
{{ item.Bezeichnung }} :
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{% for artikelItem in result.Daten %}\
{% if artikelItem.kXSellGruppe != gruppe %}\
{% assign gruppe = artikelItem.kXSellGruppe %}\

  {{ artikelItem.gruppeName }}:
{% endif %}\
    {{ artikelItem.cArtNr }} / {{ artikelItem.cName }}
{% endfor %}\


{% endif -%}\
{% endfor %}
 

Ähnliche Themen