Учет остатков
Василий, можете описать алгоритм учета остатков — самый простой(без доп условий).
Хотя бы теорию(если есть пример — вообще классно). А то не могу выбрать правильное место для проверки.
Спасибо.
Хотя бы теорию(если есть пример — вообще классно). А то не могу выбрать правильное место для проверки.
Спасибо.
Комментарии: 13
У кого-нибудь есть идее?
Предполагаю что лучше будет проверять при оформлении заказа, но как тогда при событии msOnBeforeAddToOrder вернуть пользователю ошибку?
Спасибо!
Предполагаю что лучше будет проверять при оформлении заказа, но как тогда при событии msOnBeforeAddToOrder вернуть пользователю ошибку?
Спасибо!
Самое просто: добавить новое поле в товар и там хранить остатки. Это лучше сделать плагином, но можно и ТВ.
Затем нужно проверять возможность добавления товара в корзину. Системным плагином по событию msOnBeforeAddToOrder это делать не получится, ибо я такого не предусмотрел =)
Зато можно расширить класс корзины, и немного изменить метод add(), чтобы он проверял остатки и возвращал success() или error().
В течении пары недель я планирую сделать такой простой учет остатков в стандартной версии MS2, без учета цветов, размеров и прочего, чисто ресурсами.
Затем нужно проверять возможность добавления товара в корзину. Системным плагином по событию msOnBeforeAddToOrder это делать не получится, ибо я такого не предусмотрел =)
Зато можно расширить класс корзины, и немного изменить метод add(), чтобы он проверял остатки и возвращал success() или error().
В течении пары недель я планирую сделать такой простой учет остатков в стандартной версии MS2, без учета цветов, размеров и прочего, чисто ресурсами.
Спасибо за ответ!
Я добавил поле remains, через плагин.
И задумался где лучше это делать.
Проверить наличие при добавлении в корзину а ведь могут в корзину добавить несколько человек, и потом оформить заказ и остаток уже будет в минусе(товара не хватит :) )
А вот изменения этих остатков получается надо делать при оформлении заказа.
Кстати, а у меня потом не будет ошибок при обновлении, из-за добавленного поля через плагин?
Я добавил поле remains, через плагин.
И задумался где лучше это делать.
Проверить наличие при добавлении в корзину а ведь могут в корзину добавить несколько человек, и потом оформить заказ и остаток уже будет в минусе(товара не хватит :) )
А вот изменения этих остатков получается надо делать при оформлении заказа.
Кстати, а у меня потом не будет ошибок при обновлении, из-за добавленного поля через плагин?
Логику работы ты уж сам продумывай.
Проблем не будет, нет. Оно так специально и сделано.
Проблем не будет, нет. Оно так специально и сделано.
просто еще раз проверять наличие при нажатии оформить если товар закончился выводить сообщение что опоздали вы ьбатенька
Так и хотел)
Но:
Но:
Системным плагином по событию msOnBeforeAddToOrder это делать не получится, ибо я такого не предусмотрел =)С другой стороны можно метод оформления заказа переписать на свой. Надо копать)
Да, конечно, класс заказа тоже расширяется.
Василий, вопрос не по теме, но хотелось бы спросить.
В последней версии магазина, есть такое изменение:
В последней версии магазина, есть такое изменение:
Added placeholder [[+payment_link]] in the new user email. It will work only if payment method has function getPaymentLink(msOrder $order);
Оно очень подходит для организации оплаты товара после проверки заказа менеджером… Но у меня не сработала с первого раза. Есть ли там какая-либо «магия»? В класс оплаты я добавил метод getPaymentLink(msOrder $order). Этого достаточно? Чтобы в письме по определенному статусу отправить ссылку на оплату?
Давай мы «вопросы не по теме» будем задавать в новых темах?
Добрый день, только начинаю разбираться в miniShop2 (да и вообще в целом с php, xPdo, JSON и пр.), возник следующий вопрос, попробую объяснить:
Если принимать платежи только через он-лайн (visa, mastercard, webmoney) системы, возможно ли реализовать списывание остатков (которые я добавлю самостоятельно плагином) только после успешного окончания платежа и ре-директа пользователя на страницу с успешной оплатой.
Смысл в том что в интернет-магазине будут продаваться вещи в единственном экземпляре. И хочется реализовать подобную логику, во избежание следующей ситуации:
1) Валера заказывает вещь через сайт
2) Выбирает платеж через “Почту России” / оплата через терминал и пр.
3) Оформляет заказ
4) Вещь автоматически резервируется в магазине и никто из желающих не сможет ее купить, так как она в 1 экземпляре
5) Валера встречает свою любовь детства и уходит в запой
6) Ждем платеж от Валеры 3-5 дней, и не дождавшись, выводим вещь обратно на продажу.
7) Ее покупает Вася.
8) Через неделю Валера выходит из запоя, оплачивает вещь (которой уже нет в наличии) и ждет заказ который мы не сможем выполнить.
Надеюсь смог объяснить, что хотел.
Заранее спасибо за ответы/советы :)
Если принимать платежи только через он-лайн (visa, mastercard, webmoney) системы, возможно ли реализовать списывание остатков (которые я добавлю самостоятельно плагином) только после успешного окончания платежа и ре-директа пользователя на страницу с успешной оплатой.
Смысл в том что в интернет-магазине будут продаваться вещи в единственном экземпляре. И хочется реализовать подобную логику, во избежание следующей ситуации:
1) Валера заказывает вещь через сайт
2) Выбирает платеж через “Почту России” / оплата через терминал и пр.
3) Оформляет заказ
4) Вещь автоматически резервируется в магазине и никто из желающих не сможет ее купить, так как она в 1 экземпляре
5) Валера встречает свою любовь детства и уходит в запой
6) Ждем платеж от Валеры 3-5 дней, и не дождавшись, выводим вещь обратно на продажу.
7) Ее покупает Вася.
8) Через неделю Валера выходит из запоя, оплачивает вещь (которой уже нет в наличии) и ждет заказ который мы не сможем выполнить.
Надеюсь смог объяснить, что хотел.
Заранее спасибо за ответы/советы :)
При оплате происходит смена статуса заказа, которая соправоздается 2мя системными событиями: msOnBeforeChangeOrderStatus и msOnChangeOrderStatus. Одно событие до переключения, другое после.
В них передаются 2 параметра: $order — то есть объект msOrder и $status — номер статуса. Из объекта msOrder можно вытащить любую информацию: и заказанные товары, и что угодно — учи xPDO.
Документация по плагинам MODX.
В них передаются 2 параметра: $order — то есть объект msOrder и $status — номер статуса. Из объекта msOrder можно вытащить любую информацию: и заказанные товары, и что угодно — учи xPDO.
Документация по плагинам MODX.
спасибо! буду разбираться
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.