2010-07-01 75 views
1

我正在研究一个脚本,该脚本已经超出了magento框架,并将被编程为获取所有货件和追踪编号。Magento - 外部magento的Cronjob,以更新货件状态

获得这些货物和跟踪编号后,我会与货运商联系并根据货物是否派遣/扫描或发货更新装运和订单的状态。

以下是成功的一半代码和我坚持,

<?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

+3

有问题需要回答吗? – Paolo 2010-07-01 07:23:56

+1

指定你被卡住的原因(我做了X,预计Y,但得到Z)会帮助人们了解你在哪里。请记住,我们没有花费最后3个小时的时间:) – 2010-07-01 15:48:41

+0

您好我想知道如何根据运输方法提供的信息更新货件状态和订单状态。 – Saurabh 2010-07-03 19:25:58

回答

3

一旦货物和发票是为它设置为一个订单创建状态为“完成”。不知道你想在那里改变什么,但是如果你在你的magento安装中设置了一些自定义状态,你可以使用order class的setStatus()方法。

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

我不认为出货量有状态的,但你可以通过调用addComment添加注释装运($评论,$ notifyCustomer),其中第一个变量是一个字符串,第二个是布尔。

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

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

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

嗨西尔沃,我做了你说的,但是当我做$ myShipment-> save();我丢失了跟踪编号和发货物品。 还是猫让它工作,我想......我想,这批货应注明发运和订单状态 我已经贴我的全部代码在这里http://pastebin.org/382465 问候, SAURABH – Saurabh 2010-07-04 06:11:36

1

您可以设置货件状态 - 有它一个字段的设置为NULL对我来说,当你通过查询shipment.list API

这里有一个转储:

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更新货件(如上图所示的silvo)。对不起,我没有语法,但我怀疑你会根据发货ID而不是订单进行更新。这意味着您需要先创建一个货件(同样,这可以通过shipping.create方法通过webservices API完成(与之前的链接相同页面上的详细信息)。

我希望这可以让您正确的道路如果任何人有这样做的工作代码(这是我最初带给我的这篇文章),请随时分享:)

+0

另外,如果你打算更新,它看起来像这个字段接受整数值:'shipment_status' int(10)默认NULL, – Andrew 2011-01-07 13:10:29