Jak dodać numer śledzenia do bieżącej wysyłki zamówienia w Magento 2?

10

Znalazłem przykładowe kody dla Magento 1.x. Ale nie mam pojęcia, jak to zrobić w Magento 2.

Czy ktoś może opisać, jak zaimplementować to za pomocą Dependency Injection (DI) ?

Dzięki.

$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();
Roshan ruzaik
źródło

Odpowiedzi:

12

AFAIK obiekt ścieżki jest taki sam w M2.

Jednak reszta kodu uległa zmianie.

$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();

Gdzie $this->trackFactorywystąpienie Magento\Sales\Model\Order\Shipment\TrackFactoryi $shipmentjest twoim przedmiotem przesyłki.

Raphael at Digital Pianism
źródło
BTW Zastanawiam się, czy wiesz, jak uzyskać komentarze dotyczące zamówienia zamówienia również dla MG2. Jeśli tak, opublikuj go tutaj. Dzięki.
Roshan ruzaik
Jak dodać śledzący URl w przesyłce?
Purushotam Sharma
@Roshanruzaik, jeśli pytasz, jak dodać komentarz do przesyłki, oto jak to zrobiłem: $ commentText = 'Test comment'; // Interfejs komentarzy: \ Magento \ Sales \ Api \ Data \ ShipmentCommentCreationInterface $ comment = $ this-> commentInterface-> setComment ($ commentText); // użyj $ comment jako jednego z parametrów podczas tworzenia przesyłki, jak poniżej: // usługa zamówienia wysyłki: \ Magento \ Sales \ Model \ ShipOrder $ this-> shipOrderService-> wykonaj ($ orderId, $ shippedItems, $ powiadom, $ $ includeComment, $ comment, $ tracks);
Sarjan Gautam
Cześć @Raphael w cyfrowym pianizmie popijając numer śledzenia, a operator_kod zapisuje w tabeli „sales_shipment_track” w magento2, ale gdzie zaoszczędzi opłatę transportową?
Nagaraju K,
czy możesz pomóc w odpowiedzi na to podobne pytanie magento.stackexchange.com/questions/268844/...
Kris Wen
9

Dodając do zaakceptowanej odpowiedzi, dobrym pomysłem byłoby użycie repozytoriów zamiast przestarzałej metody składowania. Dodano także powiadomienie klienta po utworzeniu śledzenia.

/** @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);
 }

Gdzie przesyłka $ jest twoim przedmiotem przesyłki. Powiadomienie powiadomi użytkownika (wyśle ​​wiadomość e-mail) i doda element historii do kolekcji historii statusu zamówienia.

Carol Castro
źródło
Nie działało dla mnie, stworzyłem klasę pomocnika, jestem w stanie pobrać getDeiveryTime (), getCancelTime (), getDispatchTime (), ale nie mogę uzyskać numeru śledzenia. Czy możesz podać listę funkcji, które
pozwolą
czy możesz pomóc na to podobne pytanie? magento.stackexchange.com/questions/268844/…
Kris Wen
@carol Castro, jak możemy tutaj dodać identyfikator zamówienia?
Mujahidh,