Пара вопросов по miniShop2

  1. Подскажите, как сделать, чтобы из поля Вес не вырезались символы? — нужно чтобы была возможность указывать вес через слеш.
  2. Как указать для самовывоза доп.стоимость -15%? Сейчас можно либо число указать с минусом, либо положительное число в процентах. Но нужно, чтобы, когда пользователь выбирает самовывоз — цена уменьшалась на 15%.
Александр
25 ноября 2016, 08:39
modx.pro
1
1 991
0

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

Александр
26 ноября 2016, 07:20
0
никто не делал скидку на самовывоз что ли?
    Воеводский Михаил
    26 ноября 2016, 09:15
    4
    +3
    2) Это ошибка MS2 при сохранении свойств доставки. Когда-то столкнулся, но PR не подготовил, причин уже не помню. Надеюсь, Василий добавит исправление в MS2.

    В файлах /core/components/minishop2/processors/mgr/settings/delivery/create.class.php и /core/components/minishop2/processors/mgr/settings/delivery/update.class.php блок
    foreach ($prices as $field) {
                if ($tmp = $this->getProperty($field)) {
                    $tmp = preg_replace(array('#[^0-9%\-,\.]#', '#,#'), array('', '.'), $tmp);
                    if (strpos($tmp, '%') !== false) {
                        $tmp = str_replace('%', '', $tmp) . '%';
                    }
                    if (strpos($tmp, '-') !== false) {
                        $tmp = str_replace('-', '', $tmp) * -1;
                    }
                    if (empty($tmp)) {
                        $tmp = 0;
                    }
                    $this->setProperty($field, $tmp);
                }
            }
    необходимо заменить на следующий:
    foreach ($prices as $field) {
                if ($tmp = $this->getProperty($field)) {
                    $isPercent = false;
                    $tmp = preg_replace(array('#[^0-9%\-,\.]#', '#,#'), array('', '.'), $tmp);
                    if (strpos($tmp, '%') !== false) {
                        $tmp = str_replace('%', '', $tmp) . '%';
                        $isPercent = true;
                    }
                    if (strpos($tmp, '-') !== false) {
                        $tmp = str_replace('-', '', $tmp) * -1;
                        if ($isPercent) {
                            $tmp .= '%';
                        }
                    }
                    if (empty($tmp)) {
                        $tmp = 0;
                    }
                    $this->setProperty($field, $tmp);
                }
            }
    После этого минусовой процент начнет правильно сохраняться, а обработка такого значения в остальных местах происходит корректно.
    Олег Захаров
    04 сентября 2021, 23:40
    1
    0
    Как отобразить скидку на самовывоз в карточке заказа в админке и в уведомлении письмом менеджеру сайта, а также вывести на странице оформления заказа?
    Так чтобы брать из поля настроек способа доставки (сегодня могут поставить -15%, а завтра поставят -12% — хотелось бы брать установленное значение скидки из настроек доставки из поля Доп. Стоимость — в обработчике msdeliveryhandler.class.php это судя по всему берется с помощью $delivery->get('price'))
    public function getCost(msOrderInterface $order, msDelivery $delivery, $cost = 0.0)
        {
           ...
            $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;
        }
      Олег Захаров
      04 сентября 2021, 23:55
      1
      0
      Нужен не просто стоимость доставки который выводится через "
      Стоимость доставки: {$total.delivery_cost}
      ", а именно величина скидки/наценки от стоимости в зависимости от выбранного способа доставки, которое задается из настроек способа доставки из поля «Доп. Стоимость». В этом поле «Доп. Стоимость» значение может задаваться как абсолютом, так и в процентах, в том числе и с минусом (таким образом получим Скидку при выборе способа доставки.
      Хотим выводить что вроде «Скидка при самовывозе -15% от стоимости: ХХ рублей»
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      5