Magento - 在magento外面的Cronjob更新装运状态

时间:2010-07-01 07:02:20

标签: magento

我正在制作一个超出magento框架的脚本,并将编程以获取所有货件和跟踪号码。

在获得这些货物和跟踪号码后,我将与货运提供商核实并根据发货和扫描或交付的情况更新货件和订单的状态。

以下是完成代码的一半,我被卡住了,

<?php
    require_once 'app/Mage.php';
    Mage::app('default');

$myShipment=Mage::getModel('sales/order_shipment'); 
$shipment=Mage::getResourceModel('sales/order_shipment_collection')
    ->addAttributeToSelect('*');

$allIds=$shipment->getAllIds();
foreach($allIds as $thisId) {
    $myShipment->load($thisId)->getAllTrackings();
    echo "<pre>";
    print_r($myShipment);
    echo "</pre>";

}

<?php require_once 'app/Mage.php'; Mage::app('default'); $myShipment=Mage::getModel('sales/order_shipment'); $shipment=Mage::getResourceModel('sales/order_shipment_collection') ->addAttributeToSelect('*'); $allIds=$shipment->getAllIds(); foreach($allIds as $thisId) { $myShipment->load($thisId)->getAllTrackings(); echo "<pre>"; print_r($myShipment); echo "</pre>"; }

请帮忙,

谢谢和问候, SAURABH

2 个答案:

答案 0 :(得分:3)

为订单创建装运和发票后,将其设置为“完成”状态。不确定要在那里进行更改,但如果您在magento安装中设置了一些自定义状态,则可以使用订单类的 setStatus()方法。

$myShipment->getOrder()->setStatus("YourCustomStatus");

我不认为货件有状态,但您可以通过调用 addComment($ comment,$ notifyCustomer)为货件添加注释,其中第一个变量是字符串,第二个是bool。

$myShipment->addComment("01/01/2010 06:55, Out for delivery", true);

您还可以使用类似方法为订单添加评论:

$myShipment->getOrder()->addComment("01/01/2010 06:55, Out for delivery", true);

答案 1 :(得分:1)

您可以设置货件状态 - 当您通过shipment.list API

查询时,我有一个字段设置为NULL

这是一个转储:

Array
(
    [0] => Array
        (
            [store_id] => 1
            [total_weight] => 
            [total_qty] => 1.0000
            [email_sent] => 1
            [order_id] => 3
            [customer_id] => 1
            [shipping_address_id] => 6
            [billing_address_id] => 5
            [shipment_status] => 
            [increment_id] => 100000001
            [created_at] => 2010-11-11 15:41:41
            [updated_at] => 2010-11-11 15:44:05
            [shipment_id] => 1
        )

看起来您不能通过WS API进行设置,这意味着您需要在外部脚本中包含mage.php,然后通过magento更新货件(如上图所示)。对不起,我没有手头的语法,但我怀疑你会根据货件ID而不是订单更新。这意味着您需要先创建一个货件(同样,这可以通过shipping.create方法通过webservices API完成(与先前链接在同一页面上的详细信息)。

我希望这能让你走上正确的道路。如果有人有任何工作代码这样做(最初带我到这篇文章)请随意分享。 :)