2012-01-04 33 views
1

我已經實施了與magento訂單的salesforce集成。爲了達到這個目的,我遵循了下面給出的步驟。在第4步中,我在做用戶帳戶中的salesforce_company_id和salesforce_contact_id時出錯。Magento和salesforce集成創造機會作爲封閉贏得內部salesforefore一旦訂單在magento商店完成

1)在admin中添加自定義選項'closed'以完成任何訂單。

public function massCompleteAction(){ 
$orderIds = $this->getRequest()->getPost('order_ids', array()); 
$countCompleteOrder = 0; 
foreach ($orderIds as $orderId) { 
$order = Mage::getModel('sales/order')->load($orderId); 
if ($order->canComplete()) { 
$order->complete()->save(); 
$countCompleteOrder++; 
} 
} 
if ($countCompleteOrder>0) { 
$this->_getSession()->addSuccess($this->__('%s order(s) successfully put on complete', $countCompleteOrder)); 
}else { 
// selected orders is not available for hold 
} 
$this->_redirect('*/*/'); 
} 

2)添加用戶帳戶另外兩個領域,公司的Salesforce和Salesforce聯繫。

我也遵循下面的鏈接http://www.excellencemagentoblog.com/customer-registration-fields-magento1-6

3)創建自定義經銷商登記表,將在Magento

public function createResellerAction() 
{ 

$params = $this->getRequest()->getParams(); 
    $customer = Mage::getModel('customer/customer'); 
    $password = $params["password"]; 
    $email = $params["email"]; 
    $customer->setWebsiteId(Mage::app()->getWebsite()->getId()); 
    $customer->loadByEmail($email); 
//Zend_Debug::dump($customer->debug()); exit; 
if(!$customer->getId()) { 
$customer->setEmail($email); 
$customer->setFirstname($params["firstname"]); 
$customer->setLastname($params["lastname"]); 
$customer->setPassword($password); 

try { 
$customer->save(); 
$customer->setConfirmation(null); 
$customer->save(); 
Mage::getSingleton('customer/session')->loginById($customer->getId()); 
    } 
    catch (Exception $ex) { 
//Zend_Debug::dump($ex->getMessage()); 
} 

$_custom_address = array (
'firstname' => $params["firstname"], 
'lastname' => $params["lastname"], 
'street' => array (
    '0' => $params["add1"], 
    '1' => $params["add2"], 
), 

'city' => $params["city"], 
'region_id' => '', 
'region' => '', 
'postcode' => $params["zipcode"], 
'country_id' => '', /* Croatia */ 
'telephone' => $params["phone"], 
); 

$customAddress = Mage::getModel('customer/address'); 
$customAddress->setData($_custom_address) 
     ->setCustomerId($customer->getId()) 
     ->setIsDefaultBilling('1') 
     ->setIsDefaultShipping('1') 
     ->setSaveInAddressBook('1'); 

    try { 
$customAddress->save(); 
     } 
    catch (Exception $ex) { 
//Zend_Debug::dump($ex->getMessage()); 
    } 

4)期間創建公司和銷售人員接觸創建一個簡單的用戶經銷商行動

$sObject1 = new stdclass(); 
      $sObject1->Name = $params["company"];  
      $createResponse1 = $mySforceConnection->create(array($sObject1), 'Account'); 
      foreach ($createResponse1 as $createResult1) { 
       $compid = $createResult1->id; 
       } 

      $sObject3 = new stdclass(); 
      $sObject3->FirstName = $params["firstname"]; 
      $sObject3->LastName = $params["lastname"]; 
      $sObject3->Email = $params["email"]; 
      $sObject3->AccountId = $compid; 
      $createResponse2 = $mySforceConnection->create(array($sObject3), 'Contact'); 
      foreach ($createResponse2 as $createResult2) { 
       $contid = $createResult2->id; 
       } 
      $saledata = array (
      'salesforce_company_id' => $compid, 
      'salesforce_contact_id' => $contid, 
      ); 
      $customersale = Mage::getModel('customer/customer'); 
      $customersale->setWebsiteId(Mage::app()->getWebsite()->getId()); 
    $customersale->loadByEmail($email); 
//Zend_Debug::dump($customer->debug()); exit; 
if($customersale->getId()) { 
       $customersale->setData($saledata); 
        try { 
        $customersale->save(); 
        $customersale->setConfirmation(null); 
        $customersale->save(); 
        } 
       catch (Exception $ex) { 
       $message = $this->__($customer); 
       //Zend_Debug::dump($ex->getMessage()); 
       Mage::getSingleton('core/session')->addError($message); 
       } 
      } 

請查看這裏我錯了,在第4步的bottem

$saledata = array (
      'salesforce_company_id' => $compid, 
      'salesforce_contact_id' => $contid, 
      ); 
      $customersale = Mage::getModel('customer/customer'); 
      $customersale->setWebsiteId(Mage::app()->getWebsite()->getId()); 
    $customersale->loadByEmail($email); 
//Zend_Debug::dump($customer->debug()); exit; 
if($customersale->getId()) { 
       $customersale->setData($saledata); 
        try { 
        $customersale->save(); 
        $customersale->setConfirmation(null); 
        $customersale->save(); 
        } 
       catch (Exception $ex) { 
       $message = $this->__($customer); 
       //Zend_Debug::dump($ex->getMessage()); 
       Mage::getSingleton('core/session')->addError($message); 
       } 
      } 

我等待着你的迴應代碼。

+0

在客戶上調用'setData()'會覆蓋該模型中存在的數據。嘗試使用'addData()'。 – Nick 2012-01-04 14:24:54

+0

謝謝@nick,我找到了解決辦法。 $客戶 - > setSalesforce_company_id($ compid); \t \t \t \t $ customer-> setSalesforce_contact_id($ contid); \t \t \t嘗試{ \t \t \t \t $客戶 - >保存(); \t \t \t \t \t} \t \t \t \t \t趕上(例外$ EX1){ \t \t \t \t \t // Zend_Debug ::轉儲($ EX->的getMessage()); \t \t \t \t} – 2012-01-05 05:02:51

+0

是的,沒錯。如果你使用' - > setData($ key,$ value)'而不是' - > setData(array())',你只能替換數據存儲中的一個項目,而不是整個項目。使用' - > addData()'可以完成你想要的功能:) – Nick 2012-01-05 09:52:11

回答