Скидки и услуги

Как должны рассчитываться услуги для товара: от цены со скидкой или от цены до применения всех скидок?

Пусть товар стоит 1000р. Имеется услуга в размере 10% от цены товара, также есть скидка на товар в размере 50%. Какой размер услуги должен быть в заказе? 100р или 50р?

Очень важно услышать мнение Вебасиста.

3 ответа

  • 1
    Михаил Ушенин 21 июня 2021 16:45 #

    Возможны оба варианта в зависимости от того, какое конкретно поведение нужно владельцу магазина. Если есть потребность, то можно реализовать обе возможности на выбор. При реализации важно так построить интерфейс пользователя, чтобы ему было понятно, как именно работает расчёт размера скидки в каждом конкретном случае.

    Проблема с понятностью интерфейса в этой части есть и в Shop-Script: в случае со стандартными купонами не всегда понятно, к чему они применяются: ко всему заказу или к отдельным товарам (это зависит от выбора товаров в настройках купона). Скоро мы исправим этот момент, и использование купонов должно будет стать понятнее.

    • +1
      Гапонов Игорь Гапонов Игорь 21 июня 2021 19:21 #

      В данный момент в Shop-Script доступен один вариант - стоимость услуги рассчитывается от цены без скидки. Это правильное поведение?

      Вот, что я заметил:

      1) Устанавливаем зачеркнутую цену в админке и обычную цену. Стоимость услуги рассчитывается от обычной цены (в корзине и на странице товара).

      2) Устанавливаем акцию через Маркетинг - Акции - Товары и цены. Стоимость услуги рассчитывается от новой цены (в корзине и на странице товара).

      3) Устанавливаем скидку через раздел Маркетинг - Скидки - По сумме заказа. Стоимость услуги рассчитывается от обычной цены (в корзине и на странице товара).

      4) Устанавливаю скидку через свой плагин без изменения цен на витрине. Стоимость услуги рассчитывается от обычной цены (в корзине и на странице товара).

      5) Устанавливаю скидку через свой плагин с изменением цен на витрине: зачеркивается старая цена, цена со скидкой становится в качестве основной. Стоимость услуги рассчитывается от обычной цены (в корзине), НО на странице товара стоимость услуги рассчитывается от цены со скидкой. 

      Как быть с пятым пунктом? Подменять стоимость услуги на странице товара, чтобы расчет был не от новой цены, а от старой?

      Или, если скидка предназначена конкретному товару, тогда стоимость услуги должна рассчитываться от цены со скидкой? И тогда это вопрос Shop-Script. 

      • +1
        Михаил Ушенин Михаил Ушенин 22 июня 2021 10:49 #

        Устанавливаю скидку через свой плагин с изменением цен на витрине: зачеркивается старая цена, цена со скидкой становится в качестве основной. Стоимость услуги рассчитывается от обычной цены (в корзине)

        Насколько я вижу, это необязательно так — зависит от реализации плагина.

        Пример, когда скидка применяется и к товару, и к услуге:

        public function orderCalculateDiscount(&$params)
        {
            return [
                'items' => array_reduce($params['order']['items'], function($result, $item) {
                    $result[] = [
                        'discount' => $item['price'] * 0.1,
                    ];
        
                    return $result;
                }, []),
            ];
        }

        Пример, когда скидка применяется только к товару:

        public function orderCalculateDiscount(&$params)
        {
            return [
                'items' => array_reduce($params['order']['items'], function($result, $item) {
                    if ($item['type'] == 'product') {  //ПРИМЕНЯЕМ СКИДКУ ТОЛЬКО К ТОВАРУ
                        $result[] = [
                            'discount' => $item['price'] * 0.1,
                        ];
                    }
        
                    return $result;
                }, []),
            ];
        }

        НО на странице товара стоимость услуги рассчитывается от цены со скидкой

        Вроде бы это работает наоборот, если используется такой код:

        public function frontendProduct(&$product)
        {
            $product->compare_price = $product->price;
            $product->price *= 0.9;
        }

        Если у вас другая логика, покажите свой упрощённый пример.

        Подменять стоимость услуги на странице товара

        Видимо, да, если вам так нужно.

        Нет какого-то «правильного» варианта — правильный тот, который вам нужен.

Эта тема в архиве. Добавление комментариев к ней отключено.