シェアする

  • このエントリーをはてなブックマークに追加

[EC-CUBE]受注管理>受注登録画面の商品追加時の問題を解消(2.12.0)

EC-CUBE2.12.0の受注管理>受注登録画面で商品追加を行うポップアップウィンドウで以下のような問題がありました。

1.商品コード検索がめちゃめちゃ遅くてタイムアウトしてしまう*[1]
2.規格が1つしか登録されていない商品の決定リンクが動作しない

#1931 (管理画面の商品選択用ポップアップ画面の商品コード検索が重い) ? EC-CUBE Trac
#1815 (受注管理>受注登録 規格1のみ設定した商品の追加で、規格分類IDを送出していない) ? EC-CUBE Trac

それぞれ以下のようなチケットが作られていたので最新版ではすでに解消済みかもしれませんが、自分用にさっとメモしておきます。

商品コード検索が遅い問題の解消法

どうやらWERER句に古いクエリが残ってしまったのが原因のようですが、以下のように対応します。

LC_Page_Admin_Order_ProductSelect.phpのcreateWhereメソッドをextendsにまるごとコピーして以下の箇所を修正します。

/data/class_extends/page_extends/admin/order/LC_Page_Admin_Order_ProductSelect_Ex.php

$where .=    ' AND alldtl.product_id IN (SELECT product_id FROM dtb_products_class WHERE product_code LIKE ? AND del_flg = 0 GROUP BY product_id)';

$where .=    ' AND alldtl.product_id IN (SELECT product_id FROM dtb_products_class WHERE product_code ILIKE ? AND del_flg = 0)';

これで商品コード検索は爆速になります。

規格1のみの商品で決定が効かない問題の解消法

こちらの原因は単純で、規格1しか持たない商品の場合に商品規格コードを設定する処理が抜けているというものでした。

/data/Smarty/templates/admin/order/product_select.tpl

        if (
            classcat2
            && typeof classcat2.product_class_id != 'undefined'
            && String(classcat2.product_class_id).length >= 1
        ) {
            eleDynamic.value = classcat2.product_class_id;
        } else {
            eleDynamic.value = ''
        }

        if (
            classcat2
            && typeof classcat2.product_class_id != 'undefined'
            && String(classcat2.product_class_id).length >= 1
        ) {
            eleDynamic.value = classcat2.product_class_id;
        } else {
		// 規格が1つのみの場合の処理
		classcat1 = productsClassCategories[product_id][classcat_id1]['#0'];
		eleDynamic.value = classcat1.product_class_id;
	}
  1. 商品数はdtb_product_classで50000弱あるので多いほうです []

シェアする

  • このエントリーをはてなブックマークに追加

フォローする