Query if customer is new vs repeat on success page

635 Views Asked by At

What is the best way to determine if customer who just placed an order is new or repeat?

On success page, I can get an order object via:

$order = Mage::getModel('sales/order')-> 
loadByIncrementId(Mage::getSingleton('checkout/session')->
getLastRealOrderId()); 

Without knowing much about magento's utility methods, next step could be to get Customer object and to check if total number or orders > 1?

If possible, include actual code in your solution.

Thanks.

2

There are 2 best solutions below

4
Suman Singh On

I have tried to organize the all conditions.Try below code on success page.

<?php 
$order = Mage::getModel('sales/order')->loadByIncrementId(Mage::getSingleton('checkout/session')->
getLastRealOrderId());
$customer_email = $order->getCustomerEmail();
$customer_id = $order->getCustomerId();

if ($order->getCustomerIsGuest()) { 
    //echo 'customer is guest';
    $extorders = Mage::getResourceModel('sales/order_collection')->addFieldToSelect('entity_id')->addFieldToFilter('customer_email', array('eq' => $customer_email));
} else {
    $quote = Mage::getModel('sales/quote')->load($order->getQuoteId());
    if ($quote->getId()) {
        $method = $quote->getCheckoutMethod();
        if ($method == 'register'){
            //echo 'customer registered when placing the order';
            $extorders = Mage::getResourceModel('sales/order_collection')->addFieldToSelect('entity_id')->addFieldToFilter('customer_email', array('eq' => $customer_email));
        } else {
            //echo 'customer was already logged in when placing the order';
            $extorders = Mage::getResourceModel('sales/order_collection')->addFieldToSelect('entity_id')->addFieldToFilter('customer_id', $customer_id);
        }
    } else {
        //echo 'there is no way of knowing if the customer registered or was already logged in but for sure an account exists.';
        $extorders = Mage::getResourceModel('sales/order_collection')->addFieldToSelect('entity_id')->addFieldToFilter('customer_email', array('eq' => $customer_email));
    }
}
//var_dump($extorders->getSize());
if ($extorders->getSize() == 1) {
    echo 'New customer come and placed first order';
} else {
    echo 'order repeat by customer';
}
?>
0
Ketan Borada On
$LastOrder= Mage::getModel('sales/order')->loadByIncrementId(Mage::getSingleton('checkout/session')->
getLastRealOrderId());

$LastOrdertime= $LastOrder->getCreatedAt();

$OrderCollection=Mage::getModel('sales/order')->getCollection()->addFieldToFilter('customer_email',$LastOrder->getData('customer_email'))
        ->setOrder('created_at','asc');
$fstoredetime= $OrderCollection->getFirstItem()->getCreatedAt();    

if($fstoredetime==$LastOrdertime):
// new customer
else:
//old customer
endif;  

The relevant tables and fields are

  • sales_flat_order - customer_id, updated_at
  • customer_entity - created_at