Пара вопросов по miniShop2
- Подскажите, как сделать, чтобы из поля Вес не вырезались символы? — нужно чтобы была возможность указывать вес через слеш.
 - Как указать для самовывоза доп.стоимость -15%? Сейчас можно либо число указать с минусом, либо положительное число в процентах. Но нужно, чтобы, когда пользователь выбирает самовывоз — цена уменьшалась на 15%.
 
Комментарии: 5
                никто не делал скидку на самовывоз что ли?            
                    
                2) Это ошибка MS2 при сохранении свойств доставки. Когда-то столкнулся, но PR не подготовил, причин уже не помню. Надеюсь, Василий добавит исправление в MS2.
В файлах /core/components/minishop2/processors/mgr/settings/delivery/create.class.php и /core/components/minishop2/processors/mgr/settings/delivery/update.class.php блок
                    В файлах /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);
            }
        }После этого минусовой процент начнет правильно сохраняться, а обработка такого значения в остальных местах происходит корректно.            
                Спасибо, всё работает!            
                    
                Как отобразить скидку на самовывоз в карточке заказа в админке и в уведомлении письмом менеджеру сайта, а также вывести на странице оформления заказа?
Так чтобы брать из поля настроек способа доставки (сегодня могут поставить -15%, а завтра поставят -12% — хотелось бы брать установленное значение скидки из настроек доставки из поля Доп. Стоимость — в обработчике msdeliveryhandler.class.php это судя по всему берется с помощью $delivery->get('price'))
                    Так чтобы брать из поля настроек способа доставки (сегодня могут поставить -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;
    }            
                Нужен не просто стоимость доставки который выводится через "
Хотим выводить что вроде «Скидка при самовывозе -15% от стоимости: ХХ рублей»
                    Стоимость доставки: {$total.delivery_cost}", а именно величина скидки/наценки от стоимости в зависимости от выбранного способа доставки, которое задается из настроек способа доставки из поля «Доп. Стоимость». В этом поле «Доп. Стоимость» значение может задаваться как абсолютом, так и в процентах, в том числе и с минусом (таким образом получим Скидку при выборе способа доставки.Хотим выводить что вроде «Скидка при самовывозе -15% от стоимости: ХХ рублей»
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.