Пара вопросов по 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% от стоимости: ХХ рублей»
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.