我知道有一种方法可以在订单(http://www.magentocommerce.com/boards/viewthread/74072/)上以编程方式开票,发货和设置状态,但实际上我需要深入查看订单的商品级别。我们的情况是,根据项目类型,可以在两个不同的位置(来自相同的订单)处理两个不同的项目。我可以进入Magento后端并“运送”一个项目而不“运送”另一个项目并将评论添加到该项目,但我正在寻找一种方法来以编程方式执行此操作。提前感谢您的帮助!
更新: 以下是我最终用来完成此任务的代码:
$client = new SoapClient('http://somesite.domain/magento/index.php/api/?wsdl');
$session = $client->login('username', 'password');
function extract_item_id($items, $sku ){
foreach($items as $item ){
if ($item["sku"]==$sku) {
return $item["item_id"];
}
}
}
$orderNum = "200000052";
$oderInfo = $client->call($session, "sales_order.info", $orderNum );
$item_id = extract_item_id($oderInfo["items"], "someSKU") ;
$itemsQty = array( $item_id => "1" );
$shipment = array(
$orderNum,
$itemsQty,
"Comment associated with item shipped.",
true,
true
);
var_dump($shipment);
$nship = $client->call($session, 'sales_order_shipment.create', $shipment);
答案 0 :(得分:3)
我从来没有这样做过,但它看起来像SOAP API supports creating individual shipment items。这是我要检查的第一件事。
如果这不起作用,我会检查Magento管理员的源代码并对其进行反向工程以创建单件物品。具体而言,在管理员的货件控制器的saveAction
处开始跟踪
app/code/core/Mage/Adminhtml/controllers/Sales/Order/ShipmentController.php
Magento代码库的订单/发货/发票部分是最易变/迭代的部分之一,核心对象/方法/依赖关系在版本之间巧妙地改变。找到一个“正确”的答案将证明是困难的,如果不是不可能的话。