Artikel als Sonderangebot in Warenkorb legen

Hallo,

ich versuche gerade ein Plugin zu schreiben, welches in der Datenbank befindliche Angebote (Werden vorab von außerhalb angelegt) unter dem Warenkorb anzeigt und per Klick auf die entsprechenden Banner die Artikel in den Warenkorb verschiebt.

So weit funktioniert das auch schon, allerdings gibt es dabei einige Probleme deren Lösung mir nicht so recht gelingen will…

  1. Nach dem Hinzufügen vom Artikel in den Warenkorb sollte dieser auch aktualisiert werden, da das Hinzufügen über Ajax realisiert wird bleibt ein Seitenneuladen aus
      - Ich habe das über Timer und location.reload gelöst, schön geht aber anders…

  2. Der über das Banner hinzugefügte Artikel sollte einen vorab definierten Preisnachlass enthalten, beim Hinzufügen konnte ich jedoch keine Möglichkeit entdecken, Shopware disbezüglich auf den Nachlass hinzuweisen…?

  3. Bei diesem Artikel dürfte keine “Anzahl” - Auswahlboxerscheinen, da er wie eine Sonderaktion behandelt werden sollte!

Hier der bislang zusammengebastelte Code:

{extends file='parent:frontend/checkout/cart_footer.tpl'}

{block name='frontend_checkout_cart_footer_element'}

    {$smarty.block.parent}
    
    
        {foreach from=$zusatz_angebote item=angebot}
            
                
                    
                    
                   {if $angebot["hinweistext"] != ""}
                        
                            {$angebot["hinweistext"]|@utf8_encode}
                        
                   {/if}
                    
                
            
        {/foreach}
    
    {$dbquery}
    

{/block}

 

Vielleicht hat ja jemand ein ähnliches Problem schonmal gehabt oder kennt durch Zufall eine Lösung für eines der Probleme?

Alternativ könnte ich vermutlich die Form umbauen und einfach den Warenkorb mit Zusatzparameter neu aufrufen, dann müsste ich den Artikel manuell in s_order_basket schreiben, das Problem mit der Anzahl-Box wäre dadurch aber auch nicht gelöst…

Okay, ich hab das ganze Plugin nun so umgebaut, dass es den Artikel nicht direkt in den Warenkorb schreibt, sondern den Warenkorb neu aufruft und dann über Controller alle nötigen Daten sammelt, diese aufbereitet und dann in “s_order_basket” schreibt.
Leider bringt das auch absolut gar nichts, da Shopware im Warenkorb nicht auf die hinterlegten Warenkorb-Preise zuzugreiffen scheint, sondern wieder die aktuellen Artikelpreise nimmt …

Hat niemand eine Idee?

Mir würde jetzt nur noch einfallen, hierfür einen Gutschein parallel anlegen zu lassen und bei Hinzufügen des Artikels den Gutschein mit in den Warenkorb zu legen… das wäre aber auch mega umständlich und würde das Verwenden eines zusätzlichen (eigentlichen) Gutscheins unterbinden…

Das wird dir helfen: shopware/sBasket.php at 5.3 · shopware/shopware · GitHub

Viele Grüße

Hier gibt es noch ein OpenSource Plugin von Shopware, welches auch die Preise für Artikel manipuliert 

v.a. das hier ist interessant: SwagUserPrice/Hooks.php at master · shopwareLabs/SwagUserPrice · GitHub

 

Ansonsten könnte eine einfachere Umsetzung sein: Wenn Banner geklickt wird Artikel + Gutschein automatisch in den Warenkorb gelegt. Oder du klonst den Artikel und fügst dann den geklonten in den Warenkorb.

Viele Grüße

