如何使用PrestaSharp更新PrestaShop中的product.quantity?

如何使用PrestaSharp更新PrestaShop中的product.quantity?,prestashop,Prestashop,我正在用prestaSharp来表示C#。我需要更新产品数量,但product.quantity属性为readonly var ProductFactory = new Bukimedia.PrestaSharp.Factories.ProductFactory(BaseUrl, Account, Password); List<Bukimedia.PrestaSharp.Entities.product> products = ProductFactory.GetAll(); fo

我正在用prestaSharp来表示C#。我需要更新产品数量,但
product.quantity
属性为
readonly

var ProductFactory = new Bukimedia.PrestaSharp.Factories.ProductFactory(BaseUrl, Account, Password);
List<Bukimedia.PrestaSharp.Entities.product> products = ProductFactory.GetAll();
foreach (var item in myItems)
{
    var productToUpdate = products.First(x => x.reference == item.Ref);
    // update the quantities
    if (productToUpdate != null)
    {
        productToUpdate.quantity = item.Quantity;
    }
}
await ProductFactory.UpdateListAsync(products);
var ProductFactory=new Bukimedia.PrestaSharp.Factories.ProductFactory(BaseUrl、帐户、密码);
List products=ProductFactory.GetAll();
foreach(myItems中的var项)
{
var productToUpdate=products.First(x=>x.reference==item.Ref);
//更新数量
if(productToUpdate!=null)
{
productToUpdate.quantity=项目数量;
}
}
等待ProductFactory.UpdateListAsync(产品);

我应该如何进行?提前感谢

Prestashop还有一个数量表:“库存”

您必须使用此表和相关类。大概是这样的:

StockAvailable::setQuantity($id_product, $id_product_attribute, $quantity);
基于此,我能够转换VB代码,并在一次调用中更新所有股票

var ProductFactory = new Bukimedia.PrestaSharp.Factories.ProductFactory(BaseUrl, Account, Password);
var StockAvailableFactory = new Bukimedia.PrestaSharp.Factories.StockAvailableFactory(BaseUrl, Account, Password);

// call prestasharp/api/Products to get the products
List<Bukimedia.PrestaSharp.Entities.product> products = ProductFactory.GetAll();

var stocksToUpdate = new List<Bukimedia.PrestaSharp.Entities.stock_available>();
foreach (var itemQ in itemsQuantity)
{
    var productToUpdate = products.First(x => x.reference == itemQ.Ref);
    // update the quantities
    if (productToUpdate != null)
    {
        var dtnSearch = new Dictionary<string, string>();
        dtnSearch.Add("id_product", productToUpdate.id.ToString());
        var currentStock = await StockAvailableFactory.GetByFilterAsync(dtnSearch, null, null);
        if(0 < currentStock.Count())
        {
            currentStock[0].quantity = Decimal.ToInt32(itemQ.Quantity);
            stocksToUpdate.Add(currentStock[0]);
        }
    }
}
await StockAvailableFactory.UpdateListAsync(stocksToUpdate);
var ProductFactory=new Bukimedia.PrestaSharp.Factories.ProductFactory(BaseUrl、帐户、密码);
var StockAvailableFactory=new Bukimedia.PrestaSharp.Factories.StockAvailableFactory(BaseUrl、帐户、密码);
//调用prestasharp/api/Products获取产品
List products=ProductFactory.GetAll();
var stocksToUpdate=新列表();
foreach(itemsQuantity中的var itemQ)
{
var productToUpdate=products.First(x=>x.reference==itemQ.Ref);
//更新数量
if(productToUpdate!=null)
{
var dtnSearch=newdictionary();
添加(“id_product”,productToUpdate.id.ToString());
var currentStock=await StockAvailableFactory.GetByFilterAsync(dtnSearch,null,null);
如果(0
我不熟悉您的sintax,而且我没有“setQuantity”方法,我只能使用API,所以更新/更新列表等等,不管怎样,我都知道了