2011-07-11 42 views

Trả lời

12

Nếu bạn có một danh sách các id trật tự và số theo dõi tương ứng bạn có thể,

$shipment_collection = Mage::getResourceModel('sales/order_shipment_collection'); 
$shipment_collection->addAttributeToFilter('order_id', $order_id); 

Sau đó, bạn có thể đi qua tất cả các lô hàng và thêm theo dõi như,

foreach($shipment_collection as $sc) { 
    $shipment = Mage::getModel('sales/order_shipment'); 
    $shipment->load($sc->getId()); 
    if($shipment->getId() != '') { 
     $track = Mage::getModel('sales/order_shipment_track') 
       ->setShipment($shipment) 
       ->setData('title', 'ShippingMethodName') 
       ->setData('number', $track_no) 
       ->setData('carrier_code', 'ShippingCarrierCode') 
       ->setData('order_id', $shipment->getData('order_id')) 
       ->save(); 
    } 
} 

Yo u sẽ cần phải có một vòng lặp lồng nhau của ID đặt hàng và ID theo dõi trên đầu mã này.

+0

nó không hoạt động, nó không bao giờ đi vào vòng thu gom hàng, bạn có biết nguyên nhân là gì không? cảm ơn rất nhiều! – Jonathan

+0

ok, hãy thử $ shipment_collection-> addAttributeToFilter ('order_id', $ order_id); – Nasaralla

3

đây bạn đi :)

private function _createShipment($shipment, $itemsQty) 
    { 
     $itemsQtyArr = array(); 
     foreach ($itemsQty as $item) 
     { 
      $itemsQtyArr[$item->iExternalOrderId] = $item->dQtyShipped; 
     } 

     try 
     { 
      $shipmentIncrementId = Mage::getModel('sales/order_shipment_api')->create($shipment->sOrderNumber, $itemsQtyArr, $shipment->sShipmentComment, true, true); 

      if ($shipmentIncrementId) 
      { 
       Mage::getModel('sales/order_shipment_api')->addTrack($shipmentIncrementId, $shipment->sCarrierCode, $shipment->sTrackingTitle, $shipment->sTrackingNumber); 
      } 
     } 
     catch(Exception $e) 
     { 
      Mage::log('Exception: ' . $e->getMessage()); 
     } 

     return $shipmentIncrementId ? true : false; 
    } 
+0

Cảm ơn bạn rất nhiều vì câu trả lời nhanh, nhưng làm thế nào tôi gọi nó? Tôi có một đơn đặt hàng tại thời điểm này, không phải là lô hàng hoặc số lượng. Một lần nữa, cảm ơn rất nhiều! – Jonathan

+0

Đó là một chức năng tôi đã viết để chỉ cần bật nó một nơi nào đó ... hoặc bạn chỉ có thể sử dụng các bộ phận của nó. Nó sử dụng chức năng trong API Magento để làm những gì bạn yêu cầu. Nếu bạn định gửi tất cả những thứ đã ra lệnh. đơn giản sử dụng các mục đặt hàng để có được số lượng sẽ được vận chuyển. –

+0

cảm ơn elgabbu, các thứ tự mà tôi đã hiểu, nhưng tôi sẽ không biết phải sử dụng cái gì làm đối số giao hàng $. bạn có thể giải thích điều đó không? – Jonathan

Các vấn đề liên quan