商品登録CSVで EC-Cube 2.13.1 EC-CUBE 商品規格一括 登録 Eccube 2.12.6

商品登録CSVでEC-Cube 2.13.1で EC-CUBE 商品規格一括 登録

EC-Cube 2.13.1で EC-CUBE 商品規格一括 登録下記は、EC-CUBEを新規インストールした状態での説明になります。

1、dtb_csvの下記を変更
>>no=3
parent_classcategory_id → classcategory_id1
親規格分類ID → 規格分類ID1
>>no=4
classcategory_id → classcategory_id2
規格分類ID → 規格分類ID2

2、data/class/pages/admin/products/LC_Page_Admin_Products_UploadCSV.php の lfCheckErrorDetail() {…} に下記を追加する。

===▼追加===         // 規格分類ID1の存在チェック          if (!$this->lfIsDbRecordMulti('dtb_classcategory', 'classcategory_id', 'classcategory_id1', $item, ',')) {              $arrErr['classcategory_id1'] = '※ 指定の規格分類ID1は、登録されていません。';          }             // 規格分類ID2の存在チェック          if (!$this->lfIsDbRecordMulti('dtb_classcategory', 'classcategory_id', 'classcategory_id2', $item, ',')) {              $arrErr['classcategory_id2'] = '※ 指定の規格分類ID2は、登録されていません。';          }             // 商品ID、規格分類ID1、規格分類ID2の組合せチェック          if ($item['product_class_id'] == '') {              if ($this->objDb->sfIsRecord('dtb_products_class', 'product_id, classcategory_id1, classcategory_id2'                      , array($item['product_id'], $item['classcategory_id1'], $item['classcategory_id2']))              ) {                   $arrErr['classcategory_id'] = '※ 指定の商品ID、規格分類ID1、規格分類ID2の組合せは既に登録されています。';              }             }   ===▲追加===

3、管理画面で規格分類IDが確認できるように、data/Smarty/templates/admin/products/classcategory.tpl を変更
<!–{* 規格名 *}–><!–{$arrClassCat[cnt].name|h}–>

<!–{* 規格分類ID *}–><!–{$arrClassCat[cnt].classcategory_id|h}–>: <!–{* 規格名 *}–><!–{$arrClassCat[cnt].name|h}–>

4、テーブルを空にする
DELETE FROM dtb_category_count;
DELETE FROM dtb_category_total_count;
DELETE FROM dtb_product_categories;
DELETE FROM dtb_product_status;
DELETE FROM dtb_products;
DELETE FROM dtb_products_class;
DELETE FROM dtb_recommend_products;
SELECT SETVAL (‘dtb_products_class_product_class_id_seq’, ‘1’, false);
SELECT SETVAL (‘dtb_products_product_id_seq’, ‘1’, false);

5、商品管理>カテゴリ登録でカテゴリを登録
テストはデフォルトのまま実施

6、商品管理>規格管理で規格を登録
テストはデフォルトのまま実施
注)dtb_classcategory の classcategory_id =0 は削除しない。

7、商品管理>商品マスターのCSVダウンロードを実施
データが空のファイルが作成される。

8、ダウンロードしたファイルに商品データを登録
※下記必須。
商品ID: 規格違いの商品は同じにする。
商品規格ID: 新規登録(空)、更新時は必須
規格分類ID1: 規格無の時は「0」
規格分類ID2: 規格無の時は「0」
商品名: 規格違いの商品は同じにする。
表示ステータス(公開・非公開): 規格違いの商品は同じにする。(1 or 2)
一覧-メインコメント: 規格違いの商品は同じにする。
詳細-メインコメント: 規格違いの商品は同じにする。
削除フラグ: 規格毎に指定。(0 or 1)
販売価格: 規格毎に指定。
カテゴリID: 規格違いの商品は同じにする。

【規格無しの場合】
規格分類ID1: 0
規格分類ID2: 0
削除フラグ: 0

