Ich hasse Versandkosteneinstellungen

Versandkosteneinstellungen gehen mir so etwas auf den Sack, weil ich jedes mal aufs neue damit auf die Fresse fliege. Das ist echt nicht mein Thema. Vielleicht kann ja jemand dieses mal mir auf die Sprünge helfen. Es geht nicht um die Darstellung der Versandkosten sondern um die Auswahl der Versandart im Warenkorb.

Gegeben:

  • DHL-Versand
  • Briefversand

Soll-Zustand:

  • Artikel mit Briefversand sollen Versandart Briefversand bekommen (geht bisher auch)
  • normale Artikel mit DHL-Versand (geht auch)
  • bei Mischkorb soll der Briefversand nicht angeboten werden, sondern nur noch DHL-Versand (geht nicht)

Einstellen:

  • Artikel Attribut Freitextfeld attr4 mit Dezimaleingabe für Briefversand

  • Grundeinstellungen Versand-Modul

    MIN(at.attr4) AS brief, MAX(at.attr4) AS mischkorb

Einstellungen Briefversand:

  • eigene Berechnung
  • Faktor 100%
  • Eigene Bedingung: brief
  • Eigende Berechnung: MAX(at.attr4)

Einstellungen DHL-Versand:

  • normale Versandkosten
  • Eigene Bedingung: !brief

Diese Einstellungen scheinen aber nicht korrekt zu sein.

Lege ich eine Artikel mit Briefversand in den Warenkorb, wird dieser auch korrekt angezeigt. Lege ich einen normalen Artikel in den Warenkorb dann wird DHL-Versand angezeigt. Lege ich beide Artikel in den Warenkorb habe ich aktuell nur noch Briefversand, der DHL-Versand wird nicht angeboten.

Wie bereits erwähnt, dass ich echt nicht mein Thema, aber vielleicht sieht jemand die Fehler und hätte eine Idee :slight_smile:

 

Ich glaube, das funktioniert so nicht – allerdings bin ich jetzt auch nicht der Meister der Versandkosteneinstellungen. Meiner Meinung nach scheitert es hier daran, dass attr4 sowohl die Steuerung übernehmen soll, dass es Briefversand ist, wie auch für die Berechnung der Portokosten herangezogen wird. (Wie ist das eigentlich gedacht? Steht da eine Zahl X drin, die dann mit dem Porto multipliziert wird? An der Stelle blicke ich nicht ganz durch.)

Mit einer Checkbox ist es relativ einfach:

MIN(at.attr4) = 1 AS brief

Damit kann man dann einfach auf brief und !brief abfragen. (Nutzen wir so in der Art für Gutscheine.)

Hm, mit Checkbox müsste ich mal testen. Ja der Kunde kann dann über attr4 seinen Betrag frei je anch Artikel einstellen.

Ne geht auch nicht, wenn ich bei DHL-Versand dann !brief eintrage, habe ich bei gemischten Artikel gar kein DHL-Versand mehr.

Merkwürdig. Genau diese Konstellation funktioniert bei uns. Hast Du noch den Teil mit “MAX(at.attr4) AS mischkorb” drin? Der müsste natürlich raus, wenn attr4 die Checkbox ist.

Hm, ich teste

Konstellation:

nur noch MIN(at.attr4) = 1 AS brief

Briefversand: brief
DHL-Versand: !brief

Nur Brief-Artikel => ok
Nur normaler Artikel DHL => ok
Beides Zusammen => nur Briefversand, nicht ok

 

EDIT: Sorry … das mit den Grundeinstellungen hattest Du ja geschrieben.

So ganz verstehe ich noch nicht, warum es nicht geht. Ich prüfe noch mal bei uns, ob da irgendwas anders eingestellt ist.

Beides sind Standard-Versandarten? Sind die Briefsendungen “versandkostenfreie Artikel”? (Ist bei DHL entsprechend “unterstützen” angehakt?)

Ich habe es bei uns auch noch mal im Frontend geprüft – nur, um sicher zu gehen. Gemischte Warenkörbe stellen kein Problem dar.

Versandkostenfreie Artikel gibt es gar nicht.

Szenarien Warenkorb (soll):

Wenn 1 Artikel mit Briefversand, dann auch nur Briefversand anzeigen.
Wenn 1 normaler Artikel, dann nur DHL-Versand anzeigen.
Wenn gemischt, dann ebenfalls nur DHL-Versand anzeigen (ohne Briefversand).

Freitextfeld attr4 als Checkbox

Grundeinstellungen Versand Modul:

MIN(at.attr4) AS brief, MAX(at.attr4) AS mischkorb

Versandart Brief (Standard Versandart):

Versandkosten: Eigene Berechnung
Eigene Bedingungen: brief && mischkorb
Eigene Berechnungen: 1.50

Versandart DHL (Standard Versandart):

Versandkosten: Preis
Eigene Bedingungen: !brief

Resultat bei Mischkorb:

Es wird nur Briefversand angezeigt. Es soll jedoch nur DHL-Versand zu sehen sein.

 

