Programatically i am trying to get the Lifetime Sales data of individual customers.
But i am not getting correct data. I am getting same data for all customers.
Here is my code.
$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);
$objectManager = $bootstrap->getObjectManager();
$objectManager->get('Magento\Framework\App\State')->setAreaCode('admin');
//$objectManager->get('Magecomp\Assigngroups\Helper\Data')->groupChange();
$customers = $objectManager->get('\Magento\Customer\Model\ResourceModel\Customer\Collection')->load();
$customerLifetimeSales = '';
foreach($customers as $customer)
{
echo "<pre>";
print_r($customer->getName().'<br>');
print_r($customer->getGroupId().'<br>');
$sum = 0;
$_collection = $objectManager->get('\Magento\Sales\Model\ResourceModel\Sale\Collection');
$_collection->addFieldToFilter('status', array('in' => array(\Magento\Sales\Model\Order::STATE_PROCESSING, \Magento\Sales\Model\Order::STATE_COMPLETE)));
$_collection->setOrderStateFilter(\Magento\Sales\Model\Order::STATE_CANCELED, true)
->setCustomerIdFilter($customer->getId())
->load();
$customerLifetimeSales = $_collection->getTotals();
print_r($customerLifetimeSales);
print_r('======================');
echo "</pre>";
}
Let me know if i am doing something wrong here.
Thanks in advance for your answer.
Best Answer
Change following line from
To
And avoid to call load()