バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

バグ報告 > 管理機能 > お届け時間→時間指定がおかしい

管理機能

新規スレッドを追加する

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
homan
投稿日時: 2010/1/29 11:43
対応状況: −−−
仙人
登録日: 2007/7/2
居住地: 宮崎県宮崎市
投稿: 633
Re: お届け時間→時間指定がおかしい
長々と書いていたら、タイムアウトで消えてしまったので簡潔に書きます。

先の私の書き込みの不具合の件、
結論、data/class_extends/page_extends/shopping/LC_Page_Shopping_Payment_Ex.phpに

・lfGetPaymentInfo
・lfGetDelivTimeInfo
・lfRegistData

を改善したものを張り付けるだけで解決しました。
(社内チェック:EC-CUBE2.4.1)

※但し、ehptj様のご報告の内容とは少し問題が違うような気がしますが・・・。


コミュ版はseasoft様が解決済みだとおっしゃられていましたが、
おそらく私の解決方法と異なるような気がしますので、
不整合が生じる可能性がありました。
なので、コミットせずに一旦こちらで共有します。

一応、弊社内でチェックをした結果でのご報告になりますが、
修正方法が良くわからない方は最寄りの制作会社様などに
お願いしてください。うまくできなくてエラー等になっても
私には責任が取れません(アドバイスはできると思いますが・・)
自己責任でお願いいたします。
できればテスト環境などで挙動を確認してください。
問題があれば共有お願いします。


data/class_extends/page_extends/shopping/LC_Page_Shopping_Payment_Ex.phpのデストラクタの
後くらいから、以下のコードを丸ごと張り付ける。
(EC-CUBE 2.4.1をベースとしています。ご注意ください)
念の為、どのように張り付けるのかわからない方の為に、
既存のデストラクタも表示しておきます。

※追記や変更箇所は赤文字で示します。

    /**
     * デストラクタ.
     *
     * @return void
     */
    function destroy() {
        parent::destroy();
    }

    /* 支払い方法文字列の取得 */
    function lfGetPaymentInfo($payment_id) {
        $objQuery = new SC_Query();
        $where = "payment_id = ?";
        $arrRet = $objQuery->select("payment_method, charge, deliv_id", "dtb_payment", $where, array($payment_id));
        return (array($arrRet[0]['payment_method'], $arrRet[0]['charge'], $arrRet[0]['deliv_id']));
    }


    /* 配送時間文字列の取得 */
    function lfGetDelivTimeInfo($deliv_id, $time_id) {
        $objQuery = new SC_Query();
        $where = "deliv_id = ? AND time_id = ?";
        $arrRet = $objQuery->select("deliv_time", "dtb_delivtime", $where, array($deliv_id, $time_id));
        return $arrRet[0]['deliv_time'];
    }


    /* DBへデータの登録 */
    function lfRegistData($uniqid) {
        $arrRet = $this->objFormParam->getHashArray();
        $sqlval = $this->objFormParam->getDbArray();
        // 登録データの作成
        $sqlval['order_temp_id'] = $uniqid;
        $sqlval['update_date'] = 'Now()';

        if($sqlval['payment_id'] != "") {
            list($sqlval['payment_method'], $sqlval['charge'], $sqlval['deliv_id']) = $this->lfGetPaymentInfo($sqlval['payment_id']);
        } else {
            $sqlval['payment_id'] = '0';
            $sqlval['payment_method'] = "";
        }

        if($sqlval['deliv_time_id'] != "") {
            $sqlval['deliv_time'] = $this->lfGetDelivTimeInfo($sqlval['deliv_id'], $sqlval['deliv_time_id']);
        } else {
            $sqlval['deliv_time_id'] = '0';
            $sqlval['deliv_id'] = '0';
            $sqlval['deliv_time'] = "";
        }

        // 使用ポイントの設定
        if($sqlval['point_check'] != '1') {
            $sqlval['use_point'] = 0;
        }

        $objDb = new SC_Helper_DB_Ex();
        $objDb->sfRegistTempOrder($uniqid, $sqlval);
    }



<改善策の内容>

先の書き込みで指摘させていただいていますが、
time_idが重複している為に起こる不具合のようです。

支払い方法を選んだあとに日程や時間帯を選びますが、
そこからdtb_order_tempに記録する際に
dtb_delivtimeからtime_idだけをキーとして検索するため、
time_idが重複しているときは別の配送業者を抽出してしまい、
結果的に時間もずれたように表示されていました。

今回の場合、支払い方法を選んだときにpayment_idが分かるので、
dtb_paymentからdeliv_idを参照するように変更しています。
そして、dtb_delivtimeからdeliv_timeの情報を抽出する際には
deliv_idとtime_idをキーとして利用することで
たとえ複数の配送業者情報でtime_idが重複していても
ずれることが無いようにできました。

※修正前の受注(注文)情報に関してはずれは直りませんのでご注意ください。修正後の受注(注文)から正常に動くかと思います。


上記の不具合は、弊社が調べたところでは
2.4.1、2.4.2でも発生することが分かっています。
それ以前はチェックできていませんが、
複数配送業者を設定している場合は確認してみた方が
良いと思います。

http://svn.ec-cube.net/open_trac/changeset/17513

上記の修正が原因かと思われますが、
2008年8月8日なのでおそらく2.3.0-RC1以降が
対象になる可能性がありそうです・・・?(多分です)

http://www.ec-cube.net/release/detail.php?release_id=187
http://svn.ec-cube.net/open_trac/query?status=closed&milestone=EC-CUBE2.3.0
(チケットの329が改修に含まれています)


----------------
このコミュニティでの投稿はボランティアの範囲に留めさせていただいています。個別の相談やカスタマイズは有償にて承っておりますのでご相談下さい。

[url=http://www.eccube-school.jp/]EC-CUBE

フラット表示 前のトピック | 次のトピック


題名 投稿者 日時
   お届け時間→時間指定がおかしい ehptj 2010/1/22 23:30
     Re: お届け時間→時間指定がおかしい seasoft 2010/1/23 11:31
       Re: お届け時間→時間指定がおかしい homan 2010/1/28 16:59
       » Re: お届け時間→時間指定がおかしい homan 2010/1/29 11:43
           Re: お届け時間→時間指定がおかしい ramrun 2010/1/29 12:13
             Re: お届け時間→時間指定がおかしい homan 2010/1/29 12:22
     Re: お届け時間→時間指定がおかしい ramrun 2010/1/23 11:48
       Re: お届け時間→時間指定がおかしい ehptj 2010/1/23 15:29

 



ログイン


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

統計情報

総メンバー数は89,272名です
総投稿数は110,066件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1652
8
red
1570
9
mcontact
1301
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.