2011-07-11 14 views
5

私は荷物と貨物トラックを注文に動的に追加する必要があります。私たちはバッチでそれを行うため、動的にする必要があります。この?マゼンタでは、貨物とトラック番号を追加する方法

EDIT:
ユーザーには注文のリストが表示され、それぞれのトラック番号を入力してフォームを送信するので、私は既知のキャリアを取得し、このキャリア経由ですべての注文を送信する必要があります。

ありがとうございます!
ジョナサンあなたは、あなたがすべての出荷を通過することができます

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

、注文IDと対応する追跡番号のリストを持っている場合することができます:)

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; 
    } 

答えて

12

を行くここ

+0

それは動作しませんでした、それは出荷収集ループに入ることはありません、あなたは原因が分かるでしょうか?どうもありがとう! – Jonathan

+0

ok $ shipment_collection-> addAttributeToFilter( 'order_id'、$ order_id)を試してください。 – Nasaralla

3

とトラッキングを追加すると、

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

このコードの上に注文IDと追跡IDのネストされたループを持つ必要があります。

+0

すばやく回答いただきありがとうございますが、どうすればいいですか?私はこの瞬間に注文しました。出荷や数量ではありません。再び、ありがとう! – Jonathan

+0

これは私が書いた関数なので、どこかにポップアップするか、単純にその部分を使うことができます。 Magento APIの関数を使用して、要求したことを行います。あなたが注文したすべてのものを出荷する場合。シンプルな注文アイテムを使用して、出荷される数量を取得します。 –

+0

ありがとうelgabbu、私が理解した注文項目、私は$出荷の引数として何を使用するか分からない。あなたはそれを説明できますか? – Jonathan

関連する問題