背景
我有一个正在测试的 Magento 商店。我从 Magento 商店的 WSDL 生成一个 MagentoApi C# 类。
问题
我可以通过我的 API 类毫无问题地更新产品数量。我现在正尝试从 API 设置 Stock Availability
字段,但它不会改变它的值。
代码
[Test]
public void UpdateIsInStockField()
{
MagentoStoreConfig storeConfig = GetTestMagentoStore();
var magentoApiRepo = new MagentoApiRepository(storeConfig);
catalogInventoryStockItemEntity magentoProduct = magentoApiRepo.GetProductFromSku(new[] { "SKU-123456" });
var productUpdated = new catalogInventoryStockItemUpdateEntity
{
is_in_stock = 0,
manage_stock = 0,
use_config_manage_stock = 0,
qty = new Random().Next(50, 100).ToString(CultureInfo.InvariantCulture)
};
magentoApiRepo.UpdateStockQuantity(magentoProduct.product_id, productUpdated);
}
结果
在 Magento 商店的管理部分,产品的数量值发生了变化,但 Stock Availability
值没有变化。
我正在按照 here in the Magento API reference guide 概述的说明设置 manage_stock
和 use_config_manage_stock
。
事实证明,我需要通过添加参数 is_in_stock_specified=true
来指定我正在提供 is_in_stock
字段。
所以,我的 API 调用如下:
var productUpdated = new catalogInventoryStockItemUpdateEntity
{
is_in_stock_specified = true,
is_in_stock = 0,
manage_stock = 0,
use_config_manage_stock = 0,
qty = new Random().Next(50, 100).ToString(CultureInfo.InvariantCulture)
};
我是一名优秀的程序员,十分优秀!