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
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.)
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.
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?
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!
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 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.
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.