Интеграция с Magento и Salesforce для создания возможности в виде закрытого выигрыша в рамках продаж до того, как заказ будет выполнен в магазине magento. - PullRequest
1 голос
/ 04 января 2012

Я реализовал интеграцию Salesforce с заказами magento.Чтобы достичь этого, я следовал инструкциям ниже.Я делаю что-то не так на 4-м шаге, вставляя salesforce_company_id и salesforce_contact_id в учетную запись пользователя.

1) Добавьте пользовательскую опцию 'closed' в admin, чтобы завершить любой заказ.

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 Company и Salesforce Contact.

Я перешел по следующей ссылке 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) Создайте компанию и контакт в Salesforce во время действия посредника

$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-го шага

$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);
                }
            }

Я жду ваших ответов.

1 Ответ

0 голосов
/ 18 декабря 2014

Существует большое расширение для magento, которое делает все это для вас и даже больше: https://products.crunchyconsulting.com/crunchy-products/crunchy-magforce.html

Взгляните на вкладку «Справка и документы», где можно найти даже фильмы со сценариями использования

https://www.youtube.com/watch?v=TjxvjGcAGqY

https://www.youtube.com/watch?v=cmf4Ksv3uRM

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...