我有一个Magento输入脚本,我已经写了解析一个csv文件,我已经提供到Magento。它成功地将产品传递到magento,但是它们在站点上显示为"缺货",尽管它们在管理区域被标记为"库存"answers"已启用"。
在说服自己这不是进口产品的库存选项卡中的设置之后,我一直在查看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();
您需要调用库存项目而不是在产品中设置。我使用类似的东西来设置股票数据:
$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();