2010-03-01 71 views
4

涉案类之间的概念上的差异:Mage_Sales_Model_Quote_ItemMage_Catalog_Model_Product是什么产品和报价项目

作为听一个事件(在购物车添加)的结果,我得到了他们两个。我试图从外部来源更新产品的数量信息。

到目前为止,我只根据产品信息对我的代码进行了基于,我不确定这是否正确。

报价物品的用途是什么? 捆绑的可配置产品如何?你有关于如何从捆绑产品中获取单个物品的建议吗?

感谢

回答

3

我想感谢两位响应者迄今为止的努力,但他们的回答与我的问题相去甚远。我会尝试根据我所学到的东西来回应自己。

一个报价是与为了一个概念,这是唯一在Magento的工作流程方面在这之前。一个真实的世界概念就像一个预购,就像一个邮局,你可以把它放在餐厅,而不是一个订单或一张账单。

我正在监视发送$ product和$ orderItem的事件(checkout_cart_product_add_after)。我现在明白,这是为了获得有关产品的信息以及有关结算的信息以及未来订单中该产品的表示。

对于分组产品,例如$ product是具有各种关联大小的Tshirt,$ product将包含主分组产品的SKU,$ orderItem将包含所选Tshirt的实例(中等尺寸的SKU)。

FYI:所以为了如果是一个复杂的类型(包,配置或分组)

1

我的第一个答案是,一个产品和对产品的报价是两个独立的实体,因此不应该在一个统一的实体建模。

为什么会在我工作的公司,为什么我们分开这些事情型号的例子:

在我们的电子采购系统,你可能有一个特定的买方和卖方之间的“契约”。 “报价”项目在发票条目中对此进行了模拟。如果没有合同,则使用正常产品价格创建报价项目,否则使用供应商和买方之间的“合同”来调整价格。

3

Magento特别将报价物品放入购物车。这些报价项目使用$product->prepareForCart进行检索。这些项目还包括不同的信息,如数量和可配置的产品选项(在报价项目上)。

从后端角度看,产品数据存储在:catalog_product_entity_*,而报价项存储在sales_flat_quote_item(至少在企业中,其他人可能想要在社区中验证此情况)。


编辑:附加一些我们写的导入产品库存的代码,然后回来。

$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();,但我包括整个片段书面因为它的工作原理。

希望有所帮助。谢谢, Joe

+0

我更新的车更新一个产品,你有我优,以获得从$项目的产品信息的信息想要更新库存数量而不是购物车数量。 – 2010-03-01 15:04:09

+0

我很欣赏这种努力,但您正在制造混乱。 $ item-> qty是另一个概念,而不是$ product-> qty – 2010-03-02 09:29:25

+0

$ item-> qty是添加到当前购物车的$ product类型的商品数量 – 2010-03-02 09:44:52