バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 規格の削除後に新たな規格を割り当てると、購入履歴の詳細表示でエラーが出る

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
bbkids
投稿日時: 2015/5/27 14:09
対応状況: −−−
常連
登録日: 2014/2/19
居住地:
投稿: 60
規格の削除後に新たな規格を割り当てると、購入履歴の詳細表示でエラーが出る
EC-CUBEバージョン 2.13.3
(2.13.2にて構築した環境に対し2.13.3差分を内容確認しながら手動適用しました。)
PHPバージョン PHP 5.4.25
DBバージョン MySQL 5.5.36

会員の購入履歴にある商品(規格のある商品)を、
管理画面よりその商品の規格を削除し、あらたな新しい規格を割り当てます。
その上で、会員がMyページから購入履歴詳細を確認すると
「システムエラーが発生しました。大変お手数ですが、サイト管理者までご連絡ください。」
とメッセージが表示され、購入履歴詳細を確認する事が出来ません。

【再現方法】
1、ある会員の購入履歴にある商品(規格がある商品)に対して
 管理画面の商品管理>規格管理よりその規格を削除します。
(正確には登録されている分類名削除後でなければ規格は削除できないので、登録されている分類名を全て削除した上で規格を削除します。)
2、その後、新たに別の規格を作成し分類登録を行います。
3、商品マスターから、1で「規格を削除した」商品に対して、2で新たに作成した規格を割り当てます。
4、1の会員のMyページから該当商品がある購入履歴の詳細を開くとエラーが発生します。

どなたか対処方法がわかる方が居られましたらどうぞお助け頂けますようお願い致します。
EC-CUBEのエラーログを確認すると上記エラー時には以下ログが残ります。

12:36:34 [/mypage/history.php] Fatal error(E_USER_ERROR): DB処理でエラーが発生しました。
SQL: [PREPARE mdb2_statement_mysql_499ef8481df36c24197f002c14c2c0b67d8cc874eb FROM 'SELECT T1.product_id, T1.stock, T1.stock_unlimited, T1.sale_limit, T1.price01, T1.price02, T1.price03, T1.point_rate, T1.product_code, T1.product_class_id, T1.del_flg, T1.product_type_id, T1.down_filename, T1.down_realfilename, T1.soryo_kubun, T1.class_image, T3.name AS classcategory_name1, T3.rank AS rank1, T4.name AS class_name1, T4.class_id AS class_id1, T1.classcategory_id1, T1.classcategory_id2, dtb_classcategory2.name AS classcategory_name2, dtb_classcategory2.rank AS rank2, dtb_class2.name AS class_name2, dtb_class2.class_id AS class_id2 FROM dtb_products_class T1 LEFT JOIN dtb_classcategory T3 ON T1.classcategory_id1 = T3.classcategory_id LEFT JOIN dtb_class T4 ON T3.class_id = T4.class_id LEFT JOIN dtb_classcategory dtb_classcategory2 ON T1.classcategory_id2 = dtb_classcategory2.classcategory_id LEFT JOIN dtb_class dtb_class2 ON dtb_classcategory2.class_id = dtb_class2.class_id WHERE product_class_id = ? AND T1.del_flg = 0 AND T3.classcategory_id is not null AND dtb_classcategory2.classcategory_id is not null ORDER BY T3.rank DESC, dtb_classcategory2.rank DESC ']
PlaceHolder: [array (
)]
MDB2 Error: not found
[Error message: Unable to bind to missing placeholder: 0]
on [XX\data\class\SC_Query.php(1095)] from ::1
customer_id = 60
XX\mypage\history.php(29): LC_Page_Mypage_History_Ex->process
XX\data\class_extends\page_extends\mypage\LC_Page_Mypage_History_Ex.php(54): LC_Page_Mypage_History->process
XX\data\class\pages\mypage\LC_Page_Mypage_History.php(65): LC_Page_AbstractMypage_Ex->process
XX\data\class_extends\page_extends\mypage\LC_Page_AbstractMypage_Ex.php(54): LC_Page_AbstractMypage->process
XX\data\class\pages\mypage\LC_Page_AbstractMypage.php(91): LC_Page_Mypage_History->action
XX\data\class\pages\mypage\LC_Page_Mypage_History.php(105): SC_Product->getProductsClass
XX\data\class\SC_Product.php(446): SC_Product->getProductsClassByQuery
XX\data\class\SC_Product.php(429): SC_Query->select
XX\data\class\SC_Query.php(176): SC_Query->getAll
XX\data\class\SC_Query.php(309): SC_Query->execute
XX\data\class\SC_Query.php(1056): SC_Query->error
XX\data\class\SC_Query.php(1095): trigger_error
red
投稿日時: 2015/5/27 20:14
対応状況: −−−
登録日: 2010/2/15
居住地: 東京都
投稿: 1570
Re: 規格の削除後に新たな規格を割り当てると、購入履歴の詳細表示でエラーが出る
バグっぽいですね
とりあえず LC_Page_Mypage_History.php の 105行目を消せば動作します


