5

出荷と出荷追跡を注文に動的に追加する必要があります。バッチで行うため、動的にする必要があります。これについて何か助けてもらえますか?

編集:
ユーザーは注文のリストを含むページを表示し、それぞれのトラック番号を入力してフォームを送信するため、既知の配送業者を取得し、この配送業者を介してすべての注文を送信する必要があります。

4

2 に答える 2

12

注文IDと対応する追跡番号のリストがあれば、

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

次に、すべての出荷を調べて、次のような追跡を追加できます。

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 のネストされたループが必要です。

于 2011-07-11T15:15:07.320 に答える
3

どうぞ :)

    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;
    }  
于 2011-07-11T14:38:47.867 に答える