我一直在做一些非常相似的事情,我用那个教程作为我的基础。
扩大订单 加入内部
您需要的大部分订单信息都位于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 中查找字段。
添加额外的左连接
好的,如果您想从其他表中获取信息,则需要添加 ->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),基本上从这里返回的任何内容都会放入网格中,而且我不是 100% 确定它是如何工作的,而且看起来有点对我来说很神奇。
好的,首先 $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;
将在两行上返回相同的项目。
对不起,我已经开始失去情节了,如果有什么不明白的地方就问,希望这会有所帮助。
哦,添加到 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'
));