Вопрос

Я переопределяю функцию SaveRoderAction в OnePageController.php (/App/Code/Core/Mage/Checkout/Controllers) с моим пользовательским кодом.

Я успешно реализовал логику для этого. Я считаю, что на данный момент в начале функции, поскольку заказ не был выполнен, нет идентификатора заказа. Вместо этого у меня есть доступ к «идентификатору цитаты».

Что мне нужно сделать сейчас, так это выяснить, где генерируется идентификатор заказа для заказа. Мой первый вопрос: какой файл/функция лучше всего переопределить, когда создается идентификатор заказа?

Мой второй вопрос: есть ли способ связать идентификатор цитаты с идентификатором заказа, который генерируется?

По сути, моя цель состоит в том, чтобы получить идентификатор заказа в настоящее время заказанные элементы, чтобы я мог сделать дальнейшую пользовательскую обработку.


Мой код наблюдателя проходит через этот путь:/local/james/reweCeckout

config.xml -/loc

Veamver.php -/local/james/effeCheckout/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>

Код для xersver.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);
}
}
Это было полезно?

Решение

Идентификатор приращения заказа создается при подаче заказа, в этом методе Mage_Sales_Model_Service_Quote::submitOrder(). Анкет Линия, ответственная за создание $quote->reserveOrderId();.
Если вы хотите получить доступ к нему, вы можете зацепить событие sales_model_service_quote_submit_before.
Вы сможете получить идентификатор приращения в своем наблюдателе, как это:

public function doSomething($observer){//observer for the event
    $quote = $observer->getEvent()->getQuote();
    $incrementId = $quote->getReservedOrderId();
    //do stuff
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top