Soap Magento和salesforce的整合,在Magento商店完成订单后,在salesfore内部创造机会
我已经实现了salesforce与magento orders的集成。为了实现这一点,我遵循了下面给出的步骤。在用户帐户中插入salesforce_company_id和salesforce_contact_id时,我在第4步中出错 1)在管理中添加自定义选项“已关闭”,以完成任何订单。Soap Magento和salesforce的整合,在Magento商店完成订单后,在salesfore内部创造机会,soap,curl,salesforce,magento,Soap,Curl,Salesforce,Magento,我已经实现了salesforce与magento orders的集成。为了实现这一点,我遵循了下面给出的步骤。在用户帐户中插入salesforce_company_id和salesforce_contact_id时,我在第4步中出错 1)在管理中添加自定义选项“已关闭”,以完成任何订单。 public function massCompleteAction(){ $orderIds = $this->getRequest()->getPost('order_ids', array()
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联系人添加两个附加字段。
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('*/*/');
}
我遵循了以下链接
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);
}
}
我等待您的回复。magento有一个很好的扩展,它为您提供了所有这些,甚至更多: 请看一下“帮助和文档”选项卡,在这里您甚至可以找到带有用例场景的电影
对客户调用
setData()
将覆盖该模型中存在的数据。尝试使用addData()
。谢谢@nick,我找到了解决方案$客户->设置公司id($compid);$customer->setSalesforce\u contact\u id($contid);试试{$customer->save();}catch(异常$ex1){//Zend_Debug::dump($ex->getMessage());}是的,没错。如果使用->setData($key,$value)
而不是->setData(array())
则只替换数据存储中的一项,而不是整个项。使用->addData()
可以实现您想要的功能:)谢谢@Nick,这个问题解决了