Cómo crear un envío programáticamente en Magento 2

Estás leyendo la publicación: Cómo crear un envío programáticamente en Magento 2

// Cargando la orden

$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 el Envío.’));

}

// Objeto de inicialización para el envío del pedido

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

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

// Bucle de los artículos del pedido

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

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

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

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

intentar {

// Guardar envío y pedido creados

$envio->guardar();

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

// Enviar correo electrónico

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

->notificar($envío);

} atrapar (\Excepción $e) {

lanzar nueva \Magento\Framework\Exception\LocalizedException(

__($e->getMessage())

);

}

🔥 Recomendado:  Cómo analizar tu propio blog: 6 métricas para medir