Shopware ma potężny moduł kosztów wysyłki, który możesz w szczególności interweniować w obliczeniach. W naszym przypadku chcemy zaimplementować następujący scenariusz: Koszty wysyłki na artykuł są wstępnie ustalane na podstawie wagi artykułu (limity wagowe są określone). Tylko w wyjątkowych przypadkach powinno być możliwe ustalenie stałych kosztów wysyłki dla każdej pozycji.
Tabela kosztów wysyłki wygląda następująco:
| Waga | Przytyć | Cena £ |
| 0 kg | <3 kg | 4,99 € |
| 3 kg | <5 kg | 6,90 € |
| 5 kg | <10 kg | 9,50 € |
| 10 kg | <15 kg | 10,90 € |
| 15 kg | <20 kg | 12,90 € |
| 20 kg | <31 kg | 17,90 € |
| 31 kg | <40 kg | 49,90 € |
| od 40 kg | 49,90 € cena podstawowa + 0,59 € za kg |
Na początku możesz wpaść na pomysł, aby wybrać wartość „Waga” w polu „Obliczanie kosztów wysyłki według:” i wprowadzić poniżej odpowiednie limity:

Pojawia się tu kilka problemów: zasada „od 40 kg: 49,90 EUR cena bazowa + 0,59 EUR za kg” nie jest łatwa do wdrożenia, wartości takie jak 2,999 są niedokładne, a opcja przypisywania indywidualnych kosztów wysyłki do każdego przedmiotu jest niedostępna. Aby rozwiązać ten problem, najpierw tworzymy nowe pole tekstowe (np. „attr5”) w Ustawieniach > Przedmioty > Pola tekstowe przedmiotu.:

Teraz wypełnimy to pole wartością w euro dla wszystkich pozycji, dla których powinny być naliczone indywidualne koszty wysyłki. W przypadku liczb dziesiętnych użyj kropki zamiast przecinka.:

Na koniec tworzymy nowy sposób dostawy z ważnymi ustawieniami „Obliczanie kosztów wysyłki według: Obliczenia własne” i „Współczynnik (%): 100”:

Wreszcie w „Ustawieniach zaawansowanych” zapisujemy naszą nową funkcję obliczeniową w „Obliczeniu własnym”:
a359cdf87765551f0706
Ta funkcja pobiera wagę każdego przedmiotu i oblicza cenę. Trzy różne przedmioty o wadze 2,5 kg kosztują 14,97 euro, trzykrotność tego samego przedmiotu o wadze 2,5 kg kosztuje 9,50 euro. Jeśli zamiast tego chcesz przeprowadzić obliczenia na podstawie masy całkowitej (w obu przypadkach wynik wyniesie 9,50 EUR), zmieniasz tylko funkcję obliczeniową w minimalnym stopniu:
a359cdf87765551f0706
Jeśli sprzedawcy mają być również uwzględnieni, musisz uważać na ceny określone w zapytaniu SQL, niezależnie od tego, czy są to ceny netto, czy brutto (w zależności od wartości ustawionych w Ustawieniach podstawowych> Ustawienia sklepu> Grupy klientów> Wprowadź ceny brutto).
Jeśli chcesz uwzględnić także funkcję przedmiotu „Oznacz przedmiot jako bezpłatną wysyłkę” (dla każdego przedmiotu), przejdź do kolumny b.shippingfree i ustaw następującą opcję w „Ustawienia > Koszty wysyłki > Ustawienia zaawansowane > Przedmioty z bezpłatną wysyłką”.:

Z pomocą SQL możesz budować dowolne złożone zapytania. Zaleca się przygotowanie ostatecznego zapytania przy pomocy zmiennych SQL, aby całość była łatwa w utrzymaniu. Poniżej znajduje się przykład bardziej złożonego zapytania, które rozróżnia klientów sklepu i sprzedawców detalicznych, bierze pod uwagę bezpłatną wysyłkę, nalicza tylko koszty wysyłki dla maksymalnego koszyka i wybiera różne skale cenowe (w zależności od marki):
a359cdf87765551f0706