Не могу разобраться с заказами и статусами.

Главные вкладки

Аватар пользователя Алексей Дёмин Алексей Дёмин 16 марта 2011 в 13:26

Привет, друзья!
Совсем запутался со статусами заказов и что происходит с заказами при разных условиях?
И так что есть:
Магазин с заказами, которые могут оформлять как зарегистрированные юзеры, так и анонимусы с последующей регистрацией.
есть встроенные состояния (state)

  • Completed
  • Payment received
  • Post checkout
  • In checkout
  • Canceled

также есть статусы заказов (statuses) Сопоставленные с состояниями.

  • canceled -> Canceled
  • in_checkout -> In checkout
  • pending -> Post checkout
  • processing -> Post checkout
  • payment_received -> Payment received
  • completed -> Completed

в моем случае pending и processing - одну и ту же функцию выполняют. можно от одного отказаться?
получается так, что иногда при, казалось бы, одинаковых условиях уберкарт выставляет разные статусы заказов. Какой-то системы я не вижу. Хочу разобраться, почему так происходит.
Кто выставляет в итоге статус заказа? Модуль платежной системы? уберкарт?
Чем отличаются pending и processing? (в смысле перевод-то я знаю, я имею ввиду принципиальное отличие, когда и какой статус присваивается?)

Комментарии

Аватар пользователя khanton khanton 16 марта 2011 в 17:02

Обновляет кто угодно это делается с помощью функции uc_order_update_status. Вот тут можно настраивать дополнительную логику :admin/store/ca. pending - это типа мы видим ваш заказ но не начали его обрабатывать (людей нет) processing - мы начлаи с вашим заказо работать. В общем случае статус это просто строка которых может быть сколько угодно. Ubercart и его модули знает правда некий набор предопрделенных статусов которые легко находятся с помощью grep.

Аватар пользователя Алексей Дёмин Алексей Дёмин 17 марта 2011 в 10:24

Добрый день, Антон!
Спасибо за ответ, стало немного понятно, однако все равно не могу понять логики, почему некоторые заказы при одном и том же условии присваивают разные статусы?
на странице admin/store/ca обрабатываются только два условия, влияющие на статус: платеж получен и заказ завершен,а у меня как раз петрушка с ожиданием и в процессе.

Правильно я понимаю рабочий процесс?

  • In checkout - Заказ еще в корзине
  • Post checkout - выставляется после того, как человек подтвердил заказ на последней странице
  • Payment received - Платеж получен, пришли деньги от платежной системы (выставляется СА)
  • Completed - завершен (выставляется СА), Canceled - отменен, больше действий с заказом делать не надо.

состояние Post checkout может быть в разных статусах: pending и processing
Post checkout выставляется в uc_cart.module на строчке 1285, но он должен поставить статус, который выбран тут admin/store/settings/orders/edit/workflow в графе Default order status? А у меня иногда бывают разные. в общем по-прежнему не совсем понятно. Smile