【问题标题】:Magento stock update with csv使用 csv 更新 Magento 股票
【发布时间】:2012-06-25 23:00:36
【问题描述】:

我正在使用以下脚本

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

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

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

脚本要求标题是

“sku”、“数量”

我的 CSV 是

“项目”、“库存”

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

【问题讨论】:

    标签: magento csv stock


    【解决方案1】:

    您应该使用 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

    希望对你有帮助。

    干杯

    【讨论】:

      【解决方案2】:

      如果您拥有 SSH 访问权限,PHP 通常不是进行文件操作的最佳方式。

      您还可以运行以下命令(如果您安装了 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
      

      【讨论】:

        【解决方案3】:

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

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

        希望这会有所帮助!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-11-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多