我一直在使用我的自定义代码中的onepagecontroller.php(/app/code/code/mage/nockout/Controllers)中覆盖函数saveorderAction。

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

我现在需要做的是找出订单ID为订单生成的位置。我的第一个问题是,哪个文件/函数最适合创建订单ID的何时?

我的第二个问题是,有没有办法将报价ID与生成的订单ID联系起来?

从本质上讲,我的目标是获取当前订购的项目的订单ID,以便我可以进行进一步的自定义处理。


我的观察者代码是通过此路径:/local/james/aftercheckout

config.xml-/local/james/aftercheckout/etc

observer.php-/local/james/aftercheckout/型号

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
}
许可以下: CC-BY-SA归因
scroll top