Отслеживание заказа не отображается в электронном письме об отправке
Наш сайт отправляет электронные письма с отправкой, но электронное письмо не содержит информации об отслеживании. Я создал новый шаблон на основе шаблона по умолчанию и добавил {{тип блока= область "ядро/шаблон"= шаблон "интерфейс"="электронная почта/заказ/отгрузка/трек.phtml" отгрузка=$заказ на отгрузку=$заказ}}, но эта часть письма пуста. Когда я нажимаю "Отслеживать отправку" в панели администратора, появляется номер отслеживания и ссылка на UPS,
У нас есть встроенный API ИБП для создания поставки напрямую из Magento. Похоже, что электронное письмо с отправкой отправляется до того, как вернется номер отслеживания. Существует также зеленое сообщение о состоянии, в котором говорится: "Отгрузка создана". перед вводом любой информации, такой как вес и размеры.
Похоже, мне придется покопаться в коде и кое-что передвинуть.
Что я мог упустить? Любая помощь была бы здесь очень кстати.
3 answers
Возможно, немного поздно для этого, но....
Здесь есть тема на форумах Magento: http://www.magentocommerce.com/boards/viewthread/9594/
Если вы посмотрите на код для Mage_Sales_Model_Order_Shipment_Api
, электронное письмо с подтверждением отправляется как часть функции create()
. Затем детали отслеживания добавляются позже с помощью звонка на addTrack()
, но к тому времени электронное письмо уже отправлено.
Предлагаемое решение состоит в том, чтобы отредактировать источник и переместить вызов в $shipment->sendEmail()
, но я подозреваю, что это не самое элегантное решение - я подозреваю, что вам было бы лучше вместо этого расширить класс и сделать это таким образом.
Это решение работает для меня, но будьте осторожны, так как другой файл расширяет функцию create()
. Поэтому вам также нужно прокомментировать вызов $shipment->sendEmail()
в Sales/Order/Shipment/Api/V2.php
Другой подход без редактирования/расширения ядра Magento заключается в изменении вызова API, чтобы не отправлять электронное письмо с доставкой в первую очередь при создании заказа. Просто отправьте его после добавления кода отслеживания:
-
Вызовите
sales_order_shipment.create
с помощью$email = FALSE
см.Mage_Sales_Model_Order_Shipment_Api
иMage_Sales_Model_Order_Shipment_Api_V2
public function create($orderIncrementId, $itemsQty = array(), $comment = null, $email = false, $includeComment = false)
-
Добавьте код отслеживания, позвонив
sales_order_shipment.addTrack
public function addTrack($shipmentIncrementId, $carrier, $title, $trackNumber)
-
Вызовите метод
sales_order_shipment.sendInfo
, чтобы запустить отправку по электронной почтеpublic function sendInfo($shipmentIncrementId, $comment = '')
Это на самом деле лучше, чем изменять поведение Magento по умолчанию. Удачи