Как добавить номер для отслеживания доставки текущего заказа в Magento 2?


10

Я нашел примеры кодов для Magento 1.x. Но я понятия не имею, как это сделать на Magento 2.

Кто-нибудь может описать, как реализовать это с помощью Dependency Injection (DI) ?

Спасибо.

$trackingDetail = array(
    'carrier_code' => 'ups',
    'title' => 'United Parcel Service',
    'number' => 'TORD23254WERZXd3', // Replace with your tracking number
);

$track = Mage::getModel('sales/order_shipment_track')->addData($trackingDetail);
$shipment->addTrack($track);


$transactionSave = Mage::getModel('core/resource_transaction')
->addObject($shipment)
->addObject($shipment->getOrder())
->save();

Ответы:


12

AFAIK объект трека то же самое в M2.

Однако остальная часть кода изменилась.

$data = array(
    'carrier_code' => 'ups',
    'title' => 'United Parcel Service',
    'number' => 'TORD23254WERZXd3', // Replace with your tracking number
);

$track = $this->trackFactory->create()->addData($data);
$shipment->addTrack($track)->save();

Где $this->trackFactoryэкземпляр Magento\Sales\Model\Order\Shipment\TrackFactoryи $shipmentваш объект отгрузки.


Кстати, если вы знаете, как получить комментарии о доставке заказа для MG2. Если вы, пожалуйста, опубликуйте это здесь. Спасибо.
Рошан Рузаик

Как добавить отслеживание URl в отгрузку?
Пурушотам Шарма

@Roshanruzaik, если вы спрашиваете, как добавить комментарий к отправлению, то я так и сделал: $ commentText = 'Тестовый комментарий'; // Интерфейс комментариев: \ Magento \ Sales \ Api \ Data \ ShipmentCommentCreationInterface $ comment = $ this-> commentInterface-> setComment ($ commentText); // использовать $ comment в качестве одного из параметров при создании отгрузки, как показано ниже, например: // служба заказа на отправку: \ Magento \ Sales \ Model \ ShipOrder $ this-> shipOrderService-> execute ($ orderId, $ shippedItems, $ notify, $ includeComment, $ комментарий, $ треков);
Сарджан Гаутам

Привет @Raphael за номер отслеживания цифрового пианизма, и код перевозчика сохраняется в таблице "sales_shipment_track" в magento2, но где он сохранит стоимость доставки?
Нагараджу К,

не могли бы вы помочь по этому похожему вопросу magento.stackexchange.com/questions/268844/…
Крис Вэнь

9

В дополнение к принятому ответу было бы неплохо использовать репозитории вместо устаревшего метода сохранения. Также добавлено уведомление клиента после создания трекинга.

/** @var Magento\Sales\Model\Order\ShipmentRepository */
protected $_shipmentRepository;

/** @var Magento\Shipping\Model\ShipmentNotifier */
protected $_shipmentNotifier;

/** @var Magento\Sales\Model\Order\Shipment\TrackFactory */
protected $_trackFactory; //missing ;

public function __construct(
  \Magento\Shipping\Model\ShipmentNotifier $shipmentNotifier, 
  \Magento\Sales\Model\Order\ShipmentRepository $shipmentRepository, 
  \Magento\Sales\Model\Order\Shipment\TrackFactory $trackFactory)
{
  $this->_shipmentNotifier = $shipmentNotifier;
  $this->_shipmentRepository = $shipmentRepository;
  $this->_trackFactory = $trackFactory;
}
public function addTrack($shipment, $carrierCode, $description, $trackingNumber) 
{
    /** Creating Tracking */
    /** @var Track $track */
    $track = $this->_trackFactory->create();
    $track->setCarrierCode($carrierCode);
    $track->setDescription($description);
    $track->setTrackNumber($trackingNumber);
    $shipment->addTrack($track);
    $this->_shipmentRepository->save($shipment);

    /* Notify the customer*/
    $this->_shipmentNotifier->notify($shipment);
 }

Где $ shipment - ваш объект отгрузки. Notify уведомит (отправит электронное письмо) пользователю и добавит элемент истории в коллекцию истории статуса заказа.


Это не сработало для меня, создали вспомогательный класс, я могу получить getDeiveryTime (), getCancelTime (), getDispatchTime (), но я не могу получить номер для отслеживания. Можете ли вы предоставить список функций для получения остальных сведений об отправке
insoftservice

Можете ли вы помочь по этому вопросу? magento.stackexchange.com/questions/268844/…
Крис Вэнь,

@carol Castro, как мы можем добавить идентификатор заказа здесь?
Моджахед
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.