如何在每个订单

时间:2016-03-05 18:00:22

标签: magento csv cron export

我目前正在使用批量导入+导出订单到CSV扩展程序:

https://www.magentocommerce.com/magento-connect/bulk-import-export-orders-to-csv.html

我需要的主要功能是导出订单功能,工作正常。因为这可以让我将magento订单导入订单处理系统,该系统用于运送产品。

我想要实现的是让导出功能自动运行,最好是在收到每个订单后。如果不是至少在一天中的某些时间。

我环顾四周似乎找不到我需要查找的信息来修改它以允许cron功能。生成的csv文件非常适合我的处理系统,订单扩展不会根据需要格式化文件。

我不是最有经验的,但我正在学习。请有人指出我需要查看的地方,以便通过cron作业提供导出功能。

所有建议都表示赞赏,该网站正在运行magento 1.9.2.2。

由于

2 个答案:

答案 0 :(得分:0)

您需要添加一个观察者,该观察者在每个下订单后触发,或者每天按计划发射一次/两次的cronjob。

每个订单后的观察者:

编辑:

app/code/community/Raveinfosys/Exporter/etc/config.xml

添加:

<!-- Add to global tag for frontend/backend orders -->
<events>
    <sales_order_place_after>
        <observers>
            <!-- Can be named anything so long as it doesn't clash so make it specific -->
            <namespace_export_orders_after_each_order>
                <class>Raveninfosys_Exporter_Model_Observer</class>
                <method>exportOrders</method>
            </namespace_export_orders_after_each_order>
        </observers>
    </sales_order_place_after>
</events>

然后创建调用导出顺序函数的观察者:

app/code/community/Raveinfosys/Exporter/Model/Observer.php

<?php
    class Raveinfosys_Exporter_Model_Observer
    {
        public function exportOrders( Varien_Event_Observer $oObserver ) 
        {
            $oOrder = $oObserver->getEvent()->getOrder();
            if( $oOrder && $oOrder->getId() )
            {
                Mage::getModel('exporter/exportorders')->exportOrders( array( $oOrder->getId() ) );
            }
        }
    }

按计划出口多个订单的Cronjob:

编辑:

app/code/community/Raveinfosys/Exporter/etc/config.xml

<crontab>
    <jobs>
        <raveinfosys_exporter_cron>
            <schedule>
                <!-- Edit this to controller how often to export -->
                <cron_expr>*/1 * * * *</cron_expr>
            </schedule>
            <run>
                <model>raveinfosys_exporter/exportorders::checkForRejectedMessages</model>
            </run>
        </raveinfosys_exporter_cron>
    </jobs>
</crontab>

并在以下方法中添加以下方法:

app/code/community/Raveinfosys/Exporter/Model/Exportorders.php

public function exportCronOrders()
{
    // Edit this date to correspond with the order timeframe.
    // There may be overlaps and you may need to add a flag to orders to indicate if they have already been exported.
    $sYesterday = date( 'Y-m-d H:i:s', strtotime( 'yesterday' ) );
    $oOrders    = Mage::getModel( 'sales/order' )->getCollection()->addFieldToFilter( 'created_at', array( 'gt'=> $sYesterday ) );
    $fileName = 'order_export_'.date("Ymd_His").'.csv';
    $fp = fopen(Mage::getBaseDir('export').'/'.$fileName, 'w');

    $this->writeHeadRow($fp);
    foreach ($oOrders as $oOrder) 
    {
        $this->writeOrder($oOrder, $fp);
    }

    fclose($fp);
}    

答案 1 :(得分:0)

我想指出用于向config.xml文件添加观察者的代码中存在拼写错误:

行:     Raveninfosys_Exporter_Model_Observer 应该:     Raveinfosys_Exporter_Model_Observer

即。是正确的“Raveinfosys”而不是“Raveninfosys”