Website Updates für deinen Erfolg

Website Update Informationen direkt in deinen Posteingang. Nie mehr ein Update oder Sicherheitsproblem übersehen. Dieser Service ist kostenlos. Mit einem Klick bist du angemeldet - jetzt Newsletter abonnieren.
Email Adresse

Mengenbasierter Rabatt mit Drupal Commerce

Das Problem

Ich möchte in meinen Shop, welcher T-Shirts verkauft, einen Mengenbasierten Rabatt auf spezielle Produkte konfigurieren.

Konkret soll folgendes Beispiel umgesetzt werden:

Produkt | Menge | Preis

Schwarzes T-Shirt, Größe M | 1 Stück | 17,50 EUR

Schwarzes T-Shirt, Größe M| 2 Stück | 30,00 EUR

Schwarzes T-Shirt, Größe M| 3 Stück | 40,00 EUR

Aktuelle technische Basis

Der Shop ist auf Basis von

  • Drupal und
  • Drupal Commerce Kickstart (Version 7.x-1.8) aufgesetzt.

Zusätzlich sind u.a. folgende Module installiert

  • Commerce Discount (7.x.-1.0-alpha3)
  • Price (7.x-1.8)

Lösungsmöglichkeiten

Das von Drupal Commerce bereitgestellte Systeme zur Erstellung von Preisbasierten Regeln in Kombination mit dem Discount Modul sollte es auf den ersten Blick einfach ermöglichen, mengenbasierte Rabatte auf Produkte zu ermöglichen. Nach einigen Stunden Recherche und zahlreicher Versuche aber die Erkenntnis: mit den Bordmitteln klappt das nicht. Es lohnte sich auch nicht, weitere Stunden zu verschwenden um durch Zufall noch eine funktionierende Konfiguration zu erzielen.

Ein kurzer Lichtblick in meiner Recherche war das Modul “Price Table” welches den Anschein erweckte, das Problem zu lösen. Kurz nach der Installation aber wieder die ernüchternde Erkenntnis: es bringt den Shop zum Stillstand oder verlangsamt ihn drastisch. Abgesehen davon bietet das Modul aber nicht die gewünschte Flexibilität: ich kann entweder für ALLE Produkte nun mengenbasierte Rabatte konfigurieren, oder eben nicht. Ich hätte es gerne aber nur für BESTIMMTE Produkte.

Fazit:

Es ist also nicht auf einfache Art und Weise möglich, den Mengenbasierten Rabatt für bestimmte Produkte mit den Hausmitteln von Drupal umzusetzen. Den Ärger darüber haben auch bestehende Kunden bereits hier geäußert: https://drupalcommerce.org/discussions/789/rules-commerce-stock-how-set-quantity-based-discounts-drupal-commerce (siehe Kommentar ganz unten von vor wenigen Tagen).

Tatsächlich umgesetzte Lösung

Nicht zufrieden mit der aktuellen Situation experimentierte ich weiter mit dem Preisbasierten Regelsystem in Kombination mit dem Discount Modul. Schlussendlich gelang es mir, eine Näherungslösung zu finden, mit der der Kunde einverstanden war und die sich innerhalb eines Kosteneffizienten Rahmens umsetzen lässt.
In 3 Schritten zur Lösung:

  1. Discount für den Staffelrabatt (je einen für 2 Stück und 3 Stück günstiger) anlegen
  2. Zusätzlich über die Preisregeln die Einstellung für mehr Produktvarianten einstellen
  3. Testen. Fertig!

1. Discount für den ersten Staffelrabatt (2 Stück günstiger) anlegen

Im Administrationsbereich unter “Store settings” -> “Discounts” einen neuen Rabatt anlegen:

Welches Produkt man hier auswählt ist irrelevant, da es später in der Preisregel exakt spezifiziert wird (und es damit die hier getroffene Einstellung überschreibt):

2. Zusätzlich über die Preisregeln die Einstellung für mehr Produktvarianten einstellen

Im Administrationsbereicht unter “Store settings” -> “Pricing rules” die Preisregel (welche automatisch angelegt wird basierend auf dem zuvor erstellten Rabatt) anpassen:

Preisregel editieren:

Die Preisregel besteht aus folgenden Elementen:

