Отслеживание заказа не отображается в электронном письме об отправке


Наш сайт отправляет электронные письма с отправкой, но электронное письмо не содержит информации об отслеживании. Я создал новый шаблон на основе шаблона по умолчанию и добавил {{тип блока= область "ядро/шаблон"= шаблон "интерфейс"="электронная почта/заказ/отгрузка/трек.phtml" отгрузка=$заказ на отгрузку=$заказ}}, но эта часть письма пуста. Когда я нажимаю "Отслеживать отправку" в панели администратора, появляется номер отслеживания и ссылка на UPS,

У нас есть встроенный API ИБП для создания поставки напрямую из Magento. Похоже, что электронное письмо с отправкой отправляется до того, как вернется номер отслеживания. Существует также зеленое сообщение о состоянии, в котором говорится: "Отгрузка создана". перед вводом любой информации, такой как вес и размеры.

Похоже, мне придется покопаться в коде и кое-что передвинуть.

Что я мог упустить? Любая помощь была бы здесь очень кстати.

Author: David Wilkins, 2013-06-03

3 answers

Возможно, немного поздно для этого, но....

Здесь есть тема на форумах Magento: http://www.magentocommerce.com/boards/viewthread/9594/

Если вы посмотрите на код для Mage_Sales_Model_Order_Shipment_Api, электронное письмо с подтверждением отправляется как часть функции create(). Затем детали отслеживания добавляются позже с помощью звонка на addTrack(), но к тому времени электронное письмо уже отправлено.

Предлагаемое решение состоит в том, чтобы отредактировать источник и переместить вызов в $shipment->sendEmail(), но я подозреваю, что это не самое элегантное решение - я подозреваю, что вам было бы лучше вместо этого расширить класс и сделать это таким образом.

 9
Author: andrewsi, 2013-10-15 17:24:47

Это решение работает для меня, но будьте осторожны, так как другой файл расширяет функцию create(). Поэтому вам также нужно прокомментировать вызов $shipment->sendEmail() в Sales/Order/Shipment/Api/V2.php

 0
Author: Antho Ny, 2015-03-12 14:34:14

Другой подход без редактирования/расширения ядра Magento заключается в изменении вызова API, чтобы не отправлять электронное письмо с доставкой в первую очередь при создании заказа. Просто отправьте его после добавления кода отслеживания:

  1. Вызовите 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)
    
  2. Добавьте код отслеживания, позвонив sales_order_shipment.addTrack

    public function addTrack($shipmentIncrementId, $carrier, $title, $trackNumber)
    
  3. Вызовите метод sales_order_shipment.sendInfo, чтобы запустить отправку по электронной почте

    public function sendInfo($shipmentIncrementId, $comment = '')
    

Это на самом деле лучше, чем изменять поведение Magento по умолчанию. Удачи

 0
Author: Stefan, 2019-04-24 13:44:46