我有csv,其中包含跟踪编号、跟踪链接、承运商代码和订单号。我可以为特定订单设置跟踪号码、运营商代码,但不能为同一订单设置跟踪URL。请建议我一些代码片段或任何解决此查询的方法。
if (($handle = fopen("".$webshopimport_path."''CSV''trackandtrace.csv", "r")) !== FALSE)
{
while (($data = fgetcsv($handle, 100000, ",")) !== FALSE)
{
Mage::init();
$comment = null;
$email = false;
$includeComment = false;
$orderId = '100000065'; //get ordernumber from csv
$order = Mage::getModel('sales/order')->loadByIncrementId($orderId);
$convertor = Mage::getModel('sales/convert_order');
$shipment = $convertor->toShipment($order);
foreach ($order->getAllItems() as $orderItem)
{
if (!$orderItem->getQtyToShip()) {
continue;
}
if ($orderItem->getIsVirtual()) {
continue;
}
$item = $convertor->itemToShipmentItem($orderItem);
$qty = $orderItem->getQtyToShip();
$item->setQty($qty);
$shipment->addItem($item);
}
$trackdata = array();
$trackdata['carrier_code'] = $data[2]; //get carrier_code from csv
$trackdata['title'] = $data[2]; //get title from csv
$trackdata['number'] = $data[3]; //get track number from csv
$track = Mage::getModel('sales/order_shipment_track')->addData($trackdata);
$shipment->addTrack($track);
Mage::register('current_shipment', $shipment);
$shipment->register();
$shipment->addComment($comment, $email && $includeComment);
$shipment->setEmailSent(true);
$shipment->getOrder()->setIsInProcess(true);
$transactionSave = Mage::getModel('core/resource_transaction')
->addObject($shipment)
->addObject($shipment->getOrder())
->save();
$shipment->sendEmail($email, ($includeComment ? $comment : ''));
}
fclose($handle);
$retVar = true;
}
您不应该为订单设置任何跟踪URL,因为跟踪URL是根据订单跟踪编号和运输服务跟踪URL结构自动生成的。
例如,UPS跟踪URL为:http://wwwapps.ups.com/WebTracking/track?track=yes&trackNums={tracking_number}