0

我已经在我正在处理的 magento 安装中修改了购物车,这样当您想更改服装价格的大小(从小到大)时,您可以使用下拉框而不是必须删除该项目并使用新尺寸重新添加它,我这样做的方法是从购物车中删除旧尺寸并添加新尺寸(从某种意义上说,如果功能不存在,人们将如何做)

我还编辑了购物车,因此如果您要将产品的尺寸从小更改为大,并且您已经有一个尺寸为大的产品,如果有足够的库存,它将合并 2 的数量(所以如果您想要将 5 Small 更改为 5 Large 并且您已经有 3 个 large,更新后购物车将有 8 large),我如何做到这一点是通过检查您更改的尺寸是否已经在购物车中,如果是,请检查查看是否有足够的库存,如果有,则删除您更改大小的项目并编辑$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 也不会丢失数据库中的股票

我的问题是 updateAction 如何修改购物车控制器中的库存,一旦我发现它是如何做的,我可以开始强制它在我的 updateAction 中间而不是结束时工作

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

4

1 回答 1

1

updateAction不修改产品库存。Mage_CatalogInventory_Model_Observer::subtractQuoteInventory通过事件触发的方法减少产品库存sales_model_service_quote_submit_before(见app/code/core/Mage/CatalogInventory/etc/config.xml文件)

于 2013-01-11T05:15:57.673 回答