想法是这样的,订单号要生成,理论是在订单保存时生成订单编码的。所以追踪代码到Mage_Sales_Model_Order的save()方法了。然后再追踪就追到Mage_Sales_Model_Resource_Order_Abstract这个了,鉴于magento的特性,还是主要看_beforeSave ,save,_afterSave这3个东西就差不多了,还有查下有没events,
发现这个类的_beforeSave是这样写 的:
代码如下 | 复制代码 |
if ($this->_useIncrementId && !$object->getIncrementId()) { |
这里应该是生成订单号的了,根据’eav/entity_type,可以追踪到Mage_Eav_Model_Entity_Type类,然后查看方法fetchNewIncrementId,里面定义的$incrementId = $incrementInstance->getNextId();所以,新的订单号应该是$incrementInstance里的getNextId方法而来,至于$incrementInstance是什么,里面就没解析了,只能根据代码来判断了
在前面的代码中,可以发现 $incrementInstance = Mage::getModel($this->getIncrementModel())是这样定义的,而getIncrementModel()方法前后都没定义,想想magento底层定义的_call方法,这可能是数据表里的东西,打开eav_entity_type表,可以发现一个increament_model的字段。。这下都明了了,根据eav/entity_increment_numeric的定义,可以追踪到Mage_Eav_Model_Entity_Increment_Numeric类,这样只发现getNextId方法了。
到这里,只要重写Mage_Eav_Model_Entity_Increment_Numeric类的getNextId就可以实现自定义的订单编码,可是会发现Invoice,shipment,都是用同一个类,所以我们increment_model记录来个性化自己的编码了
我的博物馆故事 官方安卓版v1.61.2
我的博物馆故事是一款以消除为主题的经营养成类手游,在这里玩家
专业模拟飞行10 手机版v12.2.4
专业模拟飞行10安卓版是一款飞行休闲手游,顶尖的物理飞行引擎
动物起义战斗模拟器二琳同款 最新版v4.1.1
动物起义战斗模拟器是一个非常有趣的模拟类游戏,玩家可以召唤各
迷你世界七周年 安卓手机版v1.43.0
迷你世界7周年是一款由《迷你世界》官方推出的庆祝特别版本,在
劫后公司无限资源版 v1.0.5.1
劫后公司内置菜单版是游戏的破解版本,在该版本中为玩家提供了内