以编程方式在Magento中发送和评论订单的单个项目

时间:2010-08-23 16:56:42

标签: magento

我知道有一种方法可以在订单(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);

1 个答案:

答案 0 :(得分:3)

我从来没有这样做过,但它看起来像SOAP API supports creating individual shipment items。这是我要检查的第一件事。

如果这不起作用,我会检查Magento管理员的源代码并对其进行反向工程以创建单件物品。具体而言,在管理员的货件控制器的saveAction处开始跟踪

app/code/core/Mage/Adminhtml/controllers/Sales/Order/ShipmentController.php

Magento代码库的订单/发货/发票部分是最易变/迭代的部分之一,核心对象/方法/依赖关系在版本之间巧妙地改变。找到一个“正确”的答案将证明是困难的,如果不是不可能的话。