我们正在Magento网站上使用Aheadworks Advanced Reports插件,并希望将“制造商”属性添加到其中一个报告中。我们希望这样做可能相当简单,但我们并不是专家。
有人可以告诉我如何将制造商添加到报告中吗?下面是我们要修改的特定报告代码。
public function __construct()
{
parent::__construct();
$this->setFilterVisibility(true);
$this->setId('gridAdvancedStockvssold');
# Init aggregator
$this->getAggregator()->initAggregator(
$this, AW_Advancedreports_Helper_Tools_Aggregator::TYPE_LIST, $this->getRoute(),
Mage::helper('advancedreports')->confOrderDateFilter()
);
$storeIds = $this->getStoreIds();
if (count($storeIds)) {
$this->getAggregator()->setStoreFilter($storeIds);
}
}
/**
* Retrieves initialization array for custom report option
*
* @return array
*/
public function getCustomOptionsRequired()
{
$array = parent::getCustomOptionsRequired();
$addArray = array(
array(
'id' => 'advancedreports_stockvssold_options_estimation_threshold',
'type' => 'text',
'args' => array(
'label' => $this->__('Out of Stock Estimation Threshold'),
'title' => $this->__('Out of Stock Estimation Threshold'),
'name' => 'advancedreports_stockvssold_options_estimation_threshold',
'class' => 'validate-greater-than-zero',
'required' => true,
),
'default' => '90',
),
);
return array_merge($array, $addArray);
}
protected function _addCustomData($row)
{
$this->_customData[] = $row;
return $this;
}
public function _prepareCollection()
{
parent::_prepareCollection();
$this->prepareReportCollection();
$this->_preparePage();
return $this;
}
/**
* Prepare collection for aggregation
*
* @param datetime $from
* @param datetime $to
*
* @return collection
*/
public function getPreparedData($from, $to)
{
$collection = Mage::getResourceModel('advancedreports/collection_stockvssold');
$estimationDays = $this->getCustomOption('advancedreports_stockvssold_options_estimation_threshold');
$storeIds = $this->getStoreIds();
$collection
->reInitSelect()
->addOrderItems($from, $to, empty($storeIds))
->addProductInfo()
->addEstimationThreshold($estimationDays)
;
$collection->setDateFilter($from, $to)->setState();
$storeIds = $this->getStoreIds();
if (count($storeIds)) {
$collection->setStoreFilter($storeIds);
}
return $collection;
}
public function prepareReportCollection()
{
$this
->_setUpReportKey()
->_setUpFilters()
;
$dateFrom = $this->_getMysqlFromFormat($this->getFilter('report_from'));
$dateTo = $this->_getMysqlToFormat($this->getFilter('report_to'));
$this->getAggregator()->prepareAggregatedCollection($dateFrom, $dateTo);
/** @var AW_Advancedreports_Model_Mysql4_Cache_Collection $collection */
$collection = $this->getAggregator()->getAggregatetCollection();
$this->setCollection($collection);
if ($sort = $this->_getSort()) {
$collection->addOrder($sort, $this->_getDir());
$this->getColumn($sort)->setDir($this->_getDir());
}
$this->_saveFilters();
$this->_setColumnFilters();
return $this;
}
protected function _prepareData()
{
return $this;
}
protected function _prepareColumns()
{
$this->addColumn(
'name',
array(
'header' => $this->__('Product Name'),
'index' => 'name',
'type' => 'text'
)
);
$this->addColumn(
'sku',
array(
'header' => $this->__('SKU'),
'index' => 'sku',
'type' => 'text'
)
);
$this->addColumn(
'price',
array(
'header' => $this->__('Price'),
'index' => 'price',
'type' => 'currency',
'disable_total' => true,
'currency_code' => $this->getCurrentCurrencyCode(),
)
);
$this->addColumn(
'sum_qty',
array(
'header' => $this->__('Items Ordered'),
'index' => 'sum_qty',
'type' => 'number',
'total' => 'sum',
'renderer' => 'advancedreports/widget_grid_column_renderer_percent',
'width' => '100px',
)
);
$this->addColumn(
'sum_total',
array(
'header' => $this->__('Total'),
'width' => '120px',
'type' => 'currency',
'total' => 'sum',
'currency_code' => $this->getCurrentCurrencyCode(),
'renderer' => 'advancedreports/widget_grid_column_renderer_percent',
'index' => 'sum_total'
)
);
$this->addColumn(
'sum_invoiced',
array(
'header' => $this->__('Invoiced'),
'width' => '120px',
'type' => 'currency',
'total' => 'sum',
'currency_code' => $this->getCurrentCurrencyCode(),
'renderer' => 'advancedreports/widget_grid_column_renderer_percent',
'index' => 'sum_invoiced'
)
);
$this->addColumn(
'sum_refunded',
array(
'header' => $this->__('Refunded'),
'width' => '120px',
'type' => 'currency',
'total' => 'sum',
'currency_code' => $this->getCurrentCurrencyCode(),
'renderer' => 'advancedreports/widget_grid_column_renderer_percent',
'index' => 'sum_refunded'
)
);
$this->addColumn(
'cost',
array(
'header' => $this->__('Product Cost'),
'width' => '120px',
'type' => 'currency',
'total' => 'sum',
'currency_code' => $this->getCurrentCurrencyCode(),
'index' => 'cost'
)
);
$this->addColumn(
'item_qty',
array(
'header' => $this->__('Stock Qty'),
'index' => 'item_qty',
'disable_total' => true,
'type' => 'number',
'width' => '100px'
)
);
$this->addColumn(
'esitmation_data',
array(
'header' => $this->__('Out of Stock Estimate'),
'index' => 'esitmation_data',
'disable_total' => true,
'type' => 'date',
'align' => 'right',
)
);
$this->addExportType('*/*/exportOrderedCsv', $this->__('CSV'));
$this->addExportType('*/*/exportOrderedExcel', $this->__('Excel'));
return $this;
}
public function getChartType()
{
return 'none';
}
public function hasRecords()
{
return false;
}
public function hasAggregation()
{
return true;
}
}