MiniShop2. Отдельная доставка для каждой категории
Подскажите, как правильнее реализовать данную задачу.
Есть магазин, в нем есть несколько категории товаров.У каждой категории своя логика обсчета стоимости доставки. При этом если из одной категории более одного товара, то стоимость доставки каждого товара считается отдельно.
Например:
для категории 1 стоимость доставки до 6ти единиц 500р., от 6 до 15ти единиц стоимость 1000р., от 25ти единиц бесплатно.
для категории 2 стоимость доставки до 3х единиц 400р, от 3х до 5ти единиц стоимость 800р.
ну и так далее.
То есть если в корзине мы имеем:
1) товар 1 из категории 1 в количестве 5шт.(Доставка 500р)
2) товар 2 из категории 1 в количестве 9шт.(Доставка 1000р)
3) товар 3 из категории 1 в количестве 29шт.(Доставка 0р)
4) товар 1 из категории 2 в количестве 4шт.(Доставка 800р)
итого стоимость товара + доставка 2300р
Есть магазин, в нем есть несколько категории товаров.У каждой категории своя логика обсчета стоимости доставки. При этом если из одной категории более одного товара, то стоимость доставки каждого товара считается отдельно.
Например:
для категории 1 стоимость доставки до 6ти единиц 500р., от 6 до 15ти единиц стоимость 1000р., от 25ти единиц бесплатно.
для категории 2 стоимость доставки до 3х единиц 400р, от 3х до 5ти единиц стоимость 800р.
ну и так далее.
То есть если в корзине мы имеем:
1) товар 1 из категории 1 в количестве 5шт.(Доставка 500р)
2) товар 2 из категории 1 в количестве 9шт.(Доставка 1000р)
3) товар 3 из категории 1 в количестве 29шт.(Доставка 0р)
4) товар 1 из категории 2 в количестве 4шт.(Доставка 800р)
итого стоимость товара + доставка 2300р
Комментарии: 11
для категории 1 стоимость доставки до 6ти единиц 500р., от 6 до 15ти единиц стоимость 1000р.Всегда думал что чем больше заказываешь тем выгоднее получается. У вас же как то на оборот. Выгоднее оформить несколько маленьких заказов чем один общий
И потом не совсем могу понять для каких целей нужно все товары отделять в отдельные посылки и отправлять одному пользователю в место того что бы сложить все в одну большую посылку и отправить?
Доставка 5 единиц 500р = 100р/ед., за 15 единиц 1000р ~ 66р./ед.
А если вес единицы 300-400 кг, то проблематично отправить консолидированную посылку.
А если вес единицы 300-400 кг, то проблематично отправить консолидированную посылку.
наверно написанием своего класса оформления заказа — msOrderHandler
Тут подробнее — bezumkin.ru/modx/minishop2/classes/804/
Тут подробнее — bezumkin.ru/modx/minishop2/classes/804/
Я просто не очень понимаю, как для каждого отдельного товара доставку привязать.
Написать подробное ТЗ и нанять PHP разработчика.
Да у меня в общем то все готово. Только в этом затык. Если через msOrderHandler точно получится, то я думаю разберусь. Я на самом деле уточнить хотел, через getcost делать, или как то по другому. И да, спасибо вам большое за ваш ценный комментарий :)
Ну а почему не получится? Получаете список товаров, дергаете их категории с ценами за доставку. условные единицы (как прописать уж придумаете). И высчитываете общую стоимость…
Владимир спасибо. Буду реализовывать.
Владимир еще раз спасибо. Все получилось.
Да пожалуйста! )
Можете код приложить, может кому то еще пригодится…
Можете код приложить, может кому то еще пригодится…
class myDelivery extends msDeliveryHandler {
public function getCost(msOrderInterface $order, msDelivery $delivery, $cost=0) {
$totalCostDL=0;
$products=$this->ms2->cart->get();
foreach($products as $product){
$costDL=$this->getPrDlCost($product);
$totalCostDL += $costDL;
}
$cost += $totalCostDL;
return $cost;
}
Ну и функция с логикойprivate function getPrDlCost($product) {
$PrDlCost=1000000;
$pids = $this->modx->getParentIds($product['id'],1);
$PrCategory = $pids[0];
$PrCount = $product[count];
switch ($PrCategory) {
case '67':
if ($PrCount <= 6) $PrDlCost = 1200;
if ($PrCount > 6 && $PrCount <= 15) $PrDlCost = 1700;
if ($PrCount > 15 && $PrCount < 25) $PrDlCost = 3900;
if ($PrCount >= 25) $PrDlCost = 0;
break;
....
}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.