Як додати номер відстеження до поточної доставки замовлення в Magento 2?


10

Я знайшов зразкові коди для Magento 1.x. Але я поняття не маю, як це зробити на Magento 2.

Чи може хтось описати, як це реалізувати, використовуючи залежність ін'єкції (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є вашим об'єктом відвантаження.


BTW Цікаво, чи знаєте ви, як отримати коментарі щодо замовлення замовлення також для MG2. Якщо ви дійсно, опублікуйте його тут. Дякую.
— Рошан ружайк

Як додати URl відстеження у відправці?
— Пурушотам Шарма

@Roshanruzaik, якщо ви запитуєте, як додати коментар до відправки, то я це зробив: $ commentText = 'Тестувати коментар'; // Інтерфейс коментарів: \ Magento \ Продажі \ Api \ Дані \ ShipmentCommentCreationInterface $ comment = $ this-> commentInterface-> setComment ($ commentText); // використовуйте $ comment як один з параметрів під час створення відправлення, як наведено нижче, наприклад: // служба замовлення судна: \ Magento \ Продажі \ Модель \ ShipOrder $ this-> shipOrderService-> Execute ($ orderId, $ shippedItems, $ notify, $ includeComment, $ comment, $ track);
— Сарджан Гаутам

Привіт @Raphael на цифровому піанізмі, попиваючи відстежуючий номер, а operator_code зберігає в таблиці "sales_shipment_track" в magento2, але де це збереже плату за доставку?
— Nagaraju K

чи можете ви допомогти з цим подібним питанням magento.stackexchange.com/questions/268844/…
— Kris Wen

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 є вашим об'єктом відвантаження. Повідомляти сповістить (надішле електронну пошту) користувачеві та додасть елемент історії до колекції історії статусу замовлення.


Це не спрацювало для мене. Я створив клас помічників, я можу отримати getDeiveryTime (), getCancelTime (), getDispatchTime (), але я не можу отримати номер відстеження. Чи можете ви надати перелік функцій для отримання деталей відпочинку про відправлення
— insoftservice

ви можете допомогти в цьому подібному питанні? magento.stackexchange.com/questions/268844/…
— Kris Wen

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