So ergibt das mit der Grundeinstellung und den Bedingungen meiner Meinung nach keinen Sinn (brief && mischkorb -> Wieso?). Was ist attr4 denn jetzt für ein Feld und was für Werte stehen drin?

Meiner Meinung nach ist Dein Fall analog zu diesem Beispiel im Handbuch zu sehen: Shopware 5 - Versand- & Zahlungsarten - Individuelle Versandkosten

Das Beispiel mit den Mischwarenkörben darüber ist eher etwas, wenn man Artikel mit z.B. Paketversand und Speditionsversand in einem Warenkorb hat und dann beide Versandarten berechnen möchte.

attr4 ist jetzt wie oben beschreiben eine Checkbox, soll jedoch später ein Eingabefeld sein. Bei einem Test-Artikel ist dieser angeklickt.

Die Sache mit dem Mischkorb ist schon wichtig, denn wenn im Warenkorb ein Artikel liegt, der nur als Paket versendet werden kann, dann darf hier nicht als Auswahl Briefversand stehen - was ja auch zudem unterschiedliche Versandkosten mit sich bringt.

Im Klartext, wenn man nur eine Dichtung kauft dann wird diese als Brief versendet. Wenn man Motorteile kauft, dann werden diese mit DHL versendet. Wenn alles beides verkauft wird, dass soll auch alles über DHL versendet werden. Nicht extra, sonst hat der Kunde zusätzliche Versandkosten - das soll so nicht sein.

Den Link kenne ich, hat mich aber bei diesem Mist hier nicht weiter gebracht. Denn bei Mischprodukten fliegt der DHL-Versand raus und genau das soll nicht sein. Hier gibt es keine Versandkosten freie Artikel!

Also wenn du drei Cases hast, brauchst du auch drei Versandarten:

  • DHL (nur für DHL Produkte) !brief

  • Briefversand (nur für Brief Produkte) brief

  • DHL (nur für Mischversand)

 

Nach meinem Verständnis wäre das die einfachste Lösung.

 

Hm, macht die Sache nicht einfacher.

Brief: brief
DHL normal: !brief
DHL mischkorb: brief && mischkorb

Das passt auch nicht. Wenn ich beides im Waremkorb habe, bleibt nur der Briefversand zu auswahl. DHL xyz ist weg.

Hi,

Frage in der SQL min(brief) ab und gebe den Wert zurück. wenn 0 , dann hast du einen Mischkorb ansonsten einen Briefversand

Als zweite SQL Abfrage machst du einen Count auf die im Warenkorb enthaltenen Artikel und ein SUM auf brief. Dann lässt du dir dort 0 oder 1 zurückgeben in der Abhängigkeit dazu ob SUM < COUNT ist.

Oder du machst zwei einzelne Abfragen und für SUM und COUNT und machst im Bedingungfeld vom DHL Versand den Vergleich.

Ich hoffe man versteht was ich meine :slight_smile:

Gruß
Stefan

 

2 „Gefällt mir“

Ich kann es nur wiederholen: Wir haben eine Lösung, die analog zum Beispiel im Handbuch mit den versandkostenfreien Artikeln ist. Wir bilden darüber aber die Einkaufsgutscheine ab – auch mit Mischwarenkörben. DHL (und andere) haben bei uns entsprechend !wasauchimmer und nur der Gutscheinversand (das wäre dann bei Dir Briefversand) hat wasauchimmer als Bedingung.

Und es funktioniert so:

  • Nur Gutschein -> Gutschein-Versand
  • andere Artikel -> DHL (oder andere)
  • Mischwarenkorb -> DHL (oder andere)

Wir arbeiten nicht mit einer Variablen für Mischwarenkörbe, sondern nur mit der einen, die Gutscheine identifiziert. Das klappt deshalb, weil die Bedindung (aus Dein Beispiel gemünzt) so aussieht:

MIN(at.attr4) = 1 AS brief

Erklärung: MIN(X) sucht den kleinsten Wert aller Artikel im Warenkorb. Liegen Artikel im Warenkorb, bei denen die Checkbox nicht gesetzt ist, erhält man als kleinsten Wert “0”. Damit gibt die Abfrage an dieser Stelle “false” aus. Liegen nur Einkaufsgutscheine im Warenkorb, ist das Minimum “1” und die Abfrage ergibt “true”.

Heißt also: brief ist true bei Warenkörben mit ausschließlich Gutscheinen (bei Dir: Briefsendungsartikel), und false bei allen anderen Warenkorbzusammensetzungen. Daher reicht auch diese eine Variable und die einfache Bedingung brief bzw. !brief.

1 „Gefällt mir“

Ne, ne, ne ich komme hier auf keinen grünen Nenner. Schon über 5 Stunden für den Mist verbraten :frowning:

Ich kann Dir „von extern“ auch nicht weiter helfen, als bereits getan. Wo der Fehler liegt, kann man wohl nur noch herausfinden, wenn man es sich direkt im System ansieht.

Mach doch mal ein Ticket bei Shopware auf.

Und was habt ihr das eigene Bedingungen bei den Versandarten eingestellt? Denn nach deinem Prinzip geht das bei mir nicht.