重现步骤:

  1. 点击 编辑 第一顺序,即 000000001
  2. 点击 编辑 第二阶,即 000000002
  3. 点击 添加产品 在第一个订单编辑屏幕上
  4. 选择任何产品并单击 将选定的产品添加到订单中

现在,您将看到 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_EditControllerMage_Adminhtml_Sales_Order_CreateController 类的外观以及它们的作用。

因此,当您在第二个订单上点击编辑时,会话将被清除(请参阅 Mage_Adminhtml_Sales_Order_EditController::startAction)并且您不再编辑第一个订单。

但是第一个编辑的订单的表单中填充的是第一个订单的数据。只有从此时起您在编辑订单屏幕中进行的 ajax 调用才会返回您编辑的第二个订单的值。
这就是为什么您从第一顺序和第二顺序中得到混合结果的原因。

从第一个订单提交表单时,您正在提交第一个订单中的客户 ID 或货币等数据,但您从第二个订单中获取了商品。

这里的教训是永远不要在同一会话中编辑两个订单。

许可以下: CC-BY-SA归因
scroll top