2016-12-17 6 views
0

Каков наилучший способ определить, является ли клиент, который только что разместил заказ, новый или повторный?Запрос, если клиент является новым или повторным на странице успеха

На успех странице, я могу получить объект заказа через:

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

Не зная многое о методах полезности Magento, рядом шаг может быть, чтобы получить объект клиента и проверить, если общее количество или заказы> 1 ?

Если возможно, укажите фактический код в своем решении.

Спасибо.

ответ

1

Я попытался организовать все условия. Пройдите ниже кода на странице успеха.

<?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

Отлично! Сейчас я собираюсь протестировать сервер dev. Спасибо – Micor

+0

Нужно ли нам разветвляться для гостей/зарегистрироваться/зарегистрироваться и войти? Не будет ли это возвращать все заказы по электронной почте независимо от статуса клиента: $ orderCollection = Mage :: getModel ('sales/order') -> getCollection(); $ OrderCollection-> addFieldToFilter ('customer_email', '[email protected]'); – Micor

+0

Извините, я не понимаю вашу точку зрения. Если этот ответ поможет вам, пожалуйста, поддержите меня. –

0
$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; 

Соответствующие таблицы и поля

  • sales_flat_order - customer_id, updated_at
  • customer_entity - created_at
Смежные вопросы