参与课程: Mage_Sales_Model_Quote_Item 和 Mage_Catalog_Model_Product 。
由于听了一个事件(在购物车上添加),我得到了他们两个。我正在尝试从外部来源更新产品的数量信息。
到目前为止,我的代码仅基于产品信息,我不确定这是否正确。
报价项目的目的是什么? 捆绑的可配置产品怎么样?您对如何从捆绑产品中获取单个项目有任何建议吗?
由于
答案 0 :(得分:3)
Magento特别是将报价项目放入购物车。使用$product->prepareForCart
检索这些引用项。这些项目还包括不同的信息,例如数量和可配置的产品选项(在报价项目上)。
从后端的角度来看,产品的数据存储在:catalog_product_entity_*
,而报价项目存储在sales_flat_quote_item
中(至少在企业中。其他人可能希望在社区中对此进行验证)。< / p>
编辑:附加我们编写的一些代码,以便暂时导入产品库存。
$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();
,但我会将整个代码段包括在内,因为它有效。
希望有所帮助。谢谢, 乔
答案 1 :(得分:3)
到目前为止,我要感谢两位回应者的努力,但他们的回答与我的问题相差甚远。我将尝试根据我所学到的东西回应自己。
引用是一个与订单相关的概念,只是在Magento工作流程方面的概念。一个现实世界的概念就像是一个预购,就像一个postIt,你可以在餐厅里把你的问题放在一个餐厅而不是订单或账单。
我正在监控发送$ product和$ orderItem的事件(checkout_cart_product_add_after)。我现在理解,为了获得有关产品的信息以及有关计费的信息以及该产品在未来订单中的表示,我们现在发送这两个信息。
对于分组产品,例如$ product是具有各种关联尺寸的Tshirt,$ product将包含主分组产品的SKU,$ orderItem将包含所选Tshirt的实例(中等尺寸SKU)。
仅供参考:因此,为了在购物车更新时更新产品信息,如果是复杂类型(捆绑,可配置或分组),最好从$ item获取产品信息
答案 2 :(得分:1)
我的第一个答案是产品和产品报价是两个独立的实体,因此不应该在统一的实体中建模。
为什么会来自我工作的公司,以及为什么我们分别对这些事情进行建模,这是一个例子:
在我们的电子采购系统中,您可能在特定买方和卖方之间签订了“合同”。当涉及发票条目时,“报价”项目对此进行建模。如果没有合同,则使用正常的产品价格创建报价项目,否则使用供应商和买方之间的“合同”调整价格。