Hallo,
die normale Prämienartikel-Funktion im Shopware-Standard reicht uns nicht aus. Ich habe also ein eigenes Backend-Modul geschrieben. Für die dort abgebildeten Fälle sollen dann bestimmte Prämienartikel im Checkout in den Warenkorb gelegt werden.
Shopware()->Modules()->Basket()->sAddArticle($article["ordernumber"], 1);
soweit, so gut. Da es eine Prämie ist, soll sie natürlich GRATIS sein. Deshalb registriere ich auf das Event
Shopware_Modules_Basket_getPriceForUpdateArticle_FilterPrice
und checke dort, ob es eine Prämie ist. Wenn ja, setze ich den Preis auf 0,00. Aber das geht nicht, da der Preis mindestens 0,01 betragen muss…
Über Gutscheine kann ich es nicht abwickeln, da immer nur ein Gutschein bei Shopware einlösbar ist… das würde sich also bei mehreren Prämien oder Verbindung mit einem “echten” Gutschein in die Quere kommen…
Habe es auch versucht so zu machen wie Shopware mit den Prämienartikeln im Standard
return $this->db->insert(
's_order_basket',
[
'sessionID' => $this->session->get('sessionId'),
'articlename' => trim($premium['articleName'] . ' ' . $premium['additionaltext']),
'articleID' => $premium['articleID'],
'ordernumber' => $number,
'quantity' => 1,
'price' => 0,
'netprice' => 0,
'tax_rate' => 0,
'datum' => new Zend_Date(),
'modus' => 1,
'currencyFactor' => $this->sSYSTEM->sCurrency['factor'],
]
);
… also über Modus = 1 gesteuert. Dieser Artikel fliegt jedoch jedes mal im Checkout-Confirm wieder raus… aber wieso?
Wie kriege ich einen Gratisartikel hin?