2013-02-20 90 views
4

我使用一些遷移工具將訂單導入Magento。當退貨客戶試圖下訂單時,Magento阻止他們這樣做,並說「這個客戶的電子郵件已經存在。」儘管他們已經登錄到Magento。Magento訂購頁面:「此客戶電子郵件已存在」

難道我導入/遷移到Magento的數據庫錯誤?或者還有其他可能導致這種情況?

任何建議非常感謝。

回答

9

你得到的是由客戶資源模型的_beforeSave功能,檢查是否與指定電子郵件地址的客戶存在所產生的異常。 校驗代碼:

$adapter = $this->_getWriteAdapter(); 
    $bind = array('email' => $customer->getEmail()); 

    $select = $adapter->select() 
     ->from($this->getEntityTable(), array($this->getEntityIdField())) 
     ->where('email = :email'); 
    if ($customer->getSharingConfig()->isWebsiteScope()) { 
     $bind['website_id'] = (int)$customer->getWebsiteId(); 
     $select->where('website_id = :website_id'); 
    } 
    if ($customer->getId()) { 
     $bind['entity_id'] = (int)$customer->getId(); 
     $select->where('entity_id != :entity_id'); 
    } 
    $result = $adapter->fetchOne($select, $bind); 
    if ($result) { 
     throw Mage::exception(
      'Mage_Customer', Mage::helper('customer')->__('This customer email already exists'), 
      Mage_Customer_Model_Customer::EXCEPTION_EMAIL_EXISTS 
     ); 
    } 

您的客戶登錄,這意味着條件$customer->getId()是真實的。但是,由於您遇到了例外情況,我建議您使用相同的電子郵件存在重複的客戶帳戶。

它可以爲你的導入工具已在客戶數據創建副本?這是我能想到的唯一原因。檢查您的數據庫與此查詢:

select email, count(*) from customer_entity group by email having count(*) > 1 
+0

非常非常有幫助。謝謝!我發現有兩封電子郵件有重複的帳戶。一個在不同的商店有帳戶(我認爲是可以的)。另一個是我自己的電子郵件。這是幾千個賬戶中的一個。但是,我擔心,首先如何創建副本? – 2013-02-20 17:41:42

+0

@IsaacYerushalmi你鍛鍊了它爲什麼重複? – input 2013-10-16 08:39:13

+0

我做過了,但是在我發佈這篇文章之後的一段時間..所以我忘了發佈解決方案。我不太記得它到底是怎麼解決的,但它可能是以下選項之一: - 我可能已經忘記了設置的順序計數在我的新店,到我在我的老店 不放過 - 我正在運行多商店設置,可能將客戶導入了錯誤的商店,或者客戶和/或訂單不匹配。 雖然我並不完全確定,對不起,我不能更有幫助。 – 2014-03-10 22:40:48

相關問題