Mindestbestellwert - Shopware 6

Hallo,

kann mir jemand weiterhelfen, wie ich einen Mindestbestellwert für den Warenkorb in Shopware 6 realisieren kann? Irgendwie habe ich da ein Brett vor dem Kopf.

In Shopware 5 gab es das wohl noch bei den Kundengruppen.

Meine Überlegung ist, dass mit einer Rule umzusetzen. Es gibt da ja schon eine rule „Cart >= 0“, die man ja problemlos anpassen kann,

Wie aber kann ich zum Beispiel im eigenen Theme im Cart (und im offcanvas cart) dafür sorgen, dass der Button „Weiter zur Kasse“ nicht angezeigt wird, wenn diese rule nicht erfüllt ist?

1 „Gefällt mir“

So, ich habe jetzt obige Idee umgesetzt, etwas quick and dirty, aber es funktioniert zumindest. Für die, die es interessiert:

Im eigenen Theme Plugin (…/custom/plugins/MyTheme/src/Resources/views/storefront/page/checkout/cart/index.html.twig):

{% sw_extends '@Storefront/storefront/page/checkout/cart/index.html.twig' %}
{% set minimumOrderValueReached = false %}
{% for key,value in context.ruleIds %}
	{% if value=='e1378db7808a478f919e0d740d5d6c1a' %}
		{% set minimumOrderValueReached = true %}
	{% endif %}
{% endfor %}
{% block page_checkout_cart %}
	{% if not minimumOrderValueReached %}
		{% sw_include '@Storefront/storefront/utilities/alert.html.twig' with {
			type: "info",
			content: "checkout.minimumOrderValueNotReached"|trans|sw_sanitize
		} %}
	{% endif %}
	{{ parent() }}
{% endblock %}

{% block page_checkout_cart_action_proceed %}
	{% if minimumOrderValueReached %}
		{{ parent() }}
	{% endif %}
{% endblock %}

und in ./custom/plugins/MyTheme/src/Resources/views/storefront/component/checkout/offcanvas-cart.html.twig:

{% sw_extends '@Storefront/storefront/component/checkout/offcanvas-cart.html.twig' %}
{% set minimumOrderValueReached = false %}
{% for key,value in context.ruleIds %}
	{% if value=='e1378db7808a478f919e0d740d5d6c1a' %}
		{% set minimumOrderValueReached = true %}
	{% endif %}
{% endfor %}
{% block component_offcanvas_cart_flashbags %}
	
		{% for type, messages in app.flashes %}
			{% sw_include '@Storefront/storefront/utilities/alert.html.twig' with {
				type: type,
				list: messages
			} %}
		{% endfor %}
		{% if not minimumOrderValueReached %}
			{% sw_include '@Storefront/storefront/utilities/alert.html.twig' with {
				type: "info",
				content: "checkout.minimumOrderValueNotReached"|trans|sw_sanitize
			} %}
		{% endif %}
	
{% endblock %}
{% block component_offcanvas_cart_actions_checkout %}
	{% if minimumOrderValueReached %}
		{{ parent() }}
	{% endif %}
{% endblock %}

Quick & dirty, weil ich die ID der rule (e1378db7808a478f919e0d740d5d6c1a) hier direkt reingesetzt habe.

Im übrigen muss hier noch der Textbaustein „checkout.minimumOrderValueNotReached“ (" Der Mindestbestellwert ist noch nicht erreicht. ") im Backend über Einstellungen => Shop => Textbausteine erzeugt werden.

6 „Gefällt mir“

Oh, Oh!

Tja, immer nach dem SW Motto warum einfach wenn´s auch kompliziert geht.

Mindestbestellwert Funktion ist Kinderkram für jeden prof. Shop und sollte in der Basis funktionsfähig bereit stehen. Aber nö, lieber ein Rule Spagat austesten, ein Plugin kaufen (bis dann irgendwann die 4 Dutzend o.m. erreicht sind und alles im Kompa-Chaos endet und Updates künstlich verzögert werden), oder eben Programmierkentnisse ausprobieren und vertiefen ;-).

 

Hallo,

