Минимальная сумма заказа minishop2

Ребята, как сделать минимальную сумму заказа для выбранного способа доставки.
if ($modx->event->name == 'msOnSubmitOrder'){
        if($cart = $order->ms2->cart->status()) {
            if($cart['total_cost'] < 1000) {
                $modx->event->output('Сумма вашего заказа должна превышать 1000 руб!');
            } 
        }
}
Работает этот способ, но независимо от выбранного способа доставки.
Как сделать, например, чтобы если «самовывоз» то нет ограничения по минимальной сумме.
Андрей
14 мая 2020, 12:35
modx.pro
3
1 782
+1

Комментарии: 14

Антон Тарасов
14 мая 2020, 13:23
0
Вам нужно добавить также условие по ID способа доставки, который самовывывоз, чтобы выполнялось только для него. $delivery->get('id')
    Андрей
    14 мая 2020, 13:36
    0
    <?php
    if ($modx->event->name == 'msOnSubmitOrder'){
            if($cart = $order->ms2->cart->status()) {
                if($cart['total_cost'] < 1000 && $delivery->get('id') == 1) {
                    $modx->event->output('Минимальная сумма заказа для выбранного способа доставки 10000 руб!');
                } 
            }
    }
    Не получается.
      Антон Тарасов
      14 мая 2020, 13:42
      0
      неверно.
      if($cart['total_cost'] < 1000 && (1 == $delivery->get('id'))) /*если ID самовывоза=1*/{..}
Sergey (Sentinel)
14 мая 2020, 16:06
0
<?php
if ($modx->event->name == 'msOnSubmitOrder'){
        if($cart = $order->ms2->cart->status()) {
            if($cart['total_cost'] < 1000 || $delivery->get('id') == 'payment_1') {
                $modx->event->output('Минимальная сумма заказа для выбранного способа доставки 10000 руб!');
            } 
        }
}
так попробуй
    Андрей
    14 мая 2020, 16:31
    1
    0
    <?php
    $cart_status = $order->ms2->cart->status();
    $order_status = $order->get();
    
    if ($modx->event->name == 'msOnSubmitOrder'){
        if ($cart_status['total_cost'] < 10000 && $order_status['delivery'] <> 1) {
            $modx->event->output('Минимальная сумма заказа для выбранного способа доставки 10000 рублей!');
        } 
    }
    Вот так получилось.
      Владимир
      29 мая 2020, 12:54
      0
      Здравствуйте, Андрей!
      Подскажите ваш код выше его в сниппет или это плагин. Помогите разобраться, нужно тоже реализовать минимальную сумму при заказе на доставку.
        Андрей
        29 мая 2020, 13:29
        +1
        Плагин на событие
        msOnSubmitOrder
        Создаёшь новый плагин, вешаешь на указанное событие, в коде указываешь свою минимальную сумму и ID способа доставки для которого она действует. В моем примере ограничение минимальной суммы действует для всех доставок кроме самовывоза
        $order_status['delivery'] <> 1
        для конкретного способа доставки будет, например, —
        $order_status['delivery'] == 2
          Владимир
          29 мая 2020, 13:42
          0
          Благодарю, Андрей! Все работает!!!
            Roman
            07 декабря 2022, 11:38
            0
            Попробовал не работает может и за обновления минишопа
              Андрей
              07 декабря 2022, 11:50
              0
              Конечно уже много времени и несколько обновлений назад это было, но вряд-ли в каком-либо из обновлений изменились события или статусы.
              Пробуйте, должно работать.
      Иван Бочкарев
      08 декабря 2020, 09:05
      2
      +1
      Вариант, когда нужно предоставить возможность указать минимальную сумму для клиента в ClientConfig:

      <?php
      $cart_status = $order->ms2->cart->status();
      $order_status = $order->get();
      $min_price_order = $modx->getOption('min_price_order');
      
      if ($modx->event->name == 'msOnSubmitOrder'){
          if ($cart_status['total_cost'] < $min_price_order && $order_status['delivery'] == 2) {
              $modx->event->output('Минимальная сумма заказа для выбранного способа доставки ' . $min_price_order . ' рублей!');
          } 
      }
        Станислав
        28 декабря 2020, 13:39
        1
        0
        Вот еще один способ, только через коллбэки
        <script>
                $(document).ready(function() {
                    miniShop2.Callbacks.add('Order.getcost.response.success', 'Order_submit_response_success', function(responce) {
                        var cost = responce.data['cost'],
                            min_price = {'ms2_order_min_price' | config};
                        if (cost < min_price) {
                            miniShop2.Callbacks.add('Order.submit.before', 'Order_submit_before', function() {
                                miniShop2.Message.error('Недостаточная сумма заказа, заказ отправляется от ' + min_price + ' руб.!');
                                $('#error_message').text('Недостаточная сумма заказа, заказ отправляется от ' + min_price + ' руб.!');
                                return false;
                            });
                        }
                    });
                });
            </script>
          Roman
          07 декабря 2022, 11:36
          0
          Подскажите как правильно подключить Ваш скрипт
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          14