updateAction如何修改购物车控制器中的库存

时间:2013-01-10 23:29:39

标签: php magento cart

我在我正在处理的magento安装中修改了购物车,这样当你想要改变服装价格的大小时(从小到大)你可以通过使用下拉框来实现除了必须删除项目并重新添加新的大小,我如何做到这一点是我从购物车中删除旧的大小并添加新的大小(从某种意义上说,如果功能不是如此,如何做到这一点有)

我还编辑过购物车,这样如果您要将产品的尺寸从“小”更改为“大”并且您已经拥有尺寸为“大”的产品,则会在库存足够时合并2的数量(因此,如果你想将5小改为5大而你已经有3大,那么购物车将在更新后8大),我怎么做是通过检查你改变的尺寸是否已经在购物车中,如果是,检查是否有足够的库存,如果是,则删除您更改大小的项目并编辑$cartData变量,该变量处理现有项目的数量变化,以便改变数量,这两项工作

我发现的问题是,如果你有这样的购物车

product   | size   | qty
---------------------------------------
product 1 | Large  | 1
product 1 | Medium | 1
product 1 | Small  | 1

并且您要将大号更改为小型,小型更改为大型,如果您没有足够的库存就会出现错误,即使您没有增加库存

我已经知道这是因为我在购物车中不存在尺寸时改变尺寸的方法,即使我从购物车中移除了商品,数量仍然从库存中消失,换句话说,如果你有一个只有1个库存的商品并且你将其删除并再次添加相同的商品,数量为1,那么magento会认为你试图拥有一个数量为2的商品。

现在显然,交换产品尺寸的问题的解决方案是强制magento每次从updateAction中的购物车中删除项目时更新库存,但是即使查看CartController.php文件中的原始updateAction我也可以'似乎找到magento更新其物品在购物车中时使用的库存水平的功能但是我知道它必须更新一些临时库存水平,因为我注意到即使你有5个项目,5 isn'数据库中的库存缺失

我的问题是,如果我发现它是如何操作的,那么updateAction如何修改购物车控制器中的库存,我可以强制它在我的updateAction中间工作而不是结束

注意:我知道只交换相同产品的2个尺寸似乎很愚蠢(有效地交换他们在购物车中的位置)但是我必须假设用户是白痴并且他们会做像这样的蠢事

1 个答案:

答案 0 :(得分:1)

updateAction不会修改产品库存。产品库存减少Mage_CatalogInventory_Model_Observer::subtractQuoteInventory方法,该方法在sales_model_service_quote_submit_before事件上触发(请参阅app/code/core/Mage/CatalogInventory/etc/config.xml文件)