SPOTブログ

2012/09/24

EC-CUBE2.12.2で決済処理中の商品もマイページや、管理画面ホームに表示されてしまう問題の解決方法

クレジットカードのモジュールを使った場合のバグですが、 購入画面からクレジットカード決済のリンクに遷移すると、EC-CUBE的には、「決済処理中」という受注レコードが作成されます。

この状態で、カード決済を完了させないまま、注文をやめてしまうと、「決済処理中」のままの受注がそのまま残ってしまいます。

これが、お客様がマイページで購入履歴を見るときにも、決済途中でやめてしまった(注文完了していない)履歴が残ってしまいます。 注文していないのに、購入履歴に出るのは、紛らわしいですし、おかしいですよね。

また、管理画面のホーム(ログイ後最初に見る画面)でも、「新規受付一覧」が表示されますが、ここにも「決済処理中」の注文も表示されてしまいます。

「昨日の売上高」「今月の売上高」の合計金額にも「決済処理中」の注文まで含まれて計算されてしまいます。

これは使いづらい・・・。

どう考えてもバグだと思うのですが、「EC-CUBE的にはこれは仕様であり、バグではない」そうです。

使いづらいので、ここをフロント側のマイページにも管理画面のホームにも表示させないようにします。(本当は集計も変えないといけないのですが、ちょっと面倒なので今回はパスします)

「決済処理中」の注文は、マイページの購入履歴に表示させないようにする

class/pages/mypage/LC_Page_Mypage.phpの129行目あたりを修正

SQL文に AND status != 7と追記することで、statusが7(決済処理中)の場合は除外する設定にします。 これで、マイページには表示されないようになりました。

管理画面ホームの昨日・今日の売上高に「決済処理中」を含めないようにする

data/class/db/dbfactory/SC_DB_DBFactory_MYSQL.phpの105行目あたり

これも同様に、SQL文でstatusが決済処理中な物を除外します。

管理画面ホームの新規受付一覧にも「決済処理中」は表示させないようにする

data/class/pages/admin/LC_Page_Admin_Home.tplの247行目あたり

ここを

とへんこうすれば、OKです。