我在一个网站上工作,我们有两种类型的客户,代理商和网站。然后,客户作为代理商登录,然后选择一个可以订购的网站(这些网站是在自定义客户属性中)。代理客户将项目添加到网站客户篮中,并可以退房(站点用户选择实际上将客户会话从作为代理客户到网站客户)。

现在,如果代理商客户在他们的篮子里有物品,然后更改网站客户,我们希望保持篮子的内容完整,但是因为他们实际上是将登录客户从一个站点客户更改为另一个站点的客户,却丢失了篮子的内容。有人对我如何使网站客户之间的篮子内容完好无损有任何想法吗?

有帮助吗?

解决方案

更改报价的customer_id:

Mage::getModel('checkout/quote')->load($quoteId)->setCustomerId($customerId)->save();

其他提示

对此没有任何经验,而且此代码远非经过测试或完整,但您可能可以使用事件观察者(不是 checkout_cart_product_add_after 否则您将拥有一个无限的添加循环),该循环是在添加产品时会触发的,然后执行这样的东西

$customer_session = Mage::getSingleton('customer/session')->setCustomer([customerid]);
$cart_session = Mage::getSingleton('checkout/session')->loadCustomerQuote();

$cart = Mage::getSingleton('checkout/cart’'); 
$cart->init(); 

$product = Mage::getSingleton('catalog/product')->load($productId); 

$cart->addProduct($product, array('qty' => $qty)); 
$cart->save(); 

$cart_session->setCartWasUpdated(true);

@'Fabian Blechschmidt'为分享购物车的答案。我已经尝试了您的代码,但是需要一些修改,它应该使用“销售/报价”而不是“结帐/报价”,之后对我来说很好。我使用以下代码:

Mage::getModel('sales/quote')->load($quoteId)->setCustomerId($customerId)->save();
许可以下: CC-BY-SA归因
scroll top