Magento股票更新与csv

时间:2012-06-25 23:00:36

标签: magento csv stock

我使用以下脚本

http://www.sonassi.com/knowledge-base/magento-kb/mass-update-stock-levels-in-magento-fast/

它与测试CSV文件完美配合。

我的POS创建了一个CSV文件但它放了一个不同的标题,因此脚本不起作用。我想自动化这个过程。有没有办法自动更改标题的名称?

脚本要求标题为

“SKU”,”数量”

我的CSV是

“ITEM”,” STOCK”

是否有任何方法可以在脚本中链接这两个不同的名称,以便我的脚本将ITEM视为sku并将STOCK视为数量?

3 个答案:

答案 0 :(得分:0)

您应该使用yourfilename.csv的输入创建一个php脚本,该文件是未格式化的文件。

 $file = file_get_contents('yourfilename.csv');
 $file = str_replace('ITEM', 'sku', $file);
 $file = str_replace('STOCK', 'qty', $file);
 file_put_contents('yourfilename.csv', $file);

以下链接供您参考。

find and replace values in a flat-file using PHP http://forums.phpfreaks.com/index.php?topic=327900.0

希望它有所帮助。

干杯

答案 1 :(得分:0)

PHP通常不是文件操作的最佳方式,可以授予您访问SSH的权限。

您还可以运行以下命令(如果您安装了perl,这在大多数设置中都是默认的...):

perl -pi -e 's/ITEM/sku/g' /path/to/your/csvfile.csv
perl -pi -e 's/STOCK/qty/g' /path/to/your/csvfile.csv

答案 2 :(得分:0)

如果你想使用原始sql方式更新qty,那么你可以创建一个如下所示的函数:

function _updateStocks($data){
    $connection     = _getConnection('core_write');
    $sku            = $data[0];
    $newQty         = $data[1];
    $productId      = _getIdFromSku($sku);
    $attributeId    = _getAttributeId();
 
    $sql            = "UPDATE " . _getTableName('cataloginventory_stock_item') . " csi,
                       " . _getTableName('cataloginventory_stock_status') . " css
                       SET
                       csi.qty = ?,
                       csi.is_in_stock = ?,
                       css.qty = ?,
                       css.stock_status = ?
                       WHERE
                       csi.product_id = ?
                       AND csi.product_id = css.product_id";
    $isInStock      = $newQty > 0 ? 1 : 0;
    $stockStatus    = $newQty > 0 ? 1 : 0;
    $connection->query($sql, array($newQty, $isInStock, $newQty, $stockStatus, $productId));
}

通过传递csv行数据作为参数来调用上面的函数。这只是一个暗示。

为了获得包含详细信息的完整工作代码,您可以参考以下博客文章:
Updating product qty in Magento in an easier & faster way

希望这有帮助!