Кастомный класс доставки. Бесплатно дост. от суммы
Имеется кастомный класс доставки:
Пример, Товар стоимостью 3500р (розничная цена), 3300р (оптовая).
Добавляем 3 наименования.
ИТОГ: в корзине 9900р, доставка бесплатная (по обычной цене сумма получилась 10500)
ВОПРОС: Подскажите, пожалуйста, как сделать, чтобы доставка всегда считалась по оптовой цене?
<?php
class msxxxDeliveryHandler extends msDeliveryHandler{
public function getCost(msOrderInterface $order, msDelivery $delivery, $cost = 0) {
$cart = $this->ms2->cart->status();
$total = $_SESSION['minishop2']['mode_total'];
if ($total<10000) {
$add_price = $delivery->get('price');
if (preg_match('/%$/', $add_price)) {
$add_price = str_replace('%', '', $add_price);
$add_price = $cost / 100 * $add_price;
}
$cost += $add_price;
}
return $cost;
}
}
При достижении суммы корзины свыше 10000, страница обновляется и вся корзина пересчитывается по оптовым ценам. Доставка становится бесплатной (по условию, свыше 10000, доставка бесплатная ). Пример, Товар стоимостью 3500р (розничная цена), 3300р (оптовая).
Добавляем 3 наименования.
ИТОГ: в корзине 9900р, доставка бесплатная (по обычной цене сумма получилась 10500)
ВОПРОС: Подскажите, пожалуйста, как сделать, чтобы доставка всегда считалась по оптовой цене?
Комментарии: 8
Может кто уже сталкивался с таким?)
Расширить класс корзины или плагинами добавить автоматический пересчет стоимости товаров в корзине. Тогда классу доставки не надо будет думать — оптовая или розничная цена в корзине.
Так и есть, я писал об этом:
Как быть?)
При достижении суммы корзины свыше 10000, страница обновляется и вся корзина пересчитывается по оптовым ценам.Но класс доставки видимо считает после пересчета корзины, что там больше 10 т.(по розн. ценам) Хотя по факту меньше.
Как быть?)
Как уменьшается стоимость товаров? При выводе страницы?
Нужно менять стоимость товаров непосредственно в корзине, тогда класс доставки сразу будет получать измененную стоимость.
Нужно менять стоимость товаров непосредственно в корзине, тогда класс доставки сразу будет получать измененную стоимость.
А msDiscount такого не позволяет реализовать? Хороший компонент умеющий многое. Может и это умеет…
Я имею ввиду скидку при достижении определенной цены.
Я имею ввиду скидку при достижении определенной цены.
Нет, там есть личная скидка покупателя на всё, а тут нужно скидку от суммы заказа.
Тут поможет только свой класс заказа. И нужно посмотреть исходники, как именно доставка проверяет стоимость заказа, там были какие-то тонкости вроде флагов $with_cart или как-то так, не помню.
Тут поможет только свой класс заказа. И нужно посмотреть исходники, как именно доставка проверяет стоимость заказа, там были какие-то тонкости вроде флагов $with_cart или как-то так, не помню.
Добрый день.
Подскажите, что не так:
Имеется доставка и необходимо чтобы при определенной сумме заказа менялась стоимость доставки.
Сделал по примеру, общая сумма меняется, при оформлении заказа получается, что общая сумма становится равно 0, а собственно сама доставка становится равной сумме заказа + доставка. нет разграничения. Как правильно сделать кастомилизацию?
Может есть примеры?
Вот что получается: prnt.sc/ahnovc, что не верно.
Подскажите, что не так:
Имеется доставка и необходимо чтобы при определенной сумме заказа менялась стоимость доставки.
Сделал по примеру, общая сумма меняется, при оформлении заказа получается, что общая сумма становится равно 0, а собственно сама доставка становится равной сумме заказа + доставка. нет разграничения. Как правильно сделать кастомилизацию?
Может есть примеры?
<?php
class msxxxDeliveryHandler extends msDeliveryHandler{
public function getCost(msOrderInterface $order, msDelivery $delivery, $cost = 0) {
$cart = $this->ms2->cart->status();
$total = $_SESSION['minishop2']['mode_total'];
if (($cart['total_cost'] >= 0) AND ($cart['total_cost'] <= 1100))
{
$cost = $cart['total_cost'] + 250;
}
if (($cart['total_cost'] >= 1101) AND ($cart['total_cost'] <= 3500))
{
$cost = $cart['total_cost'] + 100;
}
return $cost;
}
}
Вот что получается: prnt.sc/ahnovc, что не верно.
Доброго дня подскажите реализовал ваш пример для бесплатной доставки от суммы, сейчас пытаюсь сделать что бы если город Москва тогда бесплатная доставка а если любой другой то допустим 300 возможно это реализовать с помощью кастомного класса?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.