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();
Roshan Ruzaik
quelle

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.

Raphael beim digitalen Pianismus
quelle
Ü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.

Carol Castro
quelle
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