Preisänderung bei Artikel im Warenkorb

Hallo,

ich entwickel gerade ein 5.2 Plugin, dieses benötigt das die Grundvariante nix kostet …

ABER Leider kann ja Shopware keine 0 Euro Artikel und  100% Rabatt via Preisgruppe gilt ja auf den Gesamtpreis

ABER ich hab aufpreispflichtige Optionen diese werden auch korrekt aufgeschlagen

ABER 100% Rabatt vom Gesamtpreis Also wieder bei “Gratis Artikel”

Also wieder weg mit der Preisgruppe und 1-Cent-Artikel anlegen und den dann im Warenkorb abzeihen.

 

Also muss ein Plugin her. “Basic Routing” und Artikel via eigenen Ajax-Request in den Warenkorb legen, hab ich auch hinbekommen aber ich komm beim besten willen nicht an eine vernünftige Quelle um die Artikel im Warenkorb erfolgreich zu manipulieren.

Das Forum/Google hilft da auch nicht weiter Entweder 404 Page not found oder die Shopware Version ist so veraltet das weder Events noch “Aufbau” vom Code funktionieren.

Bräuchte nur 2 Hinweise : Auf welches Event müsste ich mich hängen und wie manipuliere ich erfogreich den Preis von den dingern.

ODER gibt es einen einfacheren Weg an den ich nicht gedacht habe das die Grundvariante umsonst ist und es erst mit Varianten optionen aufschläge gibt.

 

 

 

Soweit ich weiß kann man nur keine 0-Euro-Artikel im Backend anlegen.

In der Datenbank solltest du den Wert dann jedoch auf 0 setzen können und es sollte alles funktionieren.

Müsstest du jedoch erst einmal testen ob das auch stimmt.

das sollte funktionieren, aber dann kann man den artikel nicht mehr bearbeiten, weil shopware dann wegen des preises rummault. @Forever‍ schau mal in sBasket, ich habe was ähnliches mit 1-2 hooks auch gemacht

Den Preis in der Datenbank auf 0 setzen bringt nichts. Würde auch ne Exception im Storefront werfen. In dem Kontext müsste man relativ viel Logik ersetzen um da dran zu kommen.

engine/Shopware/Core/sBasket.php

if (!$price["price"] && !$article["free"]) {
      // No price could acquired
      throw new Enlight_Exception("BASKET-INSERT #01 No price acquired");
}

 

  • Laut dem Codeschnippsel könnte er in der DB $article[“free”] setzen. Und gucken ob das weiterhilft.

 

  • Den Preis kannst Du mit einem Hook an diese Stelle überschreiben:

    sBasket::sUpdateArticle::after

Das würde auch durch den ganzen checkout greifen, allerdings müsste der artikel trotzdem mit mindestens 0,01 cent in der DB vorliegen, damit der obere codeblock nicht greift.