Magento自动发送跟踪电子邮件

时间:2012-09-05 15:35:04

标签: email magento tracking

好的,一直在搜索这个,并且无法想出任何东西......我们通过Dydacomp的邮件订单管理器软件的同步程序在Magento社区1.7.0.2中外部填充跟踪号码... - 它关闭了在Magento中订购并添加跟踪号,但不会在法师中触发发送跟踪电子邮件功能。 - 我已经研究过,并且看到有观察员等似乎可以做到这一点,但是经过20个小时搜索我能找到的每个博客等等都无法提出任何有用的东西!

这个链接似乎真正朝着正确的方向......但是在哪里放置这段代码?我已经尝试过把它放在各种各样的地方,但都没有用: Programmaticly send email when shipping tracking number is set

非常感谢任何帮助。

1 个答案:

答案 0 :(得分: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

中完成的