2016-12-17 2 views
0

방금 ​​주문한 고객이 신규인지 반복인지 확인하는 가장 좋은 방법은 무엇입니까? 성공 페이지에서고객이 새 대 성공 인 경우 쿼리 성공 페이지

, 내가 통해 주문 개체를 얻을 수 있습니다 : 젠토의 유틸리티 메소드에 대해 잘 모르고

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

를, 다음 단계는 고객 개체를 가져 총 번호 또는 주문> 1 있는지 확인하는 수 ?

가능하면 실제 코드를 솔루션에 포함하십시오.

감사합니다.

답변

1

나는 모든 조건을 구성하려고 시도했습니다. 성공 페이지에서 아래 코드를 따르십시오.

  • customer_entity updated_at, CUSTOMER_ID - -

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

    큰 created_at! 나는 지금 dev 서버에서 테스트 할 것이다. 감사합니다 – Micor

    +0

    우리는 손님/등록/reg에 로그인하고 로그인해야합니까? 이것은 고객의 상태에 관계없이 모든 주문을 이메일로 반환하지 않겠습니까? $ 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 있습니다