Bagaimana cara menambahkan nomor pelacakan ke pengiriman pesanan saat ini di Magento 2?

10

Saya menemukan kode sampel untuk Magento 1.x. Tapi saya tidak tahu bagaimana melakukan ini di Magento 2.

Adakah yang bisa menjelaskan cara menerapkan ini menggunakan Dependency Injection (DI) ?

Terima kasih.

$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
sumber

Jawaban:

12

AFAIK objek trek sama dengan M2.

Namun, sisa kode telah berubah.

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

Di mana $this->trackFactoryinstance dari Magento\Sales\Model\Order\Shipment\TrackFactorydan $shipmentmerupakan objek pengiriman Anda.

Raphael di Digital Pianism
sumber
BTW Saya ingin tahu apakah Anda tahu cara mendapatkan komentar kiriman pesanan juga untuk MG2. Jika ya silakan posting di sini. Terima kasih.
Roshan ruzaik
Bagaimana cara menambahkan URl pelacakan dalam pengiriman?
Purushotam Sharma
@Roshanruzaik, jika Anda bertanya bagaimana cara menambahkan komentar ke kiriman maka inilah yang telah saya lakukan: $ commentText = 'Test comment'; // Antarmuka komentar: \ Magento \ Penjualan \ Api \ Data \ ShipmentCommentCreationInterface $ comment = $ this-> commentInterface-> setComment ($ commentText); // gunakan $ comment sebagai salah satu parameter saat membuat kiriman seperti contoh di bawah ini: // layanan pesanan kapal: \ Magento \ Sales \ Model \ ShipOrder $ this-> shipOrderService-> execute ($ orderId, $ shipmentItems, $ notify, $ termasukKomentar, $ komentar, $ trek);
Sarjan Gautam
Hai @Raphael di digital pianism menghirup nomor pelacakan, dan carrier_code menghemat tabel "sales_shipment_track" di magento2 tetapi di mana ia akan menghemat Biaya Pengiriman?
Nagaraju K
dapatkah Anda membantu dalam pertanyaan serupa ini magento.stackexchange.com/questions/268844/…
Kris Wen
9

Menambahkan ke jawaban yang diterima, itu akan menjadi ide yang baik untuk menggunakan repositori alih-alih metode penyimpanan yang sudah usang. Juga menambahkan pemberitahuan pelanggan setelah pembuatan pelacakan.

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

Di mana $ kiriman adalah objek kiriman Anda. Beri tahu akan memberi tahu (mengirim email) kepada pengguna dan menambahkan item riwayat ke koleksi riwayat status pesanan.

Carol Castro
sumber
Itu tidak berhasil karena saya telah membuat kelas pembantu, saya bisa mengambil getDeiveryTime (), getCancelTime (), getDispatchTime (), tetapi saya tidak bisa mendapatkan nomor pelacakan. Dapatkah Anda memberikan daftar fungsi untuk mengambil rincian kiriman
layanan dalam
dapatkah Anda membantu dalam pertanyaan serupa ini? magento.stackexchange.com/questions/268844/…
Kris Wen
@carol Castro, bagaimana kita bisa menambahkan id pesanan di sini?
Mujahidh