我需要在订单中动态添加发货和发货跟踪,它需要动态,因为我们将批量进行,你们可以帮我吗?
编辑:
用户将看到一个包含订单列表的页面,然后他将输入每个订单的跟踪号并提交表单,因此我需要获得一个已知的承运人并通过该承运人发送所有订单。
如果您有订单 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 的嵌套循环。
干得好 :)
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;
}