我开发了类似的东西。我创建了一个由 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 中完成的