もうすぐゴールデンウイーク!お休みは何しましょうね。
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;
店休日に配送日指定ができないようにするカスタマイズ とちょっと違います。あわせてご覧くださいね。