1 Отредактировано Павел (16.08.2020 15:16:58)

Тема: Минимальное количество товара для заказа только для зарегистрированных

Все хорошего дня. Тема современная.
Подскажите пожалуйста, как и где надо прописать, чтобы Минимальное количество товара для заказа (min_order) отрабатывало в корзине только для авторизованных пользователей  {if $current_user->inGroup('clients')}, а для гостей      (неавторизованные пользователи) это значение игнорировалось.

2

Re: Минимальное количество товара для заказа только для зарегистрированных

Нужно править код ( productamountincart.inc.php ) добавить {if $current_user->inGroup('clients')} в этом месте:

        
        $amount_step = $product->getAmountStep();
        $product_stock = $product->getNum($offer_id);
        $amount_add_to_cart = max($product->getMinOrderQuantity(), $amount_step);
        $is_cart_page = RouterManager::getCurrentRoute()->getId() == 'shop-front-cartpage';
        $cart_amount_options = [
            'productId' => $product['id'],
            'amountStep' => $amount_step,
            'minAmount' => $product->getMinOrderQuantity(),
            'forbidRemoveProducts' => $is_cart_page,
            'forbidChangeRequests' => $is_cart_page,
        ];
        
         if ($shop_config['allow_buy_num_less_min_order'] && $product_stock < $product->getMinOrderQuantity()) {
            $break_point = ($shop_config['allow_buy_all_stock_ignoring_amount_step']) ? $product_stock : floor($product_stock / $amount_step) * $amount_step;
            $cart_amount_options['amountBreakPoint'] = $break_point;
            $amount_add_to_cart = $break_point;
        } elseif ($shop_config['allow_buy_all_stock_ignoring_amount_step'] && $product_stock > $product->getMinOrderQuantity()) {
            $cart_amount_options['amountBreakPoint'] = $product_stock;
            if ($product_stock < $amount_step) {
                $amount_add_to_cart = $product_stock;
            }
        }


Я правильно понимаю?

3

Re: Минимальное количество товара для заказа только для зарегистрированных

Добавляю опцию : 'clients' => $product->getMinOrderQuantity(),
и к if : ($current_user->inGroup['clients']) &&

 $amount_step = $product->getAmountStep();
        $product_stock = $product->getNum($offer_id);
        $amount_add_to_cart = max($product->getMinOrderQuantity(), $amount_step);
        $is_cart_page = RouterManager::getCurrentRoute()->getId() == 'shop-front-cartpage';
        $cart_amount_options = [
            'productId' => $product['id'],
            'amountStep' => $amount_step,
            'minAmount' => $product->getMinOrderQuantity(),
            'clients' => $product->getMinOrderQuantity(),
            'forbidRemoveProducts' => $is_cart_page,
            'forbidChangeRequests' => $is_cart_page,
        ];
        
        
        
    if   ($current_user->inGroup['clients']) && ($shop_config['allow_buy_num_less_min_order'] && $product_stock < $product->getMinOrderQuantity()) {
            $break_point = ($shop_config['allow_buy_all_stock_ignoring_amount_step']) ? $product_stock : floor($product_stock / $amount_step) * $amount_step;
            $cart_amount_options['amountBreakPoint'] = $break_point;
            $amount_add_to_cart = $break_point;
        } elseif ($shop_config['allow_buy_all_stock_ignoring_amount_step'] && $product_stock > $product->getMinOrderQuantity()) {
            $cart_amount_options['amountBreakPoint'] = $product_stock;
            if ($product_stock < $amount_step) {
                $amount_add_to_cart = $product_stock;
            }
        }
    


Без изменений. Гость или клиент добавляет товар в корзину все равно - минимальное ко-во заказа работает "как часы" . Может я вообще не там копаю?