Как скопировать одно предложение (только товары в корзине) в другое предложение (только товары)
Я хочу скопировать одну цитату (только товары в корзине) в другую цитату (только товары).
Только хочу to copy cart products to other new quote
.
Предположим: у меня есть старая цитата, идентификатор которой равен 5, есть 4 элемента
i have another quote which id 77, have 1 item, i want to copy 4 items of quote id 5 to
quote id 77.
У меня есть попытка ниже блога; Программно добавлять товары в корзину и назначать гостевому пользователю
3 answers
Взгляните на метод merge()
в mage_sales_model_quote. Я никогда не использовал его, но это должно быть что-то вроде:
$quoteA = Mage::getModel('sales/quote')->load('5');
$quoteB = Mage::getModel('sales/quote')->load('77');
$quoteB->merge($quoteA);
// Also?
$quoteB->collectTotals()->save();
Zend_Debug::dump($quoteB->getAllItems());
//редактировать - Я посмотрел, что Magento делает в модели сеанса проверки, и он также вызывает collectTotals() и save(), так что это, вероятно, также необходимо.
Посмотрите также на Сеанс mage_checkout_model_session
Просто дополнение к этому, чтобы скопировать элементы предложения, вам нужно выполнить следующее:
foreach($quoteA->getItemsCollection() as $item) {
$item->setId(null); //Remove the item id, so it gets added
$quoteB->addItem($item);
}
У меня была аналогичная проблема, я хотел создать новую цитату в сеансе пользователя и скопировать в нее предыдущие элементы, и это сработало для меня.
$newQuote = Mage::getModel('sales/quote')->merge($quote);
$newQuote->setStoreId($quote->getStoreId());
$newQuote->collectTotals()->save();
Mage::getSingleton('checkout/session')->replaceQuote($newQuote);