Минимальная сумма заказа 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 309
+1

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

Антон Тарасов
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
          Благодарю, Андрей! Все работает!!!
    Иван Бочкарев
    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>
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        11