Werden für die eigene Berechnung der Versandkosten noch weitere Parameter oder Datenbank-Spalten benötigt, können diese unter Grundeinstellungen > Versandkosten-Modul eingestellt werden:

Relevante Tabellen für das Versandkosten-Modul sind dabei (Alias mit ->):

s_order_basket -> b
s_articles -> a
s_articles_details -> d
s_articles_attributes -> at
s_core_tax -> t
s_user -> u
s_user_billingaddress -> ub
s_user_shippingaddress -> us

Soll eine Spalte aus seiner Datenbank Tabelle angesprochen werden, so kann dies mit dem Alias erfolgen. Beispielweise zur Berechnung des Gesamtgewichtes der Artikel im Warenkorb:

SUM(COALESCE(b.quantity * d.weight,0)) AS gesamtgewicht

Als Hilfestellung kann hierbei folgende Datenbank-Abfrage verwendet werden:

SELECT * FROM s_order_basket b 
LEFT JOIN s_articles a ON b.articleID = a.id AND
 b.modus = 0 AND b.esdarticle = 0   
LEFT JOIN s_user u ON u.id =? AND u.active = 1   
 LEFT JOIN s_articles_details d ON (d.ordernumber = b.ordernumber)
 AND d.articleID = a.id
 LEFT JOIN s_core_tax t ON t.id = a.taxID
 LEFT JOIN s_articles_attributes at ON at.articledetailsID = d.id
 LEFT JOIN s_user_addresses ub ON ub.user_id = u.id AND ub.id =?
 LEFT JOIN s_user_addresses us ON us.user_id = u.id AND us.id =?
WHERE b.sessionID =?
GROUP BY b.sessionID;

Folgende Aggregatsfunktionen stehen dabei zur Verfügung:

  • COUNT: hier wird eine Anzahl der Elemente zurückgegeben, die durch die Anweisung eingeschränkt wurden
  • SUM: hier wird die Summe aller Werte aus der Ergebnismenge zurückgeliefert
  • AVG: hier wird der Durchschnittswert zurückgegeben
  • MIN: hier wird der kleinste Wert aus der Datenmenge zurückgegeben
  • MAX: hier wird der größte Wert aus der Datenmenge zurückgegeben
  • Zudem können folgende Befehle hilfreich sein:
  • IFNULL(): hier wird eine Variable durch einen anderen Wert ersetzt, sofern dieser NULL ist
  • z.B. IFNULL(us.zipcode,ub.zipcode) um zu prüfen, ob eine Lieferadressen-PLZ vorliegt und ansonsten die PLZ der Rechnungsadresse zu nutzen
  • IF(Bedingung, ja, nein): hier handelt es sich um eine Wenn-Dann-Sonst Verzweigung

zB. IF(d.weight>5,1,0) Wenn das Gewicht größer als 5 ist, wird eine 1 zurückgegeben ansonsten

  • CASE(): dies kann für komplexere Verzweigungen genutzt werden zB. CASE WHEN a.supplierid = 4 THEN 1 WHEN a.supplierid = 5 THEN 2 else 3 END

> Gibt für den Hersteller 4 1, für den Hersteller 5 2 und für alle anderen 3 zurück

  • CURDATE(): Ausgabe des aktuellen Datums

Die Versandkosten können unter Einstellungen > Versandkosten definiert werden

Bei der Einstellung Versandkosten-Berechnung kann zwischen folgenden gewechselt werden:

  • Artikelanzahl: hier können im Tab Versandkosten anhand der Anzahl die Artikel und die Versandkosten angegeben werden
  • Preis: hier können im Tab Versandkosten preisliche Limits bezüglich der Versandkosten gesetzt werden
  • Eigene Berechnung: bei den erweiterten Einstellungen können dann die Felder

Eigene Bedingung und/oder Eigene Berechnung verwendet werden

Hier kann nun auf die im Versandkosten-Modul definierten Werte zugegriffen werden

  • Gewicht: hier richten sich die Versandkosten im Tab Versandkosten anhand der festgelegten Gewichtsangaben

Zusätzlich können im Tab Erweiterte Einstellungen Beschränkungen bezüglich gewisser besonderer Tage, Gewichtsspannen, Preisspannen, Wochentage, Uhrzeitspannen oder Bestände vorgenommen werden.

Wichtig ist zu kontrollieren, ob bei den Ländern und den Zahlarten alle notwendigen Daten hinterlegt sind

Nähere Informationen unter:
https://docs.shopware.com/de/shopware-5-de/versand-und-zahlungsarten/individuelle-versandkosten?category=shopware-5-de/versand-und-zahlungsarten
Showpare-Blog

Bei weiteren Fragen nutzen Sie gerne unser Kontaktformular

Kategorien
Neueste Beiträge