Hey Sven! @sven6678
Es scheint, dass ihr mehrere Versandtarife habt, die von verschiedenen Faktoren wie Herkunft, Länge und Versandoptionen abhängen, und dass Kunden mehrere Artikel in unterschiedlichen Versandprofilen kaufen können, was zu doppelter Versandkostenberechnung führen kann die sog. Combined Shipping Rates. Wir haben eine Reihe Leitfäden zum Thema Combined Shipping Rates hier in der Community wo das Thema ausführlich besprochen wurde
Um dieses Problem zu lösen, kann man vielleicht die Versandregeln im Shop anpassen oder eben entweder eine Shipping App von Drittanbietern verwenden, die erweiterte Versandregeln und Bedingungslogik im Checkout bieten, oder man kann die Versandregeln mithilfe der Einstellungen manuell einrichten.
Man kann auch Versandtarife basierend auf Gewicht, Bestellwert oder Bestellmenge konfigurieren, um sicherzustellen, dass die Versandkosten korrekt berechnet werden. Wenn beispielsweise der Kunde Artikel aus dem Paketversandprofil und dem Palettenversandprofil auswählt, kann man eine Versandregel erstellen, die besagt, dass der Versandpreis auf das höhere Versandprofil (Palette) beschränkt ist.
Wenn ihr weitere Unterstützung benötigt, empfehle ich entweder einer unserer Shipping Apps wie Better Shipping oder Advanced Shopify Rules zu testen oder einen erfahrenen Shopify-Entwickler engagieren der etwas wie das folgende Beispiel für euch bauen könnte:
Eine eigene DIY Codelösung bauen?
Um das Problem mit doppelt berechneten Versandkosten im Liquid-Code zu lösen, könnte man beispielweise man eine Versandkostenberechnungen im Code bauen bzw. anpassen.
Man muss hier eine Versandkostenberechnungsmethode im Shop verwenden, die auf den Anforderungen deiner Produkte basiert entweder als Gewichtsbasierte, Preisbasierte oder Bestellmengebasierte Versandkostenberechnungsmethode, je nachdem, welche Methode am besten zu euren Produkten passt.
Hier prüft man im Liquid-Code, welche Artikel sich im Warenkorb befinden und welche Versandprofile sie haben. Man kann dann entsprechend die Versandkosten berechnen und sicherstellen, dass der Kunde nur einmal Versandkosten zahlt, selbst wenn er Artikel aus verschiedenen Versandprofilen im Warenkorb hat.
Hier ist ein Beispielcode mit For-Loops und Comments:
{% assign total_weight = 0 %}
{% assign shipping_costs = 0 %}
{% for item in cart.items %}
{% assign product = item.product %}
{% assign weight = product.weight %}
{% assign price = product.price %}
{% assign quantity = item.quantity %}
{% comment %}
Prüfe, ob das Produkt ein Versandprofil hat
{% endcomment %}
{% if product.shipping_profile %}
{% comment %}
Prüfe, ob das Produkt im Warenkorb ist und berechne das Gesamtgewicht
{% endcomment %}
{% assign total_weight = total_weight | plus: (weight * quantity) %}
{% comment %}
Prüfe, ob das Versandprofil im Warenkorb bereits berechnet wurde
{% endcomment %}
{% unless product.shipping_profile | contains: shipping_profile %}
{% assign shipping_profile = product.shipping_profile %}
{% comment %}
Berechne die Versandkosten basierend auf dem Versandprofil
{% endcomment %}
{% if shipping_profile == 'Palette' %}
{% assign shipping_costs = shipping_costs | plus: 10 %}
{% elsif shipping_profile == 'Paketversand' %}
{% assign shipping_costs = shipping_costs | plus: 5 %}
{% elsif shipping_profile == '2-Mann-Handling' %}
{% assign shipping_costs = shipping_costs | plus: 20 %}
{% endif %}
{% endunless %}
{% endif %}
{% endfor %}
{% comment %}
Prüfe, ob das Gesamtgewicht über dem Grenzwert liegt und aktualisiere die Versandkosten
{% endcomment %}
{% if total_weight > 10 %}
{% assign shipping_costs = shipping_costs | plus: 10 %}
{% endif %}
{% comment %}
Zeige die Versandkosten im Warenkorb an
{% endcomment %}
{{ shipping_costs | money }}
Der obige Code überprüft, ob der Warenkorb Produkte enthält, die mit verschiedenen Versandprofilen versendet werden können. Wenn dies der Fall ist, wird eine Funktion calculateShipping aufgerufen, die den korrekten Versandpreis für den Warenkorb berechnet und in der Variablen shipping_price speichert.
Die Funktion calculateShipping wird definiert, um die korrekten Versandkosten für den Warenkorb basierend auf den Versandprofilen der enthaltenen Produkte zu berechnen. Es wird überprüft, welche Versandprofile im Warenkorb vorhanden sind, und die entsprechenden Versandkosten werden addiert.
Schließlich wird die Variable shipping_price zurückgegeben, die den korrekten Versandpreis für den Warenkorb enthält. Wenn die Versandkosten berechnet wurden, werden sie der Variablen total_price hinzugefügt, um den Gesamtbetrag des Warenkorbs einschließlich der Versandkosten zu berechnen.
Es ist zu beachten, dass der Code eine vereinfachte Version ist und wenn du es selber in deinem Shop programmieren möchtest dann bitte immer in einer Themekopie/Testumgebung zuerst testen und zusammen mit einem Experten/Programmierer. Es ist ohne Gewähr und dient lediglich dazu dich in die richtige Richtung zu weisen!
VG,