Kümmern wir uns um die Conditions. Die erste Condition “Line item contains a specific product” regelt uns, für welche Produkte der Rabatt gewährt werden soll. Wir haben folgende Produkte basierend auf dem Produkttitel konfiguriert. Der Vorteil ist, dass man hier mehrere beliebige Produkte einfach angeben kann ohne jeweils eine neue Regel erstellen zu müssen. (Und ja ich weiss, ich sollte ein Security update installieren, aber es handelt sich hier nur um ein lokales Testsystem ;-))

Als zweite Condition habe ich eine “Data comparison” ergänzt. Mithilfe solcher Bedingungen kann man einfach auf Basis der existierenden Felder Vergleiche durchführen. Wir nutzen das um die Bestellmenge im Warenkorb zu prüfen. Der Rabatt soll ja “nur” bei 2 Stück eines bestimmten Produkts gewährt werden:

Das Ergebnis sollte dann ungefähr folgendermaßen aussehen:

Damit haben wir die Regel für 1 und 2 Stück des Produkts konfiguriert. Um das nun auch noch für 3 Stück durchzuführen, sind die Schritte 1 und 2 einfach mit einem anderen Rabatt und Menge durchzuführen. Fertig!

3. Testen

Testfall 1: passendes Produkt im Warenkorb, 1 Stück

Erwartetes Testergebnis: kein Rabatt, PASSED

Testfall 2: passendes Produkt im Warenkorb, 2 Stück

Erwartetes Testergebnis: Rabatt für 2 Stück wird abgezogen, PASSED

Testfall 3: passendes Produkt im Warenkorb, 3 Stück

Erwartetes Testergebnis: Rabatt für 3 Stück wird abgezogen, PASSED

Testfall 4: 3 Stück vom passendes Produkt und 1 zusätzliches Produkt im Warenkorb

Erwartetes Testergebnis: Rabatt für 3 Stück wird nur vom passenden Produkt abgezogen, PASSED

Testfall 5: 2 Stück vom passendes Produkt in Variation schwarz und 2 Stück vom passenden Produkt in Variation weiss und 1 zusätzliches Produkt im Warenkorb

Erwartetes Testergebnis: Rabatt für 2 Stück wird zweimal abgezogen aber nur von den 2 passenden Produkten, nicht aber vom dritten Produkt, PASSED

Testfall 6: Änderungen an Menge oder Produkte führt zu korrekter Neuberechnung des Rabatts

Erwartetes Testergebnis: Rabatt wird nicht mehr abgezogen wenn sich Menge ändert, PASSED

Testfall 6: 1 passendes Produkt in Variation weiss, 1 passendes Produkt in Variation schwarz im Warenkorb

Erwartetes Testergebnis: Rabatt wird nicht mehr abgezogen, da die Preisregel sich nur auf eine Produktzeile bezieht, nicht aber die Summe aller Teile im Warenkorb berücksichtigen kann (hier wird kommt die Einschränkung der Näherungslösung zum Vorschein), PASSED

Alternative Lösungsmöglichkeiten

Es gibt allerdings generell Alternativen für die Lösung des Problems, z.B. in dem auf ein flexibleres bzw. einfacher erweiterbare Shopsystem umgestiegen wird. Ich empfehle hier gerne WordPress in Kombination mit WooCommerce (http://www.woothemes.com/woocommerce/). Das ist soweit kostenlos und bietet viele Plugins an, die diese und andere Probleme besser abbilden können. Beispielsweise gäbe es das Plugin “Dynamic Pricing”, welches den Mengenbasierten Rabatt ermöglichen würde (http://www.woothemes.com/products/dynamic-pricing/).

Es gibt auch zahlreiche Payment Gateway Anbindung (z.B. für Novalnet (http://www.woothemes.com/products/novalnet/ oder Paypal).

Gerne berate ich dich auf dem Weg zu einem einfach wartbaren und gut erweiterbaren Shopsystem, dass deine Wünsche optimal abdeckt. Natürlich mit dem üblichen SICOnet Full-Service: Beratung, Entwicklung und Betreuung aus einer Hand:

Jetzt Beratungstermin vereinbaren

Kunde


better b. good OG / CEOs: Mag. Christine Schlögl, Mag. Pamela Glück
Zum Shop

 

comments powered by Disqus

GET YOUR EMAIL UPDATES

We send out our lovely email newsletter with useful tips and techniques, recent articles and upcoming events. Thousands of readers have signed up already. Get a free WordPress eBook now.
Email Adresse