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 oblicza wagę każdego przedmiotu i jego cenę. Trzy różne przedmioty o wadze 2,5 kg każdy kosztowałyby zatem 14,97 €, a trzy identyczne przedmioty o wadze 2,5 kg każdy – 9,50 €. Aby obliczyć cenę na podstawie wagi całkowitej (co w obu przypadkach daje 9,50 €), wystarczy wprowadzić niewielką korektę w funkcji obliczeniowej.:
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 wziąć pod uwagę funkcję przedmiotu „Oznacz przedmiot jako bezpłatną wysyłkę” (dla każdej pozycji), zaadresuj kolumnę b.shippingfree i ustaw następującą opcję w Ustawienia> Koszty wysyłki> Ustawienia zaawansowane> Bezpłatna wysyłka.:

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