magento表“sales_flat_order”字段“protect_code”说明

时间:2013-09-24 15:46:41

标签: mysql database magento

我们正在研究magento数据库和表格。 Magento似乎在表sales_flat_order字段protect_code中编写代码,以定义是否已完成发票或货件。它看起来像

01b335
a0a243

但是没有key来理解这个保护代码的含义。是否有关于这些代码含义及其生成方式的解释?

1 个答案:

答案 0 :(得分:24)

它在哪里生成?

如果你在app/code/core/Mage/Sales/Model/Order.php左右2052查看,你会发现以下内容:

$this->setData('protect_code', substr(md5(uniqid(mt_rand(), true) . ':' . microtime(true)), 5, 6));

这是为订单生成protect_code的地方(使用md5,uniqid和随机整数的组合。

它用于什么?

如果您查看app/code/core/Mage/Sales/Helper/Guest.php并找到loadValidOrder功能。您会在某些区域看到protect_code,以确保加载的订单是客人Cookie值的正确顺序。

它也用于其他领域,例如跟踪信息比较。您可以在Shipment模型中看到调用getProtectCode()方法的多个实例,以将订单与跟踪信息进行比较。使用它的函数的一个示例是:

public function getTrackingInfoByTrackId()
{
    $track = Mage::getModel('sales/order_shipment_track')->load($this->getTrackId());
    if ($track->getId() && $this->getProtectCode() == $track->getProtectCode()) {
        $this->_trackingInfo = array(array($track->getNumberDetail()));
    }
    return $this->_trackingInfo;
}

正如您在$this->getProtectCode() == $track->getProtectCode()中看到的那样,跟踪protect_code必须与货件protect_code相符。