Как добавить номер для отслеживания доставки текущего заказа в 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, как мы можем добавить идентификатор заказа здесь?
Моджахед