diff --git a/src/app/code/community/Zendesk/Zendesk/Model/Observer.php b/src/app/code/community/Zendesk/Zendesk/Model/Observer.php index 0295f607..6e152053 100644 --- a/src/app/code/community/Zendesk/Zendesk/Model/Observer.php +++ b/src/app/code/community/Zendesk/Zendesk/Model/Observer.php @@ -157,20 +157,22 @@ public function changeIdentity(Varien_Event_Observer $event) if (is_object($order_totals)) { $order_totals - ->addFieldToSelect('*') - ->addFieldToFilter('customer_id', $customer->getId()) - ->addFieldToFilter('status', Mage_Sales_Model_Order::STATE_COMPLETE) - ->addAttributeToSelect('grand_total') - ->getColumnValues('grand_total'); + ->addFieldToFilter('customer_id', $customer->getId()) + ->addFieldToFilter('status', Mage_Sales_Model_Order::STATE_COMPLETE); - $sum = 0; - foreach ($order_totals as $total) { - if (isset($total['grand_total'])) - $sum += (float)$total['grand_total']; - } + $order_totals->getSelect() + ->reset(Zend_Db_Select::COLUMNS) + ->columns(new Zend_Db_Expr("SUM(grand_total) as total")) + ->columns(new Zend_Db_Expr("AVG(grand_total) as avg_total")) + ->group('customer_id'); + + if (count($order_totals) > 0) { + $sum = (float) $order_totals->getFirstItem()->getTotal(); + $avg = (float) $order_totals->getFirstItem()->getAvgTotal(); - $lifetime_sale = Mage::helper('core')->currency($sum, true, false); - $average_sale = Mage::helper('core')->currency($sum / (count($order_totals) ?: 1), true, false); + $lifetime_sale = Mage::helper('core')->currency($sum, true, false); + $average_sale = Mage::helper('core')->currency($avg, true, false); + } } $info['user'] = array(