自定义Magento模块有时从销售表中获取随机数据


Custom Magento Module sometimes fetch random data from sales tables

STORY (Sad):我被分配修复这个bug我们有很长一段时间了,不幸的是这个模块是2年前由一个已经离开公司的Dev编写的:(

FUNCTION:模块用于从Magento获取一些订单/客户详细信息,并将其写入其他几个自定义表,然后生产中的不同系统将获取这些信息并将所有订单交付给客户。

HOW: Module有一个Model extends from Mage_Sales_Model_Order和一个method _afterSave()覆盖Mage_Sales_Model_Order::_afterSave()。该方法包括所有写入这些附加表的代码。

BUG:在一些奇怪的情况下,一些订单有额外的订单行项目,例如在一个场景中,它有一个订单有3个订单行项目,而实际订单只有1个订单行项目。在做了一些深入的调查后,发现其中一个订单行是来自同一个客户的旧订单,而另一个额外的行项目是真实订单行项目的副本。

CLUES:我尝试了很多东西和一些线索,我设法找到,我可以看到_afterSave被调用两次,当我通过xDebug调试。但找不到它被调用两次的地方。

试图通过我的安全重新创建问题,但在开发环境中一切都很好,因为它总是这样。

我们使用$this->getAllItems()来获取订单项数据。

HELP:这发生在一个非常随机的方式,只是寻求帮助,让我自己看不同的途径,因为我知道没有人能够提供给我一个完整的解决方案。请给我一些指导,因为我已经碰到过几只兔子了。

谢谢堆! !如果您需要更多的细节,请告诉我。

最终我们决定重写模块,与良好的Magento纪律。