2

2013 年11 月 11 日更新: 在进行一些测试后,我在使用 bigcommerce php api 时遇到了更多问题。搜索 sku 的属性适用于附加到选项的 SKU,但更新它们我似乎遇到了一些问题......

这是一个示例片段:

$filter = array('sku' => '230000120078');
$skus = Bigcommerce::getSkus($filter);
foreach($skus as $sku){
    $options = array('inventory_level' => 3);
    Bigcommerce::updateSku($sku->id, $options);
}

我一定遗漏了一些东西,但我在网上找不到太多文档。 用于更新 sku 的 BigCommerce 文档使我看起来好像有这个权利,但它似乎不起作用。有什么建议么?

原帖:

在我深入研究解决方案之前,这更像是一个一般性问题......

我读了这篇关于按 SKU 更新库存水平的帖子,答案表明您只能按产品 ID 更新水平。这是否意味着如果您的商店有一些按选项集跟踪库存的产品(每个选项附加 SKU),您无法更新每个选项的库存水平?

目前我刚刚编写了一个脚本,它连接到我们的 RFID 数据库并获取当前库存水平并将它们放入一个 csv 文件中,然后我每天早上都会上传该文件,但我正在尝试完全自动化这个过程,所以我不必担心关于在新库存的 24 小时之间售罄商品。

有没有人有任何使用 Bigcommerce api 的经验?

4

3 回答 3

2

所以...

这需要一个混合解决方案;如果您查看快速入门指南(不是很有帮助),您会发现

目前,搜索 SKU 有两种方法 - GET /products?sku="something" 或 GET /products/skus?sku="something"。第一次调用仅返回产品级 SKU,而不是选项级 SKU。

他们忽略的是,要获得产品级别的 SKU,唯一可行的方法是顶部的方法。

我的解决方案是在库中包含另一个函数,该函数将路径调整为 /products?skup=xxxxx

public static function getSkuTop($filter = false)
{
    $filter = Filter::create($filter);
    return self::getCollection('/products' . $filter->toQuery(), 'Sku');
}

在我的通话中,我有一些简单的逻辑

$filter = array('sku' => '10026');
$skus = Bigcommerce::getSkus($filter);

if(is_array($skus)){
    foreach($skus as $sku){
        $sku->inventory_level = 27;
        $sku->update();
    }   
} else {
    $skus = Bigcommerce::getSkuTop($filter);
    if(is_array($skus)){
        foreach($skus as $sku){
            $options = array('inventory_level' => 28);
            Bigcommerce::updateProduct($sku->id, $options);
        }   
    }
}

可能不是那么好,但这是我让它工作的唯一方法!

于 2013-11-14T01:10:06.570 回答
1

是的,我一直在处理同样的问题,我想出的解决方案是检查产品级别的 SKU 是否为空白。如果是这样,inventory_level 由产品下方的 SKU 资源中管理。

于 2013-11-08T16:40:23.033 回答
1

就实际更新 SKU 而言,我找到了最简单的方法,如下所示。我没有尝试运行 updateSku 函数,而是这样做......

$filter = array('sku' => '230000120078');
$skus = Bigcommerce::getSkus($filter);
foreach($skus as $sku){
    $sku->inventory_level = 4;
    $sku->update();
}

这确实会更新相关 sku 的库存。

至于保罗的回应,他是绝对正确的,这让我得到了这个答案。

于 2013-11-12T15:25:09.470 回答