[@Aquatuning GmbH](http://forum.shopware.com/profile/11752/Aquatuning GmbH „Aquatuning GmbH“)‍ Uhm okay - Ich hab mal drauf geschaut, aber das Update an sich bringt ja auch nicht viel, wenn er bei jedem Aufruf des Warenkorbs die Preise wieder mit den aktuellen Artikelpreisen überschreibt… Da müsste ich mich ja jedes mal wieder durch den Warenkorb kämpfen und meine Preise „nachupdaten“ … Wie es scheint wird mir aber nicht viel übrig bleiben als diese Lösung zumindest mal anzuschauen und den Aufwand abzuschätzen…

 

@simkli‍ Das SwagUserPrice wird nicht helfen, es soll ja generell allen Kunden möglich sein auf den Banner zu klicken und dann ein bestehendes Produkt eben einfach billiger in den Warenkorb zu legen - unabhängig vom Kunden.

Das mit dem Gutschein hatte ich ja auch schon überlegt, aber es wäre eben lästig und würde dem Kunden das Verwenden eines „richtigen“ Gutscheins blockieren.
(Nur je 1 Gutschein pro Bestellung)

Artikel klonen finde ich nun auch nicht so prickelnd… das funktioniert vielleicht einmal, dann denkt niemand mehr daran und bei der nächsten Bestellung legt man dann wieder einen neuen Artikel an anstatt den alten Klon wiederzuverwenden…

@PStadtfeld schrieb:

@simkli‍ Das SwagUserPrice wird nicht helfen, es soll ja generell allen Kunden möglich sein auf den Banner zu klicken und dann ein bestehendes Produkt eben einfach billiger in den Warenkorb zu legen - unabhängig vom Kunden.

Das meinte ich damit auch nicht. Ich meinte, dass du dir den Quellcode ansehen kannst und es auf deinen Fall adaptieren kannst. Schau dir mal den zweiten Link von mir an. 

Dort passiert genau das, was du auch machen musst. Shopware überprüft den Preis jedes Artikels im Warenkorb und überschreibt ihn mit am aktuellen Artikelpreis.
Das SwagUserPrice greift hier ein, frägt ab, ob es ein UserPrice Artikel ist, wenn ja: SwagUserPrice ändert den Preis.

Das ist doch bei dir ähnlich :wink:

Viele Grüße

Wenn du dir meinen Link auf github ein wenig genauer anschaust, dann wirst du sehen, dass das -genau- das ist, was du suchst und -genau- die Probleme löst, von denen du gesprochen hast.

Viele Grüße

@simkli‍ Ich habe nun noch etwas herumprobiert, dabei ist mir denke ich eine umsetzbare Alternative unter gekommen.
Wenn ich bei Klick auf das Banner den Artikel nicht direkt in den Warenkorb lege, sondern die Seite neu lade und den Artikel daraufhin manuell zum Warenkorb per SQL hinzufüge, dann kann ich dem Artikel die gewünschten Preise und Modus 4 (premium?) mitgeben. Das scheint den Artikel als „Bonus/Rabatt/Extra“ auszuzeichnen und schützt vor nachträglicher Preismanipulation durch Warenkorb-Klicks!

Spricht irgendein Grund gegen diese Lösung?

Immerhin erschlägt das wirklich alle Probleme auf einmal wenn es keinen versteckten Haken gibt…

Wenn der Preis bis zum Checkout wirklich nicht geändert wird… Warum nicht? Mir fällt nichts ein, was dagegen spricht :slight_smile:

Vielleicht hat das mal jemand anderes gemacht und meldet sich hier mal

Viele Grüße

Hat nun so weit funktioniert, musste nur noch einen “entfernen” - Button neben die Rabatte packen, aber das war kein großer Aufwand.
Sieht bislang auch alles in Ordnung aus, es muss nichts weiter berechnet werden und man kann den Artikel als Aktion nur einmalig hinzufügen (und die Menge nicht ändern!).

In der Bestellung ist auch die Artikelnummer mit drauf, demnach hat die Warenwirtschaft nachher ebenfalls keine Probleme.

Dennoch danke für die Hilfestellungen, werde mir die Links mal zwischenspeichern, man weiss ja nie wann man die wieder mal braucht.