Як додати номер відстеження до поточної доставки замовлення в 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.