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

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.


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.


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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.