0

我正在使用以下脚本

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

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

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

该脚本要求标题是

“sku”、“数量”</p>

我的 CSV 是

“项目”、“库存”</p>

有没有办法在脚本中链接这两个不同的名称,以便我的脚本将 ITEM 视为 sku 并将 STOCK 视为 qty?

4

3 回答 3

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
于 2012-06-26T07:45:40.277 回答
0

如果您想使用原始 sql 方式更新数量,那么您可以创建如下函数:

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 行数据作为参数传递来调用上述函数。这只是一个提示。

为了获得带有详细信息的完整工作代码,您可以参考以下博客文章:
在 Magento 中以更简单快捷的方式更新产品数量

希望这可以帮助!

于 2012-06-26T09:10:40.223 回答
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);

以下链接供您参考。

使用 PHP http://forums.phpfreaks.com/index.php?topic=327900.0查找和替换平面文件中的值

希望能帮助到你。

干杯

于 2012-06-26T01:04:33.910 回答