« Windows7発売! | メイン | インターネットエクスプローラー6 利用停止推進プロジェクト »

【EC-CUBE】 店休日に配送日指定ができないようにするカスタマイズ

中津川の栗きんとんは、防腐剤などは一切使用しない生菓子のため、消費期限が短いです。
栗きんとんのように、消費期限が短い商品をネットショップで販売した場合、届け先が不在だったりすると、とても困りますよね。そんなとき、お店とお客様、または配送業者と連絡が取れれば迅速に対応できるのですが、たまたま店休日だったりすると、商品ロスになってしまいます。

そこで、EC-CUBE2.4.1で、店休日に配達指定ができないようにカスタマイズしてみました。

data/class/pages/shopping/LC_Page_Shopping_Payment.phpを書き換えます。店休日の追加はECサイト管理ページの 基本情報管理-定休日管理から追加します。

ただしこの方法ですと、SHOPマスタ登録から定休日にチェック入れると日付がずれますので^^;、定休日にはチェック入れないでください。ようはカレンダー機能が使えなくなるよってことです^^; ややこしいので、そのあたり誰か直してくださいwww

 

赤字を追加すればオッケー^^;

    //配達可能日のスタート値から、配達日の配列を取得する
    function lfGetDateArray($start_day, $end_day) {
        $masterData = new SC_DB_MasterData();
        $arrWDAY = $masterData->getMasterData("mtb_wday");
        //配達可能日のスタート値がセットされていれば
        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->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) = split(" ", date("y m d w", $tmp_time));
        $m = intval( $m );
        $d = intval( $d );
        $w = intval( $w );
        if ( $BlocCalendar->lfCheckHoliday( $y, $m, $d ) )
        {
            continue;
        }
        // 日数加算
        $j++;
    } 
            $max_day = $start_day + $end_day;
            // 集計
            for ($i = $start_day; $i < $max_day; $i++) {
                // 基本時間から日数を追加していく
               $ng=0;
                $tmp_time = $now_time + ($i * 24 * 3600);
                list($y, $m, $d, $w) = split(" ", date("y m d w", $tmp_time));
               if(isset($BlocCalendar->arrHoliday[$m])){
                    foreach($BlocCalendar->arrHoliday[$m] as $id =>$key){
                        if($key==$d)$ng=1;
                    }
                }
                if($ng==1)continue;
                $val = sprintf("%02d/%02d/%02d(%s)", $y, $m, $d, $arrWDAY[$w]);
                $arrDate[$val] = $val;
            }
        } else {
            $arrDate = false;
        }
        return $arrDate;
    }

 

 

追記

配送日指定が翌年にまたぐ場合、なぜか指定ができてしまいます。

そんなときはしょうがないので、手打ちで対応^^;

たとえば、2010年1月 1日・2日・3日・7日・14日…と休みの場合

if($ng==1)continue;
$val = sprintf("%02d/%02d/%02d(%s)", $y, $m, $d, $arrWDAY[$w]);

  の後に
if($y==10 && $m==1 && $d==1)continue;
if($y==10 && $m==1 && $d==2)continue;
if($y==10 && $m==1 && $d==3)continue;
if($y==10 && $m==1 && $d==7)continue;
if($y==10 && $m==1 && $d==14)continue;
if($y==10 && $m==1 && $d==21)continue;
if($y==10 && $m==1 && $d==28)continue;
if($y==10 && $m==2 && $d==4)continue;
if($y==10 && $m==2 && $d==11)continue;

というように入力します。

めんどくさいです・・・orz

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

About

2009年11月04日 11:17に投稿されたエントリーのページです。

ひとつ前の投稿は「Windows7発売!」です。

次の投稿は「インターネットエクスプローラー6 利用停止推進プロジェクト」です。

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

Powered by
Take-net Service