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