2014-07-15 1 views
0

Magento 마켓 세분화 플러그인을 사용하고 있으며 주문 상태가 '완료'되었지만 '완료'및 '처리 중'인 사용자를 분류하려고합니다. 다음과 같이'완료 됨'및 '처리 중'상태의 주문 수 받기

고객에 따라 분할에 대한 원래의 코드 부분은 같습니다

if ($this->getAttribute() == 'ordered') { 
     $customersOrders = Mage::helper('marketsuite/customer')->getOrderCollectionByCustomerIds($_customerIds); 
     $customersOrders->addFieldToFilter('state', Mage_Sales_Model_Order::STATE_COMPLETE); 
     $_arrayOrderIdCustomerId = $customersOrders->getConnection()->fetchPairs($customersOrders->getSelect()); 
     $_arrayOrderIdTotal = $this->_getValidatedTotalOrderedCount(array_keys($_arrayOrderIdCustomerId)); 
     $_validatedArrayOrderIdCustomerId = array_intersect_key($_arrayOrderIdCustomerId, $_arrayOrderIdTotal); 

주문에 따라 segmentating의 또 다른 부분 :

public function validateOrderCollection(Zend_Db_Select $select) 
{ 
    if ($this->getAttribute() == 'ordered') { 
     $select 
      ->where('state = ?', Mage_Sales_Model_Order::STATE_COMPLETE) 
     ; 
     $_orderIds = Mage::helper('marketsuite/order')->getAllIds($select); 
     $orderTotals = $this->_getValidatedTotalOrderedCount($_orderIds); 
     $validatedOrders = array(); 
     foreach ($orderTotals as $orderId => $totalOrderedCount) { 
      if ($this->validateAttribute($totalOrderedCount)) { 
       array_push($validatedOrders, $orderId); 
      } 
     } 
     return $validatedOrders; 
    } 
    return array(); 
} 

질문 : 포함하려면 어떻게 모두 "완료"를 두 경우 모두 "처리 중"입니다. 나는 그것이이 부분 $customersOrders->addFieldToFilter('state', Mage_Sales_Model_Order::STATE_COMPLETE);과 관련이 있다는 것을 알고 있지만 이것을 성취하는 방법을 정확히 모르겠습니다.

귀하의 도움에 감사드립니다.

답변

0

다음과 같은 방법을 시도 할 수 :

$connection = Mage::getModel('core/resource')->getConnection('core_read'); 
$sql = 'SELECT `customer_id` FROM `sales_flat_order` WHERE `status` LIKE ? OR `status` LIKE ?'; 
$customers = $connection->fetchAll($sql, array('complete', 'processing')); 
$customer = Mage::getModel('customer/customer'); 
foreach ($customers as $customer_info){ 
    $customer = $customer->load($customer_info['customer_id']); 
    /* Do what you need to do here, e.g: 
    * echo $customer->getName() . "<br/>"; 
    * This example will print all customers who have complete/processing orders full names 
    */ 
} 
+0

덕분에 뭔가를 시도 할 수 있습니다,하지만 실제로 내 예에 넣어 어디서 정말 모르겠어요 위에 게시했습니다. –

0

당신은 코드에 대한이

$customersOrders->addFieldToFilter('state', 
      array(
        array('eq' => Mage_Sales_Model_Order::STATE_COMPLETE), 
        array('eq' => Mage_Sales_Model_Order::STATE_PROCESSING), 
       ) 
); 
+0

도움을 주셔서 감사합니다.하지만 불행히도 도움이되지 않았습니다. aheadWorks의 Market Segmentation Suite를 사용하고 있습니다. 내가 가진 유일한 힌트는이 두 줄로 시작하는 특정 파일을 살펴 보는 것이다. = / –