バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > 規格登録有無の判定について

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
reomi2002
投稿日時: 2009/12/5 3:04
対応状況: −−−
新米
登録日: 2009/7/6
居住地:
投稿: 3
規格登録有無の判定について
お世話になっております。

EC-CUBEは初心者に近いのですが、2.4.1 のソースコードを読んでいると、

----------
// すでに規格登録があるかどうかをチェックする。
$where = "product_id = ? AND classcategory_id1 <> 0 AND classcategory_id1 <> 0";
----------

と、dtb_products_class.classcategory_id1 の値を2回条件句に指定するSQLがいくつか見受けられます。
(SC_Utils.php 751行, LC_Page_Admin_Products_Product.php 648行)

これはどういった仕様によるものでしょうか?
ご存じの方がいたら是非ご教授ください。
AMUAMU
投稿日時: 2009/12/5 9:57
対応状況: −−−
登録日: 2009/5/2
居住地: 東京都
投稿: 2712
Re: 規格登録有無の判定について
過去ログで指摘があり、バグでチケット発行済です。
http://svn.ec-cube.net/open_trac/ticket/519


----------------
EC-CUBE公式エヴァンジェリスト
EC-CUBEインテグレートパートナー (株)スピリット・オブ
移転・拡張・高速化・問題解決
各種カスタマイズ・支援依頼承ります。

