3
我正在开发一个程序,它必须以编程方式为已支付和开具发票的订单创建装运。创建装运不会更新物品的装运数量和订单不完整
问题是,即使在创建发货后,订单状态仍然是“处理”而不是“完成”。 如果手动从后端运送,则不会发生这种情况。
我发现问题在于订单商品的发货数量未更新,但在保存装运和订单后仍为0。
这是我正在使用的程序。 不会发出异常,并且正确创建了货件。
$orders = $this->_orderCollectionFactory->create()
->addAttributeToSelect('*')
->addFieldToFilter('entity_id' , array('in' => $ordersIdsArr))
->setOrder('created_at', 'desc');
foreach ($orders as $index => $order) {
if ($order->canShip()) {
$shipment = $this->_convertOrder->toShipment($order);;
$orderItems = $order->getItemsCollection()->addAttributeToSelect('*')->load();
foreach ($orderItems as $orderItem) {
if (! $orderItem->getQtyToShip() || $orderItem->getIsVirtual()) {
continue;
}
$qtyShipped = $orderItem->getQtyToShip();
$shipmentItem = $this->_convertOrder->itemToShipmentItem($orderItem)->setQty($qtyShipped);
$shipment->addItem($shipmentItem);
}
$shipment->register();
$shipment->getOrder()->setIsInProcess(true);
try {
$saveTransaction = $this->_transactionFactory->create();
$saveTransaction->addObject($shipment)
->addObject($shipment->getOrder());
$saveTransaction->save();
} catch (\Exception $e) {
}
}
}
/*..........*/
任何线索?