----------------
EC-CUBEのカスタマイズ、トラブル解決承ります
お気軽にお問い合わせ下さい
https://www.ec-cube.net/integrate/partner/partner.php?partner_id=690

bbkids
投稿日時: 2015/5/28 8:21
対応状況: −−−
常連
登録日: 2014/2/19
居住地:
投稿: 60
Re: 規格の削除後に新たな規格を割り当てると、購入履歴の詳細表示でエラーが出る
red様、早速お調べ頂き本当にありがとうございます。

105行目を削除でとりあえず動くとの事でしたので削除してみました。
$arrTempProductDetail = $objProduct->getProductsClass($arrOrderProductDetail['product_class_id']);

このソース部が削除箇所になるかと思われますが、これを削除する
と履歴の中の商品の現在価格が表示できなくなると思われます。
それ以外にも何か影響がありますでしょうか?わかる範囲で教えて頂ければ幸いです。

また本バグの根本的な修正をするのは難しいものでしょうか?
大変お手数お掛けして申し訳御座いません。どうぞ宜しくお願い致します。


red
投稿日時: 2015/5/28 9:18
対応状況: −−−
登録日: 2010/2/15
居住地: 東京都
投稿: 1570
Re: 規格の削除後に新たな規格を割り当てると、購入履歴の詳細表示でエラーが出る
if($arrOrderProductDetail['product_class_id']) {
$arrTempProductDetail = $objProduct->getProductsClass($arrOrderProductDetail['product_class_id']);
}

にすれば、商品が存在すれば現在価格が出ますね

規格を削除してしまった時点で、その商品の現在価格は存在しませんのでこれが根本的な修正かなと思います


----------------
EC-CUBEのカスタマイズ、トラブル解決承ります
お気軽にお問い合わせ下さい
https://www.ec-cube.net/integrate/partner/partner.php?partner_id=690

bbkids
投稿日時: 2015/5/28 9:54
対応状況: −−−
常連
登録日: 2014/2/19
居住地:
投稿: 60
Re: 規格の削除後に新たな規格を割り当てると、購入履歴の詳細表示でエラーが出る
いつも早々に対応本当に有難う御座います。
教えて頂きました通り
if($arrOrderProductDetail['product_class_id']) {
$arrTempProductDetail = $objProduct->getProductsClass($arrOrderProductDetail['product_class_id']);
}
を試してみましたところ
規格を削除し新たに作った規格を割り当てた商品については、現在価格は0円となるはずだと思いますが
購入履歴詳細の結果に複数の商品がある場合、表中の一段上の商品の商品価格が入力され表示されてしまいます。
(規格を再割り当てした商品よりも上段に他の商品がある場合)
そこで、以下のようにしてみました。

$arrTempProductDetail =array();
if($arrOrderProductDetail['product_class_id']) {
$arrTempProductDetail = $objProduct->getProductsClass($arrOrderProductDetail['product_class_id']);
}
これで現在価格については、正しく0円と表示されるようになったのですが

購入履歴詳細の結果に複数の商品がある場合、
規格を削除し新たに作った規格を割り当てた商品は、商品種別が「空欄」となり
規格の再割り当てを行っていない商品については、商品種別は「通常商品」となり、
異なる商品種別が存在する事になってしまう(「空欄」と「通常商品」の2種存在する)為か、
「この購入内容で再注文する」で次に進みますと「通常商品、は同時購入できません。」
とおかしな文言が表示がされてしまいます。

これは、現状の実装上やむおえないものなのでテンプレ側の文言修正で回避するしかないでしょうか?
それとも、別な方法で簡単に解決できしょうでしょうか?
いつもお手数ばかりお掛けしております。なにかアドバイス頂けますと幸いです。
どうぞ宜しくお願い致します。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1638
8
red
1570
9
mcontact
1286
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
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.