Come faccio ad aggiungere il numero di tracciamento alla spedizione dell'ordine corrente in Magento 2?


10

Ho trovato dei codici di esempio per Magento 1.x. Ma non ho idea di come farlo su Magento 2.

Qualcuno può descrivere come implementarlo usando Dependency Injection (DI) ?

Grazie.

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

Risposte:


12

AFAIK l'oggetto traccia è lo stesso in M2.

Tuttavia, il resto del codice è cambiato.

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

Dove $this->trackFactoryun'istanza di Magento\Sales\Model\Order\Shipment\TrackFactoryed $shipmentè l'oggetto della spedizione.


A proposito, mi chiedo se sai come ottenere anche i commenti sulla spedizione degli ordini per MG2. Se lo fai, per favore pubblicalo qui. Grazie.
Roshan ruzaik,

Come aggiungere il monitoraggio URl nella spedizione?
Purushotam Sharma,

@Roshanruzaik, se stai chiedendo come aggiungere un commento alla spedizione, ecco come ho fatto: $ commentText = 'Test comment'; // Interfaccia di commento: \ Magento \ Sales \ Api \ Data \ ShipmentCommentCreationInterface $ comment = $ this-> commentInterface-> setComment ($ commentText); // usa $ comment come uno dei parametri durante la creazione della spedizione come nell'esempio seguente: // servizio di ordine di spedizione: \ Magento \ Sales \ Model \ ShipOrder $ this-> shipOrderService-> execute ($ orderId, $ shippingItems, $ notification, $ includeComment, $ commento, $ tracce);
Sarjan Gautam,

Ciao @Raphael al pianismo digitale sorseggiando il numero di tracciamento, e carrier_code sta salvando nella tabella "sales_shipment_track" in magento2 ma dove salverà le spese di spedizione?
Nagaraju K,

potete per favore aiutarmi su questa domanda simile magento.stackexchange.com/questions/268844/…
Kris Wen,

9

Aggiungendo alla risposta accettata, sarebbe una buona idea usare i repository invece del metodo di salvataggio deprecato. Aggiunta anche la notifica del cliente dopo la creazione del monitoraggio.

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

Dove $ shipping è l'oggetto della spedizione. Notifica notificherà (invia e-mail) all'utente e aggiungerà un elemento storico alla raccolta della cronologia dello stato dell'ordine.


Non ha funzionato per me, ho creato la classe helper, sono in grado di recuperare getDeiveryTime (), getCancelTime (), getDispatchTime () ma non riesco a ottenere il numero di tracciamento. Potete fornire un elenco di funzioni per recuperare i dettagli di resto della spedizione
insoftservice

puoi aiutarmi su questa domanda simile? magento.stackexchange.com/questions/268844/…
Kris Wen

@carol Castro, come possiamo aggiungere l'id dell'ordine qui?
Mujahidh,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.