Я реализовал интеграцию 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);
}
}
Я жду ваших ответов.