同时编辑2个订单的bug
-
12-12-2019 - |
题
重现步骤:
- 点击 编辑 第一顺序,即 000000001
- 点击 编辑 第二阶,即 000000002
- 点击 添加产品 在第一个订单编辑屏幕上
- 选择任何产品并单击 将选定的产品添加到订单中
现在,您将看到 000000001 的内容是 000000002 中的所有产品 - 以及您选择的产品。
我还注意到在编辑订单后下订单时会出现一些奇怪的行为,例如编辑 000000002 将导致新的增量 id 为 000000001-1。
我认为这个错误可能源于 adminhtml/session_quote
目的 (app/code/core/Mage/Adminhtml/Model/Session/Quote.php
)。这是否意味着 Magento 只能处理每个会话的单个订单的编辑?它肯定会使用父实体 id 或类似的东西来区分会话对象吗?
编辑: 同时下两个订单时会出现相同的行为,这使我相信这肯定与无法拆分订单有关 adminhtml/session_quote
基于每个父订单实体 ID 的对象。
解决方案
我不认为这是一个错误。这实际上是对管理员编辑命令的实施方式的限制。
当你击中 编辑 在后端进行打开和订购(当您从头开始创建和订购时)会涉及会话。看看如何 Mage_Adminhtml_Sales_Order_EditController
和 Mage_Adminhtml_Sales_Order_CreateController
类的外观以及它们的作用。
因此,当您在第二个订单上点击编辑时,会话将被清除(请参阅 Mage_Adminhtml_Sales_Order_EditController::startAction
)并且您不再编辑第一个订单。
但是第一个编辑的订单的表单中填充的是第一个订单的数据。只有从此时起您在编辑订单屏幕中进行的 ajax 调用才会返回您编辑的第二个订单的值。
这就是为什么您从第一顺序和第二顺序中得到混合结果的原因。
从第一个订单提交表单时,您正在提交第一个订单中的客户 ID 或货币等数据,但您从第二个订单中获取了商品。
这里的教训是永远不要在同一会话中编辑两个订单。