[msProductRemains] Остатки без свойств и другое

Продолжаю работу над компонентом msProductRemains для складского учёта товаров для магазина miniShop2 и представляю вам новые возможности компонента.

1. Поддержка бесконечного количества свойств для учёта.
Ранее можно было указать максимум 2 свойства товара для ведения учёта по ним. Но теперь вы можете указывать какое угодно количество свойств и все они будут корректно учитываться.

2. Поддержка собственных опций.
Все созданные вами опции теперь можно также использовать для ведения учёта остатков. Естественно, по типу они должны быть аналогичны опциям «Цвет» и «Размер». То есть должны поддерживать множество значений.


3. Поддержка плагинов miniShop2.
Как можно заметить на предыдущем скриншоте, в таблице компонента есть своё поле. Добавляется оно аналогично тому, как это сделано в плагинах miniShop2, а точнее, именно там и добавляется.
<?php
// Файл /core/components/miniShop2/plugins/pluginname/index.php

return array(
	'manager' => array(
		'msprRemains' => MODX_ASSETS_URL . 'components/minishop2/plugins/pluginname/msprremains.js'
	)
);

// Файл /assets/components/minishop2/plugins/pluginname/msprremains.js
msProductRemains.plugin.pluginname = {
	getColumns: function() {
		return {
			randomtags: {width:100, renderer: msProductRemains.utils.defined}
		}
	}
};

4. Учёт остатков без привязки к свойствам.
Вполне логичный вопрос возникал у пользователей компонента: «Как вести учёт, если у товаров нет опций?». Приходилось объяснять, что это можно, но не очевидно. Исправляю этот недочёт. Теперь вести учёт остатков без привязки очень легко. Достаточно очистить значение в настройке «Свойства товара».

5. Поддержка AjaxManager.
Теперь компонент msProductRemains работает корректно при включённом плагине AjaxManager. Для включения поддержки необходимо в настройках AjaxManager добавить наименование msproductremains в единственную опцию AjaxManager.
Сергей Фещуков
26 января 2016, 03:55
modx.pro
3 685
+2
Поблагодарить автора Отправить деньги

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

nekto
14 марта 2016, 23:27
0
А можно ли использовать остатки и с опциями и без опций одновременно?
    Сергей Фещуков
    15 марта 2016, 04:07
    0
    Можно. Если в настройках указаны свойства, а у товара отсутствуют значения в этих свойствах, то для такого товара создаётся только одна запись остатков без учёта свойств.
    Дмитрий
    25 ноября 2025, 13:49
    0
    Здравствуйте, устанавливаем msProductRemains перестаёт добавлять в корзину, по логам добавляет, на странице корзины ошибка minishop2 not defined и соответственно пустая корзина, удаляем модуль — ошибка удаления, но он удалён — переустанавливаем minishop всё работает, но нет остатков, ошибок в логах нету
      Сергей Карпович
      10 февраля 2026, 16:04
      0
      Обнаружил прикол, как понимаю он возникает в Minishop => 4.4.0
      Поле remains присутствует в стандартных полях минишопа — присутствует в таблице modx_ms2_products
      И в админке на странице со всеми остатками: /manager/?a=mgr/remains&namespace=msproductremains тянется именно поле из modx_ms2_product, а не из modx_ms2_product_remains

      А если перейти в карточку товара, на вкладку остатки — там все правильно, остаток подтягивается из таблицы modx_ms2_product_remains

      Не понимаю, как это так получается и как это исправить?
        Николай Савин
        10 февраля 2026, 20:39
        0
        Это что за таблица такая modx_ms2_product_remains? В miniShop2 такой нет. Наверное отдельный компонент.
          Сергей Карпович
          10 февраля 2026, 21:41
          0
          Это таблица компонента msProductRemains
          он использует поле remains, но в Minishop2 4.0.0 тоже появилось это поле, и что то пошло не так. Может оно всегда было, но не участвовало в схеме, хз.

          Тут скоррее вопрос к msProductRemains, нужно его научить смотреть remains из своей таблицы
            Сергей Фещуков
            11 февраля 2026, 07:30
            0
            Тут скоррее вопрос к msProductRemains, нужно его научить смотреть remains из своей таблицы
            Да, верно. Ранее этого поля не было в стандартном minishop2, поэтому всё и работало без проблем.
            Есть момент, зачем-то это поле сделали типа int, в некоторых ситуациях разработчики хотят иметь дробный остаток (сталкивался с таким, поэтому сделал в своём компонент тип float для остатков). Надеюсь разработчики minishop2 услышать комментарий из commit на это изменение
            maybe better float than int?
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        7