wir haben das Shopware-Plugin „Abo-Commerce“ in Shopware 5.2.6 installiert. Produkte gibt es einmal als Einmal-Artikel sowie in den angelegten Abo-Versionen.
Wird ein Produkt als Einmal-Artikel bestellt, fallen Versandkosten an. Wird das Produkt hingegen in einer der angelegten Abo-Möglichkeiten gekauft, sollen die Versandkosten entfallen. Hat jemand eine Idee wie das umzusetzen wäre?
um im Warenkorb abzufragen ob ein Abo-Artikel im Warenkorb liegt müsste zunächst in der Datei /engine/Shopware/Core/sAdmin.php die Funktion sGetDispatchBasket erweitert werden,da dort werden die einzelnen Tabellen gejoint werden und man die s_order_basket_attributes für die Abfrage benötigt. Will man nun eine weitere Tabelle einbinden, kann man dies nach folgendem Schema tun:
LEFT JOIN s_order_basket_attributes yx
ON b.id = yx.basketID
wo genau in der Funktion sGetDispatchBasket sollte man deinen Codeschnipsel einfügen?
Hab es jetzt mal hier eingefügt (s_order_basket_attributes z):
$sql = "
SELECT
MIN(d.instock>=b.quantity) as instock,
MIN(d.instock>=(b.quantity+d.stockmin)) as stockmin,
MIN(a.laststock) as laststock,
SUM(d.weight*b.quantity) as weight,
SUM(IF(a.id,b.quantity,0)) as count_article,
MAX(b.shippingfree) as shippingfree,
SUM(IF(b.modus=0,$amount/b.currencyFactor,0)) as amount,
SUM(IF(b.modus=0,$amount_net/b.currencyFactor,0)) as amount_net,
SUM(CAST(b.price as DECIMAL(10,2))*b.quantity) as amount_display,
MAX(d.length) as `length`,
MAX(d.height) as height,
MAX(d.width) as width,
u.id as userID
$sql_select
FROM s_order_basket b
LEFT JOIN s_order_basket_attributes z
ON b.id = z.basketID
LEFT JOIN s_articles a
ON b.articleID = a.id
AND b.modus = 0
AND b.esdarticle = 0
LEFT JOIN s_articles_details d
ON (d.ordernumber = b.ordernumber)
AND d.articleID = a.id
Wirft aber einen Fehler. Die Spalte wird nicht gefunden: