OpenCart - взаимосвязь между управлением запасами и статусом платежа

Кто-нибудь знает ответ на вопрос о взаимосвязи между контролем запасов и статусом платежа?

Например, я хочу создать новый статус платежа под названием «В ожидании», который уменьшает количество продуктов в заказе. или я хочу создать новый статус платежа под названием «Ожидание клиента», который не уменьшает количество товаров в заказе.

Когда ОС уменьшает запас товара? Когда ОС меняет товарный запас?

Или другими словами: можно ли создать иерархию статусов платежа, в которой запасы только уменьшаются со статуса X? (И наоборот в случае разворота)

Я объясню: в API PayPal есть некоторые статусы, которых нет в OC. Например: Проверка платежа> Размещено, Проверка платежа> Очищено, Временное удержание> Размещено и т. Д. В моем случае (по умолчанию PayPal Express) статус платежа для этого статуса - «Ожидает платежа» (по умолчанию), вызывая путаницу на складе.

Спасибо всем


person Marco Molina    schedule 05.11.2013    source источник


Ответы (3)


Идея хорошая, но без логики. В управлении запасами и их размещении есть здравый смысл: если клиент приходит в ваш магазин, и у товара есть запасы, клиент может заказать этот запас, и этот запас должен быть заблокирован для него, либо процесс оплаты или уточнение деталей займет несколько недель.

Если случится так, что я приду в ваш магазин, я увижу, что вы продаете MacBook Air за 700 долларов и у вас есть две последние штуки, я бы заказал эти две штуки, и они должны быть заблокированы только для моего заказа. Но если Вы дождетесь моего платежа (потому что я заплатил банковским переводом) и установите статус «Ожидание клиента», пока акция не заблокирована и кто-то другой придет за мной и увидите эти две Airs по мере возможности и более быстрой оплаты (например, через PayPal), это означает, что пока мои деньги переводятся (это может длиться 1-X дней), вы уже продали товары, которые я заказал. Это означало бы, что вы, моя дорогая, очень несправедливый, ненадежный и недисциплинированный продавец.

Итак, как работает управление запасами в OpenCart, очень распространено (и справедливо): если вы установили в настройках, что запас вычитается после заказа (это делается для каждого продукта, соответственно, в его деталях в администрировании, вкладка Data), после подтвержденного заказа запас вычитается (блокируется).

И запас остается вычтенным, если вы не отмените заказ по какой-либо причине (я предполагаю, что это именно статус заказа Отменен - вы можете проверить код, чтобы увидеть).

И к Вашему PayPal Express Checkout - я не знаю Вашей реализации, но я реализовал это несколько раз и всегда устанавливаю заказ как оплаченный, если только API PayPal не сообщает об ошибке или отказе. В любом случае вы можете создать столько статусов платежей, сколько пожелаете, а затем отредактировать реализацию PP EC, чтобы использовать эти статусы, но если заказ не отменен, запас для этого клиента должен быть заблокирован.

person shadyyx    schedule 06.11.2013

Марко,

Не вдаваясь в подробности того, следует ли вам или не следует внедрять это на своем сайте. Я предпочитаю технический способ реализовать это:

  1. Вставьте новый столбец в таблицу товаров. назовите его "amount_booked" или как угодно описательное имя по вашему выбору.
  2. В файлах контроллера и модели измените всюду, где вы рассчитываете запас, чтобы вычесть количество_booked из количества.
  3. Поскольку вы не можете полностью доверять забронированному заказу, постарайтесь выяснить, какое у вас соотношение «бронирование / оплата», и примите его во внимание при продаже товаров (как это делают все авиакомпании). Таким образом, вы можете вычислить как количество = количество - (0,7 * количество_бронировано). 0,7 является примером вашего эффективного коэффициента подтверждения.
  4. когда кто-то отменяет бронирование / бронирование, вы можете уменьшить его количество с amount_booked.

Надеюсь это поможет!

person dev7    schedule 15.12.2013

Я согласен с вами, @shadyyx, но я хотел бы сделать некоторые оговорки.

Я намерен не уменьшать складские запасы, а вернуть товар на склад.

Представьте себе это:

1. User makes request - stock -1
2. Awaiting Payment - nothing to do

Два возможных следующих шага:

3a. User has abandoned the purchase and after X days the administrator changes
the status to "Cancelled"
3b. The gateway refuses the payment and changes the status to "Denied" via IPN

В обоих случаях товар должен автоматически вернуться в запас (запас +1). В OpenCart этого не происходит по умолчанию.

Что я сделал?
Сначала возвращаюсь на склад только при изменении статуса на «Отменено»

Что я буду делать?
Назначьте +1 или -1 для каждого статуса платежа и проверяйте статус для каждого изменения заказа.
Пример:
Пользователь делает заказ - Ожидает оплаты (запас -1)
Gateway анализирует платеж - на рассмотрении (ничего не делать, потому что запас уже уменьшился)
Платеж подтвержден - платеж подтвержден (ничего не делать, потому что запас уже уменьшился)
Заказ отправлен - отправлен (выполнить ничего, потому что запас уже уменьшился)
Пользователь отказывается от доставки - Обратный (я не уверен, увеличивают ли запас на этом этапе)
Пользователь отправляет продукты обратно - Ожидающие продукты (это статус возврата - ничего do)
Пользователю возвращены деньги - возвращены (акции +1)

Почему?
Я хочу создать заказы с историей статуса платежа, и сегодня OpenCart возвращает товар только в том случае, если заказ удален

Вот и все

person Marco Molina    schedule 15.12.2013