Ошибка редактирования 2-х заказов одновременно
-
12-12-2019 - |
Вопрос
Действия по воспроизведению:
- Нажмите Редактировать по первому порядку, т.е. 000000001
- Нажмите Редактировать второго порядка, т.е. 000000002
- Нажмите Добавить продукты на экране редактирования первого заказа
- Выберите любой товар и нажмите Добавить выбранные товары в заказ
Теперь вы увидите, что содержимое 000000001 — это все продукты из 000000002, а также продукт, который вы выбрали.
Я также заметил некоторое странное поведение при размещении заказов после их редактирования: например, редактирование 000000002 приведет к тому, что новый идентификатор приращения будет 000000001-1.
Я думаю, что эта ошибка может быть связана с adminhtml/session_quote
объект (app/code/core/Mage/Adminhtml/Model/Session/Quote.php
).Означает ли это, что Magento может редактировать только один заказ за сеанс?Конечно, это будет различать объекты сеанса, используя идентификатор родительского объекта или что-то в этом роде?
Редактировать: Такое же поведение наблюдается при одновременном размещении двух ордеров, что наводит меня на мысль, что это определенно связано с невозможностью разделить adminhtml/session_quote
объекты на основе идентификатора объекта родительского заказа.
Решение
Я не думаю, что это ошибка.Это скорее ограничение на то, как реализуется порядок редактирования администратора.
Когда ты нажмешь Редактировать при включении и заказе (а при создании и заказе с нуля) в бэкэнде задействуется сеанс.Посмотрите, как Mage_Adminhtml_Sales_Order_EditController
и Mage_Adminhtml_Sales_Order_CreateController
как выглядят классы и что они делают.
Поэтому, когда вы нажимаете «Редактировать» во втором заказе, сеанс очищается (см. Mage_Adminhtml_Sales_Order_EditController::startAction
) и вы больше не редактируете первый заказ.
Но форма из первого редактируемого заказа заполняется данными из первого заказа.только вызовы ajax, которые вы делаете с этого момента на экране редактирования порядка, будут возвращать значения из второго редактируемого вами порядка.
Вот почему вы получаете смешанные результаты от первого и второго заказа.
При отправке формы из первого заказа вы отправляете такие данные, как идентификатор клиента или валюту, из первого заказа, но вы получили товары из второго заказа.
Урок здесь заключается в том, чтобы никогда не редактировать два заказа в течение одного сеанса.