【規格有りの場合】
規格分類ID1: 0
規格分類ID2: 0
削除フラグ: 1
と、規格の組み合せ。(無い組み合せは登録しなくてもいいが、商品管理>商品登録(商品規格)で更新すると登録されます。)
(組み合せ1)バニラ × S
規格分類ID1: 1
規格分類ID2: 6
削除フラグ: 0
(組み合せ2)バニラ × M
規格分類ID1: 1
規格分類ID2: 5
削除フラグ: 0
(組み合せ3)バニラ × L
規格分類ID1: 1
規格分類ID2: 4
削除フラグ: 0
...

上の方法でEccube2.12.6成功。在庫連動型受注キャンセルプラグインを無料でダウンロードして、一緒に在庫楽に管理でき。


[EC-CUBE] 2.13 商品登録CSVで規格も新規登録する

phpMyAdmin等で、データベースにアクセスし「dtb_csv」の下記を変更

no=3
parent_classcategory_id → classcategory_id1
親規格分類ID → 規格分類ID1
no=4
classcategory_id → classcategory_id2
規格分類ID → 規格分類ID2

上記の変更は手動で変更するよりSQLを実行すると早かったです
1

2

UPDATE dtb_csv SET col = “classcategory_id1″, disp_name = “規格分類ID1″ WHERE no = 3;

UPDATE dtb_csv SET col = “classcategory_id2″, disp_name = “規格分類ID2″ WHERE no = 4;

data/class_extends/page_extends/admin/products/LC_Page_Admin_Products_UploadCSV_Ex.phpに追記(EC-CUBE本体)

(1)data/class/pages/admin/products/LC_Page_Admin_Products_UploadCSV.php のlfCheckErrorDetail() {~}を コピーして
LC_Page_Admin_Products_UploadCSV_Ex.phpの{~}の最後に追記します。

1

2

3

4

class LC_Page_Admin_Products_UploadCSV_Ex extends LC_Page_Admin_Products_UploadCSV {

(ココに追記)

}

(2)さらに下記を、lfCheckErrorDetail() {~}の最後に追記する

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

// 規格分類ID1の存在チェック

if (!$this->lfIsDbRecordMulti(‘dtb_classcategory’, ‘classcategory_id’, ‘classcategory_id1′, $item, ‘,’)) {

$arrErr[‘classcategory_id1′] = ‘※ 指定の規格分類ID1は、登録されていません。';

}

// 規格分類ID2の存在チェック

if (!$this->lfIsDbRecordMulti(‘dtb_classcategory’, ‘classcategory_id’, ‘classcategory_id2′, $item, ‘,’)) {

$arrErr[‘classcategory_id2′] = ‘※ 指定の規格分類ID2は、登録されていません。';

}

// 商品ID、規格分類ID1、規格分類ID2の組合せチェック

if ($item[‘product_class_id’] == ”) {

if ($this->objDb->sfIsRecord(‘dtb_products_class’, ‘product_id, classcategory_id1, classcategory_id2′

, array($item[‘product_id’], $item[‘classcategory_id1′], $item[‘classcategory_id2′]))

) {

$arrErr[‘classcategory_id’] = ‘※ 指定の商品ID、規格分類ID1、規格分類ID2の組合せは既に登録されています。';

}

}

1

2

3

4

public function lfCheckErrorDetail($item, $arrErr) {

(ココに追記)

}

data/Smarty/templates/admin/products/classcategory.tpl 修正(EC-CUBE本体)

管理画面で規格分類IDが確認できるように、規格名を表示する部分の前にIDを表示するよう変更する。

1 <!–{* 規格分類ID *}–><!–{$arrClassCat[cnt].classcategory_id|h}–>: <!–{* 規格名 *}–><!–{$arrClassCat[cnt].name|h}–>
下記のテーブルを修正(データベース)
  • dtb_productsを空に
  • dtb_products_classを空に
  • dtb_product_categoriesを空に
  • dtb_product_statusを空に
  • dtb_products_class_product_class_id_seqを開いて「sequence」の値を「1」に
  • dtb_products_product_id_seqを開いて「sequence」の値を「1」に
