【问题标题】:Magento: Automatically create CSV File for each order placedMagento:为下的每个订单自动创建 CSV 文件
【发布时间】:2014-07-21 00:35:21
【问题描述】:

我想知道,我是否可以为放置在 magento(1.7 或 1.9)上的每个订单自动创建/导出一个 csv 文件

我需要它们包含发送订单、产品、选定属性、客户详细信息等所需的所有信息。我需要以类似于“order_number_timestamp.csv”的格式命名的文件

也许通过一些 php 和 cron 脚本可以实现?

谢谢

【问题讨论】:

    标签: php mysql magento csv cron


    【解决方案1】:

    Leeboyce,您可以使用 Magento Event Observer functionality 来完成此操作。

    当触发将运行函数的事件时,将在订单位置触发函数

    创建一个扩展将发送邮件...使用 csv

    步骤:在app/code/local/Amit/Sendorderdata/etc/ 下创建config.xml 和 config.xml的代码是

    <?xml version="1.0" encoding="utf-8"?> 
    <config>     
        <modules> 
            <Amit_Sendorderdata> 
                <version>0.1.4</version> 
            </Bh_Sendorderdata> 
        </modules> 
        <global>
        <models>
                <sendorderdata>
                    <class>Amit_Sendorderdata_Model</class>
        </sendorderdata>
            </models>
        </global> 
    <frontend>
        <events>
                <checkout_submit_all_after>
                    <observers>
                        <sendorderdata_observer_checkout_type_onepage_save_order_after>
                            <type>singleton</type>
                            <class>sendorderdata/observer</class>
                            <method>checkoutTypeOnepageSaveOrderAfter</method>
                        </sendorderdata_observer_checkout_type_onepage_save_order_after>
                    </observers>
                </checkout_submit_all_after>
              </events>
        </frontend>
    </config> 
    

    第二步:创建 Observer.php app/code/local/Amit/Sendorderdata/Model/

    在这个文件中有一个函数checkoutTypeOnepageSaveOrderAfter which send mail...

    <?php
    class Amit_Sendorderdata_Model_Observer
    {
      public function checkoutTypeOnepageSaveOrderAfter($observer)
        {
        $order = $observer->getEvent()->getOrder();
        if (!$order) {
                $orders = $observer->getEvent()->getOrders();
                $order = array_shift($orders);
            }
         /* Here you will write  yours code  for create $order  will give all detail of order  */
    }
    

    如何在magento中创建csv here

    了解更多事件和观察者

    http://inchoo.net/category/ecommerce/magento/events-observers/

    http://www.pierrefay.com/event-observers-magento-tutorial-howto-105
    http://www.nicksays.co.uk/magento-events-cheat-sheet-1-7/
    

    【讨论】:

    • 非常感谢您的回复。今晚我将完成这些步骤,让你知道我的进展情况。谢谢。
    【解决方案2】:

    您可以使用 Magento Event Observer 功能执行此操作,如下所述: Step1:进入app/code/local/Allin/CustomModule/etc/下的config.xml,在config.xml中添加如下代码

    config.xml
    ......
        <frontend>
                    <events>
                            <sales_order_save_after>
                                    <observers>
                                            <generate_csv_save_order_after>
                                                    <type>singleton</type>
                                                    <class>custommodule/observer</class>
                                                    <method>customCSV</method>
                                            </generate_csv_save_order_after>
                                    </observers>
                            </sales_order_save_after>
                    </events>
      </frontend>
    

    Step2:在app/code/local/Allin/CustomModule/Model/Observer.php创建Observer.php

    <?php
    
    class Allin_CustomModule_Model_Observer
    {
        public function customCSV($observer)
        {
                    $id = $observer->getEvent()->getOrder()->getId();
                    $order = Mage::getModel('sales/order')->load($id);
                    $orderIncrementId = $order->getIncrementId();
                    $billingAddress = $order->getBillingAddress()->getData();
                    $billingAdd=array(
                    'Billing Name' => $billingAddress['firstname']."
    ".$billingAddress['lastname'],
                    'Billing Company' => $billingAddress['company'],
                    'Billing Street' => $billingAddress['street'],
                    'Billing Zip' => $billingAddress['postcode'],
                    'Billing City' => $billingAddress['city'],
                    'Billing State' => $billingAddress['region'],
                    'Billing Country' => $billingAddress['country_id'],
                    'Billing Phone' => $billingAddress['telephone'],
                    );
    
                    $orderData = Mage::getResourceModel('sales/order_collection')
                            ->addFieldToSelect(array('entity_id'=>'entity_id',
                            'Order Number'=>'increment_id',
                            'Order Date'=>'created_at',
                            'Order Status'=>'status',
                            'Order Purchased From'=>'store_name',
                            'Order Shipping Method'=>'shipping_method',
                            'Order Subtotal'=>'subtotal',
                            'Order Tax'=>'tax_amount',
                            'Order Shipping'=>'shipping_amount',
                            'Order Discount'=>'discount_amount',
                            'Order Grand Total'=>'grand_total',
                            'Order Base Grand Total'=>'base_grand_total',
                            'Order Paid'=>'total_paid',
                            'Order Refunded'=>'total_refunded',
                            'Order Due'=>'total_due',
                            'Total Qty Items Ordered'=>'total_qty_ordered',
                            'Customer Email'=>'customer_email',
                            'Stock Health Customer ID'=>'customer_id',
                            'Stock Health Customer ID'=>'customer_id',
    
                            ))->addExpressionFieldToSelect(
                   'Customer Name',
                   'CONCAT({{customer_firstname}}, \' \',
    {{customer_lastname}})',
                   array('customer_firstname' =>
    'main_table.customer_firstname', 'customer_lastname' =>
    'main_table.customer_lastname')
                               )->addExpressionFieldToSelect(
                   'Shipping Name',
                   'CONCAT({{firstname}}, \' \', {{lastname}})',
                   array('firstname' => 'sales_flat_order_address.firstname',
    'lastname' => 'sales_flat_order_address.lastname')
                               )
                               ->join(array('sales_flat_order_address' => 'sales/order_address'),
                       "main_table.entity_id = sales_flat_order_address.parent_id AND
    sales_flat_order_address.address_type != 'billing'
                           AND main_table.increment_id='$orderIncrementId'  ",
                       array(
                                    'Shipping Company'       => 'company',
                                    'Shipping Street'     => 'street',
                                    'Shipping Zip'     => 'postcode',
                   'Shipping City'       => 'city',
                               'Shipping State'       => 'region',
                   'Shipping Country' => 'country_id',
                   'Shipping Phone Number'  => 'telephone',
    
               ))->join(array('sales_flat_order_payment' =>
    'sales/order_payment'), 'main_table.entity_id =
    sales_flat_order_payment.parent_id',
                       array(
                   'Order Payment Method' => 'method',
                               'Credit Card Type' => 'cc_type'
               ))->join(array('sales_flat_order_item' => 'sales/order_item'),
    'main_table.entity_id = sales_flat_order_item.order_id',
                       array(
                                    'Order Item Increment' => 'item_id',
                   'Item Name' => 'name',
                               'sku' => 'sku',
                               'Item Options' => 'product_options',
                               'Item Original Price' => 'original_price',
                               'Item Price' => 'price',
                               'Item Qty Ordered' => 'qty_ordered',
                               'Item Qty invoiced' => 'qty_invoiced',
                               'Item Qty shipped' => 'qty_shipped',
                               'Item Qty Canceled' => 'qty_canceled',
                               'Item Qty Refunded' => 'qty_refunded',
                               'Item Tax' => 'tax_amount',
                               'Item Discount' => 'discount_amount',
                               'Item Total' => 'row_total_incl_tax',
               ));
    
                    $headings=$orderData->getData();
    
                    foreach($headings as $k => $v)
                    {
                            array_shift($v);
                            $heading[]= array_merge($v,$billingAdd);
                    }
    
                    $filename = 'csvorder/'.date('dmY-His').$orderIncrementId.".csv";
    
                    foreach($heading[0] as $key => $value ) {
                            $labelArray .= $key.",";
                    }
    
                    $labelArray = substr($labelArray, 0, -1);
                    $valueArray = substr($valueArray, 0, -1);
                    $data[] = explode(",", $labelArray);
    
                    foreach($heading as $key => $value ) {
                            $data[] = $value;
                    }
                    if(count($data) > 0 ) {
                            $fp = fopen($filename, 'w');
                            foreach ($data as $product) {
                                    fputcsv($fp, $product);
                            }
                            fclose($fp);
                    }
            }
    
    }
    
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-15
      • 2014-02-18
      • 1970-01-01
      • 2021-08-08
      相关资源
      最近更新 更多