Где генерируется идентификатор заказа?


Я переопределил функцию saveOrderAction в OnepageController.php (/приложение/код/ядро/Маг/Проверка/контроллеры) с моим пользовательским кодом.

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

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

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

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


Мой код наблюдателя проходит по этому пути: /локальный/Джеймс/После проверки

Config.xml - /локальный/Джеймс/После проверки/и т. Д.

Observer.php - /местный/Джеймс/После проверки/Модель

Содержание 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 = "[email protected]";
    $subject = "Test mail";
    $message = "Hello! This is a simple email message! .".$incrementId;
    $from = "[email protected]";
    $headers = "From:" . $from;
    mail($to,$subject,$message,$headers);
}
}
Author: Teja Bhagavan Kollepara, 2013-07-03

1 answers

Идентификатор приращения заказа создается при отправке заказа в этом методе 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
}
 3
Author: Marius, 2013-07-03 09:23:16