Wie füge ich der aktuellen Bestellsendung in Magento 2 eine Sendungsverfolgungsnummer hinzu?


10

Ich habe Beispielcodes für Magento 1.x gefunden. Aber ich habe keine Ahnung, wie das auf Magento 2 geht.

Kann jemand beschreiben, wie dies mit Dependency Injection (DI) implementiert wird ?

Vielen Dank.

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

Antworten:


12

AFAIK das Track-Objekt ist das gleiche in M2.

Der Rest des Codes hat sich jedoch geändert.

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

Wo $this->trackFactoryeine Instanz von Magento\Sales\Model\Order\Shipment\TrackFactoryund $shipmentIhr Versandobjekt ist.


Übrigens frage ich mich, ob Sie wissen, wie Sie auch für MG2 Versandkommentare für Bestellungen erhalten. Wenn Sie dies tun, posten Sie es bitte hier. Vielen Dank.
— Roshan Ruzaik

Wie füge ich Tracking-URl zum Versand hinzu?
— Purushotam Sharma

@Roshanruzaik, wenn Sie fragen, wie Sie der Sendung einen Kommentar hinzufügen können, dann habe ich Folgendes getan: $ commentText = 'Testkommentar'; // Kommentarschnittstelle: \ Magento \ Sales \ Api \ Data \ ShipmentCommentCreationInterface $ comment = $ this-> commentInterface-> setComment ($ commentText); // Verwenden Sie $ comment als einen der Parameter beim Erstellen der Sendung wie im folgenden Beispiel: // Versandauftragsservice: \ Magento \ Sales \ Model \ ShipOrder $ this-> shipOrderService-> execute ($ orderId, $ shippedItems, $ notify, $ includeComment, $ comment, $ Tracks);
— Sarjan Gautam

Hallo @Raphael bei Digital Pianism, der an der Tracking-Nummer nippt, und Carrier_code speichert in der Tabelle "sales_shipment_track" in magento2, aber wo wird die Versandgebühr gespeichert?
— Nagaraju K

können Sie bitte bei dieser ähnlichen Frage helfen magento.stackexchange.com/questions/268844/…
— Kris Wen

8

Wenn Sie die akzeptierte Antwort ergänzen, ist es eine gute Idee, Repositorys anstelle der veralteten Speichermethode zu verwenden. Außerdem wurde die Kundenbenachrichtigung nach der Tracking-Erstellung hinzugefügt.

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

Wobei $ Sendung Ihr Sendungsobjekt ist. Notify benachrichtigt den Benutzer (sendet eine E-Mail) und fügt der Bestellstatus-Verlaufssammlung ein Verlaufselement hinzu.


Es hat bei mir nicht funktioniert. Ich habe eine Hilfsklasse erstellt. Ich kann getDeiveryTime (), getCancelTime (), getDispatchTime () abrufen, aber ich kann keine Tracking-Nummer abrufen. Können Sie eine Liste von Funktionen bereitstellen, um
— Restdetails

Können Sie bei dieser ähnlichen Frage helfen? magento.stackexchange.com/questions/268844/…
— Kris Wen

@carol Castro, wie können wir hier die Bestellnummer hinzufügen?
— Mujahidh
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.