私は非常に似たものに取り組んでおり、そのチュートリアルをベースとして使用しました。
拡張オーダー ジョイン インナー
必要な注文情報のほとんどはsales_flat_order
、$this->getTable('sales/order')
これは実際には彼女のコードに既に存在しますが、配列は空なので、必要なフィールドを入力する必要があります。たとえば、私のものです:
->joinInner(
array('order' => $this->getTable('sales/order')),
implode(' AND ', $orderJoinCondition),
array(
'order_id' => 'order.entity_id',
'store_id' => 'order.store_id',
'currency_code' => 'order.order_currency_code',
'state' => 'order.state',
'status' => 'order.status',
'shipping_amount' => 'order.shipping_amount',
'shipping_tax_amount' => 'order.shipping_tax_amount',
'shipping_incl_tax' => 'base_shipping_incl_tax',
'subtotal' => 'order.subtotal',
'subtotal_incl_tax' => 'order.subtotal_incl_tax',
'total_item_count' => 'order.total_item_count',
'created_at' => 'order.created_at',
'updated_at' => 'order.updated_at'
))
desc sales_flat_order
mysqlでフィールドを見つけるには。
Join Left の追加
わかりましたので、他のテーブルからの情報が必要な場合は、 ->joinLeft() を追加する必要があります。たとえば、出荷追跡番号が必要でした:
結合条件を作成します。
$shipmentJoinCondition = array(
$orderTableAliasName . '.entity_id = shipment.order_id'
);
左結合を実行します。
->joinLeft(
array('shipment' => $this->getTable('sales/shipment_track')),
implode(' AND ', $shipmentJoinCondition),
array(
'track_number' => 'shipment.track_number'
)
)
申し訳ありませんが、ここにスニペットをドロップするだけで、これ以上詳しく説明できませんでした。
計算の実行
グリッドに返されるデータを変更するには、モデルで addItem(Varien_Object $item) を変更する必要があります。基本的に、ここから返されるものはすべてグリッドに配置されます。私には魔法です。
まず最初に、$item はオブジェクトです。このオブジェクトに対して何を行っても、オブジェクトにとどまります (申し訳ありませんが、ひどい説明です): 例として、各注文を別の行に返し、それぞれに (1/3, 2/ 3、3/3)、私が行った変更はすべて注文オブジェクトにグローバルに適用されるため、すべて (3/3) が表示されます。ファンキーなことが起こり始めた場合は、PHP Cloneを使用してください。
$item_array = clone $item;
これで、ロジックに任意のキーを配列に追加でき、Grid.php でアクセスできるようになります。
例(subtotal_incl_taxが存在するため悪い):
$item_array['my_taxable_net_calc'] = $item['sub_total'] + $item['tax'];
次に、最後に次のようにします。
$this->_items[] = $item_array;
return $this->_items;
$this->_items[]; にデータを追加するだけで、既存のものに基づいてさらに行を追加することもできます。
$this->_items[] = $item_array;
$this->_items[] = $item_array;
return $this->_items;
2 行で同じアイテムを返します。
申し訳ありませんが、プロットを失い始めました。何か意味がない場合は、質問してください。これがお役に立てば幸いです。
ああ、Block/Adminhtml/namespace/Grid.php に追加する
$this->addColumn('my_taxable_net_calc', array(
'header' => Mage::helper('report')->__('Taxable Net'),
'sortable' => false,
'filter' => false,
'index' => 'my_taxable_net_calc'
));