Artikel vom Warenkorbrabatt ausschließen

Wie kann mann zum beispiel Bücher( nicht rabattierfähige Artikel) vom Warenkorbrabatt ausschließen ? Hat jemand eine Idee ???

Ich hatte da schon eine ähnliche Frage, möchte nämlich Liveshopping Artikel und Bundles von Gutscheinen und Warenkorbrabatten sowie Prämienartikeln ausschliessen.

Das geht im Moment nicht - du könntest höchstens mit Preisgruppen arbeiten und dort Büchern + anderen Artikeln unterschiedliche Gruppen zu ordnen. Ansonsten sind eure beiden Vorschläge doch guter Input für den “Plugin-Vorschläge” Thread?

1 „Gefällt mir“

Hey Stefan, wo müßte ich ansetzen, um die Liveshopping und Bundle Artikel von den Gutscheinen auszuschliessen?

Keiner einen Denkanstoß?

Das ist nicht so easy - mach doch dafür am besten einen Eintrag auf der Plugin-Wunschliste?http://www.shopware.de/wiki/Plugin-Back … 9_483.html

Ich welcher Datei wird das Ganze denn berechnet? Habe bis jetzt nicht die passende gefunden.

sBasket.php - sAddVoucher - if (!empty($restrictDiscount) && (!empty($restrictedArticles) || !empty($searchHersteller))){ $amount = $this-\>sGetAmountRestrictedArticles($restrictedArticles,$searchHersteller); }else { $amount = $this-\>sGetAmountArticles(); } Du müsstest also eine neue Funktion sGetAmountArticlesVoucherExcludeSpecials anlegen und die statt der Original-Funktion in der AddVoucher aufrufen. public function sGetAmountArticlesVoucherExcludeSpecials (){ return $this-\>sSYSTEM-\>sDB\_CONNECTION-\>GetRow("SELECT SUM(quantity\*(floor(price \* 100 + .55)/100)) AS totalAmount FROM s\_order\_basket WHERE sessionID=? AND modus=0 GROUP BY sessionID",array($this-\>sSYSTEM-\>sSESSION\_ID)); } Dort die SQL-Query so anpassen, dass Liveshopping und Bundle-Artikel aus der Berechnung des Gesamtwerts für den % Rabatt rausgenommen werden

Danke Stefan, in der sql Abfrage müssten jetzt nur noch die Liveshoppingartikel und Bundles ausgeschlossen werden? Steht sGetAmountArticles per default nur für die Berechnung der Gutschein Rabatte?

Nein, das wird von verschiedenen Funktionen benutzt. Deswegen sollst du davon ja eine Kopie / neue Funktion anlegen - damit das keine Seiteneffekte produziert!

Hi Stefan, also das klappt so schon mal, allerdings wird es mit den Bundles wohl etwas komplizierter, da diese im Warenkorb wieder als einzelne Artikel aufgelistet werden und ich so nicht nach bundleID abfragen kann :frowning:

Ich würde mich freuen wenn ich hier noch mal einen kleinen Denkanstoß bekäme, um auch die Bundle Artikel von Gutscheinen ausschliessen zu können. Dann möchte ich bei der Verwendung von Gutscheinen auch keine Prämienartikel anzeigen, wo greife ich da am Besten ein? mfg Frank

Brauche hier dringend etwas Hilfe, zumindest eine Idee wo ich ansetzen kann. Das mit den Prämienartikeln ausschliessen im Falle eines Gutscheins könnte man doch evtl. auch direkt in der checkout/cart machen, falls ich dort nach Gutscheinen abfragen könnte. Danke

Du kannst doch einfach die FUnktion sMarketing > sGetPremiums modifizieren - die liest die Prämien-Artikel aus. Dort würde ich einen Hook-After einbauen, der auf Basis der Session-ID prüft, ob ein Gutschein im Warenkorb liegt. Also: $rueckgabeOriginalFunktion = $args-\>getReturn(); if (Shopware()-\>Db()-\>fetchOne("SELECT id FROM s\_order\_basket WHERE sessionID = ? AND modus = 2 ",array(session\_id())){ $args-\>setReturn(array()); }else { $args-\>setReturn($rueckgabeOriginalFunktion); } Wenn also ein Gutschein im Warenkorb liegt, werden einfach keine Prämien-Artikel zurückgegeben, andernfalls gibt er die Rückgabe der Original-Funktionz urück!

1 „Gefällt mir“

Danke Stefan, das werde ich gleich umsetzen. :thumbup:

Wäre es nicht besser JEDEM Artikel ein FLAG zu spendieren RABATTFÄHIG JA/NEIN. Dann wäre das doch gelöst, oder? so machen es die WaWi´s ja auch alle und dieses Flag dann entsprechend abzufragen?

Hallo Torsten, das macht finde ich nicht immer Sinn. Bei mir geht es darum, auf Liveshopping- sowie Bundleartikel keinen weiteren Rabatt (außer 4% Vorkasse) zu gewähren. Die Bundles setzen sich ja aus einzelnen Artikeln zusammen, die einzeln bestellt ja rabattierfähig sind. Und der Liveshoppingartikel hat nach der Aktionszeit ja auch wieder seinen „normalen“ Preis und ist somit wieder Rabatt fähig. mfg Frank