Comment ajouter un numéro de suivi à l'expédition de la commande en cours dans Magento 2?


10

J'ai trouvé des exemples de codes pour Magento 1.x. Mais je ne sais pas comment faire cela sur Magento 2.

Quelqu'un peut-il décrire comment mettre en œuvre cela en utilisant l' injection de dépendance (DI) ?

Merci.

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

Réponses:


12

AFAIK l'objet piste est le même en M2.

Cependant, le reste du code a changé.

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

Où est $this->trackFactoryune instance de Magento\Sales\Model\Order\Shipment\TrackFactoryet $shipmentest votre objet d'expédition.


BTW Je me demande si vous savez aussi comment obtenir des commentaires sur l'expédition des commandes pour MG2. Si vous le faites, veuillez le poster ici. Merci.
Roshan ruzaik

Comment ajouter l'URl de suivi lors de l'expédition?
Purushotam Sharma

@Roshanruzaik, si vous demandez comment ajouter un commentaire à l'envoi, voici comment je l'ai fait: $ commentText = 'Test comment'; // Interface de commentaire: \ Magento \ Sales \ Api \ Data \ ShipmentCommentCreationInterface $ comment = $ this-> commentInterface-> setComment ($ commentText); // utilisez $ comment comme l'un des paramètres lors de la création de l'envoi comme ci-dessous exemple: // service de commande d'expédition: \ Magento \ Sales \ Model \ ShipOrder $ this-> shipOrderService-> execute ($ orderId, $ expediedItems, $ notify, $ includeComment, $ comment, $ tracks);
Sarjan Gautam

Salut @Raphael au pianisme numérique en sirotant un numéro de suivi, et carrier_code enregistre dans la table "sales_shipment_track" dans magento2 mais où cela permettra-t-il d'économiser les frais d'expédition?
Nagaraju K

pouvez-vous s'il vous plaît aider sur cette question similaire magento.stackexchange.com/questions/268844/…
Kris Wen

9

En plus de la réponse acceptée, ce serait une bonne idée d'utiliser des référentiels au lieu de la méthode de sauvegarde obsolète. Ajout également de la notification client après la création du suivi.

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

Où $ shipping est votre objet d'expédition. Notify notifiera (enverra un e-mail) à l'utilisateur et ajoutera un élément d'historique à la collection d'historique d'état de la commande.


Cela n'a pas fonctionné pour moi, j'ai créé une classe d'assistance, je suis capable de récupérer getDeiveryTime (), getCancelTime (), getDispatchTime () mais je ne parviens pas à obtenir le numéro de suivi. Pouvez-vous fournir une liste de fonctions pour récupérer les détails du reste de l'expédition
insoftservice

pouvez-vous aider sur cette question similaire? magento.stackexchange.com/questions/268844/…
Kris Wen

@carol Castro, comment pouvons-nous ajouter l'identifiant de la commande ici?
Mujahidh
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.