0

何が起こっているのかわかりませんが、このテンプレート (queldorei.com) を使用すると、CSV インポートを使用して数量を更新できません。

私のCSVファイルの内容は次のとおりです。

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

ただし、 System > Import/Export > Import > Products : Replace Existingを使用してアップロードするたびに、すべての製品の数量が「444」(最初のレコード) に置き換えられます。CSV の最初の行のみを取得し、すべての製品に適用します。

私の製品のセットアップは次のとおりです。

  1. 赤 (シンプル) - sku_red
  2. グリーン (シンプル) - sku_green
  3. ブルー (シンプル) - sku_blue
  4. メイン (上記の 3 つの製品に関連付けられた構成可能な製品)。-sku_main

ベースのmagento Webサイト(非テンプレート)で同じことをエミュレートしようとしましたが、完全に機能しました。

これを修正する方法を教えてください。

または、おそらく、magento 製品のインポート プロセスに関連するファイル (php) を探すことができますか??

ありがとうございました

4

1 に答える 1

1

私はちょうど同じ問題を経験しました。同じ問題が発生している magento のバージョンがいくつあるかはわかりませんが、app/code/core/Mage/ImportExport/Model/Import/Entity/Product.php1608 付近のファイルと行で修正できます。

行番号を使用せずにその場所を見つけるには、メソッド '_saveStockItem' に移動します。そこには、magento が各行のデータを作成する方法が表示されます。主な問題はここから始まります:

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

商品データはその場所で開始されていますが、開発者は $row 変数を でリセットするのを忘れていました$row = array()。したがって、代わりにそのような配列を開始しました:

$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-01-26T18:10:28.870 に答える