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

Estás leyendo la publicación: Cómo agregar un número de seguimiento al envío del pedido actual en Magento 2

// Cargar el pedido

$pedido = $this->_objectManager->create(‘Magento\Sales\Model\Order’)

->loadByAttribute(‘increment_id’, ‘000000001’);

//O

$pedido = $this->_objectManager->create(‘Magento\Sales\Model\Order’)

-> cargar (‘1’);

// Comprobar si el pedido ya se ha enviado o se puede enviar

if (!$pedido->canShip()) {

lanzar nueva \Magento\Framework\Exception\LocalizedException(

__(‘No puede crear un envío.’)

);

}

// Inicializar el objeto de envío del pedido

$convertOrder = $this->_objectManager->create(‘Magento\Sales\Model\Convert\Order’);

$envio = $convertirPedido->toEnvio($pedido);

// Recorrer los artículos del pedido

foreach ($pedido->getAllItems() as $orderItem) {

// Comprobar si el artículo del pedido es virtual o tiene cantidad para enviar

if (!$orderItem->getQtyToShip() || $orderItem->getIsVirtual()) {

continuar;

}

$qtyShipped = $orderItem->getQtyToShip();

// Crear artículo de envío con cantidad

$artículodeenvío = $convertirPedido->artículoEnArtículoDeEnvío($artículodepedido)->setQty($cantidadEnviada);

// Agregar artículo de envío al envío

$envio->addItem($envioItem);

}

// Registrar envío

$envio->registrar();

$datos = matriz(

‘carrier_code’ => ‘ups’,

‘título’ => ‘Servicio de paquetería unido’,

‘number’ => ‘TORD23254WERZXd3’, // Reemplace con su número de seguimiento

);

$envío->getOrder()->setIsInProcess(true);

intentar {

// Guardar el envío y el pedido creados

$track = $this->_objectManager->create(‘Magento\Sales\Model\Order\Shipment\TrackFactory’)->create()->addData($data);

$envío->addTrack($track)->save();

$envio->guardar();

$envio->getOrder()->save();

// Enviar correo electrónico

$this->_objectManager->create(‘Magento\Shipping\Model\ShipmentNotifier’)

->notificar($envío);

$envio->guardar();

} atrapar (\Excepción $e) {

lanzar nueva \Magento\Framework\Exception\LocalizedException(

__($e->getMessage())

);

}