SQLを実行する方が早かったです(上記の変更)
1

2

3

4

5

6

7

8

DELETE FROM dtb_products;

DELETE FROM dtb_products_class;

UPDATE dtb_products_class_product_class_id_seq SET sequence = 0;

ALTER TABLE dtb_products_class_product_class_id_seq AUTO_INCREMENT = 1;

UPDATE dtb_products_product_id_seq SET sequence = 0;

ALTER TABLE dtb_products_product_id_seq AUTO_INCREMENT = 1;

DELETE FROM dtb_product_categories;

DELETE FROM dtb_product_status;

あとは、管理画面からカテゴリー登録と規格登録をして準備Okです。(管理画面)

  1. 管理画面の商品カテゴリーでカテゴリを登録
  2. 管理画面の規格管理で規格を登録
  3. 商品マスターで [CSVダウンロード] して、データが空のファイルをダウンロード
  4. ダウンロードしたCSVファイルに、下記表を参考に商品データを登録
  5. 商品登録CSVで作成したCSVファイルをアップロード
必須項目一覧
商品ID 規格違いの商品は同じに
商品規格ID 新規登録(空)、更新時は必須
規格分類ID1 規格なしの時は「0」
規格分類ID2 規格なしの時は「0」
商品名 規格違いの商品は同じに
表示ステータス(公開・非公開) 規格違いの商品は同じに(1 or 2)
一覧-メインコメント 規格違いの商品は同じに
詳細-メインコメント 規格違いの商品は同じに
削除フラグ 規格毎に指定/(1 or 0)
販売価格 規格毎に指定
カテゴリID 規格違いの商品は同じにする。
ダブルクオーテーションで括れば複数指定可

【重要】「規格有無による登録レコード」の組み合わせについての注意点

参考にさせていただいたサイトに記載のある「規格有無による登録レコード例」の組み合わせは、最初、意味が解らなかったのですが、フォーラムで質問させていただき、ようやく理解(とまではいかないですが)できました。

普通は、下記のような組み合わせで、CSVデータを作成すると思いますが、

[規格id1/1] [規格id2/6] [削除フラグ/0] [バニラ] [Sサイズ] [アイスクリーム]
[規格id1/1] [規格id2/5] [削除フラグ/0] [バニラ] [Mサイズ] [アイスクリーム]
[規格id1/1] [規格id2/4] [削除フラグ/0] [バニラ] [Lサイズ] [アイスクリーム]

もしもアイスクリームの規格を削除した場合、[規格id1/0] [規格id2/0] [削除フラグ/1] [アイスクリーム]の組み合わせがなければ、価格を表示しない等の不具合が起こるのだそうです。

そのため、下記のような組み合わせで作成する必要があります。

[規格id1/0] [規格id2/0] [削除フラグ/1] [アイスクリーム]
[規格id1/1] [規格id2/6] [削除フラグ/0] [バニラ] [Sサイズ] [アイスクリーム]
[規格id1/1] [規格id2/5] [削除フラグ/0] [バニラ] [Mサイズ] [アイスクリーム]
[規格id1/1] [規格id2/4] [削除フラグ/0] [バニラ] [Lサイズ] [アイスクリーム]

■インストール直後、商品管理でCSVをダウンロードしてエクセルで開くと下記のようになっています。
※管理画面から規格を登録した場合には下記画像のようなデータが作成されます。
excel

■カスタマイズ後、規格もCSVで新規登録する場合のデータ例(商品規格IDは自動で振られる:更新時は必須)
excel-4

「アイスクリーム」の規格を削除することがないなら、[規格id1/0] [規格id2/0] [削除フラグ/1] の組み合わせは不要との事です。

くれぐれも入念にバックアップするか、テストサイトで試されることをお勧めします。

eccubeorg

http://www.eccube.org

You may also like...

1 Response

  1. 中村 より:

    EC-Cube 2.13.1で商品登録CSVnお商品規格一括 登録成功。