Списание со складов — различия между версиями
Stexe (обсуждение | вклад) |
Stexe (обсуждение | вклад) |
||
Строка 5: | Строка 5: | ||
'''Условия работы макроса:''' | '''Условия работы макроса:''' | ||
<ol> | <ol> | ||
− | <li>В модуле "Шаблоны данных" в типе данных "Заказ" должно присутствовать поле типа "Кнопка-флажок" с идентификатором ''current_mode''</li> | + | <li>В модуле "Шаблоны данных" в типе данных "Заказ" должно присутствовать невидимое поле типа "Кнопка-флажок" с идентификатором ''current_mode''</li> |
<li>В модуле "Шаблоны данных" в типе данных "Объекты каталога" должно присутствовать поле типа "Составное" с идентификатором ''stores_state'' ("Состояние на складах")</li> | <li>В модуле "Шаблоны данных" в типе данных "Объекты каталога" должно присутствовать поле типа "Составное" с идентификатором ''stores_state'' ("Состояние на складах")</li> | ||
</ol> | </ol> |
Версия 12:03, 21 августа 2013
Актуально для версии 2.9.1
В системе UMI.CMS склады введены в основном для наглядности и для удобства менеджерам, обрабатывающим заказ. В этой статье мы добавим данным параметрам функциональности и организуем списание со склада.
Задача: Реализовать функционал автоматического списания или возврата товара со склада.
Условия работы макроса:
- В модуле "Шаблоны данных" в типе данных "Заказ" должно присутствовать невидимое поле типа "Кнопка-флажок" с идентификатором current_mode
- В модуле "Шаблоны данных" в типе данных "Объекты каталога" должно присутствовать поле типа "Составное" с идентификатором stores_state ("Состояние на складах")
Реализация: Напишем обработчик события для точки вызова systemModifyObject, которое вызывается при сохранении объекта в административной панели. Вся логика списания или возврата будет находиться в обработчике события. Списание происходит, если статус заказа был изменен на "Готов" (статус 'ready'); возврат товара со склада, если статус заказа был изменен на "Отменен" (статус 'canceled').
В директорию classes\modules\emarket\ добавим файл с названием custom_events.php и содержанием:
<?php
new umiEventListener("systemModifyObject", "emarket", "storesReact");