kann man das nun über den Rule  Builder abbilden oder wie? Würde auch gerne einen Mindestbestellwert in SW 6 einrichten. Das müsste doch in den Basics einstellbar sein. Kann doch nicht sein, dass man dies programmieren muss??

A: programmieren (lassen)

B: Rule Builder Spagat ausprobieren (keine Ahnung ob´s mit min. SW V 6.3.4.1 geht, nicht gestestet weil null Zeit)

C: Plugin kaufen (mit ggf. allen Vor- und Nachteilen). Habe ich so gemacht, und es funktioniert, Link: Pseudo Artikel nach Bedingungen automatisch in den Warenkorb (Pseudo Produkt) | Bestellprozess (Checkout) | Erweiterungen | Shopware Community Store

1 „Gefällt mir“

Danke, das sollte meiner Meinung nach über den Rule Builder gehen, aber keine gescheite Anleitung oder ein Beispielt dafür seitens Shopware. Drin ist es ja im Rule Builder aber wie genau die Konfig aussieht ist nirgends geschrieben.

über den RuelBuilder geht es nicht - ich hab’s zumindest nicht geschafft (was nicht heißt, dass es trotzdem gehen könnte).

Ich würde das Template bearbeiten, wie weiter oben beschrieben.
Du kannst es etwas variieren, wenn du möchtest, aber von der Vorgehensweise ist es im Prinzip wie dort aufgeführt.

Unabhängig davon, sollte ein Mindestbestellwert eigentlich in einem Shopsystem per default vorhanden sein.
Ist ja von der Umsetzung her nun wirklich eine banale Anforderung.

 

Könnte man das auch in Abhängigkeiten von PLZen machen? 

 

 

@klaks schrieb:

So, ich habe jetzt obige Idee umgesetzt, etwas quick and dirty, aber es funktioniert zumindest. Für die, die es interessiert:

Im eigenen Theme Plugin (…/custom/plugins/MyTheme/src/Resources/views/storefront/page/checkout/cart/index.html.twig):

{% sw_extends ‚@Storefront/storefront/page/checkout/cart/index.html.twig‘ %}
{% set minimumOrderValueReached = false %}
{% for key,value in context.ruleIds %}
{% if value==‚e1378db7808a478f919e0d740d5d6c1a‘ %}
{% set minimumOrderValueReached = true %}
{% endif %}
{% endfor %}
{% block page_checkout_cart %}
{% if not minimumOrderValueReached %}
{% sw_include ‚@Storefront/storefront/utilities/alert.html.twig‘ with {
type: „info“,
content: „checkout.minimumOrderValueNotReached“|trans|sw_sanitize
} %}
{% endif %}
{{ parent() }}
{% endblock %}

{% block page_checkout_cart_action_proceed %}
{% if minimumOrderValueReached %}
{{ parent() }}
{% endif %}
{% endblock %}

und in ./custom/plugins/MyTheme/src/Resources/views/storefront/component/checkout/offcanvas-cart.html.twig:

{% sw_extends ‚@Storefront/storefront/component/checkout/offcanvas-cart.html.twig‘ %}
{% set minimumOrderValueReached = false %}
{% for key,value in context.ruleIds %}
{% if value==‚e1378db7808a478f919e0d740d5d6c1a‘ %}
{% set minimumOrderValueReached = true %}
{% endif %}
{% endfor %}
{% block component_offcanvas_cart_flashbags %}

{% for type, messages in app.flashes %}
{% sw_include ‚@Storefront/storefront/utilities/alert.html.twig‘ with {
type: type,
list: messages
} %}
{% endfor %}
{% if not minimumOrderValueReached %}
{% sw_include ‚@Storefront/storefront/utilities/alert.html.twig‘ with {
type: „info“,
content: „checkout.minimumOrderValueNotReached“|trans|sw_sanitize
} %}
{% endif %}

{% endblock %}
{% block component_offcanvas_cart_actions_checkout %}
{% if minimumOrderValueReached %}
{{ parent() }}
{% endif %}
{% endblock %}

Quick & dirty, weil ich die ID der rule (e1378db7808a478f919e0d740d5d6c1a) hier direkt reingesetzt habe.

