Действие при отсутствии товара в ниличии

Добрый день!

Возник следующий вопрос - у каждого товара есть настройка действия, которое необходимо производить при отсутствии товара в наличии, по умолчанию значение “не выбрано”. А как можно задать значение по умолчанию для всех новых товаров чтобы значение этого свойства было “подписаться на уведомления”? Настройки такой не нашел.

1 лайк

Запрос к БД :slight_smile:

UPDATE `cscart_products`
			 SET `out_of_stock_actions` = 'S'

Благодарю, но ведь это, насколько я понимаю, лишь установка для существующих товаров, а как сделать чтобы они сразу создавались с этим значением? Чтобы один раз сделать и больше об этом не думать?

можно установить значение поля в таблице по умолчанию на S (может перезаписаться если при обновлении будут изменения в структуре таблицы, что вряд ли конечно…)

второй вариант - в файле /app/functions/fn.catalog.php со строки 2471

        // add new product
        if (empty($product_id)) {
            $create = true;
            $product_data['create'] = true;
            // product title can't be empty and not set product_id
            if (empty($product_data['product']) || !empty($product_data['product_id'])) {
                fn_set_notification('E', __('error'), __('need_product_name'));

                return false;
            }

            $product_id = db_query("INSERT INTO ?:products ?e", $_data);

перед запросом к БД вставить
$_data[‘out_of_stock_actions’] = ‘S’;
(!) НЕ ПРОВЕРЯЛ!
и это тоже может перезаписаться при обновлении, что более вероятно

1 лайк

Или тут

design/backend/templates/views/products/update.tpl

заменить

<select class="span3" name="product_data[out_of_stock_actions]" id="elm_out_of_stock_actions">
                            <option value="N" {if $product_data.out_of_stock_actions == "N"}selected="selected"{/if}>{__("none")}</option>
                            <option value="B" {if $product_data.out_of_stock_actions == "B"}selected="selected"{/if}>{__("buy_in_advance")}</option>
                            <option value="S" {if $product_data.out_of_stock_actions == "S"}selected="selected"{/if}>{__("sign_up_for_notification")}</option>
                        </select>

на

<select class="span3" name="product_data[out_of_stock_actions]" id="elm_out_of_stock_actions">
                            <option value="S" {if $product_data.out_of_stock_actions == "S"}selected="selected"{/if}>{__("sign_up_for_notification")}</option>
                            <option value="N" {if $product_data.out_of_stock_actions == "N"}selected="selected"{/if}>{__("none")}</option>
                            <option value="B" {if $product_data.out_of_stock_actions == "B"}selected="selected"{/if}>{__("buy_in_advance")}</option>
                        </select>

Там и хук имеется

2 лайка

При отсутствии товара на складе он отображается в списке товаров среди тех которые есть в наличии. А можно сделать так, чтобы эти товары опускались вниз списка? Речь идет о витрине.

Есть хороший бесплатный модуль для этого: https://www.ecom-labs.ru/cs-cart-multi-vendor-moduli/cs-cart-modul-sortirovka-po-nalichiyu.html

2 лайка

Спасибо :wink:

Наткнулся на тему, вспомнил как решил проблему, для других и на будущее. Скорее всего подойдет решение и для других аналогичных задач. Через phpMyAdmin нашел таблицу товаров и поправил там поле значение по-умолчанию. С того момента по-умолчанию новые товары загруженные из 1С попадают в магазин с нужным мне значением. Оказалось просто, хоть и не совсем очевидно. А для старых значение очень просто поправить SQL запросом, который ранее опубликовал alex_vp(UPDATE cscart_products
SET out_of_stock_actions = ‘S’).

1 лайк