バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 2.11のお届け日指定のカスタマイズについて教えてください。

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
venus
投稿日時: 2011/4/7 13:24
対応状況: −−−
常連
登録日: 2009/5/18
居住地:
投稿: 37
2.11のお届け日指定のカスタマイズについて教えてください。
休日を挟んだ時にお届け指定日が休日になってしまいます。
2.11ではどのように書き換えれば休日をとばして配達日の指定ができるようになりますでしょうか。

2.3、2.4ではこちらの内容でうまく動いておりました。
http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=4464&forum=11&viewmode=flat&order=ASC&start=0

ご教示ください。
ikaika
投稿日時: 2011/4/7 15:25
対応状況: −−−
半人前
登録日: 2011/4/5
居住地: 東京
投稿: 16
Re: 2.11のお届け日指定のカスタマイズについて教えてください。
参照の仕方があっているかどうかわかりませんが、
2.4のものを参考に書き換えてみたところ、
以下の修正で定休日を反映することができました。


/data/class/helper/SC_Helper_Purchase.php
/**
* お届け可能日のスタート値から, お届け日の配列を取得する.
*/
function getDateArray($start_day, $end_day) {

/*---------- ↓ 追加 ↓ --------*/
//カレンダーを呼び出す
require_once(CLASS_REALDIR . "pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Calendar.php");
$blockCalender = new LC_Page_FrontParts_Bloc_Calendar();
/*---------- ↑ 追加 ↑ --------*/

$masterData = new SC_DB_MasterData();
$arrWDAY = $masterData->getMasterData("mtb_wday");
//お届け可能日のスタート値がセットされていれば
if($start_day >= 1) {
  $now_time = time();
  $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));

/*---------- ↓ 変更 ↓ --------*/
//休日かどうかチェックする
if(!$blockCalender->lfCheckHoliday_Payment($y, $m, $d)){
$val = sprintf("%04d/%02d/%02d(%s)", $y, $m, $d, $arrWDAY[$w]);
$arrDate[$val] = $val;
}
/*---------- ↑ 変更 ↑ --------*/

    }
  } else {
    $arrDate = false;
  }
  return $arrDate;
}


/data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Calendar
/*---------- ↓ 追加 ↓ --------*/
/**
* 休日チェック取得.
* (購入手続き内、配送日時判定) 
*/
function lfCheckHoliday_Payment($year, $month, $day) {
  // 休日取得取得
  $this->arrHoliday = $this->lfGetHoliday();
  // 定休日取得取得
  $this->arrRegularHoliday = $this->lfGetRegularHoliday();
  if (!empty($this->arrHoliday[$month])) {
    if (in_array($day, $this->arrHoliday[$month])) {
      return true;
    }
  }
  if (!empty($this->arrRegularHoliday)) {
    $day = date('w', mktime(0,0,0 ,$month, $day, $year));
    if (in_array($day, $this->arrRegularHoliday)) {
      return true;
    }
  }
  return false;
}
/*---------- ↑ 追加 ↑ --------*/



不具合・記述内容に誤りがありましたらご指摘お願いしますm(__m )


----------------
フォクトサービス株式会社

venus
投稿日時: 2011/4/15 16:12
対応状況: −−−
常連
登録日: 2009/5/18
居住地:
投稿: 37
Re: 2.11のお届け日指定のカスタマイズについて教えてください。
ikaikaさま、ありがとうございます。
書き込みいただきました内容で試してみましたが変化がございません。
今日(金曜日)も試してみました。
発送日目安が「1〜2日後」の場合、休日が飛ばされると水曜日からの指定条件となると思いますが、月曜日から表示されてしまいます。

記述内容に誤りを見つけることもできません。
すみませんが、よろしくお願いいたします。

その後いろいろ試してみました。

/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-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は90,232名です
総投稿数は110,340件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1688
8
red
1571
9
mcontact
1356
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.