Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>The answer from Oleg Ishenko points you in the right direction, but is not quite comprehensive.<br> 1. In the module you create, you need to override <code>Mage_Reports_Model_Resource_Order_Collection</code>: so in your <code>config.xml</code> put: </p> <pre><code>... &lt;global&gt; &lt;models&gt; &lt;yourmodule&gt; &lt;class&gt;Namespace_Yourmodule_Model&lt;/class&gt; &lt;/yourmodule&gt; &lt;reports_resource&gt; &lt;rewrite&gt; &lt;order_collection&gt;Namespace_Yourmodule_Model_Reports_Resource_Order_Collection&lt;/order_collection&gt; &lt;/rewrite&gt; &lt;/reports_resource&gt; &lt;/models&gt; &lt;/global&gt; ... </code></pre> <p>2.Then create the class (respecting the path) and in this class you need to override 2 methods: </p> <pre><code>&lt;?php /** * Show all orders, not only the invoiced one */ class Namespace_Yourmodule_Model_Reports_Resource_Order_Collection extends Mage_Reports_Model_Resource_Order_Collection { protected function _prepareSummaryLive($range, $customStart, $customEnd, $isFilter = 0) { $this-&gt;setMainTable('sales/order'); $adapter = $this-&gt;getConnection(); /** * Reset all columns, because result will group only by 'created_at' field */ $this-&gt;getSelect()-&gt;reset(Zend_Db_Select::COLUMNS); $expression = sprintf('%s - %s - %s - (%s - %s - %s)', $adapter-&gt;getIfNullSql('main_table.base_total_invoiced', 0), $adapter-&gt;getIfNullSql('main_table.base_tax_invoiced', 0), $adapter-&gt;getIfNullSql('main_table.base_shipping_invoiced', 0), $adapter-&gt;getIfNullSql('main_table.base_total_refunded', 0), $adapter-&gt;getIfNullSql('main_table.base_tax_refunded', 0), $adapter-&gt;getIfNullSql('main_table.base_shipping_refunded', 0) ); if ($isFilter == 0) { $this-&gt;getSelect()-&gt;columns(array( 'revenue' =&gt; new Zend_Db_Expr( sprintf('SUM((%s) * %s)', $expression, $adapter-&gt;getIfNullSql('main_table.base_to_global_rate', 0) ) ) )); } else { $this-&gt;getSelect()-&gt;columns(array( 'revenue' =&gt; new Zend_Db_Expr(sprintf('SUM(%s)', $expression)) )); } $dateRange = $this-&gt;getDateRange($range, $customStart, $customEnd); $tzRangeOffsetExpression = $this-&gt;_getTZRangeOffsetExpression( $range, 'created_at', $dateRange['from'], $dateRange['to'] ); $this-&gt;getSelect() -&gt;columns(array( 'quantity' =&gt; 'COUNT(main_table.entity_id)', 'range' =&gt; $tzRangeOffsetExpression, )) //BOF modification // -&gt;where('main_table.state NOT IN (?)', array( // Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, // Mage_Sales_Model_Order::STATE_NEW) // ) //EOF modification -&gt;order('range', Zend_Db_Select::SQL_ASC) -&gt;group($tzRangeOffsetExpression); $this-&gt;addFieldToFilter('created_at', $dateRange); return $this; } protected function _calculateTotalsLive($isFilter = 0) { $this-&gt;setMainTable('sales/order'); $this-&gt;removeAllFieldsFromSelect(); $adapter = $this-&gt;getConnection(); $baseTotalInvoiced = $adapter-&gt;getIfNullSql('main_table.base_grand_total', 0); $baseTotalRefunded = $adapter-&gt;getIfNullSql('main_table.base_discount_refunded', 0); $baseTaxInvoiced = $adapter-&gt;getIfNullSql('main_table.base_tax_amount', 0); $baseTaxRefunded = $adapter-&gt;getIfNullSql('main_table.base_tax_refunded', 0); $baseShippingInvoiced = $adapter-&gt;getIfNullSql('main_table.base_shipping_amount', 0); $baseShippingRefunded = $adapter-&gt;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-&gt;getIfNullSql('main_table.base_to_global_rate', 0); $this-&gt;getSelect()-&gt;columns( array( 'revenue' =&gt; new Zend_Db_Expr(sprintf('SUM((%s) * %s)', $revenueExp, $rateExp)), 'tax' =&gt; new Zend_Db_Expr(sprintf('SUM((%s) * %s)', $taxExp, $rateExp)), 'shipping' =&gt; new Zend_Db_Expr(sprintf('SUM((%s) * %s)', $shippingExp, $rateExp)) ) ); } else { $this-&gt;getSelect()-&gt;columns( array( 'revenue' =&gt; new Zend_Db_Expr(sprintf('SUM(%s)', $revenueExp)), 'tax' =&gt; new Zend_Db_Expr(sprintf('SUM(%s)', $taxExp)), 'shipping' =&gt; new Zend_Db_Expr(sprintf('SUM(%s)', $shippingExp)) ) ); } $this-&gt;getSelect()-&gt;columns(array( 'quantity' =&gt; 'COUNT(main_table.entity_id)' )); //BOF modification // -&gt;where('main_table.state NOT IN (?)', array( // Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, // Mage_Sales_Model_Order::STATE_NEW) // ); //EOF modification return $this; } } </code></pre> <p>In this example I have comented the filtering by order's status, but you can easily uncoment it and put the order statuses you don't want to be counted in.</p> <p>HTH</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload