¿Cómo agrego un número de seguimiento al envío del pedido actual en Magento 2?

10

Encontré códigos de muestra para Magento 1.x. Pero no tengo idea de cómo hacer esto en Magento 2.

¿Alguien puede describir cómo implementar esto usando la inyección de dependencia (DI) ?

Gracias.

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

Respuestas:

12

AFAIK el objeto de la pista es el mismo en M2.

Sin embargo, el resto del código ha cambiado.

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

Donde $this->trackFactoryuna instancia de Magento\Sales\Model\Order\Shipment\TrackFactoryy $shipmentes su objeto de envío.

Raphael en Digital Pianism
fuente
Por cierto, me pregunto si también sabe cómo obtener comentarios de envío de pedidos para MG2. Si lo hace, publíquelo aquí. Gracias.
Roshan ruzaik
¿Cómo agregar el URL de seguimiento en el envío?
Purushotam Sharma
@Roshanruzaik, si está preguntando cómo agregar comentarios al envío, así es como lo hice: $ commentText = 'Test comment'; // Interfaz de comentarios: \ Magento \ Sales \ Api \ Data \ ShipmentCommentCreationInterface $ comment = $ this-> commentInterface-> setComment ($ commentText); // use $ comment como uno de los parámetros mientras crea el envío, como se muestra a continuación: // servicio de pedido de envío: \ Magento \ Sales \ Model \ ShipOrder $ this-> shipOrderService-> execute ($ orderId, $ enviadoItems, $ notify, $ includeComment, $ comment, $ tracks);
Sarjan Gautam
Hola, @Raphael, en el número de seguimiento de pianismo digital, y carrier_code está guardando en la tabla "sales_shipment_track" en magento2, pero ¿dónde ahorrará el Cargo de envío?
Nagaraju K
¿Pueden ayudarme en esta pregunta similar? magento.stackexchange.com/questions/268844/…
Kris Wen
9

Además de la respuesta aceptada, sería una buena idea usar repositorios en lugar del método de guardar obsoleto. También se agregó la notificación al cliente después de la creación del seguimiento.

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

Donde $ envío es su objeto de envío. Notificar notificará (enviará un correo electrónico) al usuario y agregará un elemento del historial a la recopilación del historial del estado del pedido.

Carol Castro
fuente
No funcionó para mí, he creado una clase auxiliar, puedo obtener getDeiveryTime (), getCancelTime (), getDispatchTime () pero no puedo obtener el número de seguimiento. ¿Puede proporcionar una lista de funciones para obtener detalles del resto del envío?
insoftservice
¿Puedes ayudar en esta pregunta similar? magento.stackexchange.com/questions/268844/…
Kris Wen
@carol Castro, ¿cómo podemos agregar la identificación del pedido aquí?
Mujahidh