[url=h

AMUAMU
投稿日時: 2009/12/5 10:34
対応状況: −−−
登録日: 2009/5/2
居住地: 東京都
投稿: 2712
Re: 規格登録有無の判定について
忘れられているので、ちゃんと確認してみたところ影響なさそうなので修正をコミットしました。
http://svn.ec-cube.net/open_trac/changeset/18427


----------------
EC-CUBE公式エヴァンジェリスト
EC-CUBEインテグレートパートナー (株)スピリット・オブ
移転・拡張・高速化・問題解決
各種カスタマイズ・支援依頼承ります。

[url=h

Oba
投稿日時: 2009/12/6 5:42
対応状況: −−−
一人前
登録日: 2007/8/31
居住地: 静岡
投稿: 111
Re: 規格登録有無の判定について
お世話になっております。

[EC-CUBE] comu-ver.2.4.1-r18415

reomi2002様も書かれてますが、他のファイルにも、同じ様な判定の個所がありますが、どうでしょうか?

data/class/pages/admin/products/LC_Page_Admin_Products_Product.php の651行目。

647行目より
    /* 規格あり判定用(規格が登録されていない場合:TRUE) */
     function lfCheckNonClass($product_id) {
         if(SC_Utils_Ex::sfIsInt($product_id)) {
             $objQuery  = new SC_Query();
             $where = "product_id = ? AND classcategory_id1 <> 0 AND classcategory_id1 <> 0";
             $count = $objQuery->count("dtb_products_class", $where, array($product_id));
             if($count > 0) {
                 return false;
             }
         }
         return true;
     }
です。
seasoft
投稿日時: 2009/12/6 14:38
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7365
Re: 規格登録有無の判定について
AMUAMU 様

> 忘れられているので、ちゃんと確認してみたところ影響なさそうなので修正をコミットしました。
> http://svn.ec-cube.net/open_trac/changeset/18427

本改訂の適用により、規格1のみを設定している商品の情報(価格や在庫)が異常になると、私どものお客様より報告がありました。

当方では、まだ詳細な現象確認など出来ていませんが クリーンインストールでのテストは行なっていませんが、取り急ぎ報告まで。


(追記)
ぱっと見ですが、「<>0 AND <>0」はまずいような・・・
OR 比較する必要があるような。

(追記2)
考え方によっては、EC-CUBE のデータ的には、classcategory_id1 のみの比較で十分で、classcategory_id2 を評価する必要性は薄いのかもしれません。(商品規格2のみ登録するのは不可能な気がするので。CSV登録やDB直接編集などが関わってくると、分かりませんが。)


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

seasoft
投稿日時: 2009/12/6 16:03
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7365
Re: 規格登録有無の判定について
Oba 様

そもそも、同じような処理が2箇所に分散している時点で、構造的に望ましくない予感がしますね。

SC_Utils#sfInsertProductClass も、LC_Page_Admin_Products_Product でしか使っていないようなので、CSV 登録では、また別の判断基準で動作していそうですね・・・


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

Oba
投稿日時: 2009/12/7 2:28
対応状況: −−−
一人前
登録日: 2007/8/31
居住地: 静岡
投稿: 111
Re: 規格登録有無の判定について
Seasoft様

いつも、ご苦労様です。また、返信、ありがとうございます。

引用:
本改訂の適用により、規格1のみを設定している商品の情報(価格や在庫)が異常になると、私どものお客様より報告がありました。

異常になってしまうんですか。
SVNのtracでも、Seasoft様が差し戻されてますね。
以前の状態で異常が無かったので、自分も戻しておきました。

引用:
(追記)
ぱっと見ですが、「<>0 AND <>0」はまずいような・・・
OR 比較する必要があるような。
 
(追記2)
考え方によっては、EC-CUBE のデータ的には、classcategory_id1 のみの比較で十分で、classcategory_id2 を評価する必要性は薄いのかもしれません。(商品規格2のみ登録するのは不可能な気がするので。CSV登録やDB直接編集などが関わってくると、分かりませんが。)

AND ではなく、OR や XOR で、classcategory_id2 をも比較するのが良いんでしょうか。

それとも、
引用:
商品規格2のみ登録するのは不可能な気がするので。…

EC-CUBEの標準的な?使用ならば、classcategory_id2 は要らない?

とすると、
    $where = "product_id = ? AND classcategory_id1 <> 0 AND classcategory_id1 <> 0"; を、
  ↓↓↓
    $where = "product_id = ? AND classcategory_id1 <> 0";
と、したらダメなのですか?(浅はかです。。。

引用:
SC_Utils#sfInsertProductClass も、LC_Page_Admin_Products_Product でしか使っていないようなので、CSV 登録では、また別の判断基準で動作していそうですね・・・

grepしてみたら、sfInsertProductClass は、仰られている様に、LC_Page_Admin_Products_Product でしか使ってないですね。

引用:
そもそも、同じような処理が2箇所に分散している時点で、構造的に望ましくない予感がしますね。

LC_Page_Admin_Products_Product では、該当箇所の見直しでしょうか?

AMUAMU
投稿日時: 2009/12/7 10:09
対応状況: −−−
登録日: 2009/5/2
居住地: 東京都
投稿: 2712
Re: 規格登録有無の判定について
これは大変に失礼しました。
やはり慎重な判断が必要な部分でしたね・・・
差し戻しありがとうございました。

引用:
考え方によっては、EC-CUBE のデータ的には、classcategory_id1 のみの比較で十分で、classcategory_id2 を評価する必要性は薄いのかもしれません。(商品規格2のみ登録するのは不可能な気がするので。CSV登録やDB直接編集などが関わってくると、分かりませんが。)


確かにその通りかと思います。
評価の重要性は低いので削るぐらいでも良いのかと。・・


----------------
EC-CUBE公式エヴァンジェリスト
EC-CUBEインテグレートパートナー (株)スピリット・オブ
移転・拡張・高速化・問題解決
各種カスタマイズ・支援依頼承ります。

[url=h

seasoft
投稿日時: 2009/12/7 16:41
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7365
Re: 規格登録有無の判定について
> AND ではなく、OR や XOR で、classcategory_id2 をも比較するのが良いんでしょうか。

多分そうだと思います。
もう少し考えさせてください。


> EC-CUBEの標準的な?使用ならば、classcategory_id2 は要らない?

私の把握している限りでは。
もしも、規格1を利用せずに、規格2を利用するルートがあれば、話が変わってきます。

なので、念のため classcategory_id2 も走査しておくというのは良い考えだとも思います。


> とすると、
>
> $where = "product_id = ? AND classcategory_id1 <> 0 AND classcategory_id1 <> 0"; を、
>   ↓↓↓
> $where = "product_id = ? AND classcategory_id1 <> 0";
>
> と、したらダメなのですか?(浅はかです。。。

多分、それでも良いと思います。
少なくとも、従来と同じ動作をするはずです。


> grepしてみたら、sfInsertProductClass は、仰られている様に、LC_Page_Admin_Products_Product でしか使ってないですね。
> LC_Page_Admin_Products_Product では、該当箇所の見直しでしょうか?

少し大きめな改訂となりますが、周辺のロジックの改良を含め、改訂してみようと思います。もう少し時間をください。

改定後に、テストにご協力いただけると幸いです。(本番環境への当て込みは、テスト後に・・・)


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

seasoft
投稿日時: 2009/12/7 21:44
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7365
Re: 規格登録有無の判定について
http://svn.ec-cube.net/open_trac/changeset/18435 にて本件を含む改訂を実施しました。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

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.