Состояние заказа Magento против статуса

Мне весело провести время, выясняя разницу между состоянием "состояние" и "статусом" в Magento.

У нас есть пользовательский поток, настроенный для отправки заказов на стороннее выполнение, и у нас также есть специальная логика для проверки потенциально мошеннических заказов и флага, которые они одобряют вручную для отправки пользователем администратора, чтобы выйти на выполнение.

Я добавил статус "Ожидание отправки" и статус "ОК для отправки" в конфигурацию моего модуля:

<global>
    ...
    <sales>
        <order>
            <statuses>
                <pending_shipment translate="label"><label>Pending Shipment</label></pending_shipment>
                <ok_to_ship translate="label"><label>OK To Ship</label></ok_to_ship>
            </statuses>
            <states>
                <processing translate="label">
                    <statuses>
                        <pending_shipment />
                    </statuses>
                </processing>
                <payment_review translate="label">
                    <statuses>
                        <ok_to_ship />
                    </statuses>
                </payment_review>
            </states>
        </order>
    </sales>
    ...
</global>

... и я использую встроенный статус "Подозреваемый мошенничество" для всего этого. Проблема в том, что статус "Подозримый мошенник" сгруппирован в соответствии с "Платежным обзором" штата, и если в заказе помечены "Подозримое мошенничество" или "Обзор платежей", администратор не позволяет вам выбирать любые другие статусы, кроме те 2. Идеально вариант "ОК для отправки" был бы доступен, но сгруппирован под "состоянием" "Обработка". Здесь у меня есть "ОК, чтобы отправить" в состоянии "payment_review", и он сделал эту опцию доступной, но затем, когда я вытаскиваю заказ и проверяю canShip() - он терпит неудачу, потому что это состояние состояния "Проверка платежей".

Итак, если кто-нибудь может помочь мне понять, как состояния/статусы предназначены для работы в Magento и как лучше всего настроить эту ситуацию, я был бы признателен.

Ответ 1

Просто отметим, что, поскольку Magento разрешил редактировать статусы из интерфейса администратора (версия 1.5, на мой взгляд), конфигурация статусов XML устарела. Теперь единственная соответствующая конфигурация находится внутри таблиц состояния sales_order_status и sales_order_status.

Если вы хотите добавить новые, просто отредактируйте таблицы через phpmyadmin (вы также можете сделать это programmaticaly через установщик script http://www.techytalk.info/programmatically-add-new-order-state-and-status-in-magento/)

Ответ 2

Я понимаю, что для данного состояния (которое определяется нормальным потоком порядка и не совсем изменчиво), у вас есть свободное владение, чтобы изменить статус заказа (который является меткой). В зависимости от того, что вы хотите выполнить, можете ли вы попробовать клонирование <okay_to_ship /> в другое состояние, в котором вы хотите? Они не кажутся эксклюзивными.

Спасибо, Джо