2016-05-22 3 views
1

貨物を作成しようとしていますが、注文後に追跡番号を追加しようとしていますが、空の貨物を作成できません。 Googleを介して検索すると、これはアイテム数量がnullである理由の1つがありますが、以下で使用するものは注文した商品の正確な数量を返すことです。Magentoで貨物を作成しようとしているときに「空の貨物を作成できません」

$ item-> $ order-> getItemsCollection() - > count();

私は正確には、そのエラーの理由のみがわかりません。私は何を間違えた?誰もがこれについて私を助けてください知っている。

public function salesOrderInvoiceShipmentCreate($observer) 
    { 
     // $order = $observer->getEvent()->getOrder(); 
     //$order = Mage::getModel('sales/order')->loadByIncrementId($orderId); 
     $order_id = $observer->getData('order_ids'); 
     $order = Mage::getModel('sales/order')->load($order_id); 

     $token = '3acb6561b04117c6cbe3552c90f1d6815507e257'; 
     $waybill_url = 'https://track.delhivery.com/waybill/api/fetch/json/?token='.$token.'&cl=GEECHOO'; 
     $waybill = file_get_contents($waybill_url); 

     Mage::log($order, Zend_Log::INFO, 'order.log', true); 

     if (!$order->getId()) { 
      Mage::throwException('Order does not exist, for the Shipment process to complete'); 
     } 

     if ($order->canShip()) { 
      try { 
       // $shipment = Mage::getModel('sales/service_order', $order) 
     //  ->prepareShipment($this->_getItemQtys($order)); 
       $itemQty = $order->getItemsCollection()->count(); 
       $shipment = Mage::getModel('sales/service_order', $order)->prepareShipment($itemQty); 

       $shipmentCarrierCode = ''; 
       $shipmentCarrierTitle = ''; 

       $arrTracking = array(
       'carrier_code' => isset($shipmentCarrierCode) ? $shipmentCarrierCode : $order->getShippingCarrier()->getCarrierCode(), 
       'title' => isset($shipmentCarrierTitle) ? $shipmentCarrierTitle : $order->getShippingCarrier()->getConfigData('title'), 
       'tracking_number' => $waybill, 
      ); 

       $track = Mage::getModel('sales/order_shipment_track')->addData($arrTracking); 
       $shipment->addTrack($track); 

      // Register Shipment 
      $shipment->register(); 

      // Save the Shipment 
      $this->_saveShipment($shipment, $order); 

      // Finally, Save the Order 
      $this->_saveOrder($order); 
      } catch (Exception $e) { 
       throw $e; 
      } 
     } 
    } 

答えて

0

$quote = Mage::helper('checkout/cart')->getCart()->getQuote(); 
$value = []; 
foreach ($quote->getAllItems() as $item) { 
$value[]= array (
'id' => $item->getSku(), 
'quantity' => $item->getQty(), 

} 
発注数量のためにこれを試してみてください
関連する問題