我正在关注这篇文章Change the Dashboard Graph in version 1.7/1.12 of Magento,以允许“处理”订单的销售显示在仪表板图上。我的文件位于正确的目录下方,并且在 config>advanced 中显示为活动的。我还重新索引、刷新了缓存和刷新了生命周期统计信息。我在日志中没有看到任何错误。你能看出有什么问题吗?我有 firegento 并启用了日志记录,但这也不起作用。
编辑:仪表板上的总收入似乎是正确的,但它没有反映在时间线图上。例如,上午 10 点可能有 2000 美元的 30 个条款的净订单,但它不会显示在时间图表上。赏金谁可以修复下面的脚本,以反映我的时间线!
CaitlinHavener/仪表板/etc/config.xml:
<?xml version="1.0"?>
<config>
<modules>
<CaitlinHavener_Dashboard>
<version>1.0</version>
</CaitlinHavener_Dashboard>
</modules>
<global>
<models>
<CaitlinHavener_Dashboard>
<class>CaitlinHavener_Dashboard_Model</class>
</CaitlinHavener_Dashboard>
<reports_resource>
<rewrite>
<order_collection>CaitlinHavener_Dashboard_Model_Reports_Resource_Order_Collection</order_collection>
</rewrite>
</reports_resource>
</models>
</global>
</config>
CaitlinHavener/Dashboard/Model/Reports/Resource/Order/Collection.php
<?php
/**
* Show all orders, not only the invoiced one
*/
class CaitlinHavener_Dashboard_Model_Reports_Resource_Order_Collection extends Mage_Reports_Model_Resource_Order_Collection
{
protected function _prepareSummaryLive($range, $customStart, $customEnd, $isFilter = 0)
{
$this->setMainTable('sales/order');
$adapter = $this->getConnection();
/**
* Reset all columns, because result will group only by 'created_at' field
*/
$this->getSelect()->reset(Zend_Db_Select::COLUMNS);
/* $expression = sprintf('%s - %s - %s - (%s - %s - %s)',
$adapter->getIfNullSql('main_table.base_total_invoiced', 0),
$adapter->getIfNullSql('main_table.base_tax_invoiced', 0),
$adapter->getIfNullSql('main_table.base_shipping_invoiced', 0),
$adapter->getIfNullSql('main_table.base_total_refunded', 0),
$adapter->getIfNullSql('main_table.base_tax_refunded', 0),
$adapter->getIfNullSql('main_table.base_shipping_refunded', 0)
); */
$expression = sprintf('%s - %s - %s - (%s - %s - %s)',
$adapter->getIfNullSql('main_table.base_total_invoiced', 'main_table.base_grand_total'),
$adapter->getIfNullSql('main_table.base_tax_invoiced', 'main_table.base_tax_amount'),
$adapter->getIfNullSql('main_table.base_shipping_invoiced', 'main_table.base_shipping_amount'),
$adapter->getIfNullSql('main_table.base_total_refunded', 0),
$adapter->getIfNullSql('main_table.base_tax_refunded', 0),
$adapter->getIfNullSql('main_table.base_shipping_refunded', 0)
);
if ($isFilter == 0) {
$this->getSelect()->columns(array(
'revenue' => new Zend_Db_Expr(
sprintf('SUM((%s) * %s)', $expression,
$adapter->getIfNullSql('main_table.base_to_global_rate', 0)
)
)
));
} else {
$this->getSelect()->columns(array(
'revenue' => new Zend_Db_Expr(sprintf('SUM(%s)', $expression))
));
}
$dateRange = $this->getDateRange($range, $customStart, $customEnd);
$tzRangeOffsetExpression = $this->_getTZRangeOffsetExpression(
$range, 'created_at', $dateRange['from'], $dateRange['to']
);
$this->getSelect()
->columns(array(
'quantity' => 'COUNT(main_table.entity_id)',
'range' => $tzRangeOffsetExpression,
))
//BOF modification
->where('main_table.state NOT IN (?)', array(
Mage_Sales_Model_Order::STATE_PENDING_PAYMENT,
// Mage_Sales_Model_Order::STATE_NEW
)
)
//EOF modification
->order('range', Zend_Db_Select::SQL_ASC)
->group($tzRangeOffsetExpression);
$this->addFieldToFilter('created_at', $dateRange);
return $this;
}
protected function _calculateTotalsLive($isFilter = 0)
{
$this->setMainTable('sales/order');
$this->removeAllFieldsFromSelect();
$adapter = $this->getConnection();
// $baseTotalInvoiced = $adapter->getIfNullSql('main_table.base_grand_total', 0);
// $baseTotalRefunded = $adapter->getIfNullSql('main_table.base_discount_refunded', 0);
// $baseTaxInvoiced = $adapter->getIfNullSql('main_table.base_tax_amount', 0);
// $baseTaxRefunded = $adapter->getIfNullSql('main_table.base_tax_refunded', 0);
// $baseShippingInvoiced = $adapter->getIfNullSql('main_table.base_shipping_amount', 0);
// $baseShippingRefunded = $adapter->getIfNullSql('main_table.base_shipping_refunded', 0);
// $baseShippingRefunded = $adapter->getIfNullSql('main_table.base_shipping_refunded', 0);
$baseTotalInvoiced = $adapter->getIfNullSql('main_table.base_total_invoiced', 'main_table.base_grand_total'); // This will check if there is no invoice it will calculate based on the grand totals ( so when you generate and invoice u will have no issues with the numbers also )
$baseTotalRefunded = $adapter->getIfNullSql('main_table.base_total_refunded', 0);
$baseTaxInvoiced = $adapter->getIfNullSql('main_table.base_tax_invoiced', 'main_table.base_tax_amount'); // Same here for taxes
$baseTaxRefunded = $adapter->getIfNullSql('main_table.base_tax_refunded', 0);
$baseShippingInvoiced = $adapter->getIfNullSql('main_table.base_shipping_invoiced', 'main_table.base_shipping_amount'); // Same here for shipping
$baseShippingRefunded = $adapter->getIfNullSql('main_table.base_shipping_refunded', 0);
$revenueExp = sprintf('%s - %s - %s - (%s - %s - %s)',
$baseTotalInvoiced,
$baseTaxInvoiced,
$baseShippingInvoiced,
$baseTotalRefunded,
$baseTaxRefunded,
$baseShippingRefunded
);
$taxExp = sprintf('%s - %s', $baseTaxInvoiced, $baseTaxRefunded);
$shippingExp = sprintf('%s - %s', $baseShippingInvoiced, $baseShippingRefunded);
if ($isFilter == 0) {
$rateExp = $adapter->getIfNullSql('main_table.base_to_global_rate', 0);
$this->getSelect()->columns(
array(
'revenue' => new Zend_Db_Expr(sprintf('SUM((%s) * %s)', $revenueExp, $rateExp)),
'tax' => new Zend_Db_Expr(sprintf('SUM((%s) * %s)', $taxExp, $rateExp)),
'shipping' => new Zend_Db_Expr(sprintf('SUM((%s) * %s)', $shippingExp, $rateExp))
)
);
} else {
$this->getSelect()->columns(
array(
'revenue' => new Zend_Db_Expr(sprintf('SUM(%s)', $revenueExp)),
'tax' => new Zend_Db_Expr(sprintf('SUM(%s)', $taxExp)),
'shipping' => new Zend_Db_Expr(sprintf('SUM(%s)', $shippingExp))
)
);
}
$this->getSelect()->columns(array(
'quantity' => 'COUNT(main_table.entity_id)'
))
->where('main_table.state NOT IN (?)', array(
Mage_Sales_Model_Order::STATE_PENDING_PAYMENT,
//Mage_Sales_Model_Order::STATE_NEW
)
);
return $this;
}
}
?>