【问题标题】:Magento Shopper update sku qty via import CSV only process the first recordMagento Shopper 通过导入 CSV 更新 sku 数量仅处理第一条记录
【发布时间】:2014-09-16 16:14:41
【问题描述】:

我不确定发生了什么,但使用此模板 (queldorei.com) 我无法使用 CSV 导入更新数量。

这是我的 CSV 文件的内容:

sku,qty
sku_red,444
sku_green,222
sku_blue,333

但是,每次我使用 系统 > 导入/导出 > 导入 > 产品:替换现有 上传它时,它会将我所有的产品数量替换为:“444”(第一条记录)。它只占用 CSV 的第一行并应用于我的所有产品。

我的产品设置是:

  1. 红色(简单)- sku_red
  2. 绿色(简单)- sku_green
  3. 蓝色(简单)- sku_blue
  4. 主要(与上述 3 个产品相关的可配置产品)。 - sku_main

我尝试在基础 magento 网站(非模板)上模拟相同的东西,并且效果很好。

您能告诉我如何解决这个问题吗?

或者如果您可以找到我可以查找的与 magento 产品导入过程相关的文件 (php)??

谢谢

【问题讨论】:

  • 当导入不起作用时,我总是建议您使用管理后端添加一些条目,然后导出它们。这应该向您展示 Magento 认为您的 csv 文件应该是什么样子(会有很多不必要的列,但您应该能够挑选出关键的列)。

标签: magento csv import inventory skus


【解决方案1】:

我刚刚遇到了同样的问题。我不知道有多少个版本的magento有同样的问题,但你可以在文件app/code/core/Mage/ImportExport/Model/Import/Entity/Product.php中修复它并在1608附近的某个地方。

要在不使用行号的情况下找到该位置,只需转到方法“_saveStockItem”。您将在那里看到 magento 如何为每一行创建数据。主要问题从这里开始:

$row['product_id'] = $this->_newSku[$rowData[self::COL_SKU]]['entity_id'];

产品数据正在那个地方初始化,但开发者忘记用$row = array() 重置$row 变量。所以改为像这样启动数组:

$row = array(
    'product_id' => $this->_newSku[$rowData[self::COL_SKU]],
    'stock_id'   => 1
);

我们有:

$row = array(
    // last $row data ( for instance qty )
    // plus two lines below which don't reset array...
    'product_id' => $this->_newSku[$rowData[self::COL_SKU]],
    'stock_id'   => 1
);

在接下来的几行中,magento 按顺序合并数组:

  1. $defaultStockData
  2. 产品库存数据(如果存在则来自数据库)
  3. csv 数据
  4. $row 数据(应该只包含 product_id 和 stock_id )

因此我们可以假设(无需验证),如果 $row 未使用 $row = array() 重置,则来自第一个 $row 的数据将用作所有其他行的数据。

【讨论】:

    猜你喜欢
    • 2015-03-14
    • 1970-01-01
    • 1970-01-01
    • 2016-12-01
    • 2017-01-07
    • 2020-09-04
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多