Какова концептуальная разница между продуктом и цитатой - PullRequest
4 голосов
/ 01 марта 2010

Включенные классы: Mage_Sales_Model_Quote_Item и Mage_Catalog_Model_Product .

Я получаю их обоих в результате прослушивания события (добавление в корзину). Я пытаюсь обновить информацию о количестве товара из внешнего источника.

До сих пор я основывал свой код только на информации о продукте, и я не уверен, что это правильно.

Какова цель цитаты? Как насчет комплекта настраиваемого продукта? Есть ли у вас какие-либо рекомендации о том, как получить отдельные элементы из комплектного продукта?

Спасибо

Ответы [ 3 ]

3 голосов
/ 01 марта 2010

Magento, в частности, помещает в корзину товары с цитатой. Эти элементы цитаты извлекаются с помощью $product->prepareForCart. Эти позиции также содержат различную информацию, такую ​​как количество и настраиваемые параметры продукта (на элементе предложения).

С внутренней стороны данные для продуктов хранятся в: catalog_product_entity_*, тогда как элементы цитаты хранятся в sales_flat_quote_item (по крайней мере, в Enterprise. Кто-то другой может захотеть проверить это в сообществе).

* +1007 *

РЕДАКТИРОВАТЬ: Прикрепление некоторого кода, который мы написали для импорта товарных запасов некоторое время назад.

$product                 = Mage::getModel("catalog/product")->load($productId);
$product->seStockData(array(
    "qty"                         => (int)$yourQuantity,
    "is_in_stock"                 => ((int)$isTheProductInStock),
    "manage_stock"                => $manageStock,
    "is_qty_decimal"              => $isQtyDecimal,
    "use_config_manage_stock"     => $useConfigManageStock,
));

Mage::getModel('catalog/product_api')->update($sku,$product->getData());

Для ваших целей вам может потребоваться просто позвонить $product->save();, но я включаю весь фрагмент, как написано, потому что он работает.

Надеюсь, это поможет. Спасибо, Джо

3 голосов
/ 02 марта 2010

Я хочу поблагодарить обоих респондентов за их усилия, но их ответы довольно далеки от моего вопроса. Я постараюсь ответить сам, основываясь на том, что я узнал.

A цитата - это концепция, связанная с заказом , только предшествующая этому с точки зрения рабочего процесса в Magento. Концепция реального мира - это что-то вроде предзаказа , вроде поста, на котором вы размещаете запрошенные блюда в ресторане, не будучи заказом или счетом.

Я отслеживал событие (checkout_cart_product_add_after), которое отправляет мне $ product и $ orderItem. Теперь я понимаю, что отправка как для получения информации о продукте и информации о выставлении счетов и представлении этого продукта в будущем заказе.

В случае сгруппированных продуктов, например, где $ product - это футболка с различными ассоциированными размерами, $ product будет содержать SKU основного сгруппированного продукта, а $ orderItem будет содержать экземпляр выбранной футболки ( SKU среднего размера).

К вашему сведению: Таким образом, для обновления информации о товаре при обновлении корзины вам лучше получить информацию о товаре из $ item, если это сложный тип (комплектный, настраиваемый или сгруппированный)

1 голос
/ 01 марта 2010

Моим первым ответом будет то, что продукт и предложение для продукта являются двумя отдельными объектами и, следовательно, не должны моделироваться в едином объекте.

Пример того, почему я работаю в компании, и почему мы моделируем эти вещи отдельно:

В нашей системе электронных закупок у вас может быть «договор» между конкретным покупателем и продавцом. Элемент «цитата» моделирует это, когда дело доходит до записей счета. Если контракта не существует, используйте обычную цену продукта для создания элемента цитаты, иначе измените цену, используя «контракт» между поставщиком и покупателем.

...