1

表示したいフィールドを取得できましたが、データを取得できません。たとえば、SKU データはカタログから取得する必要があります > 製品の管理.

使用中の Magento のバージョンは 1.5.1.0 です

ここに画像の説明を入力 ここに画像の説明を入力

基本的に、同じクラスの「customer/customer_collection」と「sales/order_grid_collection」からデータを取得する必要がありますが、可能ですか?

4

4 に答える 4

5

すべてのSkuを注文に入れるにframe_callbackは、別の関数で注文のSkuを検索するために使用できます。

_prepareColumns()Sku列の関数:

..。

$this->addColumn('increment_id', array(
                 'header' => Mage::helper('sales')->__('SKU'),
                 'index' => 'increment_id',
                 'frame_callback' => array($this, 'callback_skus')
));

..。

次に、この新しい関数をのどこかに追加しますGrid.php

public function callback_skus($value, $row, $column, $isExport) {
    $increment_id = $value;
    $_order = Mage::getModel('sales/order')->loadByIncrementId($increment_id);
    $_items = $_order->getAllItems();
    $skus="";
    foreach ($_items as $item) {
            $skus .= $item->getSku()."<br/>";
    }
    return $skus;
}

これにより、多くの複雑な結合なしで、注文のすべてのSkuが返されます。


編集-答えの2番目の部分

上記の検索/フィルタリングを有効にするには_prepareCollection()、を次のように更新する必要があります。

protected function _prepareCollection()
{

    $collection = Mage::getResourceModel($this->_getCollectionClass())
    ->join(
           'sales/order_item',
           '`sales/order_item`.order_id=`main_table`.entity_id',
               array(
                     'skus'  => new Zend_Db_Expr('group_concat(`sales/order_item`.sku SEPARATOR ",")'),
               )
    );
    $collection->getSelect()->group('entity_id');
    $this->setCollection($collection);
    return parent::_prepareCollection();
}

と呼ばれる新しい関数を追加しますfilter_skus()

public function filter_skus($collection, $column) {
   if (!$value = $column->getFilter()->getValue()) {
        return $this;
    }

    $this->getCollection()->getSelect()->where(
        "sku like ?"
    , "%$value%");

    return $this;

}

次のようにを更新しaddColumnますsku

..。

$this->addColumn('sku', array(
                 'header' => Mage::helper('sales')->__('SKU'),
                 'index' => 'increment_id',
                 'frame_callback' => array($this, 'callback_skus'),
                 'filter_condition_callback' => array($this, 'filter_skus'),
));

..。

検索機能を作成するために必要な条件filter_condition_callbackを追加する新しい呼び出しに注意してください。where

于 2013-03-23T16:55:46.617 に答える
0

注: Magento のコア機能をオーバーライドしないように、独自のモジュールを作成し、Grid.php で以下のコードを使用できます。

app\code\core\Mage\Adminhtml\Block\Sales\Order\Grid.php を開きます

以下の関数を置き換えます

protected function _prepareCollection()
{
    $collection = Mage::getResourceModel($this->_getCollectionClass());
    $collection->getSelect()->joinLeft(
            'sales_flat_order_item',
            '`sales_flat_order_item`.order_id=`main_table`.entity_id',
            array('skus'  => new Zend_Db_Expr('group_concat(`sales_flat_order_item`.sku SEPARATOR ",")'))
    );
    $collection->getSelect()->group('entity_id');

    $this->setCollection($collection);
    return parent::_prepareCollection();
}

以下のコードを _prepareColumns() 関数に入れます

$this->addColumn('sku', array(
    'header' => Mage::helper('sales')->__('SKU'),
    'index' => 'skus',
    'type' => 'text',
    'width' => '100px',
    'filter'    => false,
));

ソース: http://chandreshrana.blogspot.in/2016/12/how-to-add-sku-column-in-sales-order.html

于 2016-12-12T09:36:32.627 に答える