« 【MovableType】で使えそうな「アレ」備忘録 | メイン | 【MovableType】IE9で、タイトルは入力できるのに、本文が書き込めない場合 »

【EC-CUBE】お届け日指定のカスタマイズ

もうすぐゴールデンウイーク!お休みは何しましょうね。

ECーCUBEではお届け日指定が各商品の発送日目安に連動しているため、、休日に注文を受けた場合でも翌日配達とかが入力できてしまいます。
すべての商品の発送日目安をずらす方法もありますが、商品点数が多いと作業が大変ですよね。
そこで、定休日設定を取得し、休日前日と休日に注文を受けた場合は、発送日の起点を翌営業日にずらす方法をカスタマイズしてみました。

EC-CUBE2.11の場合

/data/class/helper/SC_Helper_Purchase.php の中を以下のように書き換えます。

 

* お届け可能日のスタート値から, お届け日の配列を取得する.
     */
    function getDateArray($start_day, $end_day) {
        $masterData = new SC_DB_MasterData();
        $arrWDAY = $masterData->getMasterData("mtb_wday");
        //お届け可能日のスタート値がセットされていれば
        if($start_day >= 1) {
            $now_time = time();

/* ここから追加 */
    // カレンダーブロック表示用オブジェクトを生成し、定休日設定を取得

    require_once(CLASS_REALDIR . "pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Calendar.php");
    $BlocCalendar = new LC_Page_FrontParts_Bloc_Calendar();
    $BlocCalendar->arrRegularHoliday = $BlocCalendar->lfGetRegularHoliday();
    $BlocCalendar->arrHoliday = $BlocCalendar->lfGetHoliday();
    // 配達可能日の起点を指定「営業日」以降に変更
    for ($i = 1, $j = 1; $j < $start_day; $i++ )
    {
        // 定休日管理で設定された休日と、日曜・土曜を休日とする
        $tmp_time = $now_time + ($i * 24 * 3600);
        list($y, $m, $d, $w) = explode(" ", date("Y m d w", $tmp_time));
        $m = intval( $m );
        $d = intval( $d );
        $w = intval( $w );
        if ( $BlocCalendar->lfCheckHoliday( $y, $m, $d ) )
        {
            continue;
        }
        // 日数加算
        $j++;
    }
    // スタート値を調整
    $start_day += $i - $j;

/* 追加ここまで */

           $max_day = $start_day + $end_day;
            // 集計
            for ($i = $start_day; $i < $max_day; $i++) {
                // 基本時間から日数を追加していく
                $tmp_time = $now_time + ($i * 24 * 3600);
                list($y, $m, $d, $w) = explode(" ", date("Y m d w", $tmp_time));
                $val = sprintf("%04d/%02d/%02d(%s)", $y, $m, $d, $arrWDAY[$w]);
                $arrDate[$val] = $val;
            }
        } else {
            $arrDate = false;
        }
        return $arrDate;
    }

 

 

EC-CUBE2.4では、

data/class/pages/shopping/LC_Page_payment.php の中を以下のように書き換えます。

 

//配達可能日のスタート値がセットされていれば
if($start_day >= 1) {
    $now_time = time();
/* ここから追加 */
    // カレンダーブロック表示用オブジェクトを生成し、定休日設定を取得
    require_once(CLASS_PATH . "pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Calendar.php");
    $BlocCalendar = new LC_Page_FrontParts_Bloc_Calendar();
    $BlocCalendar->arrHoliday = $BlocCalendar->lfGetHoliday();
    // 配達可能日の起点を指定「営業日」以降に変更
    for ($i = 1, $j = 1; $j < $start_day; $i++ )
    {
        // 定休日管理で設定された休日と、日曜・土曜を休日とする
        $tmp_time = $now_time + ($i * 24 * 3600);
        list($y, $m, $d, $w) = split(" ", date("y m d w", $tmp_time));
        $m = intval( $m );
        $d = intval( $d );
        $w = intval( $w );
        if ( ( $w == 0 ) || ( $w == 6 ) ||
             ( $BlocCalendar->lfCheckHoliday( $m, $d ) ) )
        {
            continue;
        }
        // 日数加算
        $j++;
    }
    // スタート値を調整
    $start_day += $i - $j;
/* 追加ここまで */

    $max_day = $start_day + $end_day;

 

 

 

店休日に配送日指定ができないようにするカスタマイズ とちょっと違います。あわせてご覧くださいね。

工事・障害情報 (1)
パソコン (13)
フレッツ光プレミアム (3)
ホームページ作成 (7)
ウイルス・スパム対策 (6)
EC-CUBE (12)
Movable Type (10)
接続 (4)
機能 (1)
料金 (1)

About

2012年04月26日 14:31に投稿されたエントリーのページです。

ひとつ前の投稿は「【MovableType】で使えそうな「アレ」備忘録」です。

次の投稿は「【MovableType】IE9で、タイトルは入力できるのに、本文が書き込めない場合」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Take-net Service