Im übrigen muss hier noch der Textbaustein „checkout.minimumOrderValueNotReached“ (" Der Mindestbestellwert ist noch nicht erreicht. ") im Backend über Einstellungen => Shop => Textbausteine erzeugt werden.

Hallo, hat sich hier inzwischen irgendetwas getan? Gibt es inzwischen eine Möglichkeit, einen Mindestbestellwert anzulegen, ohne das man gleich ein PlugIn kaufen oder programmieren muss?

Servus,
habe heute erst upgedatet, vielleicht bekommt man das mit dem neuen Flow Builder hin?!
Ansonsten finde ich das auch komisch, für so grundlegende Funktionen eine App kaufen zu müssen,
was ich aber gemacht habe.

„Ansonsten finde ich das auch komisch, für so grundlegende Funktionen eine App kaufen zu müssen,
was ich aber gemacht habe“

Wird wohl zähneknirschend das einfachste werden… :roll_eyes: :grimacing:

Ich habe im Rulebuilder die Bedingungen Warenkorbwert Größer/gleich „X“ gewählt, die jeweilige Kundengruppe und dann eben bei Einstellungen → Zahlarten, einer Zahlart beigefügt. Sollte so klappen.

Ich habe das ähnlich gelöst nur mit den Versand Arten. Ist Betrag unter x versandt aus…
Stellt man Vorkasse aus kommt der Hinweis „für Ihre Methode gesperrt“ dies habe ich über die Textbausteine angepasst mit Mindestbestellwert noch nicht erreicht.

Funktioniert halt nur, wenn mann generell einen Mindestbestellwert nutzt. An die kundengruooen habe ich gar nicht gedacht. Aber dann müsste man ja bei unterschiedlichen moq die Nutzer auf verschiedene Kundengruppen zuweisen. Könnte aber ne gute Lösung sein, wenn man Gross Kunden und normale Kunden trennen möchte

Vielen Dank klaks!

Kannst du noch zeigen wie bzw. was du in deiner Rule eingestellt hast?
Hilfreich wäre natürlich zu zeigen, wie hoch der Mindestbestellwert ist - oder mache ich das am Besten über den Textbaustein?

Hab leider keinen Zugriff mehr auf meinen klaks-Account. Deshalb hier drüber.
Das im Bild ist die Rule, deren ID ich im Code oben eingesetzt habe. Die ID bekommst Du aus der Datenbank, Tabelle rule.

Durch eine Rule Betrag unter x Zahldienste ausblenden.
Text von: Diese Zahlart ist für Gesperrt umändern in Mindestbestellwert von X nicht erreicht.

So hab ichs gemacht klappt wunderbar…
Ohne Spagat nicht Dirty und nix Kollabiert evtl durch Plugins

Hi. Kannst du eventuell sagen, wie du das gemacht hast?
Irgendwie finde ich nicht, wie ich Zahldienst ausblenden kann.

Vielen Dank

Danke für die Codeschnipsel, ich würde unbedingt noch folgendes ergänzen:

{% sw_extends '@Storefront/storefront/page/checkout/confirm/index.html.twig' %}

{% set minimumOrderValueReached = false %}
{% for key,value in context.ruleIds %}
	{% if value=='e1378db7808a478f919e0d740d5d6c1a' %}
		{% set minimumOrderValueReached = true %}
	{% endif %}
{% endfor %}
{% block page_checkout_aside_actions %}
    {% if not minimumOrderValueReached %}
		{% sw_include '@Storefront/storefront/utilities/alert.html.twig' with {
			type: "info",
			content: "checkout.minimumOrderValueNotReached"|trans|sw_sanitize
		} %}
	{% else %}
	    {{ parent() }}
	{% endif %}
{% endblock %}

Denn sonst kann ein Kunde, der die URL des Checkouts kennt (was nicht so schwierig ist), die „Sperre“ umgehen

1 „Gefällt mir“

Hallo zusammen,

wir stolpern auch gerade über das Thema. Es gibt nur die Zahlungsmethode Vorkasse und diese hat eine Bedingung das die Zwischensumme >= 70 sein muss… er wirft im Warenkorb auch einen Fehler das die Zahlungsart nicht verfügbar ist, ABER man kann das ignorieren und trotzdem die Bestellung abschicken?!? Ist das bei euch anders?