Minishop2 Остатки товаров

Здравствуйте.
Не могу понять, где и как в Minishop настраивается отображение остатков товара.
Прочитал что для учета остатков по свойствам нужен компонент msProductRemains… Но меня сейчас интересуют остатки простых товаров (без учета свойств и модификаций). По идее, такой функционал должен быть заложен «из коробки», или я не прав?
Игорь
24 мая 2023, 07:34
modx.pro
586
0

Комментарии: 3

Dan
Dan
24 мая 2023, 08:44
0
Из коробки пока такого функционала нет. Вопрос в том, какой функционал вы хотите привязать к полю «Остатки»?
Создайте кастомное поле minishop2 (если умеете), если нет, то можете попробовать использовать msAddField, правда не знаю актуален он или нет. Либо можете создать TV.
Далее все зависит от ваших задач.
Например, вы завели TV remaining и хотите вместо кнопки «Добавить в корзину» выводить «Нет в наличии», то код на странице товара например будет такой:
{if $_modx->resource.remaining > 0}
    <button type="submit" name="ms2_action" value="cart/add">Добавить в корзину</button>        
{else}
    <span>Нет в наличии</span>
{/if}
Прочие задачи, например проверка остатков при добавлении в корзину, решаются кастомными плагинами.
    Игорь
    24 мая 2023, 08:55
    0
    Ну да, поле-то создать не проблема (хоть кастомное, хоть tv)… Загвоздка именно в функционале: чтобы остатки уменьшались при заказе, например…
      Dan
      Dan
      24 мая 2023, 09:28
      0
      В принципе такую задачу можно решить плагином на события msOnChangeOrderStatus, msOnRemoveOrder, msOnUpdateOrder и проверять в нем: если статус Новый, то игнорируем и выходим, чтобы не задерживать создание заказа во фронте для клиента. Если статус Оплачен то перебираем товары и уменьшаем значение поля остатков на кол-во этой позиции в заказе, а если статус Отменен, то увеличиваем кол-во, ибо это возврат. И соответственно если менеджер удалит заказ или удалит товар из него, производить те же самые действия.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    3