Polskie wsparcie PrestaShop
PrestaShop => Konfiguracja => Wątek zaczęty przez: pzw w Marzec 19, 2015, 10:40:16 am
-
Witam serdecznie,
Konfiguruję sklep dla klienta, gdzie występują przesyłki gabarytowe. W sklepie skonfigurowane jest kilku przewoźników. Ze względu na to, że większość produktów jest dostępna na zamówienie nie można ustalić wagi przesyłki.
Co potrzebuję? Dla jednego z kurierów muszę ustawić stałą kwotę (np. 30zł) dodawaną do kwoty wysyłki każdego produktu z osobna. Musiałoby to działać na zasadzie: jeśli id_kuriera = x to dodaj 30*ilość_produktów w koszyku.
Presta 1.6.0.9
Ma ktoś pomysł jak takie coś wykonać?
Proszę o pomoc i z góry dziękuję.
-
do kazdego produktu mzoesz dodac zw 'dodatkowe koszty wysylki' beda sie one sumwoaly jak powyzej.
-
To nie działa w ten sposób.
Dodatkowe koszty wysyłki będą się naliczać dla każdego przewoźnika, a mnie zależy tylko na jednym.
-
mzoesz wylaczyc w przewoniku doliczanie kosztow dodatkowych. chyba te tez beda niedoliczane... nei wiem nie sprawdzalem, nie bylo okazji ;)
-
Musiałbyś np przerobić moduł płatności podobnie jak ten
http://europasaz.pl/moduly-prestashop/62-platnosc-przy-odbiorze-dodatkowy-koszt.html
i wtedy powiązać kuriera z ta metodą płatności
-
Dzięki za podpowiedzi.
Zacząłem grzebać w classes/cart.php
Znalazłem funkcję getPackageShippingCost zwracającą koszt dostawy. Dodałem w niej warunek, że jeśli jest odpowiednie $carrier->id to zwróć koszt dostawy+odpowiedni warunek.
Brakuje mi tylko zmiennej, w której zawarta jest ilość przedmiotów w koszyku. Nie chodzi mi o ilość różnych artykułów tylko ogólną ilość (quantity)
Wie ktoś która to?
-
Ok, rozwiązałem sprawę.
Dla przyszłych pokoleń:
Modyfikacja na końcu funkcji getPackageShippingCost() w pliku classes/Cart.php
zamień:
return $shipping_cost;
na:
if ($carrier->id == 146){
$ilosc = $this->NbProducts();
return $shipping_cost+30*$ilosc; }
else {
return $shipping_cost;
}
Czyli: jeśli id kuriera ma wartość 146 - wykonaj:
zmiennej $ilość nadałem wartość funkcji NbProducts() - zwraca ona ilość sztuk w koszyku;
i zwróć wartość kosztów przesyłki+30*$ilosc
w przeciwnym wypadku
zwróć wartość kosztów wysyłki niezmienioną.
Działa to też w przypadku, gdy w koszyku jest więcej produktów a któryś z nich nie ma ustawionego kuriera od id = 146. W taki przypadku zwiększa kwotę przesyłki tylko dla produktów, które ten kurier może przewozić.