【问题标题】:How to populate stock tables when programatically importing magento products以编程方式导入 magento 产品时如何填充库存表
【发布时间】:2014-08-14 14:40:44
【问题描述】:

我编写了一个 Magento 输入脚本,用于将我提供的 csv 文件解析为 magento。它成功地将产品传递到 magento,但它们在网站上显示为“缺货”,即使它们在管理区域中标记为“有货”和“启用”。

在说服自己这不是导入产品的库存选项卡中的设置后,我一直在查看 magento 代码,并确定“is_salable”已定义并为每个产品返回 null。进一步调查得出的结论是 cataloginventory_stock_status 表是空的。

我一直在谷歌上搜索这个问题,以确定为什么尽管导入脚本似乎没有出现任何错误,但没有在数据库中设置股票表,但找不到答案。

任何人都可以看到我在这里缺少的东西,提前感谢任何人可以提供的任何帮助或建议。以下是负责导入产品的主要代码部分:

$product = Mage::getModel('catalog/product');

$product
    ->setWebsiteIds(array(Mage::app()->getStore(true)->getWebsite()->getId()))
    ->setAttributeSetId(4)
    ->setTypeId(Mage_Catalog_Model_Product_Type::TYPE_SIMPLE)
    ->setCreatedAt(strtotime('now'))
    ->setUpdatedAt(strtotime('now'))
    ->setSku($data[2])
    ->setName($data[5])
    ->setWeight(4.0000)
    ->setStatus(1)
    ->setTaxClassId(4)
    ->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH)
    ->setPrice($data[21])
    ->setCost($data[21])
    ->setSpecialPrice($data[21])
    ->setSpecialFromDate('06/1/2014')
    ->setSpecialToDate('06/30/2014')
    ->setMsrpEnabled(1)
    ->setMsrpDisplayActualPriceType(1)
    ->setMsrp($data[21])
    ->setMetaTitle('test meta title 2')
    ->setMetaKeyword('test meta keyword 2')
    ->setMetaDescription('test meta description 2')
    ->setDescription($data[7])
    ->setShortDescription($data[6])
    ->setMediaGallery (array('images'=>array(), 'values'=>array()))
    ->setStockData(array(
        'use_config_manage_stock' => 1,
        'qty' => 100,
        'min_qty' => 0,
        'use_config_min_qty'=>1,
        'min_sale_qty' => 0,
        'use_config_min_sale_qty'=>1,
        'max_sale_qty' => 9999,
        'use_config_max_sale_qty'=>1,
        'is_qty_decimal' => 0,
        'backorders' => 0,
        'notify_stock_qty' => 1,
        'is_in_stock' => 1
    ))
    ->setCategoryIds(array(3))
    ->save();

【问题讨论】:

    标签: php magento


    【解决方案1】:

    您需要调用库存项目而不是在产品中设置。我使用类似的东西来设置股票数据:

        $stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($product->getId());
        $stockItemId = $stockItem->getId();
        $stock = array();
    
        if (!$stockItemId) {
            $stockItem->setData('product_id', $product->getId());
            $stockItem->setData('stock_id', 1);
        } else {
            $stock = $stockItem->getData();
        }
        $StockData['qty'] = 12;
        $StockData['is_in_stock'] = 1;
        $StockData['manage_stock'] = 1;
        $StockData['use_config_manage_stock'] = 0;
        $StockData['use_config_min_qty'] = 0;
    
        foreach($StockData as $field => $value) {
            $stockItem->setData($field, $value?$value:0);
            Mage::log($field.'=>'.$value);
        }
        $stockItem->save();
    

    【讨论】:

    • 谢谢,这填充了库存商品表,但是当我访问该网站时,我仍然没有购买商品的选项。
    • 知道了,`谢谢你的帮助。我发现一旦我设置了库存数据,我需要在底部添加这一行:Mage::getSingleton('cataloginventory/stock_status')->updateStatus($product->getId())
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-14
    相关资源
    最近更新 更多