Magento2 订单ID在哪里生成?

我一直在用我的自定义代码覆盖OnepageController.php(/ app / code / core / Mage / Checkout / controllers)中的saveOrderAction函数。

我已经成功实现了这一逻辑。我相信在此功能开始时,因为尚未完成订单,所以没有订单ID。相反,我可以访问“报价ID”。

我现在需要做的是找出在哪里生成订单的订单ID。我的第一个问题是创建订单ID时最适合覆盖哪个文件/功能?

我的第二个问题是,有没有办法将报价ID链接到生成的订单ID?

本质上,我的目的是获取当前已订购商品的订单ID,以便进行进一步的自定义处理。


我的观察者代码通过以下路径:/ local / James / Aftercheckout

config.xml-/ local / James / Aftercheckout / etc

Observer.php-/ local / James / Aftercheckout / Model

config.xml的内容:

<?xml version="1.0"?>
<config>
<modules>

    <James_Aftercheckout>

        <version>0.1.0</version>

    </James_Aftercheckout>

    </modules>        
<global>        
    <events>
        <sales_model_service_quote_submit_before>
            <observers>
                <james_aftercheckout_observer>
                    <type>singleton</type>
                    <class>James_Aftercheckout_Model_Observer</class>
                    <method>test</method>
                </james_aftercheckout_observer>
            </observers>
        </sales_model_service_quote_submit_before>
    </events>
</global>

Observer.php的代码:

class James_Aftercheckout_Model_Observer
{   

public function test($observer)
{
    $quote = $observer->getEvent()->getQuote();
    $incrementId = $quote->getReservedOrderId();


    $to = "myemail@gmail.com";
    $subject = "Test mail";
    $message = "Hello! This is a simple email message! .".$incrementId;
    $from = "randomemail@example.com";
    $headers = "From:" . $from;
    mail($to,$subject,$message,$headers);
}
}

回答:

使用此方法在提交订单时创建订单的增量ID Mage_Sales_Model_Service_Quote::submitOrder()。负责创建的行是$quote->reserveOrderId();
如果您想访问它,可以挂接到事件上sales_model_service_quote_submit_before
您将可以在观察者中获得增量ID,如下所示:

public function doSomething($observer){//observer for the event
    $quote = $observer->getEvent()->getQuote();
    $incrementId = $quote->getReservedOrderId();
    //do stuff
}

版权属于: sbboke版权所有。

转载时必须以链接形式注明作者和原始出处及本声明。

张贴在magento2教程标签:

相关文章

0 0 投票数
文章评分
订阅评论
提醒
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论