バージョン選択

フォーラム

メニュー

オンライン状況

60 人のユーザが現在オンラインです。 (53 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 60
もっと...

サイト内検索

バグ報告 > 管理機能 > v2.12.5 規格2の初期値「選択してください」が表示されない

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
mayaa
投稿日時: 2013/10/2 12:01
対応状況: −−−
新米
登録日: 2013/10/2
居住地:
投稿: 1
v2.12.5 規格2の初期値「選択してください」が表示されない
受注管理 > 検索
検索結果一覧 > 編集
受注商品情報一覧 > 変更
ポップアップの商品選択 > 検索
商品一覧

この順にたどっていき、商品一覧に規格2がある商品が2個以上並ぶと
1個目の商品の規格2には「選択してください」という選択肢があるのに対し、
2個目以降の商品の規格2には選択肢が表示されていません。

http://demo.ec-cube.net/admin/
このデモで商品名「赤キャベツ」で検索すると再現します。
sumida
投稿日時: 2013/10/2 22:15
対応状況: −−−
仙人
登録日: 2013/2/10
居住地: 広島県呉市ときどき瀬戸内海
投稿: 641
Re: v2.12.5 規格2の初期値「選択してください」が表示されない
とりあえず、原因として、function fnOnLoad()時に実行する関数が2個以上あっても、1個目だけ有効になっているような感じです。

function fnOnLoad()時の関数を2個目を直書きで、1個目の前にいれたら、直書きが有効になりましたが、その次(元の1個目)は、有効になっていません。
sumida
投稿日時: 2013/10/3 11:52
対応状況: −−−
仙人
登録日: 2013/2/10
居住地: 広島県呉市ときどき瀬戸内海
投稿: 641
Re: v2.12.5 規格2の初期値「選択してください」が表示されない
進展がありました。

javascript部分の関数 fnSetClassCategories 内で呼び出されている fnCheckStock が影響しているようです。
呼び出し部分をコメントにすると、2個目以降も有効になりました。

なお、直接の原因は、まだです。

追記:
少なくとも、fnCheckStockの最終行でストップしており、2個目以降の処理がされていないようです。

再追記:
fnCheckStockの中で、規格1が未選択の場合の処理が抜けているような。
sumida
投稿日時: 2013/10/3 14:25
対応状況: −−−
仙人
登録日: 2013/2/10
居住地: 広島県呉市ときどき瀬戸内海
投稿: 641
Re: v2.12.5 規格2の初期値「選択してください」が表示されない
結局、解決しきれないのですが、

javascriptの関数 fnCheckStock の処理が、productsClassCategories に設定されているデータに合致していないような。
(特に、「選択してください。」の場合)

保守性を考慮すれば、規格2があるか否かで処理を分けた方が良いと思いました。
sumida
投稿日時: 2013/10/4 18:45
対応状況: −−−
仙人
登録日: 2013/2/10
居住地: 広島県呉市ときどき瀬戸内海
投稿: 641
Re: v2.12.5 規格2の初期値「選択してください」が表示されない
原因:
規格2が '__unselected'(「選択してください」)の場合、javascriptの関数 fnCheckStock の処理が不正になっていました。
詳細:
productsClassCategoriesは、規格の一覧を保持した配列変数になっています。
'__unselected'の場合、'classcategory_id2'が未定義であったため、関数 fnCheckStock 内で、変数 classcat_id2 に、「選択してください」(form.classcategory_id2.valueの値)が代入されていました。
その結果

classcat2 = eccube.productsClassCategories[product_id][classcat_id1]['#選択してください' ];

という配列の参照になり、以降が動作不良になっていました。

対策:
(1) productsClassCategoriesの内容を追加
data/class/SC_Product.php

            $classCategories = array();
// added
            $classCategories['__unselected']['__unselected']['classcategory_id2'] = '__unselected';
// added
            $classCategories['__unselected']['__unselected']['name'] = '選択してください';
            $classCategories['__unselected']['__unselected']['product_class_id'] = $arrProductClasses[0]['product_class_id'];
            // 商品種別
            $classCategories['__unselected']['__unselected']['product_type'] = $arrProductClasses[0]['product_type_id'];


規格2への割当部分の処理追加
data/Smarty/templates/admin/order/product_select.tpl

    function fnCheckStock(form) {
        product_id = form.product_id.value;
        classcat_id1 = form.classcategory_id1.value;
        classcat_id2 = form.classcategory_id2 ? form.classcategory_id2.value : '';
// added_1
if (classcat_id2 == '__unselected') {
        classcat2 = eccube.productsClassCategories[product_id][classcat_id1][classcat_id2];
} else {
// added_1
        classcat2 = eccube.productsClassCategories[product_id][classcat_id1]['#' + classcat_id2];
// added_2
}
// added_2
        // 商品規格
        eleDynamic = document.getElementById('product_class_id' + product_id);

これでどうでしょう。

追記:
ショップ画面でも、同様の問題がありますが、
上記修正がなくても、動作しています。
(修正した方が良いと思います。)
v2.12.5
html/js/products.js(checkStock)
v2.13.0
html/js/eccube.js(eccube.checkStock)
です。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,308名です
総投稿数は109,693件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1568
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.