0

好的,一直在到处搜索,但什么都想不出来...我们正在通过 Dydacomp 邮购管理器软件中的同步程序在 Magento Community 1.7.0.2 中外部填充跟踪号码... - 它关闭了 Magento 中的订单并添加一个tracking number,但不会触发mage中的send tracking email功能。- 我进行了研究,发现有观察者等似乎可以做到这一点,但是经过 20 小时搜索我能找到的每个博客等后,无法提出任何可行的方法!

这个链接似乎真的是在正确的方向......但是把这段代码放在哪里?我试过把它放在各种地方,但没有一个工作: 在设置运输跟踪号时以编程方式发送电子邮件

任何帮助将不胜感激。

4

1 回答 1

1

我开发了类似的东西。我创建了一个由 cron 激活的模块(每天一次),它检查最后一个“已交付”的订单(完成状态)。

要在 cron magento 模块中运行函数,请添加到 config.xml

<crontab>
    <jobs>            
        <myModule_myFunction>
            <schedule><cron_expr>*/60 * * * *</cron_expr></schedule>
            <run><model>emailtracker/cron::myFunction</model></run>
        </myModule_myFunction>
    </jobs>
</crontab>

为了获得供应,您可以使用以下代码片段

$orders = Mage::getModel('sales/order')->getCollection()
        ->addFieldToFilter('status', 'complete')
        ->addAttributeToFilter('created_at', array('gteq' => $dataForFilter));

请注意,我创建的订单集合是按日期过滤的,以避免检索所有已下达的订单​​。

凭借我收集的最近和完整的订单,这些订单可能是接收跟踪电子邮件交付的候选人,我实际上可以处理重要的订单。

我创建了一个 foreach 以在我的集合中运行,并在该循环中检索跟踪号。

foreach($orders as $order) {
    $trackings = Mage::getResourceModel('sales/order_shipment_track_collection')
            ->setOrderFilter($order)
            ->getData();

    for($i=0;$i<count($trackings);$i++) {
        $trackingNumber = $trackings[$i]['track_number'];
        //Make your php magic here
    }
}

从这一点开始,您可以按照您想要的方式处理这些信息。您可以创建一个函数,通过 API 检查跟踪号的状态,并通过其交付服务发送电子邮件,或者您可以想象。

重要提示:请记住检查您的 magento cron 是否处于活动状态。注意:我是在 Magento 1.6.1.0 中完成的

于 2012-09-05T17:47:23.710 回答