我正在开发一个程序,该程序必须以编程方式为已经付款和开票的订单创建装运。
问题是即使在创建货件之后,订单状态仍然是“处理中”而不是“完成”。如果我从后端手动发货,则不会发生这种情况。
我发现问题是订单商品的发货数量没有更新,但保存发货和订单后仍然为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) {
}
}
}
/*..........*/
有什么线索吗?