0

Is there a way to add a new search field in the Magento admin under "Orders"? I want to be able to search by coupon code usage (ex: search by coupon code: "sale2013", come up with all the orders that applied that coupon code during checkout).

enter image description here

I'm able to pull this data out of the Magento DB, but I'd really like to add this functionality to the Magento admin to make it easier for co-workers and my boss. Can it be done and, if so, ideas as to where I can start? Thanks guys.

4

2 に答える 2

1

チェックアウト時に使用されるクーポンコードはsales_flat_order、顧客がチェックアウトするときに一次注文テーブル()に保存されます。値がない場合、クーポンコードは使用されていません。ただし、管理者のグリッドのデータはsales_flat_order_gridテーブルから取得されます。非常にトラフィックの多いサイトで特に明らかになるパフォーマンス上の理由から、プライマリオーダーテーブルの代わりにそこから取得されます。

フィルタリングする必要のあるデータがどこにあるか、グリッドのデータがどこから来ているかがわかったので、次に進んでデータを作成します。

最初に行う必要があるのは、テーブルの列の定義に一致するcoupon_code列をテーブルに追加することです。の列の値は、一致する列があり、キャッシュストレージがフラッシュされると、自動的に入力されます。sales_flat_order_gridsales_flat_ordercoupon_codesales_flat_ordersales_flat_order_grid

データは注文の保存時に更新されるため、具体的には、新しい注文と管理​​者を介して更新された注文(注文に関するコメントも)にデータが入力されます。既存の注文の場合は、データアップグレードスクリプトを実行して値をコピーします。

データ/スキーマを配置したら、グリッドにフィルター可能な列を表示させる必要があります。このためにはMage_Adminhtml_Block_Sales_Order_Grid、カスタムモジュールからクラスを書き直し(コアファイルを直接編集しないでください。後で気になります)、_prepareColumns列定義を含むメソッドでメソッドをオーバーライドします。

    $this->addColumn('coupon_code', array(
        'header' => Mage::helper('sales')->__('Coupon Code'),
        'index' => 'coupon_code',
    ));

あなたがMagentoの開発に非常に慣れているのであれば、私はあなたを助け始めたばかりだと思い切って言いたいと思います。ただし、必要な機能を掘り下げて構築するための参照ポイントはたくさんあります。HTH!:)

于 2013-01-15T01:41:10.780 に答える
0

この拡張機能を使用すると、グリッドに新しい列を簡単に追加できます: https://github.com/magento-hackathon/GridControl

この拡張機能を追加しgridcontrol.xml、etc ディレクトリ内に独自のものを記述します

そして、次のようなものが機能するはずです:

<?xml version="1.0"?>
<gridcontrol>
<grids>
    <order.grid>
        <coupon_code>
            <after>columnname</after>

            <add>
                <header>Coupon code</header>
                <type>text</type>
                <index>coupon_code</index>
                <joinField>coupon_code|sales/order|coupon_code|entity_id=entity_id||left</joinField>
            </add>
        </coupon_code>
    </order.grid>
</grids>
</gridcontrol>
于 2013-01-15T07:39:32.763 に答える