Где генерируется идентификатор заказа?
Я переопределил функцию 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);
}
}
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
}