2

I'm currently building a Magento Platform where I need to echo out the total sales from individual stores on a page (Like it does on the Dashboard home screen):

Total sales per store

I've found some code in:

/app/code/core/Mage/Adminhtml/Block/Dashboard/Totals.php

class Mage_Adminhtml_Block_Dashboard_Totals extends Mage_Adminhtml_Block_Dashboard_Bar
{
    protected function _construct()
    {
        parent::_construct();
        $this->setTemplate('dashboard/totalbar.phtml');
    }

    protected function _prepareLayout()
    {
        if (!Mage::helper('core')->isModuleEnabled('Mage_Reports')) {
            return $this;
        }
        $isFilter = $this->getRequest()->getParam('store') || $this->getRequest()->getParam('website') || $this->getRequest()->getParam('group');
        $period = $this->getRequest()->getParam('period', '24h');

        /* @var $collection Mage_Reports_Model_Mysql4_Order_Collection */
        $collection = Mage::getResourceModel('reports/order_collection')
            ->addCreateAtPeriodFilter($period)
            ->calculateTotals($isFilter);

        if ($this->getRequest()->getParam('store')) {
            $collection->addFieldToFilter('store_id', $this->getRequest()->getParam('store'));
        } else if ($this->getRequest()->getParam('website')){
            $storeIds = Mage::app()->getWebsite($this->getRequest()->getParam('website'))->getStoreIds();
            $collection->addFieldToFilter('store_id', array('in' => $storeIds));
        } else if ($this->getRequest()->getParam('group')){
            $storeIds = Mage::app()->getGroup($this->getRequest()->getParam('group'))->getStoreIds();
            $collection->addFieldToFilter('store_id', array('in' => $storeIds));
        } elseif (!$collection->isLive()) {
            $collection->addFieldToFilter('store_id',
                array('eq' => Mage::app()->getStore(Mage_Core_Model_Store::ADMIN_CODE)->getId())
            );
        }

        $collection->load();

        $totals = $collection->getFirstItem();

        $this->addTotal($this->__('Revenue'), $totals->getRevenue());
        $this->addTotal($this->__('Tax'), $totals->getTax());
        $this->addTotal($this->__('Shipping'), $totals->getShipping());
        $this->addTotal($this->__('Quantity'), $totals->getQuantity()*1, true);
    }
}

To where I think it 'gets' the value but I'm not sure on how I could echo this out somewhere else?

I've also looked over the net to try and find functions close to this, obviously I found a few on how to get the store ID, but nothing on how to get that stores total sales.

Any ideas appreciated greatly.

1

1 Answer 1

1

All you need is there... but you have to modify it a little bit to get what you want. Here is your datasource:

 $collection = Mage::getResourceModel('reports/order_collection')
        ->calculateTotals(true);

here is the storefilter:

$collection->addFieldToFilter('store_id', {YOUR_STORE_ID});

and here are your values from query:

$collection->load();

    $totals = $collection->getFirstItem();

    $this->addTotal($this->__('Revenue'), $totals->getRevenue());
    $this->addTotal($this->__('Tax'), $totals->getTax());
    $this->addTotal($this->__('Shipping'), $totals->getShipping());
    $this->addTotal($this->__('Quantity'), $totals->getQuantity()*1, true);

all together it would be:

$collection = Mage::getResourceModel('reports/order_collection')
        ->calculateTotals(true)
        ->addFieldToFilter('store_id', {YOUR_STORE_ID})->load();
$totals = $collection->getFirstItem();
echo $totals->getRevenue();
1
  • Thanks for the reply. I've managed to echo the relevant totals. Thanks. Commented Feb 6, 2017